lab0

qemu-system-riscv64 -nographic -machine virt -kernel arch/riscv/boot/Image     -device virtio-blk-device,drive=hd0 -append "root=/dev/vda ro console=ttyS0"     -bios default -drive file=~/os24fall-stu/src/lab0/rootfs.img,format=raw,id=hd0
qemu-system-riscv64 -nographic -machine virt -kernel arch/riscv/boot/Image \
    -device virtio-blk-device,drive=hd0 -append "root=/dev/vda ro console=ttyS0" \
    -bios default -drive file=~/os24fall-stu/src/lab0/rootfs.img,format=raw,id=hd0 -S -s
# Terminal 2
<div markdown="1" style="margin-top: -30px; font-size: 0.75em; opacity: 0.7;">
:material-circle-edit-outline:  86 个字 :fontawesome-solid-code: 10 行代码 
</div>
gdb-multiarch vmlinux
(gdb) target remote :1234   # 连接 qemu
(gdb) b start_kernel        # 设置断点
(gdb) continue              # 继续执行
(gdb) quit                  # 退出 gdb
layout asm
b * 0x80000000
info br
    i r ra
    i br
delete 1
ni //not into func
si //into func
c //continue to next br
bt //stack
p //print
make clean

vmlinux(“vm”代表的“virtual memory”)是一个包括linux kernel的静态链接的可运行文件,编译内核源码得到的最原始的内核文件,未压缩,比较大,是elf格式的文件。