Linux高级篇 - 22.定制自己的Linux系统
- 基本介绍
- 基本原理
- 制作min linux思路分析
- 操作步骤
- 操作步骤
- 1、创建新的硬盘
- 2、分区
- 3、格式化
- 4、创建目录,并挂载新磁盘
- 5、安装 grub,内核文件拷贝至目标磁盘
- 6、修改 grub2/grub.cfg 文件
- 7、创建目标主机根文件系统
- 8、拷贝需要的 bash 和库文件给新的系统使用
- 9、建一个新的虚拟机
- 10、这时,很多指令都不能使用,比如 ll, reboot 等,可以将需要的指令拷贝搭配对应的目录即可
- 11、如果拷贝指令,重新进入原来的 linux 系统拷贝相应的指令即可,比较将 /bin/ls 拷贝到 /mnt/sysroot/bin 将 /sbin/reboot 拷贝到 /mnt/sysroot/sbin
- 12、再重新启动新的 min_linux 系统,就可以使用 ll,reboot 指令了
基本介绍
通过剪裁现有Linux系统(CentOS7.6),创建属于自己的 min Linux 小系统,可以加深我们对Linux系统的理解。
利用 centos7.6,搭建一个小小 linux系统。
基本原理
启动流程介绍:
制作Linux小系统之前,再了解一下Linux启动流程:
1、首先Linux要通过自检,检查硬件设备有没有故障
2、如果有多块启动盘的话,需要在 BIOS 中选择启动磁盘
3、启动 MBR 中的 bootloader 引导程序
4、加载内核文件
5、执行所有进程的父进程 systemd
6、欢迎界面
在Linux的启动流程中,加载内核文件时关键文件:
1)kernel
文件:vmlinuz-3.10.0-957.el7.x86_64
2)initrd
文件:initramfs-3.10.0-957.el7.x86_64.img
制作min linux思路分析
1、在现有的Linux系统(centos7.6)上加一块硬盘 /dev/sdb
,在硬盘上分两个区,一个是 /boot
,一个是/
,并将其格式化。需要明确的是,现在加的这个硬盘在现有的Linux系统中是/dev/sdb
,但是,当我们把东西全部设置好时,要把这个硬盘拨除,放在系统上,此时,就是 /dev/sda
2、在 /dev/sdb
硬盘上,将其打造成独立的Linux系统,里面的所有文件是需要拷贝进去的
3、作为能独立运行的Linux系统,内核是一定不能少,要把内核文件和initramfs
文件也一起拷贝到 /dev/sdb
上
4、以上步骤完成,我们自制Linux就完成,创建一个新的linux虚拟机,将其硬盘指向我们创建的硬盘,启动即可
示意图:
操作步骤
操作步骤
1、创建新的硬盘
首先,我们在现有的linux添加一块大小为20G的硬盘
2、分区
添加完成后,然后启动现有的 linux。通过 fdisk
类给我们的 /dev/sdb
进行分区
lsblk
【查看当前磁盘】
fdisk /dev/sdb
【进行分区】
第一块分区,【引导分区/boot +500M】按回车键
剩下全部 根分区, 按回车键
3、格式化
接下来,我们对 /dev/sdb
的分区进行格式化
mkfs.ext4 /dev/sdb1
mkfs.ext4 /dev/sdb2
4、创建目录,并挂载新磁盘
mkdir -p /mnt/boot /mnt/sysroot
【先创建两个目录】
mount /dev/sdb1 /mnt/boot
【挂载】
mount /dev/sdb2 /mnt/sysroot
【挂载】
5、安装 grub,内核文件拷贝至目标磁盘
grub2-install --root-directory=/mnt /dev/sdb
我们可以来查看一下二进制确认我们是否安装成功
hexdump -C -n 512 /dev/sdb
拷贝 /boot
分区,等于拷贝到 sdb1 分区
cp -rf /boot/* /mnt/boot
【可以先清除以前的内容 rm -rf /mnt/boot/*
】
6、修改 grub2/grub.cfg 文件
标红的部分,是需要使用 指令来查看的
把 sdb 的UUID先复制下来
在 grub.cfg
文件中,红色部分用上面 sdb1 的 UUID 替换,蓝色部分用 sdb2 的 UUID 来替换,紫色部分是添加的,表示 selinux
给关掉,同时设定一下init
,告诉内核不要再去找这个程序,不然开机的时候会出现错误的
vim grub.cfg
selinux=0 init=/bin/bash
7、创建目标主机根文件系统
mkdir -pv /mnt/sysroot/{etc/rc.d,usr,var,proc,sys,dev,lib,lib64,bin,sbin,boot,srv,mnt,media,home,root}
8、拷贝需要的 bash 和库文件给新的系统使用
也可以拷贝你需要的指令
cp /lib64/*.* /mnt/sysroot/lib64/
cp /bin/bash /mnt/sysroot/bin
9、建一个新的虚拟机
现在我们就可以创建一个新的虚拟机,然后默认分配的硬盘 移除掉,指向我们刚刚创建的磁盘即可。
先关机,
10、这时,很多指令都不能使用,比如 ll, reboot 等,可以将需要的指令拷贝搭配对应的目录即可
11、如果拷贝指令,重新进入原来的 linux 系统拷贝相应的指令即可,比较将 /bin/ls 拷贝到 /mnt/sysroot/bin 将 /sbin/reboot 拷贝到 /mnt/sysroot/sbin
mount /dev/sdb2 /mnt/sysroot/
【注
:先挂载文件上,不然下面的指令只是单纯的拷贝,没有和sdb2挂载/关联上】
cp /bin/ls /mnt/sysroot/bin/
cp /bin/systemctl /mnt/sysroot/bin/
cp /sbin/reboot /mnt/sysroot/sbin/