root@ubuntu:~/rv/ # ls output/modules/lib/modules/ 5.12.3-bdong-dev root@ubuntu:~/rv/ # ls output/modules/lib/modules/5.12.3-bdong-dev/ build kernel modules.alias modules.alias.bin modules.builtin modules.builtin.bin modules.builtin.modinfo modules.dep modules.dep.bin modules.devname modules.order modules.softdep modules.symbols modules.symbols.bin source root@ubuntu:~/rv/ # dd if=/dev/zero of=rootfs.ext2 bs=1M count=16 16+0 records in 16+0 records out 16777216 bytes (17 MB, 16 MiB) copied, 0.027542 s, 609 MB/s root@ubuntu:~/rv/ # ls buildroot dn.sh libmetal linux OpenAMP opensbi output qemu README.md rootfs.ext2 rtos tarball toolchains u-boot root@ubuntu:~/rv/ # mkfs.ext2 rootfs.ext2 mke2fs 1.44.1 (24-Mar-2018) Discarding device blocks: done Creating filesystem with 16384 1k blocks and 4096 inodes Filesystem UUID: 2b9718ac-463b-4b7c-ba30-a29e83ebedeb Superblock backups stored on blocks: 8193 Allocating group tables: done Writing inode tables: done Writing superblocks and filesystem accounting information: done root@ubuntu:~/rv/ # mkdir /data5 root@ubuntu:~/rv/ # mount rootfs.ext2 /data5 root@ubuntu:~/rv/ # cp -r output/modules/lib/ /data5 root@ubuntu:~/rv/ # ls /data5/ lib lost+found root@ubuntu:~/rv/ # umount /data5 root@ubuntu:~/rv/ #
启动
qemu-system-riscv64 -M virt -m 512M -smp 2 -bios fw_jump.bin -kernel Image -append "rootwait root=/dev/vda" -drive file=rootfs.ext2,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 -netdev user,id=net0,hostfwd=::2222-:22 -device virtio-net-device,netdev=net0 -nographic
rootfs.ext2没有init
[ 0.694886] NET: Registered protocol family 17 [ 0.697241] 9pnet: Installing 9P2000 support [ 0.698031] Key type dns_resolver registered [ 0.699446] debug_vm_pgtable: [debug_vm_pgtable ]: Validating architecture page table helpers [ 0.726776] EXT4-fs (vda): mounting ext2 file system using the ext4 subsystem [ 0.740639] EXT4-fs (vda): mounted filesystem without journal. Opts: (null) [ 0.741374] VFS: Mounted root (ext2 filesystem) readonly on device 254:0. [ 0.746050] devtmpfs: error mounting -2 [ 0.777616] Freeing unused kernel memory: 220K [ 0.780019] Run /sbin/init as init process [ 0.781295] Run /etc/init as init process [ 0.782049] Run /bin/init as init process [ 0.783079] Run /bin/sh as init process [ 0.783940] Kernel panic - not syncing: No working init found. Try passing init= option to kernel. See Linux Documentation/admin-guide/init.rst for guidance. [ 0.784981] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.10.7 #2 [ 0.785461] Call Trace: [ 0.785834] [<ffffffe0002025d2>] walk_stackframe+0x0/0xaa [ 0.786229] [<ffffffe0008ab954>] show_stack+0x32/0x3e [ 0.786529] [<ffffffe0008ae1b6>] dump_stack+0x74/0x8e [ 0.786819] [<ffffffe0008abaea>] panic+0xfc/0x2b2 [ 0.787090] [<ffffffe0008b5914>] kernel_init+0xec/0xf8 [ 0.787375] [<ffffffe0002012e2>] ret_from_exception+0x0/0xc [ 0.787893] SMP: stopping secondary CPUs [ 0.789062] ---[ end Kernel panic - not syncing: No working init found. Try passing init= option to kernel. See Linux Documentation/admin-guide/init.rst for guidance. ]--- QEMU: Terminated
正常的有
root@ubuntu:/home/ubuntu/demo_bin# mkdir demo root@ubuntu:/home/ubuntu/demo_bin# mount rootfs.ext2.bak demo root@ubuntu:/home/ubuntu/demo_bin# ls demo/ bin dev etc lib lib64 linuxrc lost+found media mnt opt proc root run sbin sys tmp usr var root@ubuntu:/home/ubuntu/demo_bin# ls demo/lib ld-2.32.so libanl.so.1 libatomic.so.1.2.0 libcrypt.so.1 libdl.so.2 libm-2.32.so libnss_dns.so.2 libpthread-2.32.so libresolv.so.2 libutil-2.32.so ld-linux-riscv64-lp64d.so.1 libatomic.so libc-2.32.so libc.so.6 libgcc_s.so libm.so.6 libnss_files-2.32.so libpthread.so.0 librt-2.32.so libutil.so.1 libanl-2.32.so libatomic.so.1 libcrypt-2.32.so libdl-2.32.so libgcc_s.so.1 libnss_dns-2.32.so libnss_files.so.2 libresolv-2.32.so librt.so.1 modules root@ubuntu:/home/ubuntu/demo_bin# ls demo/lib/modules/ 5.10.7 root@ubuntu:/home/ubuntu/demo_bin#