/[smeserver]/cdrom.image/sme10/netinstall/ks.cfg
ViewVC logotype

Contents of /cdrom.image/sme10/netinstall/ks.cfg

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.6 - (show annotations) (download)
Thu Mar 18 22:20:46 2021 UTC (3 years, 2 months ago) by chrissn
Branch: MAIN
Changes since 1.5: +113 -32 lines
* Thu Mar 18 2021 Chris Sansom-Ninnes <chris@sansom.ninnes.net>
- Add support for >2TB BIOS drives [SME:11456]
- Add support for nolvm and noraid command line arguments [SME:11381]

1 # System authorization information
2 auth --enableshadow --passalgo=sha512
3
4 # We do not want SELinux
5 selinux --disabled
6
7 # Services to activate
8 services --disabled=lm_sensors
9
10 # Default root pass, will be changed in post-install process anyway
11 rootpw --lock
12 user --name=installer --uid=9999
13
14 # Accept EULA
15 eula --agreed
16
17 # Partitioning from pre section
18 %include /tmp/part-include
19
20 # Disable kdump
21 %addon com_redhat_kdump --disable
22 %end
23
24
25 # Add netinstall repos
26 url --url https://mirror.canada.pialasse.com/releases/testing/10/smeos/x86_64/
27 repo --name=smeupdates --baseurl=https://mirror.canada.pialasse.com/releases/testing/10/smeupdates/x86_64/
28
29 # Packages to install
30 %packages
31 @^minimal
32 @base
33 @core
34 -chrony
35 -kexec-tools
36 %end
37
38
39 # Partitioning in pre-install
40 %pre --interpreter=/bin/bash --log=/var/log/sme-partitioning.log
41
42 # Read command line arguments
43 if grep nolvm "/proc/cmdline" ; then NOLVM=true ; fi
44 if grep noraid "/proc/cmdline" ; then NORAID=true ; fi
45 echo "Command line arguments:"
46 cat /proc/cmdline
47
48 # Minimum size of hard drive needed specified in MB
49 MINSIZE=5000
50
51 # Number of detected drives and first disk size
52 NDEV=0
53 BASESIZE=0
54 SIZEDIFF=0
55
56 # Loop through block devices, keep those over MINSIZE and ensure additional drives for RAID are within 100MB of the first
57 for DEV in $(lsblk -nl | grep disk | cut -d' ' -f1) ; do
58 if [ -d /sys/block/$DEV ] ; then
59 REMOVABLE=`cat /sys/block/$DEV/removable`
60 if (( $REMOVABLE == 0 )) ; then
61 SIZE=`cat /sys/block/$DEV/size`
62 MB=$(($SIZE/2**11))
63 if [ $MB -gt $MINSIZE ] ; then
64 if [ $NDEV == 0 ] ; then
65 echo "First drive found: $DEV with size $MB MB"
66 DRIVES[$NDEV]=$DEV
67 BASESIZE=$MB
68 ((NDEV++))
69 else
70 SIZEDIFF=$(($MB-$BASESIZE))
71 if [ $SIZEDIFF -gt 100 ] || [ $SIZEDIFF -lt -100 ] ; then
72 echo "Drive found but size of $MB MB doesn't match $BASESIZE MB - ignoring"
73 else
74 echo "Additional drive found: $DEV with size $MB MB"
75 DRIVES[$NDEV]=$DEV
76 ((NDEV++))
77 fi
78 fi
79 fi
80 fi
81 fi
82 done
83 echo "Total disks found: $NDEV"
84
85 # Calculate recommended swap size for RAID + nolvm case
86 if [ -d /sys/firmware/efi ] ; then
87 DISKSPARE=$(($BASESIZE-200-500-3000))
88 else
89 DISKSPARE=$(($BASESIZE-1-500-3000))
90 fi
91 MEMSIZE=$(awk '/^MemTotal:/{print $2}' /proc/meminfo)
92 MEMSIZEMB=$(($MEMSIZE/2**10))
93
94 if [ $MEMSIZEMB -lt 2000 ] ; then
95 SWAPSIZE=$((2*$MEMSIZEMB))
96 elif [ $MEMSIZEMB -lt 8000 ] ; then
97 SWAPSIZE=$MEMSIZEMB
98 else
99 SWAPSIZE=8000
100 fi
101 if [ $SWAPSIZE -gt $DISKSPARE ] ; then SWAPSIZE=$DISKSPARE ; fi
102
103 # Declare useful variables
104 printf -v DRIVELIST ",%s" "${DRIVES[@]}"
105 if [ $NORAID ] ; then
106 DRIVELIST=${DRIVES[0]}
107 else
108 DRIVELIST=${DRIVELIST:1}
109 fi
110
111 echo "Final drive list: $DRIVELIST"
112 LEVEL=1
113 SPARE=0
114
115
116 # Error if detection has failed and fall back
117 if [ ${#DRIVES[@]} == 0 ] ; then
118 echo "No drive suitable for installation found! Reverting to Anaconda defaults."
119
120 cat > /tmp/part-include <<EOF
121 # Clear the Master Boot Record
122 zerombr
123
124 # Clear current partitions
125 clearpart --all --initlabel
126
127 # Automatically create partitions using LVM
128 autopart --lvm --nohome
129 EOF
130
131 # Otherwise clear detected devices and set up bootloader
132 else
133 cat > /tmp/part-include <<EOF
134 # Clear the Master Boot Record
135 zerombr
136
137 # Clear current partitions and install bootloader
138 clearpart --all --drives=$DRIVELIST --initlabel
139 ignoredisk --only-use=$DRIVELIST
140 bootloader --location=mbr --driveorder=$DRIVELIST
141 EOF
142
143 # If single disk or noraid specific then set up partitioning without RAID
144 # NOTE: From this point we're appending to part-include
145 if [ ${#DRIVES[@]} == 1 ] || [ $NORAID ] ; then
146
147 # Include the EFI or biosboot partition if necessary
148 if [ -d /sys/firmware/efi ] ; then
149 printf "part /boot/efi --fstype=efi --size=200 --ondisk=%s\n" "${DRIVES[0]}" >> /tmp/part-include
150 elif [ $BASESIZE -gt 2048000 ] ; then
151 printf "part biosboot --fstype=biosboot --size=1 --ondisk=%s\n" "${DRIVES[0]}" >> /tmp/part-include
152 fi
153
154 # Create boot partition
155 printf "part /boot --fstype=xfs --size=500 --label=BOOT --ondisk=%s\n" "${DRIVES[0]}" >> /tmp/part-include
156
157 # Default to LVM unless specified at command line
158 if [ $NOLVM ] ; then
159 cat >> /tmp/part-include <<EOF
160 part / --fstype=xfs --grow --size=3000 --label=ROOT --ondisk=${DRIVES[0]}
161 part swap --fstype=swap --recommended --label=SWAP --ondisk=${DRIVES[0]}
162 EOF
163 else
164 cat >> /tmp/part-include <<EOF
165 part pv.01 --size=4300 --grow --ondisk=${DRIVES[0]}
166 volgroup main pv.01
167 logvol / --fstype=xfs --name=root --vgname=main --grow --size=3000
168 logvol swap --fstype=swap --name=swap --vgname=main --recommended
169 EOF
170 fi
171
172 # Otherwise multiple disks - prepare for RAID
173 else
174
175 # Define EFI or biosboot and RAID partitions
176 for i in "${!DRIVES[@]}"; do
177
178 if [ -d /sys/firmware/efi ] ; then
179 printf "part raid.%s0 --size=200 --ondisk=%s\n" "$i" "${DRIVES[$i]}" >> /tmp/part-include
180 elif [ $BASESIZE -gt 2048000 ] ; then
181 printf "part biosboot --fstype=biosboot --size=1 --ondisk=%s\n" "${DRIVES[$i]}" >> /tmp/part-include
182 fi
183 printf "part raid.%s1 --size=500 --ondisk=%s\n" "$i" "${DRIVES[$i]}" >> /tmp/part-include
184
185 # Default to LVM unless specified
186 if [ $NOLVM ] ; then
187 printf "part raid.%s2 --size=3000 --grow --ondisk=%s\n" "$i" "${DRIVES[$i]}" >> /tmp/part-include
188 printf "part raid.%s3 --size=%s --ondisk=%s\n" "$i" "$SWAPSIZE" "${DRIVES[$i]}" >> /tmp/part-include
189 else
190 printf "part raid.%s2 --size=4300 --grow --ondisk=%s\n" "$i" "${DRIVES[$i]}" >> /tmp/part-include
191 fi
192
193 done
194
195 # Compute RAID level
196 # from https://wiki.contribs.org/Raid
197 # 2 Drives - Software RAID 1
198 # 3 Drives - Software RAID 1 + 1 Hot-spare
199 # 4 Drives - Software RAID 6
200 # 5+ Drives - Software RAID 6 + 1 Hot-spare
201
202 if [ ${#DRIVES[@]} == 2 ] ; then
203 LEVEL=1
204 SPARE=0
205 elif [ ${#DRIVES[@]} == 3 ] ; then
206 LEVEL=1
207 SPARE=1
208 elif [ ${#DRIVES[@]} == 4 ] ; then
209 LEVEL=6
210 SPARE=0
211 else
212 LEVEL=6
213 SPARE=1
214 fi
215
216 # Set up RAID devices
217 printf -v EFIDEVS "raid.%s0 " "${!DRIVES[@]}"
218 printf -v BOOTDEVS "raid.%s1 " "${!DRIVES[@]}"
219 printf -v ROOTDEVS "raid.%s2 " "${!DRIVES[@]}"
220 printf -v SWAPDEVS "raid.%s3 " "${!DRIVES[@]}"
221
222 # Include the EFI partition if necessary
223 if [ -d /sys/firmware/efi ] ; then
224 printf "raid /boot/efi --fstype=efi --level=1 --spares=0 --device=md9 %s\n" "$EFIDEVS" >> /tmp/part-include
225 fi
226
227 # Boot partition
228 printf "raid /boot --fstype=xfs --level=1 --spares=0 --device=md0 %s\n" "$BOOTDEVS" >> /tmp/part-include
229
230 # Default to LVM unless specified
231 if [ $NOLVM ] ; then
232 cat >> /tmp/part-include <<EOF
233 raid / --fstype=xfs --level=$LEVEL --spares=$SPARE --device=md1 $ROOTDEVS
234 raid swap --fstype=swap --level=$LEVEL --spares=$SPARE --device=md2 $SWAPDEVS
235 EOF
236 else
237 cat >> /tmp/part-include <<EOF
238 raid pv.01 --level=$LEVEL --spares=$SPARE --device=md1 $ROOTDEVS
239 volgroup main pv.01
240 logvol / --fstype xfs --name=root --vgname=main --grow --size=3000
241 logvol swap --fstype swap --name=swap --vgname=main --recommended
242 EOF
243 fi
244 fi
245 fi
246
247 echo "Final part-include output:"
248 cat /tmp/part-include
249
250 %end
251
252
253 # SME events in post-install
254 %post --interpreter=/usr/bin/bash --log=/var/log/ks.post02.log
255 userdel -r installer
256 sleep 2
257 /sbin/e-smith/signal-event post-install
258 sleep 2
259 /sbin/e-smith/db configuration set UnsavedChanges no
260 touch /forcequotacheck
261 %end
262
263
264 %post --nochroot --log=/mnt/sysimage/var/log/ks.post01.log
265 #!/bin/bash
266 sysimage="/mnt/sysimage"
267 cp -r /var/log/sme-partitioning.log ${sysimage}/root/
268 cp -r /tmp/anaconda.log ${sysimage}/root/
269 %end

admin@koozali.org
ViewVC Help
Powered by ViewVC 1.2.1 RSS 2.0 feed