1 | #!/bin/sh
|
---|
2 |
|
---|
3 |
|
---|
4 | ListAllFdiskEntries() {
|
---|
5 | for i in hd sd ; do
|
---|
6 | for j in a b c d e f g h i j k l m n o p ; do
|
---|
7 | drive=/dev/$i$j
|
---|
8 | fdisk -l $drive | grep "/dev/hda" | grep -v "$drive: " | grep -v "Extended" | sed s/\*// | sed s/+//
|
---|
9 | done
|
---|
10 | done
|
---|
11 | }
|
---|
12 |
|
---|
13 |
|
---|
14 | GetPartitionString() {
|
---|
15 | case "$1" in
|
---|
16 | ("1")
|
---|
17 | echo "vfat"
|
---|
18 | ;;
|
---|
19 | ("4")
|
---|
20 | echo "vfat"
|
---|
21 | ;;
|
---|
22 | ("6")
|
---|
23 | echo "vfat"
|
---|
24 | ;;
|
---|
25 | ("b")
|
---|
26 | echo "vfat"
|
---|
27 | ;;
|
---|
28 | ("c")
|
---|
29 | echo "vfat"
|
---|
30 | ;;
|
---|
31 | ("d")
|
---|
32 | echo "vfat"
|
---|
33 | ;;
|
---|
34 | ("e")
|
---|
35 | echo "vfat"
|
---|
36 | ;;
|
---|
37 | ("f")
|
---|
38 | echo "vfat"
|
---|
39 | ;;
|
---|
40 | ("82")
|
---|
41 | echo "swap"
|
---|
42 | ;;
|
---|
43 | ("83")
|
---|
44 | echo "auto" ; # xfs, jfs, ext2, ext3, reiserfs, ...
|
---|
45 | ;;
|
---|
46 | esac
|
---|
47 | }
|
---|
48 |
|
---|
49 |
|
---|
50 |
|
---|
51 | MakeFakeMountlist() {
|
---|
52 | local line dev size type mountpt
|
---|
53 | for line in `ListAllFdiskEntries | tr -s ' ' '|'` ; do
|
---|
54 | dev=`echo "$line" | cut -d'|' -f1`
|
---|
55 | size=`echo "$line" | cut -d'|' -f4`
|
---|
56 | type=`echo "$line" | cut -d'|' -f5`
|
---|
57 | type=`GetPartitionString $type`
|
---|
58 | if [ "$type" = "swap" ] ; then
|
---|
59 | mountpt=swap
|
---|
60 | else
|
---|
61 | mountpt=/cuckoo/`basename $dev`
|
---|
62 | fi
|
---|
63 | echo -e "$dev\t$mountpt\t$type\t$size"
|
---|
64 | done
|
---|
65 | }
|
---|
66 |
|
---|
67 |
|
---|
68 |
|
---|
69 |
|
---|
70 |
|
---|
71 |
|
---|
72 |
|
---|
73 | MountEverything() {
|
---|
74 | local line dev mountpt format
|
---|
75 | for line in `MakeFakeMountlist | tr -s '\t' ' ' | tr -s ' ' '|'` ; do
|
---|
76 | dev=`echo "$line" | cut -d'|' -f1`
|
---|
77 | mountpt=`echo "$line" | cut -d'|' -f2`
|
---|
78 | format=`echo "$line" | cut -d'|' -f3`
|
---|
79 | if [ "$format" = "swap" ] ; then
|
---|
80 | swapon $dev
|
---|
81 | else
|
---|
82 | mkdir -p $mountpt
|
---|
83 | mount $dev -o ro -t $format $mountpt > /dev/null 2> /dev/null
|
---|
84 | [ "$?" -ne "0" ] && echo "Failed to mount $dev"
|
---|
85 | fi
|
---|
86 | done
|
---|
87 | }
|
---|
88 |
|
---|
89 |
|
---|
90 |
|
---|
91 |
|
---|
92 |
|
---|
93 |
|
---|
94 | UnmountEverything() {
|
---|
95 | local line dev mountpt format
|
---|
96 | for line in `MakeFakeMountlist | tr -s '\t' ' ' | tr -s ' ' '|'` ; do
|
---|
97 | dev=`echo "$line" | cut -d'|' -f1`
|
---|
98 | mountpt=`echo "$line" | cut -d'|' -f2`
|
---|
99 | format=`echo "$line" | cut -d'|' -f3`
|
---|
100 | if [ "$format" = "swap" ] ; then
|
---|
101 | swapoff $dev
|
---|
102 | else
|
---|
103 | umount $dev
|
---|
104 | fi
|
---|
105 | done
|
---|
106 | }
|
---|
107 |
|
---|
108 |
|
---|
109 |
|
---|
110 | # ------------------------- main -------------------------
|
---|
111 |
|
---|
112 |
|
---|
113 |
|
---|
114 | MakeFakeMountlist > /tmp/mountlist.hacked
|
---|
115 | MountEverything
|
---|
116 | echo -en "Press ENTER." ; read line
|
---|
117 | UnmountEverything
|
---|
118 | exit 0
|
---|
119 |
|
---|