LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2028|回复: 11

各位老大,能否写个脚本自动对从盘进行分区啊?

[复制链接]
发表于 2004-2-16 10:51:55 | 显示全部楼层 |阅读模式
请问这个脚本该怎么写捏?我不想每次都手工指定怎么分,因为很多盘子要分成指定格式。拜托各位了。
发表于 2004-2-16 11:37:21 | 显示全部楼层
好象没有简单的办法。
想不通怎么会有这种情况,很多是多少啊
 楼主| 发表于 2004-2-16 11:57:15 | 显示全部楼层
哪怕只有一个从盘也好,我就是想让它自动分区。难道我只有修改fdisk代码这一条路可走了吗?修改倒也罢了,改完怎么办俺不知道啊,怎么让它成为可执行的命令?嘿嘿,俺刚接触LINUX,别笑话俺。
发表于 2004-2-16 14:05:52 | 显示全部楼层
最初由 cuinantrue 发表
哪怕只有一个从盘也好,我就是想让它自动分区。难道我只有修改fdisk代码这一条路可走了吗?修改倒也罢了,改完怎么办俺不知道啊,怎么让它成为可执行的命令?嘿嘿,俺刚接触LINUX,别笑话俺。


兄弟我帮你写个脚本,其功能为:
调用GNU parted;
默认情况下按硬盘大小分成平均的4个逻辑分区并格式化成ext2;
如果提供了配置文件,则读取该文件中的配置信息进行自动分区并格式化;
最后自动调整/etc/fstab.
你要这个脚本吗?我基本上已经写好,只是没有机会调试而已.
 楼主| 发表于 2004-2-16 18:51:27 | 显示全部楼层
要!大侠,快给我吧!多谢了!!!!cuinantrue@sohu.com
发表于 2004-2-16 23:56:22 | 显示全部楼层
寒……等你用久了就知道自动分区有多愚蠢了。
发表于 2004-2-17 01:11:01 | 显示全部楼层
有什么用呢,如果要装多台机器,也不用这样的脚本阿
 楼主| 发表于 2004-2-17 01:46:47 | 显示全部楼层
我要做一个安装盘啊,555
发表于 2004-2-17 09:39:57 | 显示全部楼层
part_it:

  1. #!/bin/sh
  2. # Create partitions(logical;) for slave hard disk automatically.
  3. # WARNNING!!!
  4. # Your hard disk must be empty initially,
  5. # OTHERWISE this script does not process!
  6. #
  7. # Written by home_king <home_king@163.com>
  8. #
  9.                                                                                 
  10. # Check parted
  11. if [ "$(whereis parted | awk '{print $2}')" = "" ]; then
  12.         echo "Parted is not installed!"
  13.         exit 1
  14. fi
  15. # Create partition
  16. if [ -n "$1" ]; then
  17.         bdev=$1
  18.         if [ -n "$(parted -s $bdev print |grep ^1)" ]; then
  19.                 echo 'Your hard disk must be not partitioned yet!!!'
  20.                 exit 1
  21.         fi
  22.         tmpvar=$(parted -s $1 print |grep "Disk geometry" |awk '{print $5}')
  23.         edge=${tmpvar##*-}
  24.         iedge=${edge%%.*}
  25.         # Create refer to config_file
  26.         if [ -n "$2" ] && [ -f $2 ]; then
  27.                 config_file=$2
  28.                 rm -f tmpfile
  29.                 cat $config_file |grep ^[1-9] > tmpfile
  30.                 startM=0
  31.                 lastflag=0
  32.                 while read size parttype fs; do
  33.                         if [ $((size-0)) -eq 0 ] || [ $size -le 0 ]; then
  34.                                 echo 'Invalid "size" format!!!'
  35.                                 exit 1
  36.                         fi
  37.                         case $parttype in
  38.                                 l) parttype="logical";;
  39.                                 p) parttype="primary";;
  40.                                 *) echo 'Invalid part type!!![logical|primary]'
  41.                                    exit 1;;
  42.                         esac
  43.                         case $fs in
  44.                                 ext2) fs="ext2";;
  45.                                 *) echo 'Invalid filesystem!!![Now just support ext2]'
  46.                                    exit 1;;
  47.                         esac
  48.                         endM=$(($size+$startM))
  49.                         if [ $endM -gt $iedge ]; then
  50.                                 lastflag=1
  51.                                 endM=$edge
  52.                         fi
  53.                         parted -s $bdev mkpartfs $parttype $fs $startM $endM
  54.                         [ $lastflag -eq 1 ] && exit 0
  55.                         startM=$endM
  56.                 done < tmpfile
  57.         # Auto mode
  58.         else
  59.                 flag=""
  60.                 until [ "$flag" = "y" ] || [ "$flag" = "n" ]; do
  61.                         read -p 'WRNNING!!!NO CONFIG!!!Auto mode?[y/n]' flag
  62.                 done
  63.                 [ "$flag" = "n" ] && echo "exit" && exit 1
  64.                 avrsize=$(($iedge/4))
  65.                 startM=0
  66.                 i=1
  67.                 until [ $i -gt 3 ]; do
  68.                         endM=$(($avrsize*$i))
  69.                         parted -s /dev/hda mkpartfs logical ext2 $startM $endM
  70.                         startM=$endM
  71.                         i=$((i+1))
  72.                 done
  73.                 parted -s /dev/hda mkpartfs logical ext2 $startM $edge
  74.                 echo "All done!!!"
  75.                 echo
  76.                 parted -s /dev/hda print
  77.         fi
  78. else
  79.         echo "You must input device to process!"
  80.         exit 1
  81. fi
复制代码

用法是
chmod +x part_it
./part_it  /dev/hdX config-file
其中/dev/hdX是你的从盘,如X是b;
config-file是分区配置文件,格式如下

  1. #size   parttype        fs
  2. 6000    l       ext2
  3. 2000    l       ext2
  4. 8000    l       ext2
复制代码

第一列是分区大小,第二列是分区类型(logical,缩写l,代表逻辑分区),第三列是文件系统,.三列用TAB键分开!!!
由于不知道你的具体要求是什么,只好仅仅支持逻辑分区以及ext2,兄弟最好在这个基础上自己修改一下脚本.
另外,脚本会自动判别你是否已分区,配置文件中总的size是否超出硬盘容量等等.
仅提供参考,后果自负!!!
发表于 2004-2-17 09:45:38 | 显示全部楼层
越来越乱,用cfdisk吧

这个好用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表