裁剪一个简单的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图

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

之后依次点击完成即可

安装系统 

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

4-3-1

4-3-2

 依次点击完成即可

开机

4-3-3

 这里选择第一个

4-3-4

 开机了!

4-3-4

 Next

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

4-3-5

 键盘布局,一般默认即可

4-3-6

 选择涉及设备类型

4-3-7

 输入电脑的名字

4-3-8

选择时区,国内为Asia/Shanghai

4-3-9

设置Root用户密码

4-3-10 选择第一个,使用全部空间

 4-3-11

 选择软件集

4-3-12

 开始安装

4-3-13

 安装完成!重启即可

4-3-14

  重启后根据需求设置即可

4-3-15

添加磁盘并分区

添加磁盘

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

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

5-1-1

5-1-2

5-1-3

5-1-4

5-1-5

 之后依次点击完成即可

然后开机

磁盘分区

使用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

7-1-1

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

hexdump -C -n 512 /dev/sdb/

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

4-1-2

复制内核及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/

开机

拆卸硬盘

12-1-1

 装载,开机

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

参考文献

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

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

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

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值