配置QEMU开发环境
问题修复
如果已经安装了ncurses库, 还是提示安装ncurses库, 修改类似kconfig/lxdialog/check-lxdialog.c
的文件
int main() {}
改为
int main() { return 0; }
编译内核
编译x86_64的内核
make x86_64_defconfigmake
编译busybox的文件系统
勾选编译成静态文件
make menuconfigmakemake install
如果安装了ncurses
库,还是提示错误,修改scripts/kconfig/lxdialog/Makefile
注释always := $(hostprogs-y) dochecklxdialog
如果networking/tc.c
编译报错,将networking/tc.c
移出/networking
目录
配置网络
sudo ip link add name br0 type bridgesudo ip link set dev br0 upsudo ip addr add 192.168.1.1/24 dev br0
安装nfs
apt install nfs-kernel-server
修改nfs配置文件
/nfsroot *(rw,sync,no_subtree_check,no_root_squash)
重新加载nfs配置
sudo exportfs -asudo systemctl restart nfs-kernel-server
修改busybox的配置
创建目录
mkdir etc dev mnt proc tmp sysmkdir -p etc/init.d/
::sysinit:/etc/init.d/rcS::respawn:-/bin/sh::askfirst:-/bin/sh::shutdown:/bin/umount -a -r
/bin/mount -amount -o remount,rw /mkdir -p /dev/ptsmount -t devpts devpts /dev/ptsecho /sbin/mdev > /proc/sys/kernel/hotplugmdev -s
proc /proc proc defaults 0 0tmpfs /tmp tmpfs defaults 0 0none /tmp ramfs defaults 0 0sysfs /sys sysfs defaults 0 0mdev /dev ramfs defaults 0 0
mknod /nfsroot/dev/console c 5 1mknod /nfsroot/dev/null c 1 3mknod /nfsroot/dev/tty1 c 4 1chmod +x /nfsroot/etc/inittabchmod +x /nfsroot/etc/init.d/rcS
启动QEMU
允许连接网桥
allow br0
qemu-system-x86_64 \ -kernel ./arch/x86/boot/bzImage \ -append "root=/dev/nfs nfsroot=192.168.1.1:/nfsroot,vers=3,intr,nolock,rsize=1024,wsize=1024,tcp ip=192.168.1.10::192.168.1.1:255.255.255.0:clienthostname:eth0:off rw init=/linuxrc console=tty0 console=ttyS0" \ --nographic -netdev bridge,id=net0,br=br0 -device e1000,netdev=net0
创建resolv.conf
配置文件
nameserver 1.1.1.1
内核的起始位置
x86_64架构下, 0x100200