目录
往期回顾:Hexo——看这一篇就够了
本期软硬件信息
软件
兼容性
本期软件兼容性主要取决于VMware Workstation Pro的兼容性,近年的操作系统一般可以支持
VMware Workstation Pro
本文不提供任何盗版软件获取,安装,使用教程,也不建议任何用户使用盗版软件,且您使用的盗版软件与本文无关,您可以使用其它替代品
OS
本文使用Windows 11 Pro 22H2,宿主机使用CentOS 6,您使用的操作系统应支持虚拟机及图形化
硬件
您的硬件需支持图形化和虚拟硬件,且可以接入互联网
原理
制作之前,我们有必要了解一下Linux的启动流程:
- 首先Linux通过POST自检,检查硬件设备有没有故障
- 如果有多块启动盘的话,需要在BIOS中选择启动磁盘
- 启动MBR中的Bootloader引导程序
- 加载内核
- 执行所有进程的父进程、老祖宗init
- 打印欢迎界面
思路
Bayi原本想使用LFS制作,但LFS太过复杂,实在研究不明白,所以就只好在现成的Linux发行版里裁剪了,但是原本想使用Ubuntu,但没找到相应的资料,于是只好选用CentOS了
- 我们在一个现有的Linux系统(这次是CentOS)上加一块硬盘/dev/sdb,在硬盘上分两个分区,一个是/boot,一个是/,并将其格式化。我们需要明确的概念是,我们现在加的这个硬盘在现有的Linux系统中是/dev/sdb,但是,当我们把东西全部设置好时,需要把这个硬盘拔除,放在我们的新系统上,它就是/dev/sda
- 在/dev/sdb这个硬盘上,我们要将其打造成一个独立的Linux系统,里面的所有文件是需要一个一个拷贝进去的。而且,作为一个启动盘,里面一定要有grub文件,所以我们要安装grub
- 作为一个能独立运行的Linux系统,内核一定要有,所以,要把内核文件和initramfs文件拷到/dev/sdb上
- 系统已经可以用了,接下来就是需要程序了,程序的拷贝我们可以通过一个脚本来实现,具体的脚本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-4图没有按照教程,请忽略4-3-1,4-3-2图
依次点击完成即可
开机
这里选择第一个
开机了!
Next
建议时英文,不然各种目录全是中文的了
键盘布局,一般默认即可
选择涉及设备类型
输入电脑的名字
选择时区,国内为Asia/Shanghai
设置Root用户密码
选择第一个,使用全部空间
选择软件集
开始安装
安装完成!重启即可
重启后根据需求设置即可
添加磁盘并分区
添加磁盘
在宿主机上添加一块大小为20G的硬盘,见5-1-1,5-1-2,5-1-3,5-1-4,5-1-5图
P.S.:添加时记得关机,这里CentOS9或者6在这一步都是一样的,图就不换了
之后依次点击完成即可
然后开机
磁盘分区
使用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
通过查看二进制的方法检查是否安装成功
hexdump -C -n 512 /dev/sdb/
安装成功,见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}
复制命令
- 脚本执行,复制平时常用的命令即可复制脚本链接在这里:私人订制——属于你自己的Linux - 珂儿吖 - 博客园 (cnblogs.com)
- 手动复制(推荐) 从系统的目录复制,分别有:/usr/bin/ ; /bin/ ; /sbin/,复制到自己的相应位置(应该在/mnt/sysroot下找对应系统的位置,比如系统在/bin/,复制到/mnt/sysroot/bin/即可)
网卡驱动
查看网卡位置
modinfo e1000
复制网卡
cp 你的网卡地址 /mnt/sysroot/lib64/
开机
拆卸硬盘
装载,开机
再创建,但需要将虚拟机创建时的硬盘改成已经制作好的硬盘即可,Bayi不过多赘述
参考文献
私人订制——属于你自己的Linux - 珂儿吖 - 博客园 (cnblogs.com)