定制自己的Linux 系统
介绍
通过裁剪现有 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 思路分析
- 在现有的Linux系统(centos7.6)上加一块硬盘 /dev/sdb,在硬盘上分两个分区,一个是 /boot,一个是 / ,并将其格式化。需要明确的是,现在加的这个硬盘在现有的Linux系统中是 /dev/sdb,但是,当我们把东西全部设置好时,要把这个硬盘拔除,放在新系统上,此时,就是 /dev/sda
- 在 /dev/sdb 硬盘上,将其打造成独立的 Linux 系统,里面的所有文件是需要拷贝进去的
- 作为能独立运行的 Linux 系统,内核一定不能少,要把内核文件和 initramfs 文件一起烤到 /dev/sdb 上
- 以上步骤完成,自制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 系统相关推荐
- 定制简单的Linux系统
定制简单的Linux系统 制作思路: 新加一块硬盘,设置两个分区,一个存/boot,一个存/,创建文件系统并格式化.要注意,现在我们家的硬盘是要可以拔下来安装到其他机器上使用的,否则就没有意义了.试验 ...
- Linux操作系统——定制自己的 Linux 系统
文章目录 22 定制自己的 Linux 系统 22.1 基本介绍 22.2 基本原理 22.3 制作 min linux 思路分析 22.4 操作步骤 22 定制自己的 Linux 系统 22.1 基 ...
- 定制自己的Linux系统
介绍:通过裁剪原有的Linux系统来实现定制自己的Linux系统 Linux启动的流程 1.Linux要通过自检,检查硬件设备有没有故障 2.若有多块启动盘,需要在BIOS中选择启动磁盘 3.启动MB ...
- 手工定制Linux系统
引子 陆续研究LFS(Linux from Scratch) 有一段时了,发现一些问题,比如无论是官网教程,还是一些第三方的分析文章,都有一个共同点,描述过于的形而下,也就是太过于注重细节.过于实际和 ...
- 1. Linux系统简介
目录 1.1 操作系统是什么 1.2 Linux是什么,有哪些特点? 1.3 Linux和UNIX的关系及区别 UNIX 的坎坷历史 Linux 的那些往事 UNIX与Linux的亲密关系 UNIX/ ...
- linux系统有哪些版本 linux系统哪个版本好用
l inux最早由Linus Benedict Torvalds在1991年开始编写.在这之前,RichardStallman创建了Free SoftwareFoundation(FSF)组织以及 ...
- petalinux定制ZYNQ的Linux操作系统
文章目录 1. 概述 2. 安装及环境设置 2.1 安装petalinux 2.2 配置环境变量 3.定制linux系统 3.1 导入 3.2 配置内核及rootfs 3.3 编译 3. 制作启动盘及 ...
- LINUX系统开启故障排错及linux-4.16.8内核编译安装,虚拟机实验(非生产环境)...
Centos6启动 POST --> Boot Sequence(BIOS) --> Boot Loader --> Kernel(ramdisk) --> rootfs -- ...
- Linux 系统组成,内核发行版本,文件目录结构介绍
1.描述计算机的组成及其功能. 组成:硬件系统和软件系统 硬件系统: 主机:中央处理器CPU(运算器.控制器),内存储器(ROM.RAM) 外设: 输出:显示器.打印机.绘图仪 输入:键盘.鼠标.扫描 ...
最新文章
- [Java入门笔记] 面向对象三大特征之:封装
- 在Spring Rest模板中跳过SSL证书验证
- (十)深入浅出TCPIP之网络阻塞和非阻塞
- golang 升级到新版本_Scikit-learn新版本发布,一行代码秒升级
- 上帝视角!美国记者用公开数据,还原川普的全天行动轨迹
- JS获取动态添加的元素
- 联系人管理-添加/修改/删除联系人/条件查询/解决与客户之间的问题| CRM客户关系管理系统项目实战五(Struts2+Spring+Hibernate)解析+源代码
- 谷歌play商店_不断关闭时如何修复Google Play商店
- Excel技巧之减肥
- 关于LR和PS显示颜色和到处颜色不同的处理办法
- 浏览器野史 UserAgent 列传(上)
- 能否在虚拟平台里构建真实的生活体验?
- 用户登录拖动验证码实现原理详解。
- (转)coures包下载和安装 可解决报错ImportError: No module named '_curses'
- Vivado System Generator for DSP - “Error evaluating ‘OpenFcn‘ callback of Xilinx Block“错误解决方法
- 电机世界之直流无刷电机(科普文)
- 详解BiLSTM及代码实现
- android设置手机震动强度,android 控制震动强度
- java.lang.IllegalArgumentException: Numbers of source Raster bands and source color space components
- 安卓课堂考勤管理系统
热门文章
- 海康威视iVMS系统在野 0day漏洞复现
- 科大奥瑞物理实验——半导体温度计实验
- 华为交换机不同网段互访_弱电智能化|如何实现交换机不同VLAN、不同网段之间互访?...
- python文本挖掘与分析:热剧《延禧攻略》用户评论分析
- OpenGL实现高斯模糊
- 使用instsrv.exe和srvany.exe将应用程序安装成windows后台服务
- 网游设计之道----4
- 日本为什么对韩国出口管制_如何为日本和韩国本地化游戏
- 使用oledbdatareader取得数据库中数据
- 关于webapp开发