карамболь 0 19 августа, 2022 Опубликовано 19 августа, 2022 · Жалоба Здравствуйте. Есть древняя плата на Arria V. Rootfs лежит в ОЗУ (initrd). Понадобилось добавить в ФС несколько пакетов 1. Распаковал ФС 2. Установил пакеты 3. Решил, заодно, перейти на Initramfs 4. Упаковал ФС (ниже кусок скрипта) find $DISK | cpio -H newc -o | gzip -9 > tmp.cpio.gz mkimage -A arm -T ramdisk -C gzip -d tmp.cpio.gz initramfs-ext4.gz.uBoot rm tmp.cpio.gz 5. В переменных окружения u-boot поменял только название полученного Initramfs файла. При загрузке ФС поймал Kernel panic вот загрузка CPU : Altera SOCFPGA Platform BOARD : Altera SOCFPGA Arria V Board I2C: ready DRAM: 1 GiB MMC: ALTERA DWMMC: 0 In: serial Out: serial Err: serial Net: mii0 Hit any key to stop autoboot: 0 8462974 bytes read in 503 ms (16 MiB/s) ## Starting application at 0x3FF795C8 ... ## Application terminated, rc = 0x0 3851416 bytes read in 248 ms (14.8 MiB/s) 20293 bytes read in 20 ms (990.2 KiB/s) 41077938 bytes read in 2472 ms (15.8 MiB/s) ## Booting kernel from Legacy Image at 00007fc0 ... Image Name: Linux-3.18.0 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 3851352 Bytes = 3.7 MiB Load Address: 00008000 Entry Point: 00008000 ## Loading init Ramdisk from Legacy Image at 05000000 ... Image Name: Rootfs ext4 ramdisk for ARM Image Type: ARM Linux RAMDisk Image (gzip compressed) Data Size: 41077874 Bytes = 39.2 MiB Load Address: 00000000 Entry Point: 00000000 ## Flattened Device Tree blob at 00000100 Booting using the fdt blob at 0x00000100 XIP Kernel Image ... OK OK reserving fdt memory region: addr=0 size=1000 Loading Ramdisk to 0d8d3000, end 0ffffc72 ... OK Loading Device Tree to 03ff8000, end 03ffff44 ... OK Здесь попытка запуска ФС [ 4.318812] NET: Registered protocol family 29 [ 4.323254] can: raw protocol (rev 20120528) [ 4.327508] can: broadcast manager protocol (rev 20120528 t) [ 4.333158] can: netlink gateway (rev 20130117) max_hops=1 [ 4.338803] 8021q: 802.1Q VLAN Support v1.8 [ 4.343025] Key type dns_resolver registered [ 4.347341] ThumbEE CPU extension supported. [ 4.351615] Registering SWP/SWPB emulation handler [ 4.356497] dwc2 ffb40000.usb: Overcurrent change detected [ 4.362478] List of all partitions: [ 4.365962] b300 62521344 mmcblk0 driver: mmcblk [ 4.371312] b301 1024 mmcblk0p1 d4e1deed-01 [ 4.376612] b302 131072 mmcblk0p2 d4e1deed-02 [ 4.381938] b303 131072 mmcblk0p3 d4e1deed-03 [ 4.387237] b304 62257152 mmcblk0p4 d4e1deed-04 [ 4.392555] No filesystem could mount root, tried: ext3 ext2 ext4 vfat ntfs [ 4.399636] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0) [ 4.407864] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.18.0 #11 [ 4.413868] [<c0016bac>] (unwind_backtrace) from [<c0012bf8>] (show_stack+0x20/0x24) [ 4.421586] [<c0012bf8>] (show_stack) from [<c0542aa4>] (dump_stack+0x90/0xa0) [ 4.428781] [<c0542aa4>] (dump_stack) from [<c0540b4c>] (panic+0xb0/0x210) [ 4.435629] [<c0540b4c>] (panic) from [<c074b394>] (mount_block_root+0x22c/0x240) [ 4.443080] [<c074b394>] (mount_block_root) from [<c074b5a4>] (mount_root+0x110/0x118) [ 4.450963] [<c074b5a4>] (mount_root) from [<c074b744>] (prepare_namespace+0x198/0x1dc) [ 4.458941] [<c074b744>] (prepare_namespace) from [<c074af58>] (kernel_init_freeable+0x250/0x260) [ 4.467776] [<c074af58>] (kernel_init_freeable) from [<c053f964>] (kernel_init+0x1c/0xf8) [ 4.475920] [<c053f964>] (kernel_init) from [<c000ecf8>] (ret_from_fork+0x14/0x20) В чем может быть дело ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
карамболь 0 22 августа, 2022 Опубликовано 22 августа, 2022 · Жалоба Ну, что, коллеги ? Есть идеи ? ) Или может кто поделится живим образом файловой системы для Arm32 ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 222 22 августа, 2022 Опубликовано 22 августа, 2022 · Жалоба В 19.08.2022 в 14:26, карамболь сказал: В чем может быть дело ? Не может смонтировать корневую файловую систему (rootfs). Далее читайте по ссылке https://unix.stackexchange.com/questions/414655/not-syncing-vfs-unable-to-mount-root-fs-on-unknown-block0-0 и гуглите на тему "VFS: Unable to mount root fs on unknown-block" 39 минут назад, карамболь сказал: Ну, что, коллеги ? Есть идеи ? ) Или может кто поделится живим образом файловой системы для Arm32 ? Идея одна: последовательно и пошагово разбираться в проблеме. Готовый образ вам не подойдёт, т.к. непонятно что у вас за ядро (конфигурация), что за система и т.д. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
krux 8 22 августа, 2022 Опубликовано 22 августа, 2022 · Жалоба возможно что в ядре вкомпилена поддержка только initrd но не initramfs. надо смотреть детально конфиг ядра. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 222 22 августа, 2022 Опубликовано 22 августа, 2022 · Жалоба В 19.08.2022 в 14:26, карамболь сказал: dwc2 ffb40000.usb: Overcurrent change detected Ещё мне не нравится вот эта строчка из протокола загрузки. По-моему такого быть не должно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
карамболь 0 22 августа, 2022 Опубликовано 22 августа, 2022 · Жалоба 31 minutes ago, krux said: возможно что в ядре вкомпилена поддержка только initrd но не initramfs. надо смотреть детально конфиг ядра. а как эту опцию включить ? 5 minutes ago, makc said: Ещё мне не нравится вот эта строчка из протокола загрузки. По-моему такого быть не должно. при нормальной загрузке с помощью initrd тоже такая строка. Работе не мешает. Плата старая, работает, как часы во множестве устройств Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
krux 8 22 августа, 2022 Опубликовано 22 августа, 2022 · Жалоба On 8/22/2022 at 11:01 AM, карамболь said: а как эту опцию включить ? пересобрать ядро, предварительно скорректировав конфиг Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
карамболь 0 22 августа, 2022 Опубликовано 22 августа, 2022 · Жалоба 3 minutes ago, krux said: пересобрать ядро, предварительно скорректировав конфиг CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_COUNT=2 CONFIG_BLK_DEV_RAM_SIZE=8192 есть еще CONFIG_BLK_DEV_INITRD CONFIG_BLK_DEV_INITRD у меня в ядре не включено, при этом initrd грузится. Странно. Проблема в том, что изначально систему собирал другой человек а, нет. Обманул. Включена CONFIG_BLK_DEV_INITRD Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 22 августа, 2022 Опубликовано 22 августа, 2022 · Жалоба On 8/19/2022 at 2:26 PM, карамболь said: -C gzip "-C none" должно быть, т.е. образ не скомпрессированный, но содержит пожатый cpio. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
карамболь 0 22 августа, 2022 Опубликовано 22 августа, 2022 · Жалоба 24 minutes ago, aaarrr said: "-C none" должно быть, т.е. образ не скомпрессированный, но содержит пожатый cpio. странно... я этим скриптом собираю Initramfs для ARM64 (ZynqUS) и это работает Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
карамболь 0 22 августа, 2022 Опубликовано 22 августа, 2022 · Жалоба подсунул рабочий образ от 64-х разрядной FS Starting init: /bin/sh exists but couldn't execute it (error -8) [ 7.207338] Kernel panic - not syncing: No working init found. Try passing init= option to kernel. Т.е. проблема, по все видимости, именно в сборке rootfs. С загрузчиком и ядром, скорее всего, проблем нет Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 22 августа, 2022 Опубликовано 22 августа, 2022 · Жалоба В случае initramfs не монтируется devtmpfs автоматом. Возможно, в этом дело. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
карамболь 0 22 августа, 2022 Опубликовано 22 августа, 2022 · Жалоба 30 minutes ago, aaarrr said: В случае initramfs не монтируется devtmpfs автоматом. Возможно, в этом дело. насколько я понял, особой разницы, с точки зрения загрузчика и ядра нет между initramfs и Initrd. Ядро как то само понимает с чем имеет дело, а загрузчик просто копирует образ по конкретному адресу и передает управление ядру, указывая, где лежит Рутфс и dtb Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 22 августа, 2022 Опубликовано 22 августа, 2022 · Жалоба 13 minutes ago, карамболь said: насколько я понял, особой разницы, с точки зрения загрузчика и ядра нет между initramfs и Initrd С точки зрения ядра - есть. Специально посмотрел, когда-то наступил на те же грабли. Решением было добавление /init с таким содержимым: !/bin/sh # devtmpfs does not get automounted for initramfs /bin/mount -t devtmpfs devtmpfs /dev exec 0</dev/console exec 1>/dev/console exec 2>/dev/console exec /sbin/init "$@" и /dev/console (mknod /dev/console c 5 1) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
карамболь 0 22 августа, 2022 Опубликовано 22 августа, 2022 · Жалоба 1 minute ago, aaarrr said: С точки зрения ядра - есть. Специально посмотрел, когда-то наступил на те же грабли. Решением было добавление /init с таким содержимым: !/bin/sh # devtmpfs does not get automounted for initramfs /bin/mount -t devtmpfs devtmpfs /dev exec 0</dev/console exec 1>/dev/console exec 2>/dev/console exec /sbin/init "$@" и /dev/console (mknod /dev/console c 5 1) так у меня даже до вызова init не доходит Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться