Score:1

ไม่สามารถบูต RISC-V ด้วย Qemu บน Ubuntu 18.04

ธง cn

ฉันพยายามเรียกใช้ RISCV โดยใช้ Qemu บนเครื่อง Ubuntu 18.04 สำหรับสิ่งเดียวกันฉันทำตามบทช่วยสอนด้านล่าง:

แต่หลังจากทำตามขั้นตอนทั้งหมดแล้ว ฉันประสบปัญหา (โปรดดูด้านล่างสำหรับบันทึกการบูตที่สมบูรณ์):

[ 0.400573] เคอร์เนลแพนิค - ไม่ซิงค์: ไม่พบการเริ่มต้นการทำงาน ลองส่งตัวเลือก init= ไปยังเคอร์เนล ดูเอกสาร Linux/admin-guide/init.rst สำหรับคำแนะนำ

ฉันพยายามเมานต์ไฟล์ .img ที่สร้างขึ้น & ฉันเห็นว่า /sbin/init มีอยู่

rushi@watershed:/mnt/rootfs$ ll sbin/init
lrwxrwxrwx 1 รูทรูท 14 ธันวาคม 21 21:41 sbin/init -> ../bin/busybox*
rushi@watershed:/mnt/rootfs/sbin$ ll ../bin/busybox
-rwxr-xr-x 1 รูทรูท 989272 21 ธันวาคม 21:41 ../bin/busybox*

ฉันยังใหม่กับการพัฒนา RISCV และกระบวนการบูตระบบทั้งหมด การรวบรวมโดยทั่วไป ความช่วยเหลือของคุณจะได้รับการชื่นชมมาก

ด้านล่างนี้เป็น bootlog ที่สมบูรณ์:

ผู้ใช้~/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 KB
เวอร์ชันรันไทม์ SBI : 0.2

ชื่อโดเมน 0 : root
โดเมน 0 บูต HART : 0
โดเมน0 HARTs : 0*
โดเมน0 ภูมิภาค00 : 0x0000000080000000-0x000000008001ffff ()
โดเมน0 ภูมิภาค01 : 0x0000000000000000-0xffffffffffffffff (R,W,X)
Domain0 ที่อยู่ถัดไป : 0x0000000080200000
โดเมน0 ถัดไป Arg1 : 0x00000000bf000000
โหมดถัดไปของ Domain0 : S-โหมด
Domain0 SysReset : ใช่

