Linux高级篇 - 22.定制自己的Linux系统

连接视频


基本介绍

通过剪裁现有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/

12、再重新启动新的 min_linux 系统,就可以使用 ll,reboot 指令了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值