Linux的整体组成有很多,但是我们只要能掌握核心的那部分,就可以自己制作出一个Linux来,在前面有讲到,一个Linux的启动离不开引导程序与内核,引导程序去找到内核,并将内核放入RAM内存当中,内核,需对设备进行驱动,以只读的方式挂载根文件系统,并执行/sbin/init;所以在制作小Linux时,我们最重要的就是把,/boot下的内核文件,以及ramdisk文件导入到小Linux所使用的硬盘中,在内核无法驱动其他设备时,调用ramdisk去驱动;再创建引导程序的grub;
创建小Linux步骤
1.为本已存在的Linux添加一块硬盘,在此硬盘上构造小Linux,随后,再把这块硬盘插入到一个新建的虚拟机当中;
2.对硬盘进行分区fdisk /dev/devicename,需要两个主分区,以及一个交换分区,为其分别创建文件系统;
3.在当前Linux环境下的,清空/mnt下的文件,并创建/mnt/boot,/mnt/sysroot,一个作为启动分区,一个作为小Linux的根分区;
4.将两个主分区,分别挂载到/mnt/boot,/mnt/sysroot下;将/boot目录下的内核核心文件,以及ramdisk文件复制到/mnt/boot下,init文件,复制的名字通常为initramfs.img需要加后缀;再在根目录/mnt/sysroot下创建正常“/”上需要具备的目录,如bin,sbin,lib,lib64,usr,proc,sys,home,dev,etc,mnt等;
5.将/bin/bash拷贝到/mnt/sysroot/bin中,并将其库文件复制到/mnt/sysroot/lib64中,作为小Linux的功能之一,按这样的步骤,可以拷贝许多命令进入小Linux中;
6.建立grub引导程序,使用命令grub-install --root-directory=/mnt /dev/devicename,就会将grub这个文件创建在/mnt这个他认为的根目录下,因为boot启动程序我们建立在/mnt/boot,所以系统会将/mnt认为是根;
7.创建完grub后,我们可以手动创建grub的启动配置文件grub.conf,也可以在将硬盘放入另一个新建的虚拟机后,在其grub命令行界面进行grub启动;在上述配置完成后,我们需要不断使用命令sync使其写入硬盘,未免其没写入,所以多执行几次;最后将当前虚拟机挂起;并将之前新建的进行配置的硬盘,放入另一个新建的虚拟机中;
grub.conf配置文件
(hd0,0)
hd0:表示该系统的第一个硬盘;
0:表示该系统的第#个硬盘下的第一个分区;
①手动书写grub配置文件
default=0;设定默认启动菜单
timeout=10;用户未作出选择时,系统会根据时间默认菜单对应的内核的超时时间;
title Mylinux(1.0.0);设置菜单上的标题
root (hd0,0);指定grub的根设备
kernel /vmlinuz selinux=0 ro root=/dev/sda2 init=/bin/bash;调用的内核文件,调用的是我们之前复制内核到/mnt/boot下的内核名,关闭selinux,只读,根设备,是我们之前在现有的Linux下创建挂载根的那个设备,如是sdb2,在这个新的虚拟机上通常只有一个硬盘,对应的就是sda2
initrd /initramfs.img;内核对应的ramdisk
②在grub命令行界面启动
root (hd0,0);指定grub的根设备
find (hd0,0);看是否能够查找到启动分区;
kernel /vmlinuz selinux=0 ro root=/dev/sda2 init=/bin/bash;调用的内核文件,调用的是我们之前复制内核到/mnt/boot下的内核名,关闭selinux,只读,根设备,是我们之前在现有的Linux下创建挂载根的那个设备,如是sdb2,在这个新的虚拟机上通常只有一个硬盘,对应的就是sda2
initrd /initramfs.img;内核对应的ramdisk文件
boot;配置完毕,启动该Linux
grub命令行配置:
Linux启动前需要使用boot启动
启动界面: