说明:
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 bytes Disk /dev/sdb: 21.5 GB, 21474836480 bytes ================================================== 1) sda 2) sdb 3) quit chose which disk you want to create:2 Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building 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 1 Last 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 15 Last 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 41 Last 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 at the next reboot or after you run partprobe(8) or kpartx(8) Syncing disks. fdisk done mkfs done mount done
原文地址:http://6638225.blog.51cto.com/6628225/1844621