裁剪一个简单的Linux

目录

本期软硬件信息

软件

兼容性

VMware Workstation Pro

OS

硬件

原理

思路

宿主机配置

下载宿主机

新建虚拟机

安装系统 

添加磁盘并分区

添加磁盘

磁盘分区

安装Grub

复制内核及initrd

grub.conf文件

创建一级目录

复制命令

网卡驱动

查看网卡位置

复制网卡 

开机

拆卸硬盘

 装载,开机

参考文献


往期回顾:Hexo——看这一篇就够了

本期软硬件信息

软件

兼容性

本期软件兼容性主要取决于VMware Workstation Pro的兼容性,近年的操作系统一般可以支持

VMware Workstation Pro

本文不提供任何盗版软件获取,安装,使用教程,也不建议任何用户使用盗版软件,且您使用的盗版软件与本文无关,您可以使用其它替代品

OS

本文使用Windows 11 Pro 22H2,宿主机使用CentOS 6,您使用的操作系统应支持虚拟机及图形化

硬件

您的硬件需支持图形化和虚拟硬件,且可以接入互联网

原理

制作之前,我们有必要了解一下Linux的启动流程:

  1. 首先Linux通过POST自检,检查硬件设备有没有故障
  2. 如果有多块启动盘的话,需要在BIOS中选择启动磁盘
  3. 启动MBR中的Bootloader引导程序
  4. 加载内核
  5. 执行所有进程的父进程、老祖宗init
  6. 打印欢迎界面

思路

Bayi原本想使用LFS制作,但LFS太过复杂,实在研究不明白,所以就只好在现成的Linux发行版里裁剪了,但是原本想使用Ubuntu,但没找到相应的资料,于是只好选用CentOS了

  1. 我们在一个现有的Linux系统(这次是CentOS)上加一块硬盘/dev/sdb,在硬盘上分两个分区,一个是/boot,一个是/,并将其格式化。我们需要明确的概念是,我们现在加的这个硬盘在现有的Linux系统中是/dev/sdb,但是,当我们把东西全部设置好时,需要把这个硬盘拔除,放在我们的新系统上,它就是/dev/sda
  2. 在/dev/sdb这个硬盘上,我们要将其打造成一个独立的Linux系统,里面的所有文件是需要一个一个拷贝进去的。而且,作为一个启动盘,里面一定要有grub文件,所以我们要安装grub
  3. 作为一个能独立运行的Linux系统,内核一定要有,所以,要把内核文件和initramfs文件拷到/dev/sdb上
  4. 系统已经可以用了,接下来就是需要程序了,程序的拷贝我们可以通过一个脚本来实现,具体的脚本Bayi在下文中会放出

宿主机配置

下载宿主机

官网链接如下,见1-1-1图

https://archive.kernel.org/centos-vault/6.9/isos/x86_64/CentOS-6.9-x86_64-bin-DVD1.iso

 P.S.:官网下载速度较慢,建议配合FDM或者IDM使用

新建虚拟机

见4-2-1,4-2-2,4-2-3,4-2-4,4-2-5,4-2-6,4-2-7,4-2-8,4-2-9,4-2-10,4-2-11,4-2-12,4-2-13图

裁剪一个简单的Linux_第1张图片

裁剪一个简单的Linux_第2张图片

裁剪一个简单的Linux_第3张图片

裁剪一个简单的Linux_第4张图片

裁剪一个简单的Linux_第5张图片

裁剪一个简单的Linux_第6张图片

裁剪一个简单的Linux_第7张图片

裁剪一个简单的Linux_第8张图片

裁剪一个简单的Linux_第9张图片

裁剪一个简单的Linux_第10张图片

裁剪一个简单的Linux_第11张图片

裁剪一个简单的Linux_第12张图片

裁剪一个简单的Linux_第13张图片

之后依次点击完成即可

安装系统 

虚拟机创建完成,然后就是安装系统了,如果你在4-2-4图没有按照教程,请忽略4-3-1,4-3-2图

裁剪一个简单的Linux_第14张图片

裁剪一个简单的Linux_第15张图片

 依次点击完成即可

开机

裁剪一个简单的Linux_第16张图片

 这里选择第一个

裁剪一个简单的Linux_第17张图片

 开机了!

裁剪一个简单的Linux_第18张图片

 Next

建议时英文,不然各种目录全是中文的了

裁剪一个简单的Linux_第19张图片

 键盘布局,一般默认即可

裁剪一个简单的Linux_第20张图片

 选择涉及设备类型

裁剪一个简单的Linux_第21张图片

 输入电脑的名字

裁剪一个简单的Linux_第22张图片

