Linux-2.6.31.3-ged9ecd6-dirty

Материал из RZX50
Перейти к: навигация, поиск

Общественности предлагается для тестирования ядро 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 теоретически должно положительно сказаться на стабильности ядра.
Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Инструменты