Files
new_install/operation/mount_partition.sh
Peng Zhihui 513f9756bf Modify finish_install interface:
exec_finish_install will run all executable scripts in the
    finish_install dir in turn.
Add support to ext4 in mount_partition.sh
move auto_install.py and state_grid.py to text dir

	modified:   operation/exec_finish_install.sh
	new file:   operation/finish_install/95state_grid_custom.py
	modified:   operation/finish_install/99finish_install.sh
	new file:   operation/finish_install/exec_post_add.sh
	modified:   operation/install.txt
	modified:   operation/mount_partition.sh
	renamed:    AutoInstall/auto_install.py -> text/auto_install.py
	renamed:    StateGrid/state_grid.py -> text/state_grid.py
2014-02-26 09:33:28 +08:00

122 lines
2.6 KiB
Bash
Executable File

#!/bin/bash
#
# DESCRIPTION: mounting all partitions which from stdin
#
# SCRIPT NAME: mount_partition.sh
#
# Usage: echo "/dev/sda1 / ext3" |./mount_partition.sh
#
# Notice: don't expect mount swap partition : )
#
# Input: stdin
# 1. partition
# 2. mountpoint
# 3. filesystem type
# below input is optional, if not set, we mount default configure
# 4. fs_mntops: set mount options
# Output:
# success:
# @ mount $devname success
# Return value:
# 1 argument error
# 2 device node doesn't exist
# 32 mount failure
#
# AUTHOR: Qin Bo
#
# EMAIL: bqin@linx-info.com
#
# DATE: 2010-08-06
#
# HISTORY:
# REVISOR DATE MODIFICATION
# Qin Bo 2010-08-06 create
#
#
#
source ./functions
mount_partition ()
{
local devname="$1"
local mountpoint="$2"
local fs_type="$3"
local fs_mntops="$4"
if [ $# -lt 3 ];then
err "$FUNCNAME function argument error, it need 3 arguments at least !"
return 1
fi
local mount_pos="$TARGET$mountpoint"
if [ ! -e "$devname" ];then
err "$devname node doesn't exist !"
return 2
fi
# mount filesystem for default option,
# after installation will set acl, so we use acl option mount here.
# this configuration according old Rocky installer.
case $fs_type in
ext2|ext3|ext4|reiserfs)
[ -z "$fs_mntops" ] && fs_mntops="acl" ;;
*)
[ -z "$fs_mntops" ] && fs_mntops="defaults" ;;
esac
if [ ! -d "$mount_pos" ];then
info "create directory $mount_pos ..."
mkdir -p "$mount_pos"
fi
# device node has already mounted on other directory, umount it.
# ex: /dev/hda5 should mount on /mnt, but it has already mounted on /cdrom before,
# so, we umount it
if grep -q "^$devname " /proc/mounts;then
reumount $devname
fi
# mountpoint has already mounted, umount it
if mountpoint -q $mount_pos;then
# may be have mountpoint under the mountpoint directory
reumount $mount_pos
fi
info "mounting $devname on $mount_pos with $fs_type filesystem"
if [ $mount_pos = "$TARGET/tmppoint" ]; then
mkdir -p "/tmp/tmppoint"
mount_pos="/tmp/tmppoint"
fi
mount -t "$fs_type" -o $fs_mntops "$devname" "$mount_pos" 1>>"$DEV_LOG" 2>&1
}
main()
{
local line
# sort -k 2 ensure let short mountpoint sort at front of long mountpoint,
# in this way, we can mount long mountpoint after short mountpoint.
# ex: /usr/lib, /usr, /, after sort is /, /usr, /usr/lib
# this mean that / is mounted first, then mount /usr, finally mount /usr/lib
while read line; do
echo $line
done|sort -k 2 -u|
while read line; do
if [ -n "$line" ];then
mount_partition $line
erv
info "mount $(echo $line|awk '{print $1}') success" stdout
fi
done
}
main "$@"