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

简介: Linux 高级篇-定制自己的Linux 系统

Linux 高级篇-定制自己的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 虚拟机,将其硬盘指向我们创建的硬盘,启动即可
示意图

制作自己的min linux(基于CentOS7.6)

  1. 首先,我们在现有的linux添加一块大小为20G的硬盘

点击完成,就OK了, 可以使用 lsblk 查看,需要重启

  1. 添加完成后,点击确定,然后启动现有的linux(centos7.6)。 通过fdisk来给我们的/dev/sdb进行分区

加粗的命令是我们输入的如果没有看到命令就直接回车

1 [root@localhost ~]# fdisk /dev/sdb

2 Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel

3 Building a new DOS disklabel with disk identifier 0x4fde4cd0.

4 Changes will remain in memory only, until you decide to write them.

5 After that, of course, the previous content won’t be recoverable.

6

7

8 Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

9

10

11 WARNING: DOS-compatible mode is deprecated. It’s strongly recommended to

12 switch off the mode (command ‘c’) and change display units to

13 sectors (command ‘u’).

14

15

16 Command (m for help): n

17 Command action

18 e extended

19 p primary partition (1-4)

20 p

21 Partition number (1-4): 1

22 First cylinder (1-2610, default 1):

23 Using default value 1

24 Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +500M

25

26

27 Command (m for help): n

28 Command action

29 e extended

30 p primary partition (1-4)

31 p

32 Partition number (1-4): 2

33 First cylinder (15-2610, default 15):

34 Using default value 15

35 Last cylinder, +cylinders or +size{K,M,G} (15-2610, default 2610):

36 Using default value 2610

37 #查看分区

38 Command (m for help): p

39

40

41 Disk /dev/sdb: 21.5 GB, 21474836480 bytes

42 255 heads, 63 sectors/track, 2610 cylinders

43 Units = cylinders of 16065 * 512 = 8225280 bytes

44 Sector size (logical/physical): 512 bytes / 512 bytes

45 I/O size (minimum/optimal): 512 bytes / 512 bytes

46 Disk identifier: 0x4fde4cd0

47

48

49 Device Boot Start End Blocks Id System

50 /dev/sdb1 1 14 112423+ 83 Linux

51 /dev/sdb2 15 2610 20852370 83 Linux

52 #保存并退出

53 Command (m for help): w

54 The partition table has been altered!

注意没有填的直接回车

  1. 接下来,我们对/dev/sdb的分区进行格式化

[root@localhost ~]# mkfs.ext4 /dev/sdb1

[root@localhost ~]# mkfs.ext4 /dev/sdb2

  1. 创建目录,并挂载新的磁盘

#mkdir -p /mnt/boot /mnt/sysroot

#mount /dev/sdb1 /mnt/boot

#mount /dev/sdb2 /mnt/sysroot/

  1. 安装grub, 内核文件拷贝至目标磁盘

#grub2-install --root-directory=/mnt /dev/sdb

#我们可以来看一下二进制确认我们是否安装成功

#hexdump -C -n 512 /dev/sdb

#cp -rf /boot/* /mnt/boot/

  1. 修改 grub2/grub.cfg 文件, 标红的部分 是需要使用 指令来查看的

  1. 在grub.cfg文件中 , 红色部分用 上面 sdb1 的 UUID替换,蓝色部分用 sdb2的UUID来替换, 紫色部分是添加的,表示selinux给关掉,同时设定一下init,告诉内核不要再去找这个程序了,不然开机的时候会出现错误的
selinux=0 init=/bin/bash

  1. 创建目标主机根文件系统

#mkdir -pv /mnt/sysroot/{etc/rc.d,usr,var,proc,sys,dev,lib,lib64,bin,sbin,boot,srv,mnt,media,home,root}

  1. 拷贝需要的bash(也可以拷贝你需要的指令)和库文件给新的系统使用

#cp /lib64/. /mnt/sysroot/lib64/

#cp /bin/bash /mnt/sysroot/bin/

  1. 现在我们就可以创建一个新的虚拟机,然后将默认分配的硬盘 移除掉,指向我们刚刚创建的磁盘即可.

