LINUX.ORG.RU

Как при загрузке ядра подключить rootfs на USB-диске?

 , , ,


0

2

Железяка (не х86) загружается через bootp/tftp. Если собирать ядро c initfamfs, все работает. Необходимо грузиться с rootfs размером более 1ГБ, в ядро такое не запихнешь. chroot не подходит, т.к. init на rootfs запускает длинную цепочку с кучей зависимостей и отказывается работать после того как поработал init из initramfs.

Есть сборка ядра, которая запускает rootfs с USB, но не известна ее конфигурация, только известно CMD_LINE=«root=/dev/sda1 rootwait», и судя по внутренностям, у нее нет ни initramfs ни initrd.

Собираемое мной ядро распознает USB диск, но не монтирует его для загрузки и останавливается на Waiting rootfs...

Вопрос: как законфигурировать ядро для загрузки по такому сценарию? Или без initrd никак и я его просто не нашел в рабочем vmlinux?

ядро узнаёт о том, где искать rootfs из переменной bootargs, если это u-boot. CMD_LINE=«root=/dev/sda1 rootwait» данная строка говорит, что ядро будет ждать rootfs на /dev/sda1. проверь имя usb стика в bootargs, соответствует ли оно тому имени, которое присваивается стику при распознавании.

spectral1989
()
Ответ на: комментарий от spectral1989

Если Вы про имя типа /dev/sda1, то ничего подобного флешке не присваивается. usb распознает устройство, показывает idVendor и idProduct, но потом ничего с ним уже не делает. В рабочем ядре после Waiting for root on /dev/sda1... идет подключение флешки как диска usb->scsi->sd и затем удачная загрузка.

apparatt
() автор топика
Ответ на: комментарий от spectral1989

Что за загрузчик не известно, он называет себя скромно booter

apparatt
() автор топика

Если собирать ядро c initfamfs, все работает

Если есть возможность пересобирать ядро, можно передать параметры через конфиг ядра не используя параметры загрузчика, в менюконфиге это тут

Boot options ---> (root=/dev/sda1 rootwait) Default kernel command string Kernel command line type (Always use the default kernel command string) --->

и линковать нужные драйверы статически

Device Drivers --->

  • USB support ---> <*> USB Mass Storage support в этом же подменю еще должен быть драйвер USB-хоста включен

    файловая система

    File systems ---> <*> The Extended 4 (ext4) filesystem

  • Use ext4 for ext2/ext3 file systems
  • Ext4 POSIX Access Control Lists
  • Ext4 Security Labels

    или какая там у вас сипользуется

anonymous
()

Подозреваю, в вашем ядре usb_storage модулем.

Elyas ★★★★★
()
Ответ на: комментарий от anonymous

Поддерживаю мысль обратить внимание на конфиг. Сравнить конфиг ядра, на котором всё ок и конфиг, на котором не ок.

spectral1989
()
Ответ на: комментарий от anonymous

Именно так и сделано. «root=/dev/sda1 rootwait» вкомпилено в ядро USB Mass Storage support =y USB Host =y FS: ext2/ext3/ext4 Все собрано статически без модулей.

Сравнить конфиги не возможно, т.к. конфиг рабочего ядра отсутствует.

В логе ядра видно, что usb стартует, видит устройство, стартует USB Mass Storage, но флешку не подцепляет.

apparatt
() автор топика

Правильно ли я понимаю, что для успешного старта rootfs с USB, как правило, нет необходимости в дополнительных init(rd/ramfs) и в конфиге достаточно включить поддержку USB Mass Storage, USB Host и соответствующей ФС?

apparatt
() автор топика
Ответ на: комментарий от apparatt

Логи в студию (.config тоже не помешает)

anonymous
()
Ответ на: комментарий от alx777

IKCONFIG все-таки не включен ((

Но вот мой конфиг

мой лог

и лог удачной загрузки

По существу отличия в логах в последних строках, которые никак не появляются при загрузке моего ядра:

Waiting for root device /dev/sda1...
usb 1-1: new high-speed USB device number 2 using tilegx-ehci
usb 1-1: New USB device found, idVendor=13fe, idProduct=4100
usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-1: Product: Silicon-Power4G
usb 1-1: Manufacturer: UFD 2.0
usb 1-1: SerialNumber: 12090718061E600291A8C171456
scsi0 : usb-storage 1-1:1.0
scsi 0:0:0:0: Direct-Access     UFD 2.0  Silicon-Power4G  PMAP PQ: 0 ANSI: 4
sd 0:0:0:0: Attached scsi generic sg0 type 0
sd 0:0:0:0: [sda] 7579008 512-byte logical blocks: (3.88 GB/3.61 GiB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Mode Sense: 23 00 00 00
sd 0:0:0:0: [sda] No Caching mode page present
sd 0:0:0:0: [sda] Assuming drive cache: write through
sd 0:0:0:0: [sda] No Caching mode page present
sd 0:0:0:0: [sda] Assuming drive cache: write through
 sda: sda1
sd 0:0:0:0: [sda] No Caching mode page present
sd 0:0:0:0: [sda] Assuming drive cache: write through
sd 0:0:0:0: [sda] Attached SCSI removable disk
kjournald starting.  Commit interval 5 seconds
EXT3-fs (sda1): using internal journal
EXT3-fs (sda1): recovery complete
EXT3-fs (sda1): mounted filesystem with ordered data mode
VFS: Mounted root (ext3 filesystem) on device 8:1.
devtmpfs: mounted

apparatt
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.