当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 5 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [原创]自动生成 /fstab 的脚本
帖子发表于 : 2006-09-29 23:33 
头像

注册: 2005-05-19 18:38
帖子: 1991
地址: 湖南永州
送出感谢: 0 次
接收感谢: 1
写了一个自动生成 /fstab 的脚本,请大家指点,

代码:
#!/bin/sh
#作者:高星
#Email:gnix.oag@gmail.com

make_fstab() {
#找所的硬盘及分区
cat /proc/partitions | tr -s "[\ ]" | cut -d\  -f5 | tr  "[\n]" "[ ]" > /dev_tmp
#开始生成fstab
msfscount=98   #ms文件系统计数值: 98对应B
for dev_name in $(cat /dev_tmp) ; do
   fstype=$(get_fstype "${dev_name}")
   case "$fstype" in
      reiserfs|minix|xfs|jfs|ext3|ext2|swap|ntfs|vfat)
      get_mountpoint
#     mkdir -p ${getmountpoint}
      get_mountoptions
      echo "/dev/${dev_name} ${getmountpoint} ${fstype} ${getmountoptions} 0 0 " >> /fstab
      ;;
   esac
done
#找所有的光驱
for sysblock in $(echo /sys/block/* | tr ' ' '\n' | grep -v loop | grep -v ram); do
   hd_dev=$(echo "$(udevinfo -q name -p ${sysblock#/sys} 2>/dev/null || echo ${sysblock##*/})")
   if /lib/udev/cdrom_id /dev/${hd_dev} > /dev/null; then
      echo "/dev/${hd_dev} /media/${hd_dev} auto  noauto,user 0 0 " >> /fstab
   fi
done
#rm /dev_tmp
}

#生成挂载点
get_mountpoint(){
getmountpoint=
case "$fstype" in
    ntfs*|vfat|msdos)
          msfscount=$(expr $msfscount + 1)
          getmountpoint=/media/`echo -e -n "\\x$(printf %x $msfscount)"`_win  ;;
    swap)   getmountpoint="none"  ;;
    *)    getmountpoint="/media/${dev_name}" ;;
esac
}

#生成挂载选项
get_mountoptions(){
getmountoptions=

case "$fstype" in
   vfat)  getmountoptions="noauto,exec,umask=000,shortname=winnt,utf8,user" ;;
   msdos) getmountoptions="noauto,exec,umask=000,utf8,user" ;;
   swap)  getmountoptions="defaults" ;;
   ntfs)  getmountoptions="noauto,exec,umask=000,utf8,user";;
   *)       getmountoptions="noauto,exec,user";;
esac
}

#获取分区的类型
get_fstype() {
local FILE
FILE="$(LANG=C LC_ALL=C LC_MESSAGES=C file -Lkbs "/dev/$1")"
if [ "$FILE" = "data" ]; then
 # could still be ReiserFS, since "file" only reads 64k in Debian
   FILE="$(dd if="/dev/$1" skip=16397 ibs=4 count=2 2>/dev/null)"
fi
case "$FILE" in
  *[Rr][Ee][Ii][Ss][Ee][Rr]*)  echo "reiserfs";;
  *ISO\ 9660*)                 echo "iso9660";;
  *[Mm][Ii][Nn][Ii][Xx]*)      echo "minix";;
  *[Xx][Ff][Ss]*)              echo "xfs";;
  *[Jj][Ff][Ss]*)              echo "jfs";;
  *[Ee][Xx][Tt]3*)             echo "ext3";;
  *[Ee][Xx][Tt]2*)             echo "ext2";;
  *[Ss][Ww][Aa][Pp]*)          echo "swap";;
  *[Nn][Tt][Ff][Ss]*)          echo "ntfs";;
  *[Ff][Aa][Tt]*)              echo "vfat";;
#  *)                           echo "auto";;
esac
}

#在initrd.gz里可用fstype程序替代dd相程序
#get_fstype() {
#    local FSTYPE
#    local FSSIZE
#    eval $(fstype < $1)
#    if [ "$FSTYPE" != "unknown" ]; then
#        echo $FSTYPE
#        return 0
#    fi
#    /lib/udev/vol_id -t $1 2>/dev/null
#}

make_fstab




最后由 gnix_oag 编辑于 2006-09-30 2:28,总共编辑了 6 次

页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2006-09-29 23:34 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
是作自己的系统才用的吧。 :lol:


_________________
● 鸣学


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2006-09-29 23:48 
头像

注册: 2005-05-19 18:38
帖子: 1991
地址: 湖南永州
送出感谢: 0 次
接收感谢: 1
用于 live cd 上的

或可以加入到 initrd.gz 中


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2006-09-29 23:55 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
今天才知道你那昵称的意思。碰死吧。 :lol:


_________________
● 鸣学


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2006-10-01 10:51 
头像

注册: 2005-05-19 18:38
帖子: 1991
地址: 湖南永州
送出感谢: 0 次
接收感谢: 1
太多人都用这个名字,可gnix_oag gnix.oag就只有我用,

网上搜索到的 gnix_oag gnix.oag gnixoag 肯定就是我了.



:D :D


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 5 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 4 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译