天天看点

小型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

继续阅读