Как да изберем изходните файлове на 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
Как мога да разбера, ако отговаряте само с въпроси? Търсих в Google за initrd и информацията не е пълна и информацията е различна навсякъде - person Niklas R.; 05.04.2017
comment
Не успяхте ли вече да стартирате старата версия (ver2.6.34?) и да използвате initrd? Моля, вижте конфигурацията на менюто и настройките. И г-н Флексо, моля, гледайте си работата. - 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: Не може да се монтира root fs на unknown-block(0, 0)“ означава, че ядрото не може да монтира отново основната файлова система. Така че този втори проблем е по-лош от първия. - person KAZUYASU; 05.04.2017
comment
Дефиницията на проблема е добре да има. Опитах в menuconfig да избера трите файла с изображения, които бяха изведени от buildroot. Зададох името на директорията и тогава беше паника на ядрото. Не съм сигурен какво повече мога да направя по въпроса. Чувствам, че имам нужда от по-добра помощ, отколкото да преглеждам произволно конфигурации и да се надявам, че ще се науча. Предпочитам Linux да работи и да правя програми за него. - 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 node файл или нещо друго във вашата основна файлова система? - 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
Предполагам, че може би липсата на конзола ще убие init задачата, защото 'init' ще извика shell програмата. И лека нощ. В Япония е 22:00 часа. - person KAZUYASU; 05.04.2017
comment
Domo arigatou gozaimasu. Възстановявам от buildroot и проучвам различни конфигурации. Някой ден ще проработи. - person Niklas R.; 05.04.2017

Забравили сте да му дадете валиден параметър root= на командния ред и сте забравили да зададете главния/малкия корен по подразбиране, когато сте компилирали ядрото си. Настройката major/minor не работи при кръстосано компилиране, освен ако след това не редактирате ядрото си hexedit, така че наистина трябва да подадете параметъра root=.

Няма намерени дялове. Къде е вашият initrd?

Ако /init не бъде намерен в initrd или някога се прекрати, initrd се демонтира и rootfs се монтира.

person Joshua    schedule 05.04.2017
comment
Не мисля, че имам файлова система. Имам SD карта, която може да работи. Трябва да попитам как да създам файлова система с Nios 2 и тази FPGA. - person Niklas R.; 05.04.2017
comment
Без файлова система и initrd ядрото няма да направи нищо. - person Joshua; 05.04.2017