一键安装linux (附带各种命令,登录欢迎界面,用户登录模块。)

来源:互联网 发布:js运行 编辑:程序博客网 时间:2024/05/18 09:05

根据前几天的整合,我们最终写好了一键制作Linux的脚本。这次真的是一键了,附带了常用的命令,以及欢迎界面,外加提示符等等。

明天加入网络模块,让其能够上网!

 

宿主机:Redhat Enterprise 5 (2.6.18)

目标机器:256内存,8G硬盘。

 

 

 
#!/bin/bash#: Title: All_Mini_Linux.sh#: Synopsis:#: DateTime: 2011-08-04 12:33:02#: Version: 0.2#: Author: weiyan#: Options: ##read -p "The target disk: " DSKif fdisk -l $DSK | grep "^/dev" &> /dev/null ; then  fdisk -l $DSK | grep "^/dev"  PARTS=`fdisk -l $DSK | grep "^/dev" | awk '{print $1}'`  for I in $PARTS; do    if mount | grep "$I" &> /dev/null; then       mount | grep "$I"    else      echo "$I is not mounted."    fi  donefiSPART() {  read -p "Warning !!!!! Next you do it will wipe your disk !!!! Continue(y/N)?" CHOICE  case $CHOICE in  y|Y)  for I in $PARTS; do    if mount | grep "$I" &> /dev/null; then      fuser -km $I      umount $I    fi  done  dd if=/dev/zero of=$DSK bs=512 count=1 &> /dev/nullecho ' n   p   1+50Mnp2+512Mnp3+256Mt382w' | fdisk $DSK &> /dev/null  sleep 1  mke2fs -j ${DSK}1 &> /dev/null  mke2fs -j ${DSK}2 &> /dev/null  mkswap ${DSK}3 &> /dev/null  return 0  ;;  n|N)    return 1    ;;  *)    return 2    ;;esac}SPART[ $? -eq 0 ] && echo "The Disk wipe success !!!!!!!" || echo "Failure"## ==============2========================function GUAZAI {        [ -d /mnt/boot ] ||  mkdir -p /mnt/boot        umount /mnt/boot &> /dev/null        mount $1 /mnt/boot        [ -d /mnt/sysroot ] || mkdir -p /mnt/boot        umount /mnt/sysroot &> /dev/null        mount $2 /mnt/sysroot}GUAZAI ${DSK}1 ${DSK}2## =============3=========================# firstblood ! rootfs  $1 = /mnt/sysrootfunction ROOTFS {        if [ -d $1 ];then          if mount | grep "$1" &> /dev/null ; then             cd $1             chmod 1777 tmp/# create /etc/inittabcat >>$1/etc/inittab<< EOFid:3:initdefault:si::sysinit:/etc/rc.d/rc.sysinitl0:0:wait:/etc/rc.d/rc.shutdownl1:1:wait:/sbin/init -t1 Sl3:3:wait:/sbin/init -t1 3#mingetty1:2345:respawn:/sbin/mingetty tty12:2345:respawn:/sbin/mingetty tty23:2345:respawn:/sbin/mingetty tty34:2345:respawn:/sbin/mingetty tty45:2345:respawn:/sbin/mingetty tty56:2345:respawn:/sbin/mingetty tty6EOF# create /etc/rc.d/rc.shutdowncat >>$1/etc/rc.d/rc.shutdown<< EOF#!/bin/bashsyncsleep 1syncsleep 1umount /dev/sda1umount /dev/sda2exec /sbin/halt -pEOF# create rc.sysinitcat >>$1/etc/rc.d/rc.sysinit<< EOF#!/bin/bashecho -e "\t\tWelcome to \033[031;1mLittle\033[0m Linux..."mount -n -o remount,rw /mount -n -a# set HOSTNAME[ -f /etc/sysconfig/network ] && source /etc/sysconfig/network[ -z $HOSTNAME ] && HOSTNAME=localhostecho $HOSTNAME > /proc/sys/kernel/hostnameEOF# create /etc/sysconfig/networkcat >>$1/etc/sysconfig/network<< EOFHOSTNAME=weiyanEOF# create /etc/sysctl.confcat >>$1/etc/sysctl.conf<< EOFEOF# create /etc/issuecat >>$1/etc/issue<< EOFWelcome to Little.Linux.orgUsername : root Password : NiCai?EOF#create /root/.bash_profilecat >>$1/root/.bash_profile<< EOFPS1='[\u@\h \W]\
EOF                chmod +x etc/rc.d/rc.shutdown# create fstabcat >>$1/etc/fstab<< EOF/dev/sda2               /            ext3    defaults  0 0/dev/sda1               /boot        ext3    defaults  0 0sysfs                   /sys         sysfs   defaults  0 0proc                    /proc        proc    defaults  0 0EOF          else                read -p "Error,the $1 still mount ! Contiune(y|N)?" MOT                case $MOT in                *)                        echo "Exit......"                        return 5                        ;;                esac          fi        fi}ROOTFS /mnt/sysroot##====================4========================# copy lib to your sys .  $1= COMMAND  $2 = /mnt/sysrootfunction COPYLIB {  #copy command  if which $1 &> /dev/null ;then    AA=`which $1 | tail -1 | awk '{print $1}'`    cp "$AA" $2"$AA"  else    echo "$1 is not exist"  fi  #copy lib    LIBPATH=`echo $LIB | sed 's@\(.*\)/[^[:space:]]\{1,\}@\1@g'`    [ -d ${2}$LIBPATH ] || mkdir ${2}$LIBPATH    [ ! -e $2/$LIB ] && cp -f $LIB ${2}$LIBPATH  done  echo "$1 has cp done."}echo "=========================================================="# zhijie jia ru ming ling   COPYLIB $CMDD /mnt/sysrootdone#ln bash & sh !!!!!ln -sv bash sh &> /dev/null# copy lib/libnss*. with nsswitchcp /usr/lib/libnss3.so /mnt/sysroot/usr/lib/cp /usr/lib/libnssckbi.so /mnt/sysroot/usr/lib/cp /usr/lib/libnssutil3.so /mnt/sysroot/usr/lib/cp -d /usr/lib/libnss_compat.so /mnt/sysroot/usr/lib/cp -d /usr/lib/libnss_files.so /mnt/sysroot/usr/lib/cp -d /lib/libnss_files* /mnt/sysroot/lib/cp -d /lib/libnss_compat* /mnt/sysroot/lib/## copy login !cd /mnt/sysroot/bin/wget ftp://192.168.0.254/pub/login &> /dev/nullchmod +x logincp /lib/libcrypt.so.1 /mnt/sysroot/lib/cp /lib/libm.so.6 /mnt/sysroot/lib/cd ~## copy passwd .... nsswitch.confcp /etc/{passwd,shadow,group,gshadow} /mnt/sysroot/etc/cp /etc/nsswitch.conf /mnt/sysroot/etc/#########until xunhuan let user input ############################echo -e "Please input COMMAND with \033[31mbash\033[0m and \033[31minit\033[0m !!!!!"#read -p "COMMAND you want?(Quit for 'q') :" CMD1  #until [ $CMD1 == 'q' ]; do#  COPYLIB $CMD1 /mnt/sysroot#  read -p "Which COMMAND you want use ?(Quit for 'q') :" CMD1  #done###############################################################echo "=========================================================="##==========================5===================================# $1 = /mnt/sysrootfunction YDFQ {TMPDIR=`mktemp -d /tmp/little.XX`cd $TMPDIRzcat /boot/initrd-`uname -r`.img | cpio -id  &> /dev/null     ## zhankai bing songgeised -i 's@^echo Scanning and configuring dmraid supported devices@#&@g' initsed -i 's@^echo Scanning logical volumes@#&@g' initsed -i 's@^lvm vgscan --ignorelockingfailure@#&@g' initsed -i 's@^echo Activating logical volumes@#&@g' initsed -i 's@^lvm vgchange -ay --ignorelockingfailure  vol0@#&@g' initsed -i 's@^resume LABEL=SWAP-sda3@#&@g' initsed -i "s@\(mkrootdev.*\) /.*@\1 sda2@" initfind . | cpio -H newc -o --quiet | gzip -9 > /mnt/boot/initrd.gzcp /boot/vmlinuz-`uname -r` /mnt/boot/vmlinuz}YDFQ /mnt/sysroot##==============================6================================## $1 = /dev/sdc  $2=/mnt/boot $3=kernel'name  $4 initrd's namefunction GRUB {if [ `basename $2` == boot ];then  grub-install --root-directory=/mnt $1  &> /dev/null  cat >>$2/grub/grub.conf<< EOFdefault=0timeout=10title Little Linux        root (hd0,0)        kernel /${3} ro root=/dev/sda2 quiet        initrd /${4}EOFelse  echo "It's not boot !Exit & Please set it again !" fi}GRUB $DSK /mnt/boot vmlinuz initrd.gzsyncsyncsyncsyncsyncsleep 10echo "Congratulation ! Your Mini Linux is install OK !"

 

当所有都运行完之后~

OK,万事搞定!

	
				
		
原创粉丝点击