用自己编译的linux内核自己制作一个很简单的启动盘,能够成功启动且能有简单的shell环境。
第一步:从内核官网www.kernel.org 下载相应的内核版本,现在到本地后,将它解压(我是解压到/usr/src目录下),解压后进入目录。由于编译的选项太多,为了简化设置编译选项,直接将本地的/boot/config-*文件复制到目录下并改名为.config,使用命令“make menuconfig”进入编译设置界面:
进入“General setup”设置编译的版本号:
进入“File Systems”设置ntfs文件格式为“M”,将其编译成模块:
完成相应的相关设置后,保存退出。使用命令“make”开始编译(这需要很长的是时间)。注意:在使用make命令之前要确保系统已经安装了“Server Platform Development”和“Development Tools”两个包组,如果没有安装,编译会因为却库文件报错。完成后要安装相关模块使用命令“make modules_install”。最后使用“make install”完成编译。
编译完成后,可以在/boot目录下看见编译的内核和initramfs文件:
并且在/lib/modules目录下面也有相应版本的模块:
为了验证编译时候成功,将系统重启。
如上图,启动的时候已经有了对应的启动命令,选择并启动。
能够正常启动,编译完成。
下面将做好的内核迁移至一块新的磁盘,做成一个及其简易的系统,能够启动起来并且能够运行一些简单的bash命令。
首先在刚才编译内核的机器上新增一块磁盘,大小120G(尽量设置大点),如下图的方式让机器找到设备:
将/dev/sdf设备分区,这里简单点,分成两个分区,一个作为/boot的分区,一个作为/的分区。格式化为ext4格式的文件系统。将作为/boot的/dev/sdb1挂载到/mnt/boot目录下,注意,这个挂载点的基名一定要为boot,否则不能将grub安装进去:
将刚才编译好的内核和initramfs文件复制进入/mnt/boot目录下,编辑/mnt/boot/grub/grub.conf文件如下:
由于启动设置的直接使用bash,不用init程序程序用户空间,因此指定init为/bin/bash,并且要停用selinux。然后在另一个分区将/mnt/sysroot下面建立根文件系统应该有的目录:
并从宿主机上面复制bash、ls、ip等命令及其依赖的库文件到/mnt/sysroot下面,复制完后的目录如下:
完成后,新建一台虚拟机,使用该磁盘,启动结果:
成功进入grub,开始引导:
成功启动,并且能使用几个简单的命令,整个过程完成。
原创文章,作者:王更生,如若转载,请注明出处:http://www.178linux.com/60609