Как выбрать исходные файлы initramfs с помощью buildroot и Nios2 FPGA

Я собрал последнюю версию Linux от Altera для своего Altera DE2-115 FPGA. Он не загружается должным образом из-за проблем с файловой системой. Может, ты знаешь, что мне делать? Я предполагаю, что это какой-то вариант в make menuconfig, но я не знаю, что делать.

Linux version 4.9.0-00104-g84d4f8a-dirty (developer@1604) (gcc version 6.2.0 (Sourcery CodeBench Lite 2016.11-32) ) #28 Wed Apr 5 04:23:07 CEST 2017
bootconsole [early0] enabled
early_console initialized at 0xe8001440
On node 0 totalpages: 32768
free_area_init_node: node 0, pgdat c022166c, node_mem_map c0254b80
  Normal zone: 256 pages used for memmap
  Normal zone: 0 pages reserved
  Normal zone: 32768 pages, LIFO batch:7
pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
pcpu-alloc: [0] 0 
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 32512
Kernel command line: debug console=ttyAL0,115200
PID hash table entries: 512 (order: -1, 2048 bytes)
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Sorting __ex_table...
Memory: 127528K/131072K available (1750K kernel code, 66K rwdata, 284K rodata, 76K init, 191K bss, 3544K reserved, 0K cma-reserved)
SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
NR_IRQS:64 nr_irqs:64 0
clocksource: nios2-clksrc: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 38225208935 ns
Console: colour dummy device 80x25
Calibrating delay loop (skipped), value calculated using timer frequency.. 100.00 BogoMIPS (lpj=50000)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
cpu cpu0: Error -2 creating of_node link
clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275000 ns
random: fast init done
clocksource: Switched to clocksource nios2-clksrc
futex hash table entries: 256 (order: -1, 3072 bytes)
workingset: timestamp_bits=30 max_order=15 bucket_order=0
Block layer SCSI generic (bsg) driver version 0.4 loaded (major 254)
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
8001440.serial: ttyJ0 at MMIO 0x8001440 (irq = 2, base_baud = 0) is a Altera JTAG UART
mousedev: PS/2 mouse device common for all mice
Warning: unable to open an initial console.
List of all partitions:
No filesystem could mount root, tried: 
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
random: crng init done

введите здесь описание изображения

Я нашел опцию в menuconfig, и теперь я получаю другую ошибку:

Linux version 4.9.0-00104-g84d4f8a-dirty (developer@1604) (gcc version 6.2.0 (Sourcery CodeBench Lite 2016.11-32) ) #37 Wed Apr 5 11:23:36 CEST 2017
bootconsole [early0] enabled
early_console initialized at 0xe8001440
On node 0 totalpages: 32768
free_area_init_node: node 0, pgdat c03cf6b0, node_mem_map c0402b80
  Normal zone: 256 pages used for memmap
  Normal zone: 0 pages reserved
  Normal zone: 32768 pages, LIFO batch:7
pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
pcpu-alloc: [0] 0 
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 32512
Kernel command line: debug console=ttyAL0,115200
PID hash table entries: 512 (order: -1, 2048 bytes)
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Sorting __ex_table...
Memory: 125808K/131072K available (1775K kernel code, 67K rwdata, 288K rodata, 1768K init, 191K bss, 5264K reserved, 0K cma-reserved)
SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
NR_IRQS:64 nr_irqs:64 0
clocksource: nios2-clksrc: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 38225208935 ns
Console: colour dummy device 80x25
Calibrating delay loop (skipped), value calculated using timer frequency.. 100.00 BogoMIPS (lpj=50000)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
cpu cpu0: Error -2 creating of_node link
clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275000 ns
random: fast init done
clocksource: Switched to clocksource nios2-clksrc
futex hash table entries: 256 (order: -1, 3072 bytes)
workingset: timestamp_bits=30 max_order=15 bucket_order=0
Block layer SCSI generic (bsg) driver version 0.4 loaded (major 254)
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
8001440.serial: ttyJ0 at MMIO 0x8001440 (irq = 2, base_baud = 0) is a Altera JTAG UART
mousedev: PS/2 mouse device common for all mice
Warning: unable to open an initial console.
Freeing unused kernel memory: 1768K (c01bd000 - c0377000)
This architecture does not have kernel memory protection.
Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000100

