整个过程按照该博客做就可以:Linux系统启动流程及系统裁剪,以下要点需要注意:
一、实验要点
1、第一个点
困扰我好多天的问题终于解决了,为啥识别不到硬盘分区,是因为我在虚拟机上做实验,硬盘创建的时候创建了 多个文件,必须得将虚拟磁盘创建成单个文件才行。这样,内核首先挂载initramfs临时文件系统,然后在切换成硬盘上真实的文件系统了。 这样挂载文件系统的时候就可识别到sda,sda1,sda2了 sda1对应硬盘上的boot分区,sda2对应sysroot分区
2、第二个点
由于grub的版本不同,所需要的配置文件也不一样,我使用的grub-2.02,配置文件为grub.cfg。之前的版本应该是menu.list。
grub.cfg文件内容(格式不能错,否则会有问题):
### BEGIN /etc/grub.d/00_header ###
set default=0
set timeout=5
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/10_lupin ###
menuentry "ale TinyLinux V1.0" {
set root='hd0,msdos1'
linux /vmlinuz root=/dev/sda2 init=/sbin/init quiet
initrd /initramfs.img
}
3、第三个点
参考博客里边后来又加载了一遍网卡驱动e1000.ko,其实没必要,直接编译进内核即可,在内核配置里支持相应的网卡就可以了。 init脚本文件内容:
#!/bin/bash
#
echo -e "\tWelcome to \033[34m ale Tiny \033[0mLinux"
mount -n -t proc proc /proc
mount -n -t sysfs sysfs /sys
echo -e "Load network setup \033[60G[ \033[32mOK\033[0m ]"
ifconfig lo 127.0.0.0/8
ifconfig ens33 192.168.1.111
mount -n -o remount,rw /dev/sda2 /
/bin/bash
这样系统起来后,挂载硬盘上的文件系统成功,执行该脚本,自动配置网络。 这时候ping一下宿主机,网络也是通的。还有一个小点就是虚拟机的网络要配置成桥接。
二、接下来可以做的
还有很多命令都不支持,没有做相应配置,有时间可以再增加一些命令。 现在的内核和文件系统都是用的系统自带的版本Linux-4.4,以后要自己重新编译一个内核,用busybox制作一个根文件系统。最后试试行不行。
|