linux内核编译+QEMU编译+根文件系统制作

一、安装相关依赖项(Linux内核和QEMU都包括)
sudo apt  install  libssl-dev  flex  bison  python3-dev  pip  ncurses-devel
libglib2.0-dev  libfdt-dev  ninja-build  zlib1g-dev  libpixman-1-dev   libelf-dev

sudo pip
install sphinx
编译qemu。官网:https://www.qemu.org/
源码下载: wget https://download.qemu.org/qemu-9.2.0.tar.xz
解压和编译
tar xvf qemu-9.2.0.tar.xz
cd  qemu-9.2.0
./configure  --enable-kvm --enable-debug   #开启KVM和调试功能
make   或者    make -j4   #采用并行编译,加快编译速度,j后面的数字比CPU核数小1,防止报错
make install              #安装
二、安装相关依赖项,见上
编译linux内核,官网:https://www.kernel.org/
源码下载 
wget  https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.15.175.tar.xz
解压 tar xvf  linux-5.15.175.tar.xz
cd  linux-5.15.175
make menuconfig或者make defconfig 默认
make 或者 make -j4   #并行编译

如果编译报错,记得 vim .config,修改三个配置
注释掉两个配置项
#CONFIG_MODULE_SIG_KEY="certs/signing_key.pem"
#CONFIG_SYSTEM_TRUSTED_KEYS="certs/rhel.pem"
修改一个配置项为
CONFIG_SYSTEM_REVOCATION_KEYS=""

  编译完成后会生成vmlinux裸文件,这个文件在QEMU中不能直接运行

执行下面的命令
make bzImage      #生成bzImage镜像。更多其他命令使用可以执行 make help ,打开帮助手册阅读 
生成bzImage文件 路径为:./linux-5.15.175/arch/x86/boot/bzImage,这个文件在QEMU中可以运行
内核编译完成后,需要制作根文件系统,搭配内核运行。
根文件系统制作如下:

#参考网上的做法,使用debootstrap命令下载Ubuntu预先设置好的根目录。
使用dd命令,生成1个1G的空白根镜像文件
sudo  dd if=/dev/zero of=./rootfs.img  bs=1M  count=1024
使用mkfs格式化根镜像为ext3文件系统
sudo  mkfs.ext3 rootfs.img
生成一个fs文件夹,用于后面挂载根镜像文件
sudo  mkdir fs
sudo  mount ./rootfs.img  ./fs
下载ubuntu做好的文件目录,并拷贝到根镜像文件内
sudo debootstrap --arch=amd64 focal ./fs https://mirrors.tuna.tsinghua.edu.cn/ubuntu   #使用清华的源
切换根目录
sudo chroot  ./fs/
增加登录密码
passwd
退出根文件系统
exit
根文件系统已配置好,接下来卸载根文件系统
umount ./fs
启动内核和根文件(文件路径要写对)
qemu–system-x86_64  -kernel ./bzImage -hda rootfs.img -append "root=/dev/sda"

 

 
posted @ 2024-12-30 13:14  UNkey  阅读(176)  评论(0编辑  收藏  举报