|
发表于 2004-2-17 09:39:57
|
显示全部楼层
part_it:
- #!/bin/sh
- # Create partitions(logical;) for slave hard disk automatically.
- # WARNNING!!!
- # Your hard disk must be empty initially,
- # OTHERWISE this script does not process!
- #
- # Written by home_king <home_king@163.com>
- #
-
- # Check parted
- if [ "$(whereis parted | awk '{print $2}')" = "" ]; then
- echo "Parted is not installed!"
- exit 1
- fi
- # Create partition
- if [ -n "$1" ]; then
- bdev=$1
- if [ -n "$(parted -s $bdev print |grep ^1)" ]; then
- echo 'Your hard disk must be not partitioned yet!!!'
- exit 1
- fi
- tmpvar=$(parted -s $1 print |grep "Disk geometry" |awk '{print $5}')
- edge=${tmpvar##*-}
- iedge=${edge%%.*}
- # Create refer to config_file
- if [ -n "$2" ] && [ -f $2 ]; then
- config_file=$2
- rm -f tmpfile
- cat $config_file |grep ^[1-9] > tmpfile
- startM=0
- lastflag=0
- while read size parttype fs; do
- if [ $((size-0)) -eq 0 ] || [ $size -le 0 ]; then
- echo 'Invalid "size" format!!!'
- exit 1
- fi
- case $parttype in
- l) parttype="logical";;
- p) parttype="primary";;
- *) echo 'Invalid part type!!![logical|primary]'
- exit 1;;
- esac
- case $fs in
- ext2) fs="ext2";;
- *) echo 'Invalid filesystem!!![Now just support ext2]'
- exit 1;;
- esac
- endM=$(($size+$startM))
- if [ $endM -gt $iedge ]; then
- lastflag=1
- endM=$edge
- fi
- parted -s $bdev mkpartfs $parttype $fs $startM $endM
- [ $lastflag -eq 1 ] && exit 0
- startM=$endM
- done < tmpfile
- # Auto mode
- else
- flag=""
- until [ "$flag" = "y" ] || [ "$flag" = "n" ]; do
- read -p 'WRNNING!!!NO CONFIG!!!Auto mode?[y/n]' flag
- done
- [ "$flag" = "n" ] && echo "exit" && exit 1
- avrsize=$(($iedge/4))
- startM=0
- i=1
- until [ $i -gt 3 ]; do
- endM=$(($avrsize*$i))
- parted -s /dev/hda mkpartfs logical ext2 $startM $endM
- startM=$endM
- i=$((i+1))
- done
- parted -s /dev/hda mkpartfs logical ext2 $startM $edge
- echo "All done!!!"
- echo
- parted -s /dev/hda print
- fi
- else
- echo "You must input device to process!"
- exit 1
- fi
复制代码
用法是
chmod +x part_it
./part_it /dev/hdX config-file
其中/dev/hdX是你的从盘,如X是b;
config-file是分区配置文件,格式如下
- #size parttype fs
- 6000 l ext2
- 2000 l ext2
- 8000 l ext2
复制代码
第一列是分区大小,第二列是分区类型(logical,缩写l,代表逻辑分区),第三列是文件系统,.三列用TAB键分开!!!
由于不知道你的具体要求是什么,只好仅仅支持逻辑分区以及ext2,兄弟最好在这个基础上自己修改一下脚本.
另外,脚本会自动判别你是否已分区,配置文件中总的size是否超出硬盘容量等等.
仅提供参考,后果自负!!! |
|