天天看點

小型linux的制作

1、加硬碟,三個分區大小:

1:100M

2:512M

3:128M

把1的2建立為ext3的檔案系統

/dev/sdb1   /mnt/boot

/dev/sdb2   /mnt/sysroot

2、安裝grub(提供了兩種安裝方法2.1和2.2)

2.1# mkdir /mnt/boot/grub

# cp /usr/share/grub/i386-redhat/* /mnt/boot/grub

# grub

grub> root (hd1,0)

grub> setup (hd1)

2.2grub-install --root-directory=/mnt /dev/sdb

寫配置檔案:/mnt/boot/grub/grub.conf

grub.conf:

default=1

timeout=5

!!!splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz

!!!hiddenmenu

title @Red Hat Enterprise Linux Server (2.6.28.10)@

        root (hd0,0)

        kernel @/vmlinuz-2.6.28.10 ro root=/dev/sdb2@ rhgb quiet

        initrd @/initrd-2.6.28.10.img@

(其中配置檔案中!!!中間的未非必須,@中間的根據自己的需要來寫,兩個符号僅作為本人标注作用)

3、複制核心并提供initrd:

# cp /boot/vmlinuz-$(uname -r)  /mnt/boot/vmlinuz

# mkdir /tmp/linux 

# cd /tmp/linux

# zcat /boot/initrd-$(uname -r).img | cpio -id

# vim init

找到/dev/vol0/root 換成/dev/sda2

# find . | cpio -o -H newc --quiet | gzip -9 > /mnt/boot/initrd.gz

4、提供根檔案系統

# cd /mnt/sysroot

# mkdir -pv ./{etc/rc.d, bin, sbin, usr, proc, sys, var, tmp, lib, mnt, media, misc, opt, dev}

# cp /sbin/init sbin/

# cp /bin/bash bin/

複制上述兩個可執行檔案依賴的庫檔案:

# ldd /sbin/init

# cp /lib/... /mnt/sysroot/lib/...

以下提供了複制庫檔案的腳本程式:輸入需要的指令就能把指令和使用的庫檔案複制到需要的檔案中

#!/bin/bash

#

function BCP{

   TARGET=/tmp/sysroot

   COMMAND=`which $1 | grep -o  "/.*"`

   CMDPATH=${COMMAND%/*}

   [ -d $TARGET$CMDPATH ] || mkdir -p $TARGET$CMDPATH

   [ -e $TARGET$COMMAND ] || cp $COMMAND $TARGET$CMDPATH

   for LIBFILE in `ldd $COMMAND | grep -o "/.*lib[^[:space:]]*"`;do

       LIBPATH=${LIBFILE%/*}

       [ -d $TARGET$LIBPATH ] || mkdir -p $TARGET$LIBPATH

       [ -e $TARGET$LIBFILE ] || cp $LIBFILE $TARGET$LIBPATH

   done

}

while true; do

   read -p "A Command: " MYCMD

   case $MYCMD in

   q|Q)

      echo "Quit......"

      exit 0

      ;;

    *)

      ! which $MYCMD &> /dev/null && echo "Wrong command..." && continue

      BCP $MYCMD

   esac

done

5、提供配置檔案:

# vim etc/inittab

id:3:initdefault:

si::sysinit:/etc/rc.d/rc.sysinit

# vim etc/rc.d/rc.sysinit

rc.sysinit:

echo -e "\tWelcome to LLinux"

/bin/bash

# chmod +x etc/rc.d/rc.sysint

繼續閱讀