到这里就成功了

  1. 这时,很多指令都不能使用,比如 ls , reboot 等,可以将需要的指令拷贝到对应的目录即可
  2. 如果要拷贝指令,重新进入到原来的linux系统拷贝相应的指令即可,比较将 /bin/ls 拷贝到 /mnt/sysroot/bin 将/sbin/reboot 拷贝到 /mnt/sysroot/sbin


[root@~]# mount /dev/sdb2 /mnt/sysroot/


[root@~]# cp /bin/ls /mnt/sysroot/bin/


[root@~]# cp /bin/systemctl /mnt/sysroot/bin/


[root@~]# cp /sbin/reboot /mnt/sysroot/sbin/

应的指令即可,比较将 /bin/ls 拷贝到 /mnt/sysroot/bin 将/sbin/reboot 拷贝到 /mnt/sysroot/sbin


[root@~]# mount /dev/sdb2 /mnt/sysroot/


[root@~]# cp /bin/ls /mnt/sysroot/bin/


[root@~]# cp /bin/systemctl /mnt/sysroot/bin/


[root@~]# cp /sbin/reboot /mnt/sysroot/sbin/


目录
相关文章
|
16天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
57 3
|
16天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
48 2
|
25天前
|
Linux 应用服务中间件 Shell
linux系统服务二!
本文详细介绍了Linux系统的启动流程,包括CentOS 7的具体启动步骤,从BIOS自检到加载内核、启动systemd程序等。同时,文章还对比了CentOS 6和CentOS 7的启动流程,分析了启动过程中的耗时情况。接着,文章讲解了Linux的运行级别及其管理命令,systemd的基本概念、优势及常用命令,并提供了自定义systemd启动文件的示例。最后,文章介绍了单用户模式和救援模式的使用方法,包括如何找回忘记的密码和修复启动故障。
42 5
linux系统服务二!
|
25天前
|
Linux 应用服务中间件 Shell
linux系统服务!!!
本文详细介绍了Linux系统(以CentOS7为例)的启动流程,包括BIOS自检、读取MBR信息、加载Grub菜单、加载内核及驱动程序、启动systemd程序加载必要文件等五个主要步骤。同时,文章还对比了CentOS6和CentOS7的启动流程图,并分析了启动流程的耗时。此外,文中还讲解了Linux的运行级别、systemd的基本概念及其优势,以及如何使用systemd管理服务。最后,文章提供了单用户模式和救援模式的实战案例,帮助读者理解如何在系统启动出现问题时进行修复。
43 3
linux系统服务!!!
|
10天前
|
Ubuntu Linux 网络安全
linux系统ubuntu中在命令行中打开图形界面的文件夹
在Ubuntu系统中,通过命令行打开图形界面的文件夹是一个高效且实用的操作。无论是使用Nautilus、Dolphin还是Thunar,都可以根据具体桌面环境选择合适的文件管理器。通过上述命令和方法,可以简化日常工作,提高效率。同时,解决权限问题和图形界面问题也能确保操作的顺利进行。掌握这些技巧,可以使Linux操作更加便捷和灵活。
15 3
|
2月前
|
Web App开发 搜索推荐 Unix
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
【10月更文挑战第21天】Linux系统之MobaXterm远程连接centos的GNOME桌面环境
282 4
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
|
2月前
|
Linux 测试技术 网络安全
Linux系统之安装OneNav个人书签管理器
【10月更文挑战第19天】Linux系统之安装OneNav个人书签管理器
114 5
Linux系统之安装OneNav个人书签管理器
|
2月前
|
运维 监控 Linux
Linux系统之部署Linux管理面板1Panel
【10月更文挑战第20天】Linux系统之部署Linux管理面板1Panel
94 3
Linux系统之部署Linux管理面板1Panel
|
16天前
|
安全 网络协议 Linux
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
53 3
|
19天前
|
安全 Linux 数据安全/隐私保护
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。本文介绍了使用 `ls -l` 和 `stat` 命令查找文件所有者的基本方法,以及通过文件路径、通配符和结合其他命令的高级技巧。还提供了实际案例分析和注意事项,帮助读者更好地掌握这一操作。
37 6