Linux-2.6.31.3-ged9ecd6-dirty
Общественности предлагается для тестирования ядро Linux 2.6.31.3 для RZX-50.
Основным преимуществом данного ядра по сравнению с заводским является поддержка Ethernet-gadget. Это позволяет подключив приставку через USB к ПЭВМ реализовать ЛВС (например, RZX-50 будет иметь IP-адрес 10.1.0.2, а ПЭВМ 10.1.0.1). RZX-50 будет работать как telnet- и ftp-сервер, что значительно упростит разработку ПО для приставки.
Автор проверял работу ЛВС-через-USB при помощи ПЭВМ с установленной ОС Debian/Linux.
Файлы нового ядра находятся в архиве rzx50-linux-2.6.31.3-ged9ecd6-dirty.tar.gz.
В архиве находятся следующие файлы:
- uImage-2.6.31.3-ged9ecd6-dirty — образ ядра для U-Boot;
- modules — загружаемые модули ядра, в частности модуль Ethernet-gadget;
- config-2.6.31.3-ged9ecd6-dirty — конфигурационный файл с настройками ядра.
Ядро собрано вот из этих исходных текстов (с косметическими изменениями, мало влияющими на функционирование) с патчем linux-2.6.31.3-jz-20110719-tag-r1198.patch.tar.bz2, toolchain на базе gcc-4.4.6.
Ethernet-gadget собран в виде модуля для того, чтобы иметь возможность использовать также serial-gadget из модуля g_serial.ko.
Установка
Того, чтобы Ethernet-gadget корректно работал, при старте dingux необходимо подключить модуль ядра g_ether.ko и настроить сетевой интерфейс usb0.
Для этого необходимо каталог modules распаковать в каталог /lib/ корневой файловой системы dingux. Полное путевое имя модуля g_ether.ko будет таким:
/lib/modules/2.6.31.3-ged9ecd6-dirty/kernel/drivers/usb/gadget/g_ether.ko
Необходимо исправить файл /etc/inittab в соответствии со патчем.
Последним шагом является прошивка нового ядра (и, возможно, обновлённого образа корневой файловой системы) в RZX-50. Сделать это можно при помощи штатной программы-восстановителя [1].
Использование
После обновления ядра включаем приставку и подключаем её к ПЭВМ при помощи интерфейса USB.
Если других Ethernet-gadget'ов не подключено, то появляется сетевой интерфейс usb0 (в противном случае usb1, usb2 и т. д.).
После этого инициализируем сетевой интерфейс ПЭВМ:
# ifconfig usb0 10.1.0.1
Для тех, кто не хочет вручную инициализировать сетевой интерфейс возможно разрешить следующую строчку в /etc/inittab на RZX-50. При этом на RZX-50 начинает работать DHCP-сервер, а на ПЭВМ в настройках usb0 придётся указать, что адрес интерфейсу назначается при помощи DHCP (в этом случае интерфейсу ПЭВМ также будет присвоен IP-адрес 10.1.0.1).
::sysinit:/usr/sbin/udhcpd /etc/udhcpd.conf
После настройки сетевого интерфейса ПЭВМ становится возможно получить доступ к командной строке RZX-50 при помощи telnet. При помощи ftp, по умолчанию, доступен каталог /boot.
Замеченные проблемы
- не работает звук;
- не работает радиоприёмник;
- совершенно забыл про пользователей Windows, не включив CONFIG_USB_ETH_RNDIS;
- в поставку не включён ELF-файл ядра (удобнее смотреть места, где ядро упало);
- забыл про CONFIG_RTC_JZ;
- не привёл SHA1-суммы файлов;
- не раскрыта тема USB host'a RZX-50.
Перед тем как компилить ядро лостаточно было обратиться к http://dingoo-linux.googlecode.com/svn/trunk: всё уже придумано до нас.
- поборотся с недоступностью U-Boot'а для перенастройки ком. строки можно используя опцию CONFIG_CMDLINE;
- при тестировании ядра обнаружено, что оно может падать при обмене через Ethernet-gadget, замечено, что в dingux использована опция командной строки jz4740_udc.use_dma=0; возможно стоит взять на вооружение;
- CONFIG_PREEMPT_NONE=y теоретически должно положительно сказаться на стабильности ядра.