1022行的prepare_namespace函数就不展开了,这个函数载入了ramdisk作为根磁盘系统,也就是启动参数中指定的rootfs.img。 回到kernel_init函数,就会运行ramdisk_execute_command,即init程序。如果没有ramdisk_execute_command,就会尝试其他默认的程序。 至此,Linux就启动了init进程。经过若干次调度,MenuOS的main函数开始运行。
简介:本文介绍了如何基于Linux Kernel 5.15.102版本和BusyBox创建一个自定义的迷你Linux ARM系统,并使用QEMU进行启动和调试,包括内核和BusyBox的编译配置、根文件系统的制作以及运行QEMU时的命令和参数设置。 一、篇头 本文作为使用qemu学习、调试Linux系统的第二篇,将自己制作一个小型的Linux系统,这个系统包含我们自己...
qemu-system-x86_64 -kernel /home/yan/linux-5.4.1/arch/x86_64/boot/bzImage -initrd ../initramfs.img -smp 2 -S -s 1. 先使用命令启动qemu。 kernel 是指定一个大内核文件,当仁不让的是bzImage。 initrd 是指定一个 initrd.img文件,这个文件就是我们使用busybox生成的initramfs.img。 smp 可以从名...
1: 下载linux 内核源码文件(git.kernel.org/ 或kernel.org/pub)以linux-4.9.125.tar.gz为例。 2: 配置内核 linux 内核功能繁杂,模块众多, 直接出来的内核过大且编译需要的时间较长,所以需要对内核功能做裁剪出来。解压 linux-4.9.125.tar.gz( tar -xvf linux-4.9.125.tar.gz) 进入源码目录, 执行 ma...
在Qemu启动配置上加入内核和ramdisk路径,kernel的启动参数 -kernel ./kernel/arch/x86/boot/bzImage \ -append 'root=/dev/sda3 crashkernel=512M console=ttyS0 nokaslr' \ -initrd ./initrd_4.19.90.img 在Qemu启动配置上加入调试指令 -S -s
sudoapt-get install nfs-kernel-server 2.2.2 配置NFS server # (1)编辑 /etc/exportsszhou@bc01:~/works/qemu_linux/linux-stable$sudovim /etc/exports# (2)在 /etc/exports 中添加共享文件夹的和属性, 如下所示szhou@bc01:~/works/qemu_linux/busybox$cat/etc/exports# /etc/exports: the access...
6.2 解决错误:can't create /proc/sys/kernel/hotplug: nonexistent directory 一、篇头 本文作为使用qemu学习、调试Linux系统的第二篇,将自己制作一个小型的Linux系统,这个系统包含我们自己编译的5.15.102稳定版内核,以及自己制作的根文件系统,内含busybox提供的丰富工具。
三、使用方法(i386:以Qemu模拟Linux,学习Linux内核) 内核工作目录:内核相关代码存放目录,Busybox,qemu,kernel全部存放于此目录下 Linux内核源码目录:linux内核源码压缩包解压后的根目录 Busybox源码目录:Busybox源码解压缩后的根目录 1.编译内核 (1)下载合适的内核 ...
关于内核设备,从Linuxv5.13 开始,存在一个专为开发和调试目的而设计的简单模拟器。它可通过vdpa-sim-blk内核模块使用,该模块模拟 128 MB 的 ramdisk。正如 KVM Forum 2021 上的演讲中所强调的那样,内核中的未来设备(类似于反复提出但从未合并的vhost-blk)可能会提供出色的性能。当硬件不可用时,这种设备可以用作替...