Files
new_install/operation/format_partition.sh
2011-02-22 15:49:16 +08:00

110 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
#
# DESCRIPTION: formating partition with a filesystem
# if have duplicate partition, it will format the finally filesystem type.
#
# SCRIPT NAME: format_partition.sh
#
# Usage: echo "/dev/sda1 ext2" | ./format_partition.sh
#
# Input: stdin
# 1. partition
# 2. filesystem type
#
# Output:
# success:
# @ format $devname success
# Return value:
# 1 argument error
# 2 deivce node doesn't exist
# 3 filesystem no implement
# 127 format partition utils not found
#
# AUTHOR: Qin Bo
#
# EMAIL: bqin@linx-info.com
#
# DATE: 2010-08-05
#
# HISTORY:
# REVISOR DATE MODIFICATION
# Qin Bo 2010-08-05 create
#
#
#
source ./functions
# ex: format_partition /dev/sda1 ext3
format_partition ()
{
if [ $# -ne 2 ];then
err "$FUNCNAME function argument error, it must have 2 arguments !"
return 1
fi
local devname="$1"
local fs_type="$2"
if [ ! -e "$devname" ];then
err "$devname node doesn't exist !"
return 2
fi
# partition may be used to swap, or has already mounted
if grep -q "^$devname " /proc/swaps ;then
swapoff "$devname"
elif grep -q "^$devname " /proc/mounts;then
reumount $devname 1>>"$DEV_LOG" 2>&1
fi
info "formating device "$devname" as "$fs_type" filesystem"
case ${fs_type} in
ext2)
mkfs.ext2 -F -I 128 "$devname" 1>>"$DEV_LOG" 2>&1
;;
ext3)
mkfs.ext3 -F -I 128 "$devname" 1>>"$DEV_LOG" 2>&1
;;
reiserfs)
yes | mkfs.reiserfs -f "$devname" 1>>"$DEV_LOG" 2>&1
;;
xfs)
yes | mkfs.xfs -f "$devname" 1>>"$DEV_LOG" 2>&1
;;
jfs)
yes | mkfs.jfs -q "$devname" 1>>"$DEV_LOG" 2>&1
;;
swap)
mkswap -f "$devname" 1>>"$DEV_LOG" 2>&1
;;
vfat)
mkfs.vfat "$devname" 1>>"$DEV_LOG" 2>&1
;;
*)
err ""$fs_type" filesystem no implement yet !"
return 3
;;
esac
}
main ()
{
local line
while read line;do
if [ -n "$line" ];then
# Notice: don't use "$line"
format_partition $line
erv
info "format $(echo $line|awk '{print $1}') success" stdout
fi
done
}
main "$@"
# vim:set ts=4 sw=4;