自制小型linux系统

做出一个简单的linux系统首先要有内核,驱动,init,ini听他爸,常用指令,库文件,做完后,做一个简单的应用。

【详细步骤】

1首先先在宿主机上添加一块硬盘

然后对硬盘进行分区

[root@localhost ~]# fdisk /dev/sdb

n添加p主分区

查看

做标示

做可引导


w保存退出

前面两分区格式化

[root@localhost ~]# mkfs -t ext3 /dev/sdb1

[root@localhost ~]# mkfs -t ext3 /dev/sdb2

建立挂载点

[root@localhost boot]# mkdir /mnt/boot

[root@localhost boot]# mkdir /mnt/boot

挂载

[root@localhost boot]# mount /dev/sdb1 /mnt/boot

[root@localhost boot]# mount /dev/sdb2 /mnt/sysroot

建grub第二阶段


[root@localhost boot]# grub-install  --root-directory=/mnt/ /dev/sdb

查看grub

[root@localhost boot]# ll /mnt/boot/grub/


发现没有grub, 接下来建第一阶段,手工建grub

grub> root (hd1,0)

grub> setup (hd1)

grub第一阶段做完,然后去编写grub

首先拷贝内核和驱动

[root@localhost grub]# cp /boot/vmlinuz-2.6.18-164.el5  /mnt/boot/

驱动

建个文件夹

mkdir abc

[root@localhost abc]# zcat /boot/initrd-2.6.18-164.el5.img  |cpio -id

ll

vi init

93行禁用加载卷标的没用

95 行sda2

打包

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




[root@localhost boot]# cd /mnt/boot/

[root@localhost boot]# cd grub/

[root@localhost grub]# vi grub.conf



default=0

timeout=5

title redhat enterprise linux5.4

        root (hd0,0)

     kernel /vmlinuz-2.6.18-164.el5 ro root=/dev/sda2 quiet

initrd /initrd.gz


一阶段内核驱动都有做init

在根分区建文件夹

[root@localhost sysroot]# mkdir bin boot dev etc home lib media mnt misc net opt proc root sbin selinux srv sys tftpboot tmp usr var


[root@localhost sysroot]# mkdir usr/bin

[root@localhost sysroot]# mkdir usr/sbin

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


拷贝原init到第二块硬盘应为有很多库文件,所以编写一个脚本

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

拷贝库文件太多所以编写一个脚本


#!/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

~      




init建好了,下面建表格


[root@localhost ~]# cd /mnt/sysroot/etc

[root@localhost etc]# vi /etc/inittab

[root@localhost etc]# vi /inittab

进入rc.d 建rc.sysinit


[root@localhost etc]# cd rc.d


[root@localhost rc.d]# vi rc.sysinit

#!/bin/bash

echo -e "\033[31m my linux \033[0m"

/bin/bash

~                                                                                                

~                

可执行

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

[root@localhost rc.d]# sync同步

然后见一个空壳虚拟机,



因为现在0,6 级别不能用所以就编写[root@localhost ~]# cd /mnt/sysroot/etc下的inittab


编写sysshutdown,sysreboot 脚本

[root@localhost rc.d]# vi sysshutdown

#!/bin/bash

exec /sbin/halt -p

~  

[root@localhost rc.d]# vi sysreboot


#!/bin/bash

exec /sbin/reboot -f

~                        


改变权限

[root@localhost rc.d]# chmod a+x sys*

sync同步

然后测试机器

可知机器成功



当我们用什么服时只需在宿主机拷贝即可,这样我们以后工作时可以自己做linux,可以避开linux的多余功能。

你可能感兴趣的:(linux,自制)