---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000100

random: crng init done

введите здесь описание изображения

Теперь я выбираю каталог моих файлов buildroot,

~$ ls -ahl /home/developer/nios2/buildroot/output/images/
total 9,6M
drwxr-xr-x 2 developer developer 4,0K apr  5 07:56 .
drwxrwxr-x 6 developer developer 4,0K apr  5 07:33 ..
-rw-r--r-- 1 developer developer 3,7M apr  5 07:56 rootfs.cpio
-rw-r--r-- 1 developer developer 2,1M apr  5 07:56 rootfs.jffs2
-rw-r--r-- 1 developer developer 3,8M apr  5 07:56 rootfs.tar

то я получаю этот вывод

Linux version 4.9.0-00104-g84d4f8a-dirty (developer@1604) (gcc version 6.2.0 (Sourcery CodeBench Lite 2016.11-32) ) #40 Wed Apr 5 11:35:15 CEST 2017
bootconsole [early0] enabled
early_console initialized at 0xe8001440
On node 0 totalpages: 32768
free_area_init_node: node 0, pgdat c07736b0, node_mem_map c07a6b80
  Normal zone: 256 pages used for memmap
  Normal zone: 0 pages reserved
  Normal zone: 32768 pages, LIFO batch:7
�pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
pcpu-alloc: [0] 0 
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 32512
Kernel command line: debug console=ttyAL0,115200
PID hash table entries: 512 (order: -1, 2048 bytes)
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Sorting __ex_table...
�Memory: 122080K/131072K available (1775K kernel code, 67K rwdata, 288K rodata, 5496K init, 191K bss, 8992K reserved, 0K cma-reserved)
SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
NR_IRQS:64 nr_irqs:64 0
clocksource: nios2-clksrc: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 38225208935 ns
Console: colour dummy device 80x25
Calibrating delay loop (skipped), value calculated using timer frequency.. 100.00 BogoMIPS (lpj=50000)
pid_max: default: 32768 minimum: 301
������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
cpu cpu0: Error -2 creating of_node link
clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275000 ns
random: fast init done
clocksource: Switched to clocksource nios2-clksrc
futex hash table entries: 256 (order: -1, 3072 bytes)
workingset: timestamp_bits=30 max_order=15 bucket_order=0
random: crng init done
Block layer SCSI generic (bsg) driver version 0.4 loaded (major 254)
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
8001440.serial: ttyJ0 at MMIO 0x8001440 (irq = 2, base_baud = 0) is a Altera JTAG UART
mousedev: PS/2 mouse device common for all mice
Warning: unable to open an initial console.
Failed to create /dev/root: -2
List of all partitions:
No filesystem could mount root, tried: 
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

person Niklas R.    schedule 05.04.2017    source источник


Ответы (2)


Во-первых, обратите внимание, что инструкция на вики-странице Rocketboard не завершена. Перекомпилировать ядро ​​Nios2 не так-то просто, потому что в нем много ошибок, недостаточных инструкций и путаницы самих сопровождающих. Во-вторых, само ядро ​​Linux представляет собой достаточно большое программное обеспечение. Вам понадобятся разные знания, включая древнюю (например, виртуальный терминал tty0) технику. Так что думать, что команда make menuconfig и make все сделает хорошо, это фантастика. Пожалуйста, серьезно подумайте над приведенным выше ответом «Где ваш initrd?».

