用Shell脚本实现自动化完成属于自己的微型Linux


前面我写了如何通过宿主RedHat系统通过精简和调用以及修改的方式,打造一个完全属于自己的微型LInux!见 

但是,很多人懒啊~~,所以我又写了写脚本,通过分步实现的方式。达到用一个脚本,完全的按照用户想要达到的目的安装一个属于自己的微型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,则提示分区成功。  

这样一来,我们就有了一个完整的分好了区,并且格式化了的硬盘了。接下来呢?

将硬盘挂载!

  • 1
  • 2
  • 3
  • 4
  • 5
  • 下一页

相关内容