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

article/2025/9/30 2:41:25

文章目录

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

22 定制自己的 Linux 系统

22.1 基本介绍

通过裁剪现有 Linux 系统(CentOS7.6),创建属于自己的 min Linux 小系统,可以加深我们对 linux 的理解。老韩利用 centos7.6,搭建一个小小 linux 系统, 很有趣。

22.2 基本原理

启动流程介绍:

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

22.3 制作 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 虚拟机,将其硬盘指向我们创建的硬盘,启动即可

  5. 示意图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1x4F9Zlg-1659016464931)(../../../Pictures/Linux/wps337.png)]

22.4 操作步骤

操作步骤

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Edgyugcy-1659016464933)(../../../Pictures/Linux/wps1-16590160625644.jpg)]

在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pIG9BUdl-1659016464933)(../../../Pictures/Linux/wps3-16590160625632.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mxrDRrX4-1659016464933)(../../../Pictures/Linux/wps4-16590160625643.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LmvNxczU-1659016464934)(../../../Pictures/Linux/wps5-16590160625645.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-37wWXZmh-1659016464934)(../../../Pictures/Linux/wps6.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RAfeKdgK-1659016464934)(../../../Pictures/Linux/wps7.jpg)]

点击完成,就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): ***\*+\*******\*5\*******\*00M\****
25 
26
27 Command (m for help): n
28 Command action29 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 261037 #查看分区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 文件, 标红的部分 是需要使用 指令来查看的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OSRjCOhS-1659016464934)(…/…/…/Pictures/Linux/wps8.jpg)] 在grub.cfg文件中 , 红色部分用 上面 sdb1 的 UUID替换,蓝色部分用 sdb2的UUID来替换, 紫色部分是添加的,表示selinux给关掉,同时设定一下init,告诉内核不要再去找这个程序了,不然开机的时候会出现错误的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YiyfO80L-1659016464935)(../../../Pictures/Linux/QQ%E5%9B%BE%E7%89%8720220728215211.png)]

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2SixoQJN-1659016464935)(../../../Pictures/Linux/wps9.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2hFhRSA2-1659016464935)(../../../Pictures/Linux/wps10.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Bd9jIKxF-1659016464935)(../../../Pictures/Linux/wps11.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1paMP4bO-1659016464936)(../../../Pictures/Linux/wps12.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0R1ziBTC-1659016464936)(../../../Pictures/Linux/wps13.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B99lSfuy-1659016464936)(../../../Pictures/Linux/wps14.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XxXA3Eog-1659016464937)(../../../Pictures/Linux/wps15.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VYebY6ka-1659016464937)(../../../Pictures/Linux/wps16.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3L320UJR-1659016464937)(../../../Pictures/Linux/wps17.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uTb4l5FP-1659016464937)(../../../Pictures/Linux/wps18.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g7BNVp37-1659016464938)(../../../Pictures/Linux/wps19.jpg)]

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

  2. 如果要拷贝指令,*重新进入到原来的 linux系统拷贝相应的指令即可*,比较将 /bin/ls 拷贝到 /mnt/sysroot/bin 将/sbin/reboot 拷贝到 /mnt/sysroot/sbin

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

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

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

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

  1. 再重新启动新的min linux系统,就可以使用 ls , reboot 指令了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6W6868xA-1659016464938)(../../../Pictures/Linux/wps20.jpg)]


http://chatgpt.dhexx.cn/article/Gycha0lo.shtml

相关文章

linux系统下的基本操作

Linux 操作系统 1. Linux操作系统认知 1.1 操作系统(Operation System简称OS) 定义 操作系统是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控…

Linux 系统相关介绍

Linux 系统相关说明 Linux 内核版本 没有图形化页面 稳定版 : 面向普通用户 开发版 : 面向开发人员 Linux 发行版 在内核版本的基础上, 增加比如桌面/音乐播放器等应用软件的系统 (不同公司的发行版, 名称不同)

讲讲Linux系统工程师的职业规划

时至今日,Linux操作系统越来越成为主流的桌面操作系统,自从在一年前看到了编程大神王垠写的一篇文章——完全用Linux工作,我决定学习使用Linux操作系统。因Windows在服务器领域的份额越来越低,学习具有安全和高效等特点的Linux操作…

Linux系统编程之进程退出,父进程等待子进程退出

1.首先讲一下进程的退出 进程的退出分为正常退出和异常退出: 正常退出: (1)main函数调用return (2)进程调用exit(),标准C库 (3)进程调用_exit()或_Exit(),属于系统调用 (4)进程最后一…

linux开发工程师主要是干什么的?

