歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

用Shell腳本實現自動化完成屬於自己的微型Linux

前面我寫了如何通過宿主RedHat系統通過精簡和調用以及修改的方式,打造一個完全屬於自己的微型LInux!見http://www.linuxidc.com/Linux/2011-08/40389.htm 

但是,很多人懶啊~~,所以我又寫了寫腳本,通過分步實現的方式。達到用一個腳本,完全的按照用戶想要達到的目的安裝一個屬於自己的微型Linux。

那麼下面我們來看如何實現: 

實現過程分析:

1.分區,按照用戶所選的盤,將其格式化,分區

2.掛載,按照用戶設定的的分區好的盤分別掛載在我們宿主機的一個目錄上。方便對微型linux進行編輯。

3.對微型Linux進行寫入各項配置信息

4.將微型Linux中我們需要用到的Bash等命令放進去

5.放入內核,和啟動必須加載的配置文件

6.對用戶的硬盤安裝引導程序。 

好的~過程已經分析OK了,下面我們動手開始寫吧!!!

第一步:實現自動分區!!

我們將問題分開來看,於是成了這樣:

寫一個腳本,實現將一個硬盤中原有分區信息全部刪除,並重新將其分為三個區:
1、提示用戶指定要操作的磁盤;如果此硬盤中有分區,顯示分區信息,並判斷此中分區是否仍然處於掛載狀態;
   如果是,則顯示分區和對應的掛載點;否則,則說明分區沒有掛載;
2、提示用戶接下來操作會破壞硬盤上的所有數據,並詢問用戶是否繼續進行;形如:Continue(y/N)?
   如果用戶選擇繼續,則抹除此硬盤上的所有分區信息(如果是仍處理掛載狀態的分區,則需要先卸載);否則退出;
3、將此硬盤分為三個主分區:
  第一個主分區,50M,ext3文件系統
  第二個主分區,512M,ext3文件系統
  第三個主分區,256M,swap文件系統

OK,開始實現:

  1. #!/bin/bash   
  2. #: Title: All_Mini_Linux.sh   
  3. #: Synopsis:   
  4. #: DateTime: 2011-08-04 00:36:35   
  5. #: Version: 0.1   
  6. #: Author: weiyan   
  7. #: Options:    
  8. #   
  9. read -p "The target disk: " DSK        # 提示用戶選擇即將分區的硬盤  
  10.   
  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.   
  15.   for I in $PARTS; do                  # 使用循環的方式,將硬盤上每一個分區的狀態和是否掛載,掛載在哪告訴用戶。  
  16.     if mount | grep "$I" &> /dev/null; then  
  17.        mount | grep "$I"  
  18.     else  
  19.       echo "$I is not mounted."  
  20.     fi  
  21.   done  
  22. fi  
  23.   
  24. SPART() {                # 制作名為SPART的函數,這個函數的功能就是提示用戶准備分區,當允許分區則開始分區!  
  25.   read -p "Warning !!!!! Next you do it will wipe your disk !!!! Continue(y/N)?" CHOICE  
  26.   case $CHOICE in  
  27.   y|Y)  
  28.   for I in $PARTS; do  
  29.     if mount | grep "$I" &> /dev/null; then  
  30.       fuser -km $I  
  31.       umount $I  
  32.     fi  
  33.   done  
  34.   
  35.   dd if=/dev/zero of=$DSK bs=512 count=1 &> /dev/null   # 將用戶所選的硬盤的MBR直接擦除。讓其成為空盤。  
  36.   
  37. echo '   
  38. n     
  39. p     
  40. 1  
  41.   
  42. +50M  
  43. n  
  44. p  
  45. 2  
  46.   
  47. +512M  
  48. n  
  49. p  
  50. 3  
  51.   
  52. +256M  
  53. t  
  54. 3  
  55. 82  
  56. w' | fdisk $DSK &> /dev/null      # 將分區的信息傳遞給 fdisk,開始分區。  
  57.   
  58.   partprobe $DSK  
  59.   sleep 1           # 分區之後要用sleep命令讓系統“沉睡”1秒,這樣可以讓分區的信息真正的同步進硬盤,而不至於格式化出錯。  
  60.   
  61.   mke2fs -j ${DSK}1 &> /dev/null    # 分別格式化每一個分區並且格式化虛擬分區。  
  62.   mke2fs -j ${DSK}2 &> /dev/null  
  63.   mkswap ${DSK}3 &> /dev/null  
  64.   return 0  
  65.   ;;  
  66.   n|N)  
  67.     return 1  
  68.     ;;  
  69.   *)  
  70.     return 2  
  71.     ;;  
  72. esac  
  73. }  
  74. SPART              # 執行這個 SPART 函數。  
  75. [ $? -eq 0 ] && echo "The Disk wipe success !!!!!!!" || echo "Failure"    # 判斷函數的返回值,如果是0,則提示分區成功。  

這樣一來,我們就有了一個完整的分好了區,並且格式化了的硬盤了。接下來呢?

將硬盤掛載!

Copyright © Linux教程網 All Rights Reserved