手工创建精简linux

在某些时候,我们期望linux实现某种特定单一的功能,这时候为了达到简约成本、提高效率、延长使用寿命、方便移植的目的,就需要我们使用比较简化一点的linux。

准备工作:

一台宿主机、一块硬盘、一张linux开机流程图

wps_clip_image-22501

上图为linux大概的开机流程。

步骤:

先将这块新硬盘插入宿主机,进行分区、格式化

wps_clip_image-21873

wps_clip_image-31205

上图中的sdb是新加硬盘

分区的时候,我规划sdb1为精简linux的boot分区,sdb2为精简linux的root分区,sdb3为精简linux的swap分区,规划之后执行格式化。我先不对sdb3进行格式化。wps_clip_image-5426

上图是格式化后的信息显示。

格式化后我们在宿主机上建立两个挂载点/mnt/boot  /mnt/sysroot,然后分别将sdb1、sdb2挂载。

现在我先重建grub引导的的第二阶段:

wps_clip_image-18814

grub-install--root-directory=/mnt/  /dev/sdb1 在/mnt/boot下创建说明文件和描述文件,但是没有grub引导菜单,需手工创建。

现在再来手动创建grub引导的第一阶段:

wps_clip_image-31094

这里的(hd1,0)表示的是宿主机的第二块硬盘的第一个分区(即将作为精简linux boot分区)。

然后我们需要linux内核以及开机需要加载的模块。

wps_clip_image-9385

上图是将initrd-2.6.18-164.el5.img拆解后的文件,我们需要对一些文件修改后在压缩打包使用。

find . |cpio -o -H newc --quiet |gzip -9 -n >/mnt/boot/initrd.gz该命令是将上图文件重新压缩。*需要将老的initrd-2.6.18-164.e15.img删除

wps_clip_image-19634

上图是initrd-2.6.18-164.el5.img拆解后的init文件,因为我们未对sdb3进行格式化,所以对87行进行注释。如果分区情况与宿主机不同还需要进行别的修改,因为我的分区情况与宿主机相同,所以只修改这一条。

wps_clip_image-1761

上图是将内核、重新压缩后的initrd-2.6.18-164.el5.img以及grub目录放在/mnt/boot,这将是我们精简linux的boot分区。

wps_clip_image-29670

上图是修改后将作为精简linux的grub引导菜单。*应注意这是将作为精简linux的grub引导菜单,这块硬盘在精简linux将被识别为sda,所以内核位置在/boot/vmlinuz-2.6.18-164.e15,引导完成后将根交给文件系统的根,即新硬盘的第二个分区,在精简linux即/dev/sda2

接下来需要启动一些进程,第一个需要启动的init,它需要读取它的配置文件即inittab,所以我们需要将init进程和inittab移植到新硬盘中,并做一些修改。

wps_clip_image-719

上图是修改过的inittab文件,我希望只执行rc.sysinit系统初始化并可以实现开机、重启。因为宿主机的开机重启牵扯到很多命令,命令又牵扯到很多库文件,拷过来的话一点一点很麻烦,所以将它换成2个脚本。

wps_clip_image-6682

上图是sysshutdown脚本

wps_clip_image-30295

上图是sysreboot脚本

因为这两个脚本只牵扯到2个命令,那么需要拷贝的东西就少了很多,工作量也就少了很多。

wps_clip_image-28853

wps_clip_image-13325

上图是修改后的rc.sysinit和network。我希望系统初始化只显示一句红色的MY LINUX并且实现网络功能、主机名。

实现网络功能,我们要查看eth0的信息,以查看需要那些文件。

wps_clip_image-29596

接下来把我们需要的一些命令拷过来。然后我们就可以将新硬盘拆下来,试一下了。

wps_clip_image-30046

上图是一个简单的脚本用来拷贝命令和命令所需的库文件。

下图即为精简linux的引导画面:

wps_clip_image-22331

wps_clip_image-17134

wps_clip_image-14309

接下来我想让精简linux实现ftp匿名登录。

在宿主机安装vsftpd,然后将/etc/usr/sbin/vsftpd以及/etc/vsftpd/vsftpd.conf、/etc/nsswitch.conf拷贝到精简linux相应的目录,在精简linux的usr目录下创建share目录,在share目录下创建empty目录;同样在精简linux的var目录下创建ftp目录,在ftp目录下创建pub目录;将宿主机lib目录的libnss_compat-2.5.so和libnss_files-2.5.so以及它们的链接拷到精简linux相应的目录,

wps_clip_image-11516

nsswitch.conf文件我只需要上图的几句。

然后修改vsftpd的配置文件vsftpd.conf

wps_clip_image-7476

wps_clip_image-15304

wps_clip_image-14661

将上图的三条禁用。

wps_clip_image-83

上图是在精简linux开启vsftpd。

wps_clip_image-19211

上图是用另一台windows使用ftp匿名登陆的,结果显示精简linux已经可以实现ftp的匿名登陆了。

你可能感兴趣的:(linux,style,target,流程图,blank)