本文通过分析shell脚本程序,来学习在一个空白磁盘上怎么创建一个linux文件系统过程。
#!/bin/bash
##根据磁盘类型不同而设置,本人使用的是sata硬盘。
DEV=/dev/sda
MNTDIR=/mnt/
###Make sure the size of primary disk is 320G#######
###磁盘分区命令
fdiskstr="n\np\n1\n\n+319G\nn\np\n2\n\n\nt\n2\n82\nw\n"
#####
grubstr="root (hd1,0)\nsetup (hd1)\nquit\n"
echo "---------------------------------------------"
echo "-Warning: you are make a new disk, carefully-"
echo "---------------------------------------------"
if [ "$DEV" != "/dev/sda" ];then
echo "-Warning: the flash disk is not in sda, maybe crash your system-"
echo "---------------------------------------------"
exit -1
fi
action()
{
echo "$1"
$1
}
hsleep()
{
sleep $1
sync
}
##dd的用法:转换和复制文件,根据具体设置zero是不产生任何IO,清空磁盘空间
if [ "$1" == "clean" ];then
action "dd if=/dev/zero of=$DEV"
sleep 1
sync
exit 0
fi
echo "Make disk partition table..."
action "dd if=/dev/zero of=$DEV bs=512 count=1"
hsleep 1
echo "fdisk $DEV"
###通过管道输出命令到fdisk $DEV命令,磁盘分区
echo -e "$fdiskstr" | fdisk $DEV
[ $? -ne 0 ] && exit -1
hsleep 1
###设置sda2为交换分区
mkswap /dev/sda2
if [ $? -eq 0 ];then
####在特定分区上建立linux文件系统ext3 ,块4096字节,设置-b选项,老大说可以提高磁盘读写速度。
####防止一些事情发生
action "mkfs -t ext3 -b 4096 /dev/sda1"
else
echo "fdisk $DEV failed."
exit -1
fi
#######分区设置文件系统结束后,挂在分区,复制做好的文件系统到磁盘分区上
echo "Copy file-system to /dev/sda1..."
mount /dev/sda1 $MNTDIR
cp -dpRf common/* $MNTDIR
umount $MNTDIR
hsleep 1
###将buffer中数据强制写入磁盘中
sync
sleep 1
###建立grub引导
echo "Install grub..."
echo -e "$grubstr" | grub --no-floppy
hsleep 1
###检查文件系统
action "fsck /dev/sda1"
echo "Make new HR NM-3000 disk success, enjoy!"
不懂的朋友,可以给我留言。大家互相学习,进步!
阅读(1027) | 评论(2) | 转发(0) |