设计简化linux的过程

工作中我们可能不需要复杂的linux操作系统,这是我们可以设计一个简化的linux操作系统。

下图是linux的初始化进程图:

122055726.jpg

使用虚拟机建立自己的一块硬盘,并启动系统:

122115850.jpg

使用fdisk /dev/sdb建立3个主分区: 1,引导分区100M 2,根分区1G   3,虚拟分区500M。如下图:

122208635.jpg

格式化分区:使用 mkfs -t  ext3  /dev/sdb1

               mkfs  -t  ext3 /dev/sdb2  

挂载分区:

[root@server1 ~]# mkdir /mnt/boot

[root@server1 ~]# mkdir /mnt/sysroot

[root@server1 ~]#mount /dev/sdb1 /mnt/boot/

[root@server1 ~]# mount /dev/sdb2 /mnt/sysroot/

建立引导第二阶段:

使用grub命令编辑:如下图,最后使用quit退出

122307269.jpg

122359752.jpg

编辑引导菜单:vim grub.conf

122438802.jpg

122500345.jpg

拷贝内核:cp /boot/vmlinuz-2.6.18-164.el5  /mnt/boot/

驱动:查找老的驱动,并解压

[root@server1 ~]# mkdir abc

123040911.jpg


编辑init文件

122634657.jpg


再重新打包

[root@server1 abc]# find . |cpio -o -H newc --quiet|gzip -9 -n >/mnt/boot/initrd.gz

查看:

122705543.jpg


编辑grub.conf 菜单[root@server1boot]# vim /mnt/boot/grub/grub.conf

122727734.jpg



进入到新的根目录下

[root@server1 boot]# cd /mnt/sysroot/

[root@server1 sysroot]# ls /   查找旧的根目录下的目录

bin   dev  home lost+found  misc  net proc  sbin     srv tftpboot  usr

boot  etc  lib  media       mnt   opt root  selinux  sys tmp       var

在新的根目录下建目录

[root@server1 sysroot]# mkdir bin boot dev etc home libmedia mnt misc net opt  proc root sbinselinux srv sys tftpboot tmp usr var

进一步完善:

[root@server1 sysroot]# mkdir usr/bin

[root@server1 sysroot]# mkdir usr/sbin

[root@server1 sysroot]# mkdir etc/rc.d

拷贝init文件

[root@server1 sysroot]# which init

/sbin/init

[root@server1 sysroot]# cp /sbin/init    /mnt/sysroot/sbin/

下面是库文件需要拷贝(init ls cat bash...)

123234969.jpg

这里我们可以编辑一个拷贝文件的脚本,这样拷贝就比较方便了,命名为copy.sh

#!/bin/bash

while [ true ];do

read -p "A COMMAND " COMMAND

COMMANDSTRING=`which $COMMAND|tail -1`

COMMANDPATH=${COMMANDSTRING%/*}

COMMANDNAME=${COMMANDSTRING##*/}

/bin/cp -f $COMMANDPATH/$COMMANDNAME /mnt/sysroot$COMMANDPATH

for i in `/usr/bin/ldd $COMMANDSTRING`;do

     if        echo $i |grep /lib &>/dev/null; then

    LIBSTRING=`echo $i |grep /lib `

    LIBNAME=${LIBSTRING##*/}

    LIBPATH=${LIBSTRING%/*}


      /bin/cp -f $LIBPATH/$LIBNAME  /mnt/sysroot$LIBPATH


    fi


 done

 done

 使用bash copy.sh命令

174119842.png

进入到/mnt/sysroot/etc下,编辑inittab文件

122817341.jpg

进入到/mnt/sysroot/etc/ rc.d编辑rc.sysinit文件:

[root@server1 rc.d]# vim rc.sysinit

123118653.jpg


修改权限:

[root@server1 rc.d]# chmod a+x rc.sysinit

到此,一个新的硬盘就完成了。安装系统的时候将默认硬盘扣出,使用我们新建的硬盘2.vmdk就可以了。

124115851.jpg

以后需要什么东西还可以在里面添加,这个我会在后面向大家说明。