บูต HART ID : 0
บูตโดเมน HART : root
บูต HART ISA: rv64imafdcsu
คุณสมบัติ Boot HART : เคาน์เตอร์ เคาน์เตอร์ เคาน์เตอร์ เวลา
บูต HART PMP จำนวน : 16
ความละเอียดในการบู๊ต HART PMP : 4
บูต HART PMP Address Bits: 54
บูต HART MHPM จำนวน : 0
บูต HART MHPM จำนวน : 0
บูท HART MIDELEG : 0x0000000000000222
บูต HART MEDELEG : 0x000000000000b109
[ 0.000000] ของ: 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-0x00000000bffffff]
[ 0.000000] ว่างเปล่าปกติ
[ 0.000000] โซนที่เคลื่อนย้ายได้เริ่มต้นสำหรับแต่ละโหนด
[ 0.000000] ช่วงโหนดหน่วยความจำก่อนหน้า
[ 0.000000] โหนด 0: [บันทึก 0x0000000080200000-0x00000000bfffffff]
[ 0.000000] โหนดการตั้งค่า Initmem 0 [mem 0x0000000080200000-0x00000000bfffffff]
[ 0.000000] ซอฟต์แวร์ IO TLB: แมป [mem 0xbb000000-0xbf000000] (64MB)
[ 0.000000] elf_hwcap คือ 0x112d
[ 0.000000] percpu: ฝังตัว 17 หน้า/cpu 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] mem auto-init: stack:off, heap alloc:off, heap free:off
[ 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, CPUs=1, Nodes=1
[ 0.000000] rcu: การใช้งาน RCU ตามลำดับชั้น
[ 0.000000] rcu: RCU จำกัด CPU จาก 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 ของ clocksource [0] hartid [0]
[ 0.000000] clocksource: riscv_clocksource: มาสก์: 0xffffffffffffffff max_cycles: 0x24e6a1710, max_idle_ns: 440795202120 ns
[ 0.000102] sched_clock: 64 บิตที่ 10MHz, ความละเอียด 100ns, ตัดทุกๆ 4398046511100ns
[ 0.003386] คอนโซล: อุปกรณ์จำลองสี 80x25
[ 0.004764] ปรับเทียบลูปการหน่วงเวลา (ข้ามไป) ค่าที่คำนวณโดยใช้ความถี่ของตัวจับเวลา 20.00 BogoMIPS (lpj=40000)
[ 0.004930] pid_max: ค่าเริ่มต้น: 32768 ขั้นต่ำ: 301
[ 0.008515] รายการตารางแฮชเมานต์แคช: 2048 (ลำดับ: 2, 16384 ไบต์, เชิงเส้น)
[ 0.008564] รายการตารางแฮช Mountpoint-cache: 2048 (ลำดับ: 2, 16384 ไบต์, เชิงเส้น)
[ 0.034175] rcu: การใช้งาน SRCU ตามลำดับชั้น
[ 0.036327] smp: การเรียกใช้ CPU รอง ...
[ 0.036403] smp: นำขึ้นมา 1 โหนด, 1 CPU
[ 0.045787] devtmpfs: เริ่มต้น
[ 0.051744] สุ่ม: get_random_u32 ถูกเรียกจาก bucket_table_alloc.isra.0+0x4e/0x150 ด้วย crng_init=0
[ 0.053928] clocksource: jiffies: หน้ากาก: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[ 0.054075] รายการตารางแฮช futex: 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] clocksource: สลับไปยัง clocksource riscv_clocksource
[ 0.126588] NET: ตระกูลโปรโตคอลที่ลงทะเบียน 2
[ 0.127458] IP idents รายการตารางแฮช: 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 Layout...
[ 0.156506] 9p: การติดตั้งการสนับสนุนระบบไฟล์ v9fs 9p2000
[ 0.157700] NET: ตระกูลโปรโตคอลที่ลงทะเบียน 38
[ 0.157962] ไดรเวอร์บล็อกเลเยอร์ SCSI ทั่วไป (bsg) เวอร์ชัน 0.4 โหลดแล้ว (หลัก 252)
[ 0.158088] ตัวกำหนดตารางเวลา io mq-กำหนดเวลาที่ลงทะเบียน
[ 0.158171] ตัวกำหนดตารางเวลา io kyber ที่ลงทะเบียนแล้ว
[ 0.160653] pci-host-generic 30000000.pci: โฮสต์บริดจ์ /soc/pci@30000000 ช่วง:
[0.161119] pci-host-generic 30000000.pci: IO 0x03000000..0x0300ffff -> 0x00000000
[0.161572] pci-host-generic 30000000.pci: MEM 0x40000000..0x7fffffff -> 0x40000000
[0.161637] pci-host-generic 30000000.pci: MEM 0x400000000..0x7ffffffff -> 0x400000000
[ 0.163515] pci-host-generic 30000000.pci: ECAM ที่ [mem 0x30000000-0x3fffffff] สำหรับ [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-0x7fffffff]
[ 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 MB/50.0 MiB)
[ 0.310649] libphy: แก้ไขบัส MDIO: ตรวจสอบ
[ 0.311762] e1000e: ไดรเวอร์เครือข่าย Intel(R) PRO/1000 - 3.2.6-k
[ 0.312026] e1000e: ลิขสิทธิ์ (c) 1999 - 2015 Intel Corporation
[ 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: ไดรเวอร์แพลตฟอร์มทั่วไปของ 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] นั่ง: 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): ติดตั้งระบบไฟล์โดยไม่มีเจอร์นัล ตัวเลือก: (null)
[ 0.358113] VFS: ติดตั้งรูท (ระบบไฟล์ ext2) แบบอ่านอย่างเดียวบนอุปกรณ์ 254:0
[ 0.363449] devtmpfs: ติดตั้งแล้ว
[ 0.382965] การเพิ่มหน่วยความจำเคอร์เนลที่ไม่ได้ใช้: 212K
[ 0.383233] สถาปัตยกรรมนี้ไม่มีการป้องกันหน่วยความจำเคอร์เนล
[ 0.383571] เรียกใช้ /sbin/init เป็นกระบวนการเริ่มต้น
[ 0.398108] เรียกใช้ /etc/init เป็นกระบวนการเริ่มต้น
[ 0.398596] เรียกใช้ /bin/init เป็นกระบวนการเริ่มต้น
[ 0.399549] เรียกใช้ /bin/sh เป็นกระบวนการเริ่มต้น
[ 0.400573] เคอร์เนลแพนิค - ไม่ซิงค์: ไม่พบการเริ่มต้นการทำงาน ลองส่งตัวเลือก init= ไปยังเคอร์เนล ดูเอกสาร Linux/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/admin-guide/init.rst สำหรับคำแนะนำ ]----
QEMU: สิ้นสุด
Christian Ehrhardt avatar
sl flag
การจำลองแบบ Risc ทำให้ก้าวสำคัญในปีที่ผ่านมา โดยทั่วไปฉันแนะนำให้ลองสร้างจาก https://launchpad.net/~canonical-server/+archive/ubuntu/server-backports - นอกจากนี้สำหรับขั้นตอนในการใช้ https นี้: //wiki.ubuntu.com/RISC-V นำคุณไปยังอิมเมจและคำสั่ง/ตัวเลือกที่คุณต้องการเพื่อเริ่มต้น แจ้งให้เราทราบหากเพียงพอที่จะทำให้มันใช้งานได้ เราจะหาคำตอบให้ได้
rushi47 avatar
cn flag
@ChristianEhrhardt ขอบคุณที่เขียนมันออกมา ฉันกำลังจะผ่านฟอรัมนี้ แต่ดูเหมือนว่าจะสมบูรณ์ ในขั้นตอนที่อธิบาย: 'ถัดไปใช้ OpenSBI bootloader & u-boot-qemu เพื่อบูตเครื่องเสมือน' ภายใต้ 'Booting with qemu' คุณจะสามารถอธิบายวิธีใช้ opensbi & qemu smode uboot ได้หรือไม่ ลิงค์ใด ๆ จะเป็นประโยชน์มาก ?
Christian Ehrhardt avatar
sl flag
คำสั่ง qemu ที่ตามมาคือสิ่งที่ควรใช้ แต่ฉันเห็นด้วยในขณะที่สิ่งนี้ใช้ได้ผลกับฉันในอดีต แต่ตอนนี้ฉันล้มเหลวที่บ่นว่าไม่พบรูปภาพที่จะโหลด ฉันยังสามารถบู๊ตอิมเมจเก่าของฉันได้ แต่ไม่สามารถบูตอิมเมจปัจจุบันได้ ดังนั้นบางอย่างในอิมเมจจึงเปลี่ยนไป ซึ่งหมายถึงการเปลี่ยนแปลงขั้นตอนในหน้าวิกิ ฉันจะส่ง Ping ไปให้บางคนโดยหวังว่าพวกเขาจะรู้...
Christian Ehrhardt avatar
sl flag
ดู 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 ด้วยวิธีนี้ขั้นตอนที่เป็นเอกสารจะทำงานอีกครั้ง

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา