借助busybox调试Loong内核
调内核,用busybox小小的,很方便
编译busybox
git clone https://github.com/mirror/busybox.git
cd busybox
export ARCH=loongarch
export CROSS_COMPILE=loongarch64-linux-gnu-
make menuconfig # (Enable Static binary, Disable SHA1_HWACCEL & SHA256_HWACCEL)
make -j为真机制作initrd
mkdir -p initramfs/{bin,dev,etc,proc,sys,usr}
cd initramfs
cp ../busybox bin/
mknod dev/console c 5 1
mknod dev/null c 1 3
cat > init << 'EOF'
#!/bin/busybox sh
/bin/busybox mount -t proc proc /proc
/bin/busybox mount -t sysfs sysfs /sys
/bin/busybox mount -t devtmpfs devtmpfs /dev
/bin/busybox sh
EOF
chmod +x init
find . -print0 | cpio --null -ov --format=newc | gzip -9 > ../initramfs.cpio.gz为Qemu制作根文件系统
如果qemu-loongarch可以支持直接加载initrd就不需要单独做文件系统了
dd if=/dev/zero of=rootfs.img bs=1M count=500
cfdisk rootfs.img
losetup rootfs.img -fP
mkfs.vfat -F 32 /dev/loop0p1
mkfs.ext2 /dev/loop0p2
mount /dev/loop0p1 mnt/
mount /work/iso/Loongnix-20.6.livecd.kde.loongarch64.iso /mnt/
cp /mnt/EFI/ mnt/ -ra
umount /mnt
umount mnt/ # Make Grub
mount /dev/loop0p2 mnt/
mkdir -p mnt/{bin,dev,etc,proc,sys,usr}
mknod dev/console c 5 1
mknod dev/null c 1 3
cp busybox mnt/bin/
chroot mnt /bin/busybox --install -s /bin
sh -c 'cat > mnt/init << "EOF"
#!/bin/sh
mount -t proc proc /proc
mount -t sysfs sysfs /sys
exec /bin/sh
EOF'
chmod +x mnt/init
mkdir mnt/boot
cp vmlinux mnt/boot/
cp initramfs.cpio.gz mnt/boot/
umount mnt/
lsblk
losetup -d
losetup -d /dev/loop0最后更新于