说明:
1、默认分3个区,其中一个是SWAP分区
2、分区的大小没有写成交互式,直接定义在脚本,需要在脚本修改
3、只是演示测试,sda磁盘没有设置自动分区功能,可把sdb分区代码拷贝到sda位置即可
4、分区前会把分区磁盘的分区表先重置,请提前做好数据备份!!
#!/bin/bash#Author: Hill.Mai
#Contact: mdlwolf@163.com
#Create time: 2016-08-31 08:43:29
#Description:auto disks part ,will creat /,boot,swap three partitions defaultly.
echo "the disks exist list:"
fdisk -l |grep 'Disk /dev/sd[a-z]'
echo "=================================================="
PS3="chose which disk you want to create:"
select VAR in `ls /dev/sd*|grep -o 'sd[a-z]'|uniq` quit
do
case $VAR in
sda)
fdisk -l /dev/sda
break ;;
sdb)
#create partitions
dd if=/dev/zero of=/dev/sdb bs=512 count=1 &> /dev/null
echo "n
p
1
+100M
n
p
2
+200M
n
p
3
+300M
t
3
82
w" | fdisk /dev/sdb
echo -e "\033[31mfdisk done\033[0m"
#make filesystem
mkfs -t ext3 /dev/sdb1 &> /dev/null
mkfs -t ext3 /dev/sdb2 &> /dev/null
mkswap /dev/sdb3 &> /dev/null
echo -e "\033[31mmkfs done\033[0m"
#mount the system
echo -e "/dev/sdb1 /mnt/sdb1 ext3 defaults 0 0\n/dev/sdb2 /mnt/sdb2 ext3 defaults 0 0\n/dev/sdb3 swap swap defaults 0 0" >> /etc/fstab
mkdir -p /mnt/{sdb1,sdb2} &> /dev/null
mount -a &> /dev/null
swapon -a &> /dev/null
echo -e "\033[31mmount done\033[0m"
break ;;
quit)
break;;
*)
echo "wrong disk,please check again";;
esac
done
实例效果:
[10:21 root@Centos6.8~/shells]# sh partitions.sh the disks exist list:Disk /dev/sda: 214.7 GB, 214748364800 bytesDisk /dev/sdb: 21.5 GB, 21474836480 bytes==================================================1) sda2) sdb3) quitchose which disk you want to create:2Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabelBuilding a new DOS disklabel with disk identifier 0x30b93fb0.Changes will remain in memory only, until you decide to write them.After that, of course, the previous content won't be recoverable.Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u').Command (m for help): Command action e extended p primary partition (1-4)Partition number (1-4): First cylinder (1-2610, default 1): Using default value 1Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): Command (m for help): Command action e extended p primary partition (1-4)Partition number (1-4): First cylinder (15-2610, default 15): Using default value 15Last cylinder, +cylinders or +size{K,M,G} (15-2610, default 2610): Command (m for help): Command action e extended p primary partition (1-4)Partition number (1-4): First cylinder (41-2610, default 41): Using default value 41Last cylinder, +cylinders or +size{K,M,G} (41-2610, default 2610): Command (m for help): Partition number (1-4): Hex code (type L to list codes): Changed system type of partition 3 to 82 (Linux swap / Solaris)Command (m for help): The partition table has been altered!Calling ioctl() to re-read partition table.WARNING: Re-reading the partition table failed with error 16: Device or resource busy.The kernel still uses the old table. The new table will be used atthe next reboot or after you run partprobe(8) or kpartx(8)Syncing disks.fdisk donemkfs donemount done