4
4
5
5
run_hook () {
6
6
# root (and boot) UUID
7
- bootUUID =' '
8
- rootUUID =' '
7
+ UUID_BOOT =' '
8
+ UUID_ROOT =' '
9
9
# ramroot prompt:
10
- promptDefault =' yes'
11
- promptTimeout =15
10
+ LOAD_DEFAULT =' yes'
11
+ LOAD_TIMEOUT =15
12
12
# options:
13
- fstabMount =' false'
14
- issueRAM =' false'
13
+ FLAG_FSTAB =' false'
14
+ FLAG_ISSUE =' false'
15
15
16
16
# wait for output from other init processes:
17
17
sleep 4
18
18
19
19
# detect available RAM:
20
- ramM =` free --mega | awk ' /Mem/ {print int($2)}' `
21
- ramG =$(( $ramM / 1000 ))
20
+ RAM_M =` free --mega | awk ' /Mem/ {print int($2)}' `
21
+ RAM_G =$(( $RAM_M / 1000 ))
22
22
23
23
# mount root partition to /local_root:
24
- poll_device " /dev/disk/by-uuid/${rootUUID} " 20
25
- mount -U " ${rootUUID} " /local_root
24
+ poll_device " /dev/disk/by-uuid/$UUID_ROOT " 20
25
+ mount -U " $UUID_ROOT " /local_root
26
26
# get size of /local_root:
27
- rootM =` df -BM /local_root/ | awk ' FNR==2 {print int($3)}' `
27
+ ROOT_M =` df -BM /local_root/ | awk ' FNR==2 {print int($3)}' `
28
28
29
29
# mount boot partition (if exists) to /local_boot:
30
- if [ -n " $bootUUID " ]; then
31
- poll_device " /dev/disk/by-uuid/${bootUUID} " 20
32
- mount -U " ${bootUUID} " /local_boot
30
+ if [ -n " $UUID_BOOT " ]; then
31
+ poll_device " /dev/disk/by-uuid/$UUID_BOOT " 20
32
+ mount -U " $UUID_BOOT " /local_boot
33
33
# add size of /local_boot:
34
- rootM =$(( $rootM + `df - BM / local_boot/ | \
34
+ ROOT_M =$(( $ROOT_M + `df - BM / local_boot/ | \
35
35
awk 'FNR==2 {print int($3 )}'` ))
36
36
fi
37
37
38
38
# check and print available memory:
39
- echo " :: Total RAM available : ${ramM } M"
40
- echo " :: Root filesystem size : ${rootM } M"
41
- diffM =$(( $ramM - $rootM ))
42
- if [ $diffM -lt 500 ]; then
39
+ echo " :: Total RAM available : ${RAM_M } M"
40
+ echo " :: Root filesystem size : ${ROOT_M } M"
41
+ RAM_EXTRA_M =$(( $RAM_M - $ROOT_M ))
42
+ if [ $RAM_EXTRA_M -lt 500 ]; then
43
43
echo " :! Not enough RAM available."
44
- inputYN =' n'
44
+ INPUT =' n'
45
45
46
46
# prompt [Y/n] to load filesystem to RAM:
47
- elif [ " $promptDefault " = ' yes' ]; then
47
+ elif [ " $LOAD_DEFAULT " = ' yes' ]; then
48
48
echo -n " >: Load root filesystem to RAM? [Y/n] "
49
- inputYN =' y'
50
- read -s -r -t $promptTimeout -n 1 inputYN
51
- if [ " ${inputYN} " = ' n' ] || [ " ${inputYN} " = ' N' ] || \
52
- [ " ${inputYN} " = ' q' ] || [ " ${inputYN} " = ' Q' ]; then
53
- inputYN =' n'
49
+ INPUT =' y'
50
+ read -s -r -t $LOAD_TIMEOUT -n 1 INPUT
51
+ if [ " $INPUT " = ' n' ] || [ " $INPUT " = ' N' ] ||
52
+ [ " $INPUT " = ' q' ] || [ " INPUT " = ' Q' ]; then
53
+ INPUT =' n'
54
54
else
55
- inputYN =' y'
55
+ INPUT =' y'
56
56
fi
57
57
# prompt [y/N] to load filesystem to RAM:
58
58
else
59
59
echo -n " >: Load root filesystem to RAM? [y/N] "
60
- inputYN =' n'
61
- read -s -r -t $promptTimeout -n 1 inputYN
62
- if [ " ${inputYN} " = ' y' ] || [ " ${inputYN} " = ' Y' ]; then
63
- inputYN =' y'
60
+ INPUT =' n'
61
+ read -s -r -t $LOAD_TIMEOUT -n 1 INPUT
62
+ if [ " $INPUT " = ' y' ] || [ " INPUT " = ' Y' ] ; then
63
+ INPUT =' y'
64
64
else
65
- inputYN =' n'
65
+ INPUT =' n'
66
66
fi
67
67
fi
68
68
69
69
# copy root filesystem to RAM:
70
- if [ " ${inputYN} " = ' y' ]; then
70
+ if [ " $INPUT " = ' y' ]; then
71
71
echo " yes"
72
72
echo " :: Copying root filesystem to RAM..."
73
+
73
74
# enable zRAM devices:
74
75
if [ ! -b " /dev/zram0" ]; then
75
76
modprobe zram num_devices=$( nproc)
76
77
fi
77
78
78
79
# make zRAM partition using half of available free RAM (max +6G)
79
- addM=$(( $diffM / 2 ))
80
- if [ $addM -gt 6000 ]; then
81
- addM=6000
82
- else
83
- addM=$(( $diffM / 2 ))
80
+ ROOT_ADD_M=$(( $RAM_EXTRA_M / 2 ))
81
+ if [ $ROOT_ADD_M -gt 6000 ]; then
82
+ ROOT_ADD_M=6000
84
83
fi
85
- zramM =$(( $rootM + $addM ))
86
- zdevice =$( zramctl -f -s " ${zramM } M" -a lzo -t $( nproc) )
87
- mkfs.ext4 -q " $zdevice "
84
+ ZRAM_M =$(( $ROOT_M + $ROOT_ADD_M ))
85
+ ZRAM_DEVICE =$( zramctl -f -s " ${ZRAM_M } M" -a lzo -t $( nproc) )
86
+ mkfs.ext4 -q " $ZRAM_DEVICE "
88
87
89
88
# mount zRAM partition to /zram_root:
90
- mount " $zdevice " /zram_root
91
- export zdevice
89
+ mount " $ZRAM_DEVICE " /zram_root
90
+ export ZRAM_DEVICE
92
91
# copy files from local root to zRAM root:
93
92
cp -a /local_root/* /zram_root/
94
93
@@ -97,30 +96,29 @@ run_hook() {
97
96
mv /zram_root/etc/fstab /zram_root/etc/fstab~
98
97
fi
99
98
# use other mount points from /etc/fstab normally:
100
- if [ " $fstabMount " = ' true' ] && [ -f /zram_root/etc/fstab~ ]; then
99
+ if [ " $FLAG_FSTAB " = ' true' ] && [ -f /zram_root/etc/fstab~ ]; then
101
100
sed ' s@\(.* /boot .*\)@#\1@g; s@\(.* / .*\)@#\1@g;' \
102
101
/zram_root/etc/fstab~ > /zram_root/etc/fstab
103
102
fi
104
103
# use custom /etc/issue file:
105
- if [ " $issueRAM " = ' true' ] &&
104
+ if [ " $FLAG_ISSUE " = ' true' ] &&
106
105
[ -f /zram_root/usr/lib/ramroot/etc/issue ]; then
107
106
if [ -f /zram_root/etc/issue ]; then
108
107
mv /zram_root/etc/issue /zram_root/etc/issue~
109
108
fi
110
109
cp /zram_root/usr/lib/ramroot/etc/issue /zram_root/etc/issue
111
- chmod +x /zram_root/etc/issue
112
110
fi
113
111
114
112
# copy files from local boot partition (if exists) to zRAM boot:
115
- if [ -n " $bootUUID " ]; then
113
+ if [ -n " $UUID_BOOT " ]; then
116
114
mkdir -p /zram_root/boot
117
115
cp -a /local_boot/* /zram_root/boot/
118
116
fi
119
117
# unmount zRAM root:
120
118
umount /zram_root
121
119
# set new mount_handler to use zRAM device:
122
120
oroot_mount () {
123
- mount " $zdevice " " $1 "
121
+ mount " $ZRAM_DEVICE " " $1 "
124
122
}
125
123
# don't perform filesystem check on new zRAM partition:
126
124
fsck_root () {
@@ -136,7 +134,7 @@ run_hook() {
136
134
137
135
# unmount /local_root and /local_boot:
138
136
umount /local_root
139
- if [ -n " $bootUUID " ]; then
137
+ if [ -n " $UUID_BOOT " ]; then
140
138
umount /local_boot
141
139
fi
142
140
}
0 commit comments