如何打造一个小的Linux系统。这个可以当做一个很简单的启动盘,并使它能够成功启动且能有简单的shell环境。
步骤概略:
(1)划分一块磁盘,用来装系统
(2)给硬盘划分至少两个分区,一个为boot引导分区,一个为/根分区
(3)为分区创建文件系统,并挂载到两个不同目录
(4)在挂载boot的分区创建grub引导目录
(5)复制内核vmlinux与initrd文件到boot目录下,然后根据文件编写grub下的引导配置文件
(6)创建根文件系统
(7)移植bash等命令到根目录下
(8)启动测试
(一)划分磁盘
制作Linux系统,就需要有硬盘来装载它。所以我们就需要划分一块硬盘来装制作的Linux文件系统。这个硬盘不需要太大,这里我就划分一个20G的硬盘来装载它吧!先用lsblk来看看这个分区
(二)划分分区
既然是一个mini系统,那这里就给它划分两个分区吧!一个boot用来引导内核启动,一个为真正的根分区
创建分区用fdisk这个命令、
(三)创建文件系统
分区创建完成,但是想要它可以装文件就要为它创建文件系统。那就把它创建为ext4的文件系统吧!
mkfs -t ext4 /dev/sdb1
mkfs -t ext4 /dev/sdb2
完成这两步后,分区已经创建完成。就可以把它们挂载到指定目录下了
(四)创建grub引导目录
Linux的启动需要加载内核,而内核的加载就需要grub里的配置文件来定义
(五)复制内核与initrd到boot目录下
复制完成后就可以来编写grub下的引导配置文件了,它会根据配置文件来逐步引导各个程序的启动。如下图:1、所表示这个系统的默认的启动内核,0就是我们所制作的这个内核。2、表示如果在三秒内未指定为哪个内核,则系统就会启动默认内核。3、表示内核的名字。4、指明启动时的硬盘为哪一块硬盘。5、kernel 指明内核文件放置的相对位置,root 指明根目录的位置,selinux 表示把selinux这个安全策略关闭,init 表示我们要用的shell环境,这里我们用的是bash。
注意:编写时需要注意要把根目录的分区名更改为sda,因为当硬盘去引导系统时系统里只有一块硬盘,它会被自动识别为/dev/sda
(六)创建根文件系统
启动分区准备好后就需要准备根分区了。这个分区的作用就是整个系统的真正的分区,整个系统的配置文件、数据都会放置在这个分区内。所以我们就需要在这个分区内创建目录来分别存放各个数据文件。而有些系统所必须的文件目录我们就可以在这里创建完毕。
创建目录的命令如下:
cd /mnt/sysroot mkdir -pv {proc,dev,lib,bin,sbin,home,root,etc/rc.d,usr/{lib,bin,sbin},var/{log,run,lock},tmp,mnt,sys}
(七)移植命令到根下
系统创建完成后还需要复制一些基本的命令到根下,如bash、ls、cat、cd、hostname、vim等以这些命令来完成某些操作,实现基本的shell环境。所以我们需要编写一个脚本完成这些命令的配置文件的复制以及所依赖的库文件的复制。
下面这个脚本就可以帮我们完成这个任务
这些命令复制完成后。到这里一个mini的Linux系统已经基本创建完成了。为了看它是否能启动我们可以先切根看看能否切进这个系统里去
chroot /mnt/sysroot (如果切入成功,则说明系统已经基本创建完成)
(八)启动测试
最后,我们就需要把硬盘卸载下来。然后用虚拟机用这块硬盘来重新启动,启动成功后执行复制的几个简单命令。到这里整个Linux系统已经制作完成。