initramfs 加载后,内核会直接运行 /init 作为PID 1 的初始用户进程,由此程序来进行加载内核模块、寻找和挂载 rootfs、切换到更复杂的服务管理程序如 systemd 等工作 ,简单明了。 如果initramfs 中没有 /init,那么会回退到之前的 initrd 初始化流程。 知道了整个具体的流程,我们可以根据原理来亲自验证下:自己制作 ...
启动程序加载linux 内核,内核加载完毕后会有一个initramfs 小的系统,这个可以动态加载linux 内核需要的驱动模块,因为不是很多驱动都编译到了内核。然后根据initramfs 的init 进行初始化,初始化完成后将控制权交给正真的根系统文件,chroot 到new_root 之后就执行init 初始化程序,系统启动,启动服务进程 这个是启动项没有...
然后开始创建initramfs.img cd/usr/lib/dracut# 首先切换到dracut的安装目录./dracut.sh initramfs.img 4.18.1# 第一个参数是创建的文件,第二个是指定内核版本,注意一定要对上,否者会出错。# 然后再将创建号的initramfs.img移动到/boot目录下即可。# 当然还是杨测试一下看看文件是否都是全的/usr/lib/dracut/ls...
3.GRUB制作启动U盘 4.制作initramfs/initrd镜像 5.如何从零开始制作一个linux iso镜像(图文教程) 本文使用Zhihu On VSCode创作并发布
由于LFS 不使用 initramfs,所以尽量打包进内核,尤其是文件系统相关的不要打成模块。 安装 配置完成,现在开始编译: make 安装模块: makemodules_install 复制内核: cp -iv arch/x86_64/boot/bzImage /boot/vmlinuz-5.13.12-lfs-11.0-systemd 此处的内核文件名称可以自行改变,但要以vmlinuz-开头。
initramfs_data.cpio.gz lfs-sources LFS-BOOK-6.3-HTML.tar.bz2 linux lfslivecd-x86-6.3-r2160.iso Linuxsir手把手.tar.bz2 lfslivecd-x86-6.3-r2160-min.iso note lfslivecd-x86-6.3-r2160-nosrc.iso c-aries@babyaries:~/software/lfs$ sudo gedit /boot/grub/menu.lst ...
initrd /initramfs-2.6.32-358.el6.i686.img 再看看LFS系统的grub vi /mnt/lfs/boot/grub/grub.conf 内容为 # Begin /boot/grub/grub.cfg set default=0 set timeout=5 insmod ext2 set root=(hd0,1) menuentry "GNU/Linux, Linux 3.13.3-lfs-7.5" { ...
rootfstype=vfat:u盘的分区为fat32或fat分区 maxcpus=0:cpu的个数设置 acpi=off:关闭acpi rootdelay=20:读取iso镜像的时间设置为20秒,这是官方建议,10秒也可能行。 initrd /boot/isolinux/INITRAMFS_DATA_CPIO.GZ 可以参考这个帖子:http://m.blog.csdn.net/blog/handsomecheung/3588314...
在本章里,我们会进入构建环境然后开始认真地构建 LFS 系统了。 就是说,我们会 chroot 进入之前准备好的临时迷你Linux系统,做一些最后的准备工作,然后就开始安装软件包。 内核会挂载几个文件系统用于自己和用户空间程序交换信息。这些文件系统是虚拟的,并不占用实际磁盘空间,它们的内容会放在内存里。
首先,光盘引导后,引导程序会在光盘上找到内核linux(或是linux64,64位系统使用的内核),然后调入光盘上的INITRAMFS_DATA_CPIO.GZ,这个文件里包含的程序可以把root.ext2解压(这个文件在光盘上只有490M,是被压缩的,解压后有1.5G),然后开始内核的引导过程,在这个过程里内核会把root.ext2装载到根文件系统...