歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 一鍵安裝Linux (附帶各種命令,登錄歡迎界面,用戶登錄模塊。)

一鍵安裝Linux (附帶各種命令,登錄歡迎界面,用戶登錄模塊。)

日期:2017/2/28 16:09:23   编辑:Linux教程

根據http://www.linuxidc.com/Linux/2011-08/40389.htm與http://www.linuxidc.com/Linux/2011-08/40390.htm整合,我們最終寫好了一鍵制作Linux的腳本。這次真的是一鍵了,附帶了常用的命令,以及歡迎界面,外加提示符等等。

明天加入網絡模塊,讓其能夠上網!

宿主機:RedHat Enterprise 5 (2.6.18)

目標機器:256內存,8G硬盤。

  1. #!/bin/bash
  2. #: Title: All_Mini_Linux.sh
  3. #: Synopsis:
  4. #: DateTime: 2011-08-04 12:33:02
  5. #: Version: 0.2
  6. #: Author: weiyan
  7. #: Options:
  8. #
  9. #
  10. read -p "The target disk: " DSK
  11. if fdisk -l $DSK | grep "^/dev" &> /dev/null ; then
  12. fdisk -l $DSK | grep "^/dev"
  13. PARTS=`fdisk -l $DSK | grep "^/dev" | awk '{print $1}'`
  14. for I in $PARTS; do
  15. if mount | grep "$I" &> /dev/null; then
  16. mount | grep "$I"
  17. else
  18. echo "$I is not mounted."
  19. fi
  20. done
  21. fi
  22. SPART() {
  23. read -p "Warning !!!!! Next you do it will wipe your disk !!!! Continue(y/N)?" CHOICE
  24. case $CHOICE in
  25. y|Y)
  26. for I in $PARTS; do
  27. if mount | grep "$I" &> /dev/null; then
  28. fuser -km $I
  29. umount $I
  30. fi
  31. done
  32. dd if=/dev/zero of=$DSK bs=512 count=1 &> /dev/null
  33. echo '
  34. n
  35. p
  36. 1
  37. +50M
  38. n
  39. p
  40. 2
  41. +512M
  42. n
  43. p
  44. 3
  45. +256M
  46. t
  47. 3
  48. 82
  49. w' | fdisk $DSK &> /dev/null
  50. sleep 1
  51. mke2fs -j ${DSK}1 &> /dev/null
  52. mke2fs -j ${DSK}2 &> /dev/null
  53. mkswap ${DSK}3 &> /dev/null
  54. return 0
  55. ;;
  56. n|N)
  57. return 1
  58. ;;
  59. *)
  60. return 2
  61. ;;
  62. esac
  63. }
  64. SPART
  65. [ $? -eq 0 ] && echo "The Disk wipe success !!!!!!!" || echo "Failure"
  66. ## ==============2========================
  67. function GUAZAI {
  68. [ -d /mnt/boot ] || mkdir -p /mnt/boot
  69. umount /mnt/boot &> /dev/null
  70. mount $1 /mnt/boot
  71. [ -d /mnt/sysroot ] || mkdir -p /mnt/boot
  72. umount /mnt/sysroot &> /dev/null
  73. mount $2 /mnt/sysroot
  74. }
  75. GUAZAI ${DSK}1 ${DSK}2
  76. ## =============3=========================
  77. # firstblood ! rootfs $1 = /mnt/sysroot
  78. function ROOTFS {
  79. if [ -d $1 ];then
  80. if mount | grep "$1" &> /dev/null ; then
  81. cd $1
  82. chmod 1777 tmp/
  83. # create /etc/inittab
  84. cat >>$1/etc/inittab<< EOF
  85. id:3:initdefault:
  86. si::sysinit:/etc/rc.d/rc.sysinit
  87. l0:0:wait:/etc/rc.d/rc.shutdown
  88. l1:1:wait:/sbin/init -t1 S
  89. l3:3:wait:/sbin/init -t1 3
  90. #mingetty
  91. 1:2345:respawn:/sbin/mingetty tty1
  92. 2:2345:respawn:/sbin/mingetty tty2
  93. 3:2345:respawn:/sbin/mingetty tty3
  94. 4:2345:respawn:/sbin/mingetty tty4
  95. 5:2345:respawn:/sbin/mingetty tty5
  96. 6:2345:respawn:/sbin/mingetty tty6
  97. EOF
  98. # create /etc/rc.d/rc.shutdown
  99. cat >>$1/etc/rc.d/rc.shutdown<< EOF
  100. #!/bin/bash
  101. sync
  102. sleep 1
  103. sync
  104. sleep 1
  105. umount /dev/sda1
  106. umount /dev/sda2
  107. exec /sbin/halt -p
  108. EOF
  109. # create rc.sysinit
  110. cat >>$1/etc/rc.d/rc.sysinit<< EOF
  111. #!/bin/bash
  112. echo -e "\t\tWelcome to \033[031;1mLittle\033[0m Linux..."
  113. mount -n -o remount,rw /
  114. mount -n -a
  115. # set HOSTNAME
  116. [ -f /etc/sysconfig/network ] && source /etc/sysconfig/network
  117. [ -z $HOSTNAME ] && HOSTNAME=localhost
  118. echo $HOSTNAME > /proc/sys/kernel/hostname
  119. EOF
  120. # create /etc/sysconfig/network
  121. cat >>$1/etc/sysconfig/network<< EOF
  122. HOSTNAME=weiyan
  123. EOF
  124. # create /etc/sysctl.conf
  125. cat >>$1/etc/sysctl.conf<< EOF
  126. EOF
  127. # create /etc/issue
  128. cat >>$1/etc/issue<< EOF
  129. Welcome to Little.Linux.org
  130. Username : root Password : NiCai?
  131. EOF
  132. #create /root/.bash_profile
  133. cat >>$1/root/.bash_profile<< EOF
  134. PS1='[\u@\h \W]\
  135. <pre class="cpp" name="code">EOF
  136. chmod +x etc/rc.d/rc.shutdown
  137. # create fstab
  138. cat >>$1/etc/fstab<< EOF
  139. /dev/sda2 / ext3 defaults 0 0
  140. /dev/sda1 /boot ext3 defaults 0 0
  141. sysfs /sys sysfs defaults 0 0
  142. proc /proc proc defaults 0 0
  143. EOF
  144. else
  145. read -p "Error,the $1 still mount ! Contiune(y|N)?" MOT
  146. case $MOT in
  147. *)
  148. echo "Exit......"
  149. return 5
  150. ;;
  151. esac
  152. fi
  153. fi
  154. }
  155. ROOTFS /mnt/sysroot
  156. ##====================4========================
  157. # copy lib to your sys . $1= COMMAND $2 = /mnt/sysroot
  158. function COPYLIB {
  159. #copy command
  160. if which $1 &> /dev/null ;then
  161. AA=`which $1 | tail -1 | awk '{print $1}'`
  162. cp "$AA" $2"$AA"
  163. else
  164. echo "$1 is not exist"
  165. fi
  166. #copy lib
  167. LIBPATH=`echo $LIB | sed 's@\(.*\)/[^[:space:]]\{1,\}@\1@g'`
  168. [ -d ${2}$LIBPATH ] || mkdir ${2}$LIBPATH
  169. [ ! -e $2/$LIB ] && cp -f $LIB ${2}$LIBPATH
  170. done
  171. echo "$1 has cp done."
  172. }
  173. echo "=========================================================="
  174. # zhijie jia ru ming ling
  175. COPYLIB $CMDD /mnt/sysroot
  176. done
  177. #ln bash & sh !!!!!
  178. ln -sv bash sh &> /dev/null
  179. # copy lib/libnss*. with nsswitch
  180. cp /usr/lib/libnss3.so /mnt/sysroot/usr/lib/
  181. cp /usr/lib/libnssckbi.so /mnt/sysroot/usr/lib/
  182. cp /usr/lib/libnssutil3.so /mnt/sysroot/usr/lib/
  183. cp -d /usr/lib/libnss_compat.so /mnt/sysroot/usr/lib/
  184. cp -d /usr/lib/libnss_files.so /mnt/sysroot/usr/lib/
  185. cp -d /lib/libnss_files* /mnt/sysroot/lib/
  186. cp -d /lib/libnss_compat* /mnt/sysroot/lib/
  187. ## copy login !
  188. cd /mnt/sysroot/bin/
  189. wget ftp://192.168.0.254/pub/login &> /dev/null
  190. chmod +x login
  191. cp /lib/libcrypt.so.1 /mnt/sysroot/lib/
  192. cp /lib/libm.so.6 /mnt/sysroot/lib/
  193. cd ~
  194. ## copy passwd .... nsswitch.conf
  195. cp /etc/{passwd,shadow,group,gshadow} /mnt/sysroot/etc/
  196. cp /etc/nsswitch.conf /mnt/sysroot/etc/
  197. #########until xunhuan let user input ##########################
  198. #
  199. #echo -e "Please input COMMAND with \033[31mbash\033[0m and \033[31minit\033[0m !!!!!"
  200. #read -p "COMMAND you want?(Quit for 'q') :" CMD1
  201. #until [ $CMD1 == 'q' ]; do
  202. # COPYLIB $CMD1 /mnt/sysroot
  203. # read -p "Which COMMAND you want use ?(Quit for 'q') :" CMD1
  204. #done
  205. ###############################################################
  206. echo "=========================================================="
  207. ##==========================5===================================
  208. # $1 = /mnt/sysroot
  209. function YDFQ {
  210. TMPDIR=`mktemp -d /tmp/little.XX`
  211. cd $TMPDIR
  212. zcat /boot/initrd-`uname -r`.img | cpio -id &> /dev/null ## zhankai bing songgei
  213. sed -i 's@^echo Scanning and configuring dmraid supported devices@#&@g' init
  214. sed -i 's@^echo Scanning logical volumes@#&@g' init
  215. sed -i 's@^lvm vgscan --ignorelockingfailure@#&@g' init
  216. sed -i 's@^echo Activating logical volumes@#&@g' init
  217. sed -i 's@^lvm vgchange -ay --ignorelockingfailure vol0@#&@g' init
  218. sed -i 's@^resume LABEL=SWAP-sda3@#&@g' init
  219. sed -i "s@\(mkrootdev.*\) /.*@\1 sda2@" init
  220. find . | cpio -H newc -o --quiet | gzip -9 > /mnt/boot/initrd.gz
  221. cp /boot/vmlinuz-`uname -r` /mnt/boot/vmlinuz
  222. }
  223. YDFQ /mnt/sysroot
  224. ##==============================6================================
  225. ## $1 = /dev/sdc $2=/mnt/boot $3=kernel'name $4 initrd's name
  226. function GRUB {
  227. if [ `basename $2` == boot ];then
  228. grub-install --root-directory=/mnt $1 &> /dev/null
  229. cat >>$2/grub/grub.conf<< EOF
  230. default=0
  231. timeout=10
  232. title Little Linux
  233. root (hd0,0)
  234. kernel /${3} ro root=/dev/sda2 quiet
  235. initrd /${4}
  236. EOF
  237. else
  238. echo "It's not boot !Exit & Please set it again !"
  239. fi
  240. }
  241. GRUB $DSK /mnt/boot vmlinuz initrd.gz
  242. sync
  243. sync
  244. sync
  245. sync
  246. sync
  247. sleep 10
  248. echo "Congratulation ! Your Mini Linux is install OK !"

當所有都運行完之後~

OK,萬事搞定!

Copyright © Linux教程網 All Rights Reserved