У меня проблема когда я столкнулся в режиме fs с запущенным gem5 - PullRequest
1 голос
/ 06 августа 2020

Я хочу запустить систему arm linux в режиме fs gem5, я ​​загружаю связанные файлы с этого адреса: http://www.gem5.org/documentation/general_docs/fullsystem/guest_binaries

Мне удалось настроить правильный путь к файлу, но, наконец, получил этот вывод в терминале 2:

[    0.661620] No filesystem could mount root, tried: 
[    0.661621]  ext3
[    0.661650]  ext4`enter code here`
[    0.661663]  ext2
[    0.661676]  vfat
[    0.661690]  fuseblk
[    0.661703] 
[    0.661728] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(254,0)

И получил этот ужасный результат в терминале 1:

warn: Tried to read RealView I/O at offset 0x60 that doesn't exist
warn: Tried to write RVIO at offset 0xa8 (data 0) that doesn't exist
warn: Kernel panic in simulated kernel

Я могу предоставить свой ввод командной строки, но просто изменив конфигурацию внутри приведет только к тому же результату:

./build/ARM/gem5.opt configs/example/arm/starter_fs.py --cpu="minor" --num-cores=4 --disk-image=/home/ad/GEM5/ARM_GEM5/gem5/my_image/disks/aarch64-ubuntu-trusty-headless.img --dtb=/home/ad/GEM5/ARM_GEM5/gem5/my_image/binaries/armv7_gem5_v1_4cpu.dtb --kernel=/home/ad/GEM5/ARM_GEM5/gem5/my_image/binaries/vmlinux

Как я могу решить эту проблему? С уважением,

Ответы [ 2 ]

1 голос
/ 17 августа 2020

У меня была аналогичная проблема. Попытка запустить полную эмуляцию системы как Ubuntu , так и Linaro minimal (с веб-сайта gem5 ) под 64-битным ядром, с оригинальным сценарием starter_fs.py, дает мне эту панику ядра c:

[    0.224367] List of all partitions:
[    0.224394] fe00         1048320 vda 
[    0.224397]  driver: virtio_blk
[    0.224440]   fe01         1048288 vda1 00000000-01
[    0.224441] 
[    0.224480] No filesystem could mount root, tried: 
[    0.224481]  ext3
[    0.224510]  ext4
[    0.224524]  ext2
[    0.224537]  squashfs
[    0.224551]  vfat
[    0.224566]  fuseblk
[    0.224579] 
[    0.224606] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(254,0)
[    0.224656] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.18.0+ #1
[    0.224692] Hardware name: V2P-CA15 (DT)
[    0.224717] Call trace:
[    0.224741]  dump_backtrace+0x0/0x1c0
[    0.224765]  show_stack+0x14/0x20
[    0.224790]  dump_stack+0x8c/0xac
[    0.224812]  panic+0x130/0x288
[    0.224836]  mount_block_root+0x22c/0x294
[    0.224861]  mount_root+0x140/0x174
[    0.224884]  prepare_namespace+0x138/0x180
[    0.224910]  kernel_init_freeable+0x1c0/0x1e0
[    0.224939]  kernel_init+0x10/0x108
[    0.224961]  ret_from_fork+0x10/0x18
[    0.224987] Kernel Offset: disabled
[    0.225009] CPU features: 0x21c06492
[    0.225032] Memory Limit: 2048 MB
[    0.225056] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(254,0) ]---

Странно то, что несколько недель go он работал как шарм. Проблема заключается в спецификации раздела root в командной строке ядра. В starter_fs.py, измените эту строку :

"root=/dev/vda",

На это:

"root=/dev/vda1",

Вы можно видеть, что раньше было указано VirtIO блочное устройство . Ядру нужен раздел, а не блочное устройство . Затем вы можете запустить gem5 :

build/ARM/gem5.opt -configs/example/arm/starter_fs.py --cpu="hpi" --num-cores=1 --disk-image="linaro-minimal-aarch64.img" --kernel="vmlinux.arm64"

И для меня ядро ​​pani c исчезло , и я могу чтобы снова загрузить мою систему :

[    0.228847] EXT4-fs (vda1): mounted filesystem without journal. Opts: (null)
[    0.228906] VFS: Mounted root (ext4 filesystem) on device 254:1.
[    0.229539] devtmpfs: mounted
[    0.229792] Freeing unused kernel memory: 448K
INIT: version 2.88 booting
[    0.234168] random: fast init done
Starting udev
[    0.277039] udevd[715]: starting version 182
[    0.411534] EXT4-fs (vda1): re-mounted. Opts: block_validity,delalloc,barrier,user_xattr
Starting Bootlog daemon: bootlogd.
[    0.426573] random: dd: uninitialized urandom read (512 bytes read)
Populating dev cache
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
hwclock: can't open '/dev/misc/rtc': No such file or directory
Mon Jan 27 08:00:00 UTC 2014
hwclock: can't open '/dev/misc/rtc': No such file or directory
INIT: Entering runlevel: 5
Configuring network interfaces... ifconfig: SIOCGIFFLAGS: No such device
Starting rpcbind daemon...rpcbind: cannot create socket for udp6
rpcbind: cannot create socket for tcp6
done.
rpcbind: cannot get uid of '': Success
creating NFS state directory: done
starting statd: done
Starting auto-serial-console: done
Stopping Bootlog daemon: 
bootlogd.
Last login: Mon Jan 27 08:00:00 UTC 2014 on tty1
INIT: no more processes left in this runlevel
root@genericarmv8:~# id
id
uid=0(root) gid=0(root) groups=0(root)
root@genericarmv8:~#
1 голос
/ 06 августа 2020

Вот полная процедура диагностики c для такого рода проблем: https://askubuntu.com/questions/41930/kernel-panic-not-syncing-vfs-unable-to-mount-root-fs-on-unknown-block0-0/1048477#1048477

Таким образом, вы должны убедиться, что:

  • ядро ​​имеет конфигурацию для чтения типа диска, обычно для эмуляции:

    CONFIG_VIRTIO_PCI=y
    CONFIG_VIRTIO_BLK=y
    

    Кажется, это проблема, поскольку не было приведенного выше списка разделов? Пожалуйста подтвердите. В противном случае ядро ​​не может читать байты с диска.

  • ядро ​​имеет конфигурацию для чтения типа файловой системы. В ядре упоминается ext2,3,4, так что проблема не в этом.

  • вы указываете root = kernel CLI на правый раздел

См. Также: https://cirosantilli.com/linux-kernel-module-cheat/#not -syncing Он также содержит установку сборки root, которая просто работает.

Я также настоятельно рекомендую вам сначала запустить его на QEMU, который загружается намного быстрее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...