说明: 之前开发了一个基于Freebsd的准嵌入式系统。基本系统放在DOM上,用户数据放在硬盘上。因为系统比较复杂,每次恢复/安装系统都很繁琐。就自己写了一个脚本。实现了自动安装。 其中包括自动对硬盘进行分区,自动格式化等功能。有兴趣的朋友可以看看:) 欢迎指点!:)
#!/bin/sh
#Root Directory BASE_DIR=/root/autobuild/backup-pack Backup_Dir="$BASE_DIR"/NetEngine/System-Backup
#Partition directory USR_DIR=/mnt/usr VAR_DIR=/mnt/var TMP_DIR=/mnt/tmp HOME_DIR=/mnt/home
#Device DISKLABEL=/sbin/disklabel DEVICEDIR=dev HARDDISK=ad1 DOM=ad2 LABEL=s1 PARTITIONFILE=/tmp/partition USRNUM=d VARNUM=e TMPNUM=f HOMENUM=g DOM_DEVICE=/"$DEVICEDIR"/"$DOM"
# Auto Fdisk #Get harddisk memory disksize=`$DISKLABEL /"$DEVICEDIR"/"$HARDDISK" | grep "sectors/unit" | awk '{print $2}'`
disksize=`expr $disksize - 409600` #Get usr spec usrsize=`expr $disksize / 10 \* 5`
#Get var memory varsize=`expr $disksize / 10 \* 2`
#Get tmp memory tmpsize=`expr $disksize / 10 \* 1 - 20000` tmpoffset=`expr $usrsize + $varsize`
#Get home memory homesize=`expr $disksize / 10 \* 2` homeoffset=`expr $tmpoffset + $tmpsize`
#Get swap offset swapoffset=`expr $homeoffset + $homesize`
#Confirm tmp memory
#Initial harddisk echo -n "Init harddisk partition... " dd>/dev/null 2>&1 if=/dev/zero of=/"$DEVICEDIR"/"$HARDDISK" bs=1k count=1 fdisk>/dev/null 2>&1 -BI /"$DEVICEDIR"/"$HARDDISK" $DISKLABEL>/dev/null 2>&1 -B -w -r $HARDDISK$LABEL auto $DISKLABEL >$PARTITIONFILE /"$DEVICEDIR"/"$HARDDISK"$LABEL
#Initial partition table echo "d: $usrsize 0 4.2BSD 2048 16384 89">>$PARTITIONFILE echo "e: $varsize $usrsize 4.2BSD 2048 16384 89">>$PARTITIONFILE echo "f: $tmpsize $tmpoffset 4.2BSD 2048 16384 89">>$PARTITIONFILE echo "g: $homesize $homeoffset 4.2BSD 2048 16384 89">>$PARTITIONFILE echo "h: 409600 $swapoffset swap">>$PARTITIONFILE
#Auto partition $DISKLABEL>/dev/null 2>&1 -R /"$DEVICEDIR"/"$HARDDISK"$LABEL $PARTITIONFILE echo "done"
#Create file system echo -n "Format harddisk... " newfs>/dev/null 2>&1 /"$DEVICEDIR"/"$HARDDISK"$LABEL$USRNUM newfs>/dev/null 2>&1 /"$DEVICEDIR"/"$HARDDISK"$LABEL$VARNUM newfs>/dev/null 2>&1 /"$DEVICEDIR"/"$HARDDISK"$LABEL$HOMENUM newfs>/dev/null 2>&1 /"$DEVICEDIR"/"$HARDDISK"$LABEL$TMPNUM echo "done"
# Mount all harddisk partition echo -n "Mount all partition... " mount /"$DEVICEDIR"/"$HARDDISK"$LABEL$USRNUM $USR_DIR mount /"$DEVICEDIR"/"$HARDDISK"$LABEL$VARNUM $VAR_DIR mount /"$DEVICEDIR"/"$HARDDISK"$LABEL$HOMENUM $HOME_DIR mount /"$DEVICEDIR"/"$HARDDISK"$LABEL$TMPNUM $TMP_DIR echo "done"
#Auto burn dom image echo -n "Burn dom image... " dd>/dev/null 2>&1 if=$Backup_Dir/NetEngine-dombak.img of=$DOM_DEVICE echo "done"
#Auto uncompress tar.gz pack to harddisk cd $USR_DIR echo -n "Unpack usr directory... " tar>/dev/null 2>&1 zxvf $Backup_Dir/usrbak.tar.gz ./ echo "done"
cd $VAR_DIR echo -n "Unpack var directory... " tar>/dev/null 2>&1 zxvf $Backup_Dir/varbak.tar.gz ./ echo "done"
cd $TMP_DIR echo -n "Unpack tmp directory... " tar>/dev/null 2>&1 zxvf $Backup_Dir/tmpbak.tar.gz ./ echo "done"
cd $HOME_DIR echo -n "Unpack home directory... " tar>/dev/null 2>&1 zxvf $Backup_Dir/homebak.tar.gz ./ echo "done"
# Umount harddisk cd / echo -n "Unmount all partition... " umount $USR_DIR $VAR_DIR $TMP_DIR $HOME_DIR echo "done" 
|