#!/bin/bash # read -p "请选择要分区的磁盘:(默认/dev/hda) " DISK [ -z $DISK ] && DISK=/dev/hda echo $DISK #分区 echo ' n p 1 +90M n p 2 +300M w' | fdisk $DISK partprobe $DISK sync sync sync sleep 3 #格式化 mkfs.ext3 ${DISK}1 &>/dev/null mkfs.ext3 ${DISK}2 &>/dev/null echo "Formating ${DISK}1 ${DISK}2 finished" mkdir /mnt/boot mkdir /mnt/sysroot mount ${DISK}1 /mnt/boot mount ${DISK}2 /mnt/sysroot for DIR in `ls /` ;do mkdir /mnt/sysroot/$DIR;done grub-install --root-directory=/mnt $DISK cp /boot/vmlinuz* /mnt/boot/vmlinuz mkdir -pv /tmp/test cd /tmp/test zcat /boot/init*.img | cpio -id cat init | sed -e '/resume.*$/d' -i init cat init | sed -e 's/mkrootdev.*$/mkrootdev -t ext3 -o defaults,ro hda2/' -i init find . | cpio -H newc --quiet -o | gzip -9 >/mnt/boot/initrd.gz cat > /mnt/boot/grub/grub.conf <<END default=0 timeout=5 hiddenmenu title Red Hat Enterprise Linux Server (2.6.18-53.el5) root (hd0,0) kernel /vmlinuz root=${DISK}2 initrd /initrd.gz END mkdir -pv /mnt/sysroot/etc/rc.d /mnt/sysroot/usr/{bin,sbin} /mnt/sysroot/var/log mkdir -pv /mnt/sysroot/etc/sysconfig cp /sbin/init /mnt/sysroot/sbin/ cp /bin/bash /mnt/sysroot/bin/ echo "HOSTNAME=mylinux" >/mnt/sysroot/etc/sysconfig/network cat > /mnt/sysroot/etc/rc.d/rc.sysinit <<END #!/bin/bash echo -e "\tWelcome to \033[31mMy\033[0m linux" echo "Remount rootfs..." mount -n -o remount,rw / echo "SET the Hostname" [ -f /etc/sysconfig/network ] && . /etc/sysconfig/network [ -r \$HOSTNAME -o "\$HOSTNAME" == '(none)' ] && \$HOSTNAME=localhost /bin/hostname \$HOSTNAME END cat > /mnt/sysroot/etc/inittab <<END id:3:initdefault: si::sysinit:/etc/rc.d/rc.sysinit l0:0:wait:/etc/rc.d/rc 0 l3:3:wait:/etc/rc.d/rc 3 l6:6:wait:/etc/rc.d/rc 6 1:2345:respawn:/sbin/agetty -n -l /bin/bash 38400 tty1 2:2345:respawn:/sbin/agetty -n -l /bin/bash 38400 tty2 #1:2345:respawn:/sbin/mingetty --loginprog=/bin/bash tty1 #2:2345:respawn:/sbin/mingetty --loginprog=/bin/bash tty2 END chmod +x /mnt/sysroot/etc/rc.d/rc.sysinit sync sync sleep 3 #库移植 DEST=/mnt/sysroot libcp() { LIBPATH=${1%/*} [ ! -d $DEST$LIBPATH ] && mkdir -p $DEST$LIBPATH [ ! -e $DEST${1} ] && cp $1 $DEST$LIBPATH && echo "copy lib $1 finished." } bincp() { CMDPATH=${1%/*} [ ! -d $DEST$CMDPATH ] && mkdir -p $DEST$CMDPATH [ ! -e $DEST${1} ] && cp $1 $DEST$CMDPATH for LIB in `ldd $1 | grep -o "/.*lib\(64\)\{0,1\}/[^[:space:]]\{1,\}"`; do libcp $LIB done } read -p "Your command: " CMD until [ $CMD == 'q' ]; do ! which $CMD &> /dev/null && echo "Wrong command" && read -p "Input again:" CMD && continue COMMAND=` which $CMD | grep -v "^alias" | grep -o "[^[:space:]]\{1,\}"` bincp $COMMAND echo "copy $COMMAND finished." read -p "Continue: " CMD done #基本命令移植 for BASCCMD in ls pwd cat echo bash init agetty halt shutdown reboot du hostname basename mount;do BASCCMD=` which $BASCCMD | grep -v "^alias" | grep -o "[^[:space:]]\{1,\}"` bincp $BASCCMD && libcp $BASCCMD done #增加关机和重启的功能 mkdir /mnt/sysroot/etc/rc.d/init.d mkdir /mnt/sysroot/etc/rc.d/rc{0,1,2,3,4,5,6}.d cat > /mnt/sysroot/etc/rc.d/init.d/halt <<END #!/bin/bash case \$0 in *reboot) COMMAND='/sbin/reboot' ;; *halt) COMMAND='/sbin/halt -p' ;; *) echo "Only call this script by *boot OR *halt" ;; esac case \$1 in start) ;; stop) ;; *) echo "Usage: `basename \$0` {start|stop}" ;; esac exec \$COMMAND END chmod +x /mnt/sysroot/etc/rc.d/init.d/halt cd /mnt/sysroot/etc/rc.d/rc0.d ln -sv ../init.d/halt K99halt cd /mnt/sysroot/etc/rc.d/rc6.d ln -sv ../init.d/halt K99reboot cd /mnt/sysroot/bin/ ln -sv bash sh cat > /mnt/sysroot/etc/rc.d/rc <<END #!/bin/bash RUNLEVEL=\$1 for I in /etc/rc.d/rc\$RUNLEVEL.d/K* ;do \$I stop done for I in /etc/rc.d/rc\$RUNLEVEL.d/S* ;do \$I start done END chmod +x /mnt/sysroot/etc/rc.d/rc #重新挂在根目录配置文件 cat > /mnt/sysroot/etc/fstab <<END ${DISK}2 / ext3 defaults 0 0 ${DISK}1 /boot ext3 defaults 0 0 proc /proc proc defaults 0 0 sysfs /sys sysfs defaults 0 0 END
转载于:https://blog.51cto.com/sanyu/1259825