用Shell脚本实现自动化完成属于自己的微型Linux
用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,开始实现:
- #!/bin/bash
- #: Title: All_Mini_Linux.sh
- #: Synopsis:
- #: DateTime: 2011-08-04 00:36:35
- #: Version: 0.1
- #: Author: weiyan
- #: Options:
- #
- read -p "The target disk: " DSK # 提示用户选择即将分区的硬盘
- if 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
- done
- fi
- SPART() { # 制作名为SPART的函数,这个函数的功能就是提示用户准备分区,当允许分区则开始分区!
- 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/null # 将用户所选的硬盘的MBR直接擦除。让其成为空盘。
- echo '
- n
- p
- 1
- +50M
- n
- p
- 2
- +512M
- n
- p
- 3
- +256M
- t
- 3
- 82
- w' | fdisk $DSK &> /dev/null # 将分区的信息传递给 fdisk,开始分区。
- partprobe $DSK
- sleep 1 # 分区之后要用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 # 执行这个 SPART 函数。
- [ $? -eq 0 ] && echo "The Disk wipe success !!!!!!!" || echo "Failure" # 判断函数的返回值,如果是0,则提示分区成功。
这样一来,我们就有了一个完整的分好了区,并且格式化了的硬盘了。接下来呢?
将硬盘挂载!
|
评论暂时关闭