选择时区,国内为Asia/Shanghai

裁剪一个简单的Linux_第23张图片

设置Root用户密码

裁剪一个简单的Linux_第24张图片 选择第一个,使用全部空间

 裁剪一个简单的Linux_第25张图片

 选择软件集

裁剪一个简单的Linux_第26张图片

 开始安装

裁剪一个简单的Linux_第27张图片

 安装完成!重启即可

裁剪一个简单的Linux_第28张图片

  重启后根据需求设置即可

裁剪一个简单的Linux_第29张图片

添加磁盘并分区

添加磁盘

在宿主机上添加一块大小为20G的硬盘,见5-1-1,5-1-2,5-1-3,5-1-4,5-1-5图

P.S.:添加时记得关机,这里CentOS9或者6在这一步都是一样的,图就不换了

裁剪一个简单的Linux_第30张图片

裁剪一个简单的Linux_第31张图片

裁剪一个简单的Linux_第32张图片

裁剪一个简单的Linux_第33张图片

裁剪一个简单的Linux_第34张图片

 之后依次点击完成即可

然后开机

磁盘分区

使用root用户登入

打开终端,通过fdisk来给我们的/dev/sdb进行分区

[root@BayiLinuxCentOS ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x16a8a657.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

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

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): no
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-6527, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-6527, default 6527): +100M

Command (m for help): N
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (15-6527, default 15): 
Using default value 15
Last cylinder, +cylinders or +size{K,M,G} (15-6527, default 6527): 
Using default value 6527

Command (m for help): p

Disk /dev/sdb: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x16a8a657

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          14      112423+  83  Linux
/dev/sdb2              15        6527    52315672+  83  Linux

Command (m for help): w   
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@BayiLinuxCentOS ~]# 

 对/dev/sdb的分区进行格式化

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

格式化完成后,创建一个文件夹。进行挂载

[root@BayiLinuxCentOS ~]# mkdir -p /mnt/boot 
[root@BayiLinuxCentOS ~]# mount /dev/sdb1 /mnt/boot

P.S.:新建的文件夹必须是/mnt/boot

安装Grub

运行以下命令安装Grub,见7-1-1图

grub-install –root-directory=/mnt /dev/sdb

裁剪一个简单的Linux_第35张图片

通过查看二进制的方法检查是否安装成功

hexdump -C -n 512 /dev/sdb/

安装成功,见4-1-2图

裁剪一个简单的Linux_第36张图片

复制内核及initrd

运行如下命令

cp /boot/vmlinuz-2.6.32-696.el6.x86_64 /mnt/boot/
cp /boot/initramfs-2.6.32-696.el6.x86_64.img /mnt/boot/

grub.conf文件

我们已经移植了内核和initrd文件,我们可以根据其版本来编写grub.conf文件

vim /mnt/boot/grub/grub.conf

文件内容

default=0
timeout=3
title linux owner
kernel /vmlinuz-2.6.32-696.el6.x86_64 root=UUID=1feac471-08c5-4b5b-aaff-bb6a1da60e26 selinux=0 init=/bin/bash
initrd /initramfs-2.6.32-696.el6.x86_64.img

创建一级目录

创建开机后的一级目录,同时把/dev/sdb2挂载至/mnt/sysroot,使该目录作为根目录

[root@localhost ~]# mkdir /mnt/sysroot
[root@localhost ~]# mkdir -pv /mnt/sysroot/{etc,tmp,var,usr,sys,proc,opt,home,root,dev,mnt,media}

复制命令

  1. 脚本执行,复制平时常用的命令即可复制脚本链接在这里:私人订制——属于你自己的Linux - 珂儿吖 - 博客园 (cnblogs.com)
  2. 手动复制(推荐) 从系统的目录复制,分别有:/usr/bin/ ; /bin/ ; /sbin/,复制到自己的相应位置(应该在/mnt/sysroot下找对应系统的位置,比如系统在/bin/,复制到/mnt/sysroot/bin/即可)

网卡驱动

查看网卡位置

modinfo e1000

复制网卡 

cp 你的网卡地址 /mnt/sysroot/lib64/

开机

拆卸硬盘

裁剪一个简单的Linux_第37张图片

 装载,开机

再创建,但需要将虚拟机创建时的硬盘改成已经制作好的硬盘即可,Bayi不过多赘述

参考文献

私人订制——属于你自己的Linux - 珂儿吖 - 博客园 (cnblogs.com)

Linux 系统启动过程 | 菜鸟教程 (runoob.com)

Linux系统启动流程(超详细)_linux启动过程详解_敬申火的博客-CSDN博客

你可能感兴趣的:(linux,其他,gnu,开源,centos)