Linux定制自己的 Linux 系统

Linux定制自己的 Linux 系统

通过裁剪现有 Linux 系统(CentOS7.6),创建属于自己的 min Linux 小系统,可以加深我们对 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.重启,通过fdisk来给我们的/dev/sdb进行分区
fdisk /dev/sdb
在这里插入图片描述
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
在这里插入图片描述
rm -rf /mnt/boot/*
cp -rf /boot/* /mnt/boot/
6.修改 grub2/grub.cfg 文件, 标红的部分 是需要使用 指令来查看的
在这里插入图片描述
vim /mnt/boot/grub2/grub.cfg
在grub.cfg文件中 , 红色部分用 上面 sdb1 的 UUID替换,蓝色部分用 sdb2的UUID来替换, 紫色部分(selinux=0 init=/bin/bash)是添加的,表示selinux给关掉,同时设定一下init,告诉内核不要再去找这个程序了,不然开机的时候会出现错误的。
在这里插入图片描述
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.这时,很多指令都不能使用,比如 ls , reboot 等,可以将需要的指令拷贝到对应的目录即可。如果要拷贝指令,重新进入到原来的 linux系统拷贝相应的指令即可,比较将 /bin/ls 拷贝到 /mnt/sysroot/bin 将/sbin/reboot 拷贝到 /mnt/sysroot/sbin
mount /dev/sdb2 /mnt/sysroot/
cp /bin/ls /mnt/sysroot/bin/
cp /bin/systemctl /mnt/sysroot/bin/
cp /sbin/reboot /mnt/sysroot/sbin/
再重新启动新的min linux系统,就可以使用 ls , reboot 指令了

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值