介绍

通过裁剪现有 Linux 系统 (centos7.6),创建属于自己的 mini 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

制作 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)

lsblk 可以查看磁盘信息,可以看到我们新加的硬盘。

使用 fdisk /dev/sdb 进行分区:
第一个分区,分500M(给 /boot)

剩余空间给第二个分区 (分给 / 的)

分区完成:

3、对分区进行格式化

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

内核文件拷贝至目标磁盘:
cp -rf /boot/* /mnt/boot/

6、修改 grub2/grub.cfg 文件


在 grub.cfg 文件中,替换UUID,再添加句话表示 selinux 给关掉,同时设定一下 init ,告诉内核不要再去找这个程序了,不然开机的时候会出现错误的。如下更改:

vim /mnt/boot/grub2/grub.cfg


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、现在我们就可以创建一个新的虚拟机,然后将默认分配的硬盘移除掉,添加新的硬盘指向我们刚刚创建的硬盘文件即可。

打开这个虚拟机:如下界面。

这时,很多指令都不能使用,比如 ls,reboot等,可以将需要的指令拷贝到对应的目录即可。

因为,现在这个新的虚拟机的硬盘(sda)和之前的虚拟机设置的硬盘(sdb)是同一个硬盘,是共用的。
所以,如果要拷贝指令,只需重新进入到原来的 linux系统拷贝相应的指令即可。
比如将 /bin/ls 拷贝到 /mnt/sysroot/bin
将 /sbin/reboot 拷贝到 /mnt/sysroot/sbin

再回到新的系统,重启即可使用了。

定制自己的Linux 系统相关推荐

  1. 定制简单的Linux系统

    定制简单的Linux系统 制作思路: 新加一块硬盘,设置两个分区,一个存/boot,一个存/,创建文件系统并格式化.要注意,现在我们家的硬盘是要可以拔下来安装到其他机器上使用的,否则就没有意义了.试验 ...

  2. Linux操作系统——定制自己的 Linux 系统

    文章目录 22 定制自己的 Linux 系统 22.1 基本介绍 22.2 基本原理 22.3 制作 min linux 思路分析 22.4 操作步骤 22 定制自己的 Linux 系统 22.1 基 ...

  3. 定制自己的Linux系统

    介绍:通过裁剪原有的Linux系统来实现定制自己的Linux系统 Linux启动的流程 1.Linux要通过自检,检查硬件设备有没有故障 2.若有多块启动盘,需要在BIOS中选择启动磁盘 3.启动MB ...

  4. 手工定制Linux系统

    引子 陆续研究LFS(Linux from Scratch) 有一段时了,发现一些问题,比如无论是官网教程,还是一些第三方的分析文章,都有一个共同点,描述过于的形而下,也就是太过于注重细节.过于实际和 ...

  5. 1. Linux系统简介

    目录 1.1 操作系统是什么 1.2 Linux是什么,有哪些特点? 1.3 Linux和UNIX的关系及区别 UNIX 的坎坷历史 Linux 的那些往事 UNIX与Linux的亲密关系 UNIX/ ...

  6. linux系统有哪些版本 linux系统哪个版本好用

    l   inux最早由Linus Benedict Torvalds在1991年开始编写.在这之前,RichardStallman创建了Free SoftwareFoundation(FSF)组织以及 ...

  7. petalinux定制ZYNQ的Linux操作系统

    文章目录 1. 概述 2. 安装及环境设置 2.1 安装petalinux 2.2 配置环境变量 3.定制linux系统 3.1 导入 3.2 配置内核及rootfs 3.3 编译 3. 制作启动盘及 ...

  8. LINUX系统开启故障排错及linux-4.16.8内核编译安装,虚拟机实验(非生产环境)...

    Centos6启动 POST --> Boot Sequence(BIOS) --> Boot Loader --> Kernel(ramdisk) --> rootfs -- ...

  9. Linux 系统组成,内核发行版本,文件目录结构介绍

    1.描述计算机的组成及其功能. 组成:硬件系统和软件系统 硬件系统: 主机:中央处理器CPU(运算器.控制器),内存储器(ROM.RAM) 外设: 输出:显示器.打印机.绘图仪 输入:键盘.鼠标.扫描 ...

最新文章

  1. [Java入门笔记] 面向对象三大特征之:封装
  2. 在Spring Rest模板中跳过SSL证书验证
  3. (十)深入浅出TCPIP之网络阻塞和非阻塞
  4. golang 升级到新版本_Scikit-learn新版本发布,一行代码秒升级
  5. 上帝视角!美国记者用公开数据,还原川普的全天行动轨迹
  6. JS获取动态添加的元素
  7. 联系人管理-添加/修改/删除联系人/条件查询/解决与客户之间的问题| CRM客户关系管理系统项目实战五(Struts2+Spring+Hibernate)解析+源代码
  8. 谷歌play商店_不断关闭时如何修复Google Play商店
  9. Excel技巧之减肥
  10. 关于LR和PS显示颜色和到处颜色不同的处理办法
  11. 浏览器野史 UserAgent 列传(上)
  12. 能否在虚拟平台里构建真实的生活体验?
  13. 用户登录拖动验证码实现原理详解。
  14. (转)coures包下载和安装 可解决报错ImportError: No module named '_curses'
  15. Vivado System Generator for DSP - “Error evaluating ‘OpenFcn‘ callback of Xilinx Block“错误解决方法
  16. 电机世界之直流无刷电机(科普文)
  17. 详解BiLSTM及代码实现
  18. android设置手机震动强度,android 控制震动强度
  19. java.lang.IllegalArgumentException: Numbers of source Raster bands and source color space components
  20. 安卓课堂考勤管理系统

热门文章

  1. 海康威视iVMS系统在野 0day漏洞复现
  2. 科大奥瑞物理实验——半导体温度计实验
  3. 华为交换机不同网段互访_弱电智能化|如何实现交换机不同VLAN、不同网段之间互访?...
  4. python文本挖掘与分析:热剧《延禧攻略》用户评论分析
  5. OpenGL实现高斯模糊
  6. 使用instsrv.exe和srvany.exe将应用程序安装成windows后台服务
  7. 网游设计之道----4
  8. 日本为什么对韩国出口管制_如何为日本和韩国本地化游戏
  9. 使用oledbdatareader取得数据库中数据
  10. 关于webapp开发