歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> 用Shell腳本實現自動化完成屬於自己的微型Linux

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

日期:2017/2/28 16:09:23   编辑:SHELL編程

前面我寫了如何通過宿主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. if fdisk -l $DSK | grep "^/dev" &> /dev/null ; then #判斷硬盤的分區狀態。
  11. fdisk -l $DSK | grep "^/dev"
  12. PARTS=`fdisk -l $DSK | grep "^/dev" | awk '{print $1}'`
  13. for I in $PARTS; do # 使用循環的方式,將硬盤上每一個分區的狀態和是否掛載,掛載在哪告訴用戶。
  14. if mount | grep "$I" &> /dev/null; then
  15. mount | grep "$I"
  16. else
  17. echo "$I is not mounted."
  18. fi
  19. done
  20. fi
  21. SPART() { # 制作名為SPART的函數,這個函數的功能就是提示用戶准備分區,當允許分區則開始分區!
  22. read -p "Warning !!!!! Next you do it will wipe your disk !!!! Continue(y/N)?" CHOICE
  23. case $CHOICE in
  24. y|Y)
  25. for I in $PARTS; do
  26. if mount | grep "$I" &> /dev/null; then
  27. fuser -km $I
  28. umount $I
  29. fi
  30. done
  31. dd if=/dev/zero of=$DSK bs=512 count=1 &> /dev/null # 將用戶所選的硬盤的MBR直接擦除。讓其成為空盤。
  32. echo '
  33. n
  34. p
  35. 1
  36. +50M
  37. n
  38. p
  39. 2
  40. +512M
  41. n
  42. p
  43. 3
  44. +256M
  45. t
  46. 3
  47. 82
  48. w' | fdisk $DSK &> /dev/null # 將分區的信息傳遞給 fdisk,開始分區。
  49. partprobe $DSK
  50. sleep 1 # 分區之後要用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 # 執行這個 SPART 函數。
  65. [ $? -eq 0 ] && echo "The Disk wipe success !!!!!!!" || echo "Failure" # 判斷函數的返回值,如果是0,則提示分區成功。

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

將硬盤掛載!

Copyright © Linux教程網 All Rights Reserved