person KAZUYASU    schedule 05.04.2017
comment
Откуда я могу знать, если ты отвечаешь только вопросами? Я гуглил про initrd и информация не полная и информация везде разная - person Niklas R.; 05.04.2017
comment
Вам уже удалось загрузить старую версию (ver2.6.34?) и использовать initrd? Пожалуйста, смотрите ваш menuconfig и настройки. И мистер Флексо, пожалуйста, не лезьте не в свое дело. - person KAZUYASU; 05.04.2017
comment
>Сейчас я прочитал 350 строк документации про initrd и ничего нет инструкции как это сделать. Вы читаете этот документ 'Linux/Documentation/initrd.txt'? lxr.free-electrons.com/source/Documentation/initrd. txt?v=4.9 Этот документ описывает роль и внутреннее устройство initrd fs и не описывает процедуру создания. › Сценаристы намеренно вредят читателю. Как это часто бывает с Linux, многие документы написаны в прошлом и устарели. Поэтому иногда сам исходный код является лучшей инструкцией. - person KAZUYASU; 05.04.2017
comment
Спасибо вам за помощь. Я нашел в menuconfig возможность установить файлы для initrd, но когда я загружаю систему, это становится паникой ядра. Я обновил свой вопрос своими выводами. - person Niklas R.; 05.04.2017
comment
Первая паника ядра "Паника ядра - не синхронизация: Попытка убить init! exitcode=0x00000100' означает, что задача инициализации прервана (с некоторой ошибкой) и ядро ​​не может продолжить загрузку. Задача «init» является родительской задачей для всех, и мы не можем ее убить. Вторая паника ядра «Паника ядра - не синхронизация: VFS: невозможно смонтировать корневую файловую систему в неизвестном блоке (0, 0)» означает, что ядро ​​​​не может снова смонтировать корневую файловую систему. Так что эта вторая проблема хуже, чем первая. - person KAZUYASU; 05.04.2017
comment
Хорошо иметь определение проблемы. Я попытался в menuconfig выбрать три файла изображений, которые были выведены из buildroot. Я установил имя каталога, а затем это была паника ядра. Я не уверен, что еще я могу сделать об этом. Я чувствую, что мне нужна помощь получше, чем случайный просмотр конфигураций в надежде, что я научусь. Я бы предпочел, чтобы линукс работал и делал для него программы. - person Niklas R.; 05.04.2017
comment
Вы создали файл «rootfs.cpio» или что-то в своем каталоге «output/images/» с помощью «Buildroot»? - person KAZUYASU; 05.04.2017
comment
Я получаю панику ядра - не синхронизация при попытке загрузки. - person Niklas R.; 05.04.2017
comment
Это архив корневой файловой системы. Вы должны добавить этот файл в образ ядра, например, используя «исходные файлы Initramfs». Разве это не удается? - person KAZUYASU; 05.04.2017
comment
Я могу добавить rootfs.cpio в menuconfig и собрать vmlinux. Но потом Warning: unable to open an initial console. Freeing unused kernel memory: 1772K (c022f000 - c03ea000) This architecture does not have kernel memory protection. Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000100 ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000100 random: crng init done - person Niklas R.; 05.04.2017
comment
Об этом предупреждении «Предупреждение: невозможно открыть начальную консоль». У вас есть файл узла /dev/console или что-то еще в вашей корневой файловой системе? - person KAZUYASU; 05.04.2017
comment
Я думаю, что у меня нет файловой системы. Я только начинаю. Нет /dev - person Niklas R.; 05.04.2017
comment
Вы не можете проверить содержимое «rootfs.cpio»? И, пожалуйста, обратитесь к сайту 'buildroot.org/downloads/manual/manual.html#_dev_management' для управления /dev. - person KAZUYASU; 05.04.2017
comment
Это выглядит как сжатая файловая система, когда я ее извлекаю. Я собираюсь восстановить его и посмотреть, что произойдет. - person Niklas R.; 05.04.2017
comment
Я предполагаю, что, возможно, отсутствие консоли убьет задачу инициализации, потому что «инициализация» вызовет программу оболочки. И спокойной ночи. В Японии сейчас 22:00. - person KAZUYASU; 05.04.2017
comment
Домо аригато годзаимасу. Я пересобираю из buildroot и изучаю разные конфигурации. Когда-нибудь это сработает. - person Niklas R.; 05.04.2017

Вы забыли указать допустимый параметр root= в командной строке и забыли установить основной/дополнительный корень по умолчанию при компиляции ядра. Параметр «мажор/минор» не работает при кросс-компиляции, если вы не отредактируете свое ядро ​​после этого, поэтому вам действительно нужно передать параметр root=.

Разделы не найдены. Где твой initrd?

Если /init не найден в initrd или он когда-либо завершается, initrd размонтируется и монтируется rootfs.

person Joshua    schedule 05.04.2017
comment
Я не думаю, что у меня есть файловая система. У меня есть SD-карта, которая может работать. Я должен rt*m Я полагаю, как создать файловую систему с Nios 2 и этой FPGA. - person Niklas R.; 05.04.2017
comment
Без файловой системы и без initrd ядро ​​ничего не сделает. - person Joshua; 05.04.2017