По мотивам прошлого треда.
tl;dr: пилю на внешнем диске систему типа sysrescuecd, тестирую на нетбуке с атомом x86 на борту.
Скомпилировал busybox, написал init, сложил всё в ФС. А дальше начинаются приключения по одному из двух вариантов:
- если в конфиге ядра нет CONFIG_SATA_AHCI_PLATFORM, то ядро прогружается, init монтирует /proc, /sys и /dev, а когда доходит до монтирования настоящего корневого раздела, вываливается в ash. Расследование показало, что findfs не может найти раздел диска, а дальнейшее расследование — что и диска-то в /dev/ не видать. Ни /dev/sda или /dev/sdb. Получается, ядро не смогло определить контроллер или в /dev/ по какой-то причине не создались устройства? Я бы ещё понял, если бы модуль EHCI для USB не подгрузился (кстати, надо добавить), и поэтому не был бы виден внешний диск, но встроенного в нетбук ведь тоже не видать!
- если в конфиге ядра присутствует CONFIG_SATA_AHCI_PLATFORM, то загрузка замирает на Тем не менее, ядро прогружено, и SysRq+… вполне себе работают. Что происходит — непонятно.
Decompressing Linux... Parsing ELF... done. Booting the kernel.
В оригинальном конфиге ядра с нетбука CONFIG_SATA_AHCI_PLATFORM присутствует.
Конфиги ядер систем: нетбука (f-book) и внешнего диска (rescue).
BLOCK, DEVTMPFS, DEVTMPFS_MOUNT, SATA_AHCI и USB_STORAGE присутствуют и там и там. EHCI_HCD на rescue собран модулем из-за старого бага, когда в системе есть хабы USB 3.0 и 2.0, первые не определяются или определяются не все, если EHCI_HCD=y.
На нетбуке ядро 3.8.10, на внешнем 3.9.11.