用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 # 提示用户选择即将分区的硬盘
iffdisk -l $DSK | grep"^/dev"&> /dev/null ; then #判断硬盘的分区状态。
fdisk -l $DSK | grep"^/dev"
PARTS=`fdisk -l $DSK | grep"^/dev"| awk'{print $1}'`
forI in $PARTS;do# 使用循环的方式,将硬盘上每一个分区的状态和是否挂载,挂载在哪告诉用户。
ifmount | 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)
forI in $PARTS;do
ifmount | grep"$I"&> /dev/null; then
fuser -km $I
umount $I
fi
done
ddif=/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
return0
;;
n|N)
return1
;;
*)
return2
;;
esac
}
SPART # 执行这个 SPART 函数。
[ $? -eq 0 ] && echo"The Disk wipe success !!!!!!!"|| echo"Failure"# 判断函数的返回值,如果是0,则提示分区成功。
这样一来,我们就有了一个完整的分好了区,并且格式化了的硬盘了。接下来呢?
将硬盘挂载!
1
2
3
4
5
下一页