Рейтинг:1

Не удалось загрузить RISC-V с помощью Qemu в Ubuntu 18.04

флаг cn

Я пытаюсь запустить RISCV с помощью Qemu на машине с Ubuntu 18.04. Для того же я следовал ниже учебникам:

Но после выполнения всех шагов я столкнулся с проблемой (пожалуйста, посмотрите ниже полный журнал загрузки):

[0.400573] Паника ядра - не синхронизация: не найдено работающей инициализации. Попробуйте передать параметр init= ядру. См. руководство по Linux Documentation/admin-guide/init.rst.

Я попытался смонтировать созданный файл .img, и я вижу, что /sbin/init присутствует

rushi@watershed:/mnt/rootfs$ ll sbin/init
lrwxrwxrwx 1 root root 14 21 декабря 21:41 sbin/init -> ../bin/busybox*
rushi@watershed:/mnt/rootfs/sbin$ ll ../bin/busybox
-rwxr-xr-x 1 root root 989272 21 декабря 21:41 ../bin/busybox*

Я новичок во всех процессах разработки RISCV и загрузки систем, компиляции в целом. Ваша помощь будет высоко оценена.

Ниже приведен полный загрузочный журнал:

user~/riscv64-linux$ sudo qemu-system-riscv64 -m 1024 -nographic -machine virt -kernel linux/arch/riscv/boot/Image -append "root=/dev/vda ro console=ttyS0" -drive file= rootfs/rootfs.img,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 -bios по умолчанию

OpenSBI v0.9
   ____ _____ ____ _____
  / __ \ / ____| _ \_ _|
 | | | |_ __ ___ _ __ | (___ | |_) || |
 | | | | '_ \ / _ \ '_ \ \___ \| _ < | |
 | |__| | |_) | __/ | | |____) | |_) || |_
  \____/| .__/ \___|_| |_|_____/|____/_____|
        | |
        |_|

Название платформы: riscv-virtio,qemu
Особенности платформы: таймер, mfdeleg
Платформа Количество HART: 1
База прошивки: 0x80000000
Размер прошивки : 100 КБ
Версия SBI во время выполнения: 0.2

Имя домена0: корень
Домен0 Загрузка HART: 0
Домен0 HART: 0*
Domain0 Region00 : 0x0000000080000000-0x000000008001ffff ()
Domain0 Region01 : 0x0000000000000000-0xffffffffffffffffff (R, W, X)
Следующий адрес домена0: 0x0000000080200000
Домен0 Следующий аргумент 1: 0x00000000bf000000
Следующий режим Domain0: S-режим
Системный сброс домена0: да