转载自:http://emb.hqyj.com/linux/10328.html 作者:清华远见 在新手眼里,大多数都不知道linux开发工程师主要是干什么的。其实linux开发工程师的主要工作内容有很多,需要学习的知识点也挺多的。学习这些东西以后,就可…

Linux 下怎么查看服务器的cpu和内存的硬件信息

一、top命令 top # 实时显示进程状态用户 和 查看CPU利用率 二、查看总内存的方法: free命令主要用于显示内存数量,如下图中内容所表示 free -h 命令 free -m 命令

如何通过命令查看服务器的内存条使用情况

其实就一个命令就搞定了:dmidecode。 最常用的选项就是用 -t 或者 --type 来限定关键字: bios, system, baseboard, chassis, processor, memory, cache, connector, slot 关于这些关键字可以百度是什么意思, 或者去看man手册页,这…

Linux 查看服务器内存、CPU、网络等占用情况的命令--汇总

搭建测试环境过程中,需要对正在使用的aws服务器,查看它在运行脚本,启动脚本时的内存,CPU,网络等使用情况 1、查看物理CPU个数:cat cat /proc/cpuinfo | grep "physical id" | sort | uniq | w…

服务器显示内存不足怎么查看,怎么查看服务器总内存

怎么查看服务器总内存 内容精选 换一换 华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。 当您购买的云服务器规格无法满足业务需要时,可…

Linux查看服务器内存、磁盘、cpu、网络占用、端口占用情况

1、查看物理CPU个数:cat cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l2、查看服务器CPU内核个数:cat 每个物理CPU中core的个数(即核数) cat /proc/cpuinfo | grep "cpu cores" | uniq 3…

如何查服务器运行内存条,怎么查看服务器的cpu和内存的硬件信息

可以按照如下方式进行操作: 一、查看cpu总个数方法: 1、首先执行top命令,如下图中内容所表示。 2、在top命令的显示界面,按数字键1,即可查看到当前系统中的总cpu数,如下图中内容所表示。 二、查看总内存的方…

如何查看linux 服务器的内存容量

如何查看linux 服务器的内存容量 cat /proc/meminfo cat /proc/meminfo

linux常用查看服务器内存的命令

1.free free 命令用来显示系统内存状态,包括系统物理内存、虚拟内存(swap 交换分区)、共享内存和系统缓存的使用情况,其输出和 top 命令的内存部分非常相似。 free 命令的基本格式如下: [rootlocalhost ~]# free [选项…

查看SQL-SERVER数据库及各个表的数据量及占用空间大小

1、查看某个数据库,直接执行存储过程sp_spaceused即可 exec sp_spaceused; 2、查看某个表,在存储过程后面加上表名即可 EXEC sp_spaceused T_XXXXX; 3、查看该数据库中的所有表,可以写一个存储过程,然后执行即可 存储过程如下&…

linux查看服务器内存占用情况

查看某个进程的占用内存情况(以‘device_maintenance’为例) 1.查找进程号 ps -ef | grep device_maintenance 或 ps -aux | grep device_maintenance2.查看服务器整体内存占用情况1 3.查看服务器整体内存占用情况2 free -htotal: 内存总数 used: 已经使用内存数 free: 完全…

查看服务器CPU内存

查看linux系统的内存有很多方法,以下为总结版本: 1- 内存:cat /proc/meminfo; cpu:cat /proc/cpuinfo; 2- 查看内存使用情况!!!! 使用命令:free -m 3- 查看CPU使用情况 使用命令:top 基本上使用上述三个命令就可以解决你的问题,以下是对这三个命令的详细…

Linux查看服务器总内存和总硬盘大小

一、linux CPU大小 其实应该通过Physical Processor ID来区分单核和双核。而Physical Processor ID可以从cpuinfo或者dmesg中找到. flags 如果有 ht 说明支持超线程技术 判断物理CPU的个数可以查看physical id 的值,相同则为同一个物理CPU 可以看到上面&#xff0…

Sqlserver 查询数据库内存使用情况

SELECT object_name as 对象名称, cntr_value*0.1*10/1024/1024 as 应用值_M,cntr_value as 应用值,cntr_type as 应用类型,t.counter_name as 计数器名称,t.instance_name as 实例名称 FROM sys.dm_os_performance_counters t WHERE counter_name Total Server Memory (KB) …

查看linux服务器的内存和CPU信息

内存信息: 查看内存信息 # cat /proc/meminfo CPU: 注释: 1、总核数 物理CPU个数 X 每颗物理CPU的核数 2、总逻辑CPU数 物理CPU个数 X 每颗物理CPU的核数 X 超线程数 # 查看物理CPU个数 cat /proc/cpuinfo| grep "physical id&qu…