Files
new_install/operation/configure_fstab.sh
hbjia 8ecec09ea7 modify fstab, check partitions
modified:   dialog/di_dialog.py
	modified:   interface/ri_oper.py
	modified:   operation/configure_fstab.sh
2012-10-31 15:44:42 +08:00

124 lines
2.6 KiB
Bash
Executable File

#!/bin/bash
#
# DESCRIPTION: configure fstab
# this script will modify $TARGT/etc/fstab,
# append the mountpoint to $TARGET/etc/fstab.
# mountpoint, swap use by-id, other device use by-uuid.
# if can't get by-id or by-uuid use device name.
#
# SCRIPT NAME: configure_fstab.sh
#
# Usage: echo "/dev/hda2 /home ext3"|./configure_fstab.sh
#
# Input: stdin
# 1. partition
# 2. mountpoint
# 3. filesystem type
# below input is optional, if not set, we configure default,
# more about these argument read man fstab.
# 4. fs_mntops
# 5. fs_freq
# 6. fs_passno
#
# Output:
# NULL
# Returne value:
# 1 argument error
# 2 fstab doesn't exist
#
# AUTHOR: Qin Bo
#
# EMAIL: bqin@linx-info.com
#
# DATE: 2010-08-12
#
# HISTORY:
# REVISOR DATE MODIFICATION
# Qin Bo 2010-08-12 create
#
#
#
source ./functions
configure_fstab ()
{
local device="$1"
local mountpoint="$2"
local fs_type="$3"
local fs_mntops="$4"
local fs_freq="$5"
local fs_passno="$6"
# store uuid or by-id
local devname=""
if [ $# -lt 3 ];then
err "$FUNCNAME function argument error, it need 3 arguments at least !"
return 1
fi
# get partition's UUID, if partition not exist,
# or couldn't get partition information, set $devname as default
by_uuid=$(get_disk_sym $device "by-uuid")
if [ -n "$by_uuid" ];then
devname="UUID=$(echo $by_uuid|sed 's/.*\///')"
else
devname="$device"
fi
# configure fstab options here
# fs_mntops, fs_freq, fs_passno has given, we use function argument,
# or we set default configuration, set fs_freq 0, because our OS haven't
# dump utility, set root device of fs_passno 1. root device must first check.
# other device set 0.
case $fs_type in
ext2|ext3|reiserfs)
[ -z "$fs_mntops" ] && fs_mntops="acl"
;;
swap)
[ -z "$fs_mntops" ] && fs_mntops="defaults"
;;
*)
[ -z "$fs_mntops" ] && fs_mntops="defaults"
;;
esac
[ -z "$fs_freq" ] && fs_freq=0
if [ "$mountpoint" == "/" ];then
[ -z "$fs_passno" ] && fs_passno=1
else
[ -z "$fs_passno" ] && fs_passno=0
fi
info "$devname $mountpoint $fs_type $fs_mntops $fs_freq $fs_passno"
printf "%-60s %-10s %-10s %-25s %-1s %-1s\n" $devname $mountpoint $fs_type $fs_mntops $fs_freq $fs_passno >>"$TARGET/etc/fstab"
}
main ()
{
local line
if [ -e "$TARGET/etc/fstab" ];then
sed -i '/^#devpts/ s/#//
/^#sysfs/ s/#//
/^#shm/ s/#shm /tmpfs/ ' "$TARGET/etc/fstab"
info "configure fstab"
while read line;do
if [ -n "$line" ];then
configure_fstab $line
erv
fi
done
info "configure fstab success"
else
err "$TARGET/etc/fstab doesn't exist"
exit 2
fi
}
main "$@"