Идентификатор загрузки HART: 0
Загрузочный домен HART: root
Загрузить HART ISA: rv64imafdcsu
Особенности загрузки HART: scounteren, mcounteren, time
Загрузка HART PMP Количество: 16
Загрузка HART PMP Степень детализации: 4
Биты адреса Boot HART PMP: 54
Загрузка HART MHPM Счетчик: 0
Загрузка HART MHPM Счетчик: 0
Загрузка HART MIDELEG: 0x0000000000000222
Загрузка HART MEDELEG: 0x000000000000b109
[0.000000] OF: fdt: Игнорирование диапазона памяти 0x80000000 - 0x80200000
[0.000000] Версия Linux 5.4.166 (версия gcc 11.1.0 (GCC)) #2 SMP, понедельник, 20 декабря, 04:17:38 EST 2021
[0.000000] initrd не найден или пуст — отключение initrd
[ 0,000000] Диапазоны зон:
[ 0.000000] DMA32 [память 0x0000000080200000-0x00000000bfffffff]
[ 0.000000] Обычный пустой
[ 0.000000] Начало подвижной зоны для каждого узла
[ 0.000000] Ранние диапазоны узлов памяти
[0.000000] узел 0: [память 0x0000000080200000-0x00000000bfffffff]
[ 0.000000] Узел настройки initmem 0 [mem 0x0000000080200000-0x00000000bffffffff]
[0.000000] программный IO TLB: сопоставлен [mem 0xbb000000-0xbf000000] (64MB)
[0.000000] elf_hwcap равен 0x112d
[ 0.000000] percpu: Встроенные 17 страниц/процессор s30680 r8192 d30760 u69632
[ 0.000000] Создан 1 список зон, включено группирование мобильности. Всего страниц: 258055
[0.000000] Командная строка ядра: root=/dev/vda ro console=ttyS0
[0,000000] Записи хеш-таблицы кэша Dentry: 131072 (порядок: 8, 1048576 байт, линейный)
[ 0,000000] Записи хэш-таблицы кэша инодов: 65536 (порядок: 7, 524288 байт, линейный)
[ 0.000000] Сортировка __ex_table...
[ 0.000000] автоинициализация памяти: стек: выкл., выделение кучи: выкл., куча свободна: выкл.
[0,000000] Память: 955488K/1046528K доступно (6252K кода ядра, 397K rwdata, 1958K Rodata, 213K init, 305K bss, 91040K зарезервировано, 0K cma-зарезервировано)
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPU=1, Nodes=1
[ 0.000000] rcu: Иерархическая реализация RCU.
[ 0.000000] rcu: RCU ограничивает ЦП от NR_CPUS=8 до nr_cpu_ids=1.
[ 0.000000] rcu: рассчитанное RCU значение задержки включения планировщика составляет 25 джиффи.
[ 0.000000] rcu: Настройка геометрии для rcu_fanout_leaf=16, nr_cpu_ids=1
[ 0.000000] NR_IRQS: 0, nr_irqs: 0, предварительно выделенные irqs: 0
[ 0.000000] plic: сопоставлено 53 прерывания с 1 обработчиком для 2 контекстов.
[ 0.000000] riscv_timer_init_dt: Регистрация источника синхронизации cpuid [0] hartid [0]
[ 0.000000] источник часов: riscv_clocksource: маска: 0xffffffffffffffffff max_cycles: 0x24e6a1710, max_idle_ns: 440795202120 нс
[ 0,000102] sched_clock: 64 бита на частоте 10 МГц, разрешение 100 нс, переход каждые 4398046511100 нс
[ 0.003386] Консоль: цветное фиктивное устройство 80x25
[0,004764] Калибровка контура задержки (пропущено), значение рассчитано с использованием частоты таймера.. 20,00 BogoMIPS (lpj=40000)
[0,004930] pid_max: по умолчанию: 32768 минимум: 301
[0,008515] Записи хеш-таблицы кэша монтирования: 2048 (порядок: 2, 16384 байта, линейный)
[0,008564] Записи хеш-таблицы кэша точек монтирования: 2048 (порядок: 2, 16384 байта, линейный)
[ 0.034175] rcu: Иерархическая реализация SRCU.
[ 0.036327] smp: Включение вторичных процессоров...
[ 0.036403] smp: поднят 1 узел, 1 ЦП
[0.045787] devtmpfs: инициализирован
[0.051744] random: get_random_u32 вызывается из Bucket_table_alloc.isra.0+0x4e/0x150 с crng_init=0
[0.053928] источник часов: мгновения: маска: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 нс
[0,054075] Записи хэш-таблицы фьютекса: 256 (порядок: 2, 16384 байта, линейный)
[0,056622] NET: Зарегистрированное семейство протоколов 16
[ 0.099525] vgaarb: загружен
[0.100575] Подсистема SCSI инициализирована
[0.102143] usbcore: зарегистрирован новый драйвер интерфейса usbfs
[0.102453] usbcore: зарегистрирован новый концентратор драйвера интерфейса
[0.102622] usbcore: зарегистрирован новый драйвер устройства usb
[ 0.110644] источник часов: переключен на источник часов riscv_clocksource
[0.126588] NET: Зарегистрированное семейство протоколов 2
[0.127458] Записи хеш-таблицы IP-идентов: 16384 (порядок: 5, 131072 байта, линейный)
[0.130630] tcp_listen_portaddr_hash записей хеш-таблицы: 512 (порядок: 1, 8192 байта, линейный)
[ 0.130731] Установленные записи хеш-таблицы TCP: 8192 (порядок: 4, 65536 байт, линейный)
[0.130939] Записи хэш-таблицы привязки TCP: 8192 (порядок: 5, 131072 байта, линейный)
[0.131127] TCP: настроены хеш-таблицы (установлено 8192, привязка 8192)
[0.132583] Записи хеш-таблицы UDP: 512 (порядок: 2, 16384 байта, линейный)
[0.132818] Записи хеш-таблицы UDP-Lite: 512 (порядок: 2, 16384 байта, линейный)
[0.134108] NET: Зарегистрированное семейство протоколов 1
[0.136391] RPC: зарегистрированный именованный транспортный модуль сокетов UNIX.
[0.136457] RPC: зарегистрированный транспортный модуль udp.
[0.136482] RPC: зарегистрированный транспортный модуль TCP.
[0.136498] RPC: Зарегистрирован транспортный модуль обратного канала TCP NFSv4.1.
[0.136592] PCI: CLS 0 байт, по умолчанию 64
[0.143017] рабочий набор: timestamp_bits=62 max_order=18 Bucket_order=0
[0.154976] NFS: Регистрация типа ключа id_resolver
[0.155730] Тип ключа id_resolver зарегистрирован
[0.155785] Тип ключа id_legacy зарегистрирован
[0.155901] nfs4filelayout_init: Регистрация драйвера макета файла NFSv4...
[0.156003] nfs4flexfilelayout_init: Регистрация драйвера макета NFSv4 Flexfile...
[0.156506] 9p: Установка поддержки файловой системы v9fs 9p2000
[ 0.157700] NET: Зарегистрированное семейство протоколов 38
[0.157962] Загружен общий драйвер SCSI блочного уровня (bsg) версии 0.4 (старший 252)
[ 0.158088 ] io scheduler mq-deadline зарегистрирован
[0.158171] Зарегистрирован планировщик io kyber
[ 0.160653] pci-host-generic 30000000.pci: host bridge /soc/pci@30000000 диапазоны:
[0.161119] pci-host-generic 30000000.pci: IO 0x03000000..0x0300ffff -> 0x00000000
[0.161572] pci-host-generic 30000000.pci: MEM 0x40000000..0x7ffffffff -> 0x40000000
[0.161637] pci-host-generic 30000000.pci: MEM 0x400000000..0x7ffffffff -> 0x400000000
[0.163515] pci-host-generic 30000000.pci: ECAM в [mem 0x30000000-0x3ffffffff] для [bus 00-ff]
[0.164317] pci-host-generic 30000000.pci: хост-мост PCI к шине 0000:00
[0.164487] pci_bus 0000:00: ресурс корневой шины [шина 00-ff]
[0.164605] pci_bus 0000:00: ресурс корневой шины [io 0x0000-0xffff]
[0.164624] pci_bus 0000:00: ресурс корневой шины [mem 0x40000000-0x7ffffffff]
[0.164638] pci_bus 0000:00: ресурс корневой шины [mem 0x400000000-0x7ffffffff]
[0.166493] pci 0000:00:00.0: [1b36:0008] тип 00 класс 0x060000
[0.236158] Серийный номер: драйвер 8250/16550, 4 порта, совместное использование IRQ отключено
[0.242182] printk: консоль [ttyS0] отключена
[0.243277] 10000000.uart: ttyS0 на MMIO 0x10000000 (irq = 10, base_baud = 230400) — это 16550A
[0.267699] printk: консоль [ttyS0] включена
[0.269576] [drm] включена настройка режима ядра radeon.
[0.282172] цикл: модуль загружен
[0.291691] virtio_blk virtio0: [vda] 102400 логических блоков по 512 байт (52,4 МБ/50,0 МБ)
[0.310649] libphy: фиксированная шина MDIO: проверено
[0.311762] e1000e: Сетевой драйвер Intel(R) PRO/1000 — 3.2.6-k
[ 0.312026] e1000e: Copyright(c) Корпорация Intel, 1999–2015 гг.
[0.312608] ehci_hcd: Драйвер USB 2.0 'Enhanced' Host Controller (EHCI)
[0.312982] ehci-pci: драйвер платформы EHCI PCI
[0.313376] ehci-platform: универсальный драйвер платформы EHCI
[0.313809] ohci_hcd: USB 1.1 «Открытый» драйвер хост-контроллера (OHCI)
[0.314134] ohci-pci: драйвер платформы OHCI PCI
[0.314614] ohci-platform: универсальный драйвер платформы OHCI
[0.315707] usbcore: зарегистрирован новый драйвер интерфейса uas
[0.316137] usbcore: зарегистрирован новый драйвер интерфейса usb-storage
[0.317205] mousedev: Мышь PS/2, общая для всех мышей
[0.318871] usbcore: зарегистрирован новый драйвер интерфейса usbhid
[0.319160] usbhid: основной драйвер USB HID
[0.320916] NET: Зарегистрированное семейство протоколов 10
[0.326954] Сегментная маршрутизация с IPv6
[0.327577] sit: Драйвер туннелирования IPv6, IPv4 и MPLS через IPv4
[0.330230] NET: Зарегистрированное семейство протоколов 17
[0.331759] 9pnet: Установка поддержки 9P2000
[0.332245] Тип ключа dns_resolver зарегистрирован
[0.347909] EXT4-fs (vda): монтирование файловой системы ext2 с использованием подсистемы ext4
[0.357523] EXT4-fs (vda): смонтированная файловая система без журнала. Опции: (нулевой)
[0.358113] VFS: смонтированный корень (файловая система ext2) только для чтения на устройстве 254:0.
[ 0.363449] devtmpfs: установлен
[0.382965] Освобождение неиспользуемой памяти ядра: 212 КБ
[0.383233] Эта архитектура не имеет защиты памяти ядра.
[0.383571] Запустить /sbin/init как процесс инициализации
[0.398108] Запустить /etc/init как процесс инициализации
[0.398596] Запустить /bin/init как процесс инициализации
[0.399549] Запустить /bin/sh как процесс инициализации
[0.400573] Паника ядра - не синхронизация: не найдено работающей инициализации. Попробуйте передать параметр init= ядру. См. руководство по Linux Documentation/admin-guide/init.rst.
[ 0.401379] CPU: 0 PID: 1 Comm: swapper/0 Не испорчен 5.4.166 #2
[ 0.401701] Отслеживание вызовов:
[ 0.401947] [<ffffffe000037ad0>] walk_stackframe+0x0/0xa6
[0.402232] [<ffffffe000643072>] show_stack+0x2e/0x38
[0.402510] [<ffffffe00064b914>] dump_stack+0x66/0x80
[ 0.402757] [<ffffffe0006431bc>] паника+0xd6/0x260
[0.402978] [<ffffffe00064bb4e>] kernel_init+0xbc/0xc8
[0.403215] [<ffffffe0000367e4>] ret_from_exception+0x0/0xc
[ 0.404033] ---[ конец Паника ядра - не синхронизация: не найдено работающей инициализации. Попробуйте передать параметр init= ядру. См. руководство по Linux Documentation/admin-guide/init.rst. ]---
QEMU: прекращено
Christian Ehrhardt avatar
флаг sl
Эмуляция Risc сделала большие шаги вперед за последние годы, я обычно рекомендую попробовать сборки с https://launchpad.net/~canonical-server/+archive/ubuntu/server-backports. Кроме того, для шагов по использованию этого https: //wiki.ubuntu.com/RISC-V предоставляет вам изображения и команды/параметры, необходимые для начала работы. Дайте мне знать, достаточно ли этого, чтобы заставить его работать, тогда мы сможем дать ответ.
rushi47 avatar
флаг cn
@ChristianEhrhardt спасибо, что написали это, я просматривал этот форум, но он выглядит полным. В описанных шагах: «Далее используйте загрузчик OpenSBI и u-boot-qemu для загрузки виртуальной машины» в разделе «Загрузка с помощью qemu», сможете ли вы описать, как использовать opensbi и qemu smode uboot. Любая ссылка будет очень полезна?
Christian Ehrhardt avatar
флаг sl
Следующую за этим команду qemu следует использовать. Но я согласен, хотя это работало для меня в прошлом, теперь я не жалуюсь на то, что не могу найти изображение для загрузки. Я все еще могу загрузить свой старый образ, но не текущую загрузку, поэтому что-то в изображениях изменилось, что подразумевает изменение шагов на странице вики. Я позвоню нескольким людям, надеясь, что они могут знать...
Christian Ehrhardt avatar
флаг sl
см. https://www.reddit.com/r/RISCV/comments/rt7hsh/a_note_on_qemu_and_ubootqemu_and_precompiled/ и https://discourse.ubuntu.com/t/ubuntu-server-on-risc-v-documentation-needs-updating/ 23927/11 . TL;DR — пока проблема не решена, установите u-boot-qemu (2021.10+dfsg-1) с https://packages.debian.org/de/sid/all/u-boot-qemu/download. После этого задокументированные шаги снова работают.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.