1
1
#! /bin/bash
2
2
3
+ if [[ $NM ]]; then
4
+ USE_NETWORK=" network-manager"
5
+ OMIT_NETWORK=" network-legacy"
6
+ else
7
+ USE_NETWORK=" network-legacy"
8
+ OMIT_NETWORK=" network-manager"
9
+ fi
10
+
3
11
# shellcheck disable=SC2034
4
- TEST_DESCRIPTION=" root filesystem on NBD"
12
+ TEST_DESCRIPTION=" root filesystem on NBD with $USE_NETWORK "
5
13
6
14
KVERSION=${KVERSION-$(uname -r)}
7
15
@@ -10,9 +18,6 @@ KVERSION=${KVERSION-$(uname -r)}
10
18
# SERIAL="tcp:127.0.0.1:9999"
11
19
12
20
test_check () {
13
- # NBD is still too flaky and hangs hard sometimes
14
- return 1
15
-
16
21
if ! type -p nbd-server 2> /dev/null; then
17
22
echo " Test needs nbd-server... Skipping"
18
23
return 1
@@ -90,7 +95,7 @@ client_test() {
90
95
fi
91
96
92
97
# nbdinfo=( fstype fsoptions )
93
- read -a -r nbdinfo < <( awk ' {print $2, $3; exit}' " $TESTDIR " /flag.img)
98
+ read -r -a nbdinfo < <( awk ' {print $2, $3; exit}' " $TESTDIR " /flag.img)
94
99
95
100
if [[ ${nbdinfo[0]} != " $fstype " ]]; then
96
101
echo " CLIENT TEST END: $test_name [FAILED - WRONG FS TYPE] \" ${nbdinfo[0]} \" != \" $fstype \" "
@@ -140,45 +145,27 @@ client_run() {
140
145
" root=nbd:192.168.50.1:raw:ext3:errors=panic rd.luks=0" \
141
146
ext3 errors=panic || return 1
142
147
143
- #
144
- # FIXME! These fail, but probably shouldn't
145
- #
146
-
147
- # There doesn't seem to be a good way to validate the NBD options, so
148
- # just check that we don't screw up the other options
149
- #
150
- # client_test "NBD root=nbd:IP:port:::NBD opts" 52:54:00:12:34:00 \
151
- # "root=nbd:192.168.50.1:raw:::bs=2048 rd.luks=0" || return 1
152
- #
153
- # client_test "NBD root=nbd:IP:port:fstype::NBD opts" 52:54:00:12:34:00 \
154
- # "root=nbd:192.168.50.1:raw:ext3::bs=2048 rd.luks=0" ext3 || return 1
155
- #
156
- # client_test "NBD root=nbd:IP:port:fstype:fsopts:NBD opts" \
157
- # 52:54:00:12:34:00 \
158
- # "root=nbd:192.168.50.1:raw:ext3:errors=panic:bs=2048 rd.luks=0" \
159
- # ext3 errors=panic || return 1
160
-
161
148
# DHCP root-path parsing
162
149
163
- client_test " NBD root=dhcp DHCP root-path nbd:srv:port" 52:54:00:12:34:01 \
164
- " root=dhcp rd.luks=0" || return 1
150
+ client_test " NBD root=/dev/root netroot= dhcp DHCP root-path nbd:srv:port" 52:54:00:12:34:01 \
151
+ " root=/dev/root netroot=dhcp ip= dhcp rd.luks=0" || return 1
165
152
166
- client_test " NBD root=dhcp DHCP root-path nbd:srv:port:fstype" \
167
- 52:54:00:12:34:02 " root=dhcp rd.luks=0" ext3 || return 1
153
+ client_test " NBD root=/dev/root netroot= dhcp DHCP root-path nbd:srv:port:fstype" \
154
+ 52:54:00:12:34:02 " root=/dev/root netroot= dhcp ip=dhcp rd.luks=0" ext2 || return 1
168
155
169
- client_test " NBD root=dhcp DHCP root-path nbd:srv:port::fsopts" \
170
- 52:54:00:12:34:03 " root=dhcp rd.luks=0" ext3 errors=panic || return 1
156
+ client_test " NBD root=/dev/root netroot= dhcp DHCP root-path nbd:srv:port::fsopts" \
157
+ 52:54:00:12:34:03 " root=/dev/root netroot=dhcp ip= dhcp rd.luks=0" ext3 errors=panic || return 1
171
158
172
- client_test " NBD root=dhcp DHCP root-path nbd:srv:port:fstype:fsopts" \
173
- 52:54:00:12:34:04 " root=dhcp rd.luks=0" ext3 errors=panic || return 1
159
+ client_test " NBD root=/dev/root netroot= dhcp DHCP root-path nbd:srv:port:fstype:fsopts" \
160
+ 52:54:00:12:34:04 " root=/dev/root netroot= dhcp ip=dhcp rd.luks=0" ext2 errors=panic || return 1
174
161
175
162
# netroot handling
176
163
177
164
client_test " NBD netroot=nbd:IP:port" 52:54:00:12:34:00 \
178
- " netroot=nbd:192.168.50.1:raw rd.luks=0" || return 1
165
+ " root=LABEL=dracut netroot=nbd:192.168.50.1:raw ip=dhcp rd.luks=0" || return 1
179
166
180
- client_test " NBD netroot=dhcp DHCP root-path nbd:srv:port:fstype:fsopts" \
181
- 52:54:00:12:34:04 " netroot=dhcp rd.luks=0" ext3 errors=panic || return 1
167
+ client_test " NBD root=/dev/root netroot=dhcp DHCP root-path nbd:srv:port:fstype:fsopts" \
168
+ 52:54:00:12:34:04 " root=/dev/root netroot=dhcp ip=dhcp rd.luks=0" ext2 errors=panic || return 1
182
169
183
170
# Encrypted root handling via LVM/LUKS over NBD
184
171
@@ -187,7 +174,7 @@ client_run() {
187
174
188
175
client_test " NBD root=LABEL=dracut netroot=nbd:IP:port" \
189
176
52:54:00:12:34:00 \
190
- " root=LABEL=dracut rd.luks.uuid=$ID_FS_UUID rd.lv.vg=dracut netroot=nbd:192.168.50.1:encrypted" || return 1
177
+ " root=LABEL=dracut rd.luks.uuid=$ID_FS_UUID rd.lv.vg=dracut ip=dhcp netroot=nbd:192.168.50.1:encrypted" || return 1
191
178
192
179
# XXX This should be ext3,errors=panic but that doesn't currently
193
180
# XXX work when you have a real root= line in addition to netroot=
@@ -219,7 +206,7 @@ make_encrypted_root() {
219
206
mkdir -p " $initdir "
220
207
(
221
208
cd " $initdir " || exit
222
- mkdir -p -- dev sys proc etc var/run tmp
209
+ mkdir -p dev sys proc etc run var/run tmp
223
210
mkdir -p root usr/bin usr/lib usr/lib64 usr/sbin
224
211
for i in bin sbin lib lib64; do
225
212
ln -sfnr usr/$i $i
@@ -254,7 +241,7 @@ make_encrypted_root() {
254
241
done
255
242
ln -s ../run var/run
256
243
)
257
- inst_multiple mkfs.ext3 poweroff cp umount dd
244
+ inst_multiple mkfs.ext3 poweroff cp umount dd sync
258
245
inst_hook shutdown-emergency 000 ./hard-off.sh
259
246
inst_hook emergency 000 ./hard-off.sh
260
247
inst_hook initqueue 01 ./create-encrypted-root.sh
@@ -298,7 +285,7 @@ make_client_root() {
298
285
mkdir -p " $initdir "
299
286
(
300
287
cd " $initdir " || exit
301
- mkdir -p -- dev sys proc etc var/run tmp
288
+ mkdir -p dev sys proc etc run var/run tmp
302
289
mkdir -p root usr/bin usr/lib usr/lib64 usr/sbin
303
290
for i in bin sbin lib lib64; do
304
291
ln -sfnr usr/$i $i
@@ -361,7 +348,7 @@ make_server_root() {
361
348
dd if=/dev/zero of=" $TESTDIR " /flag.img bs=1M count=1
362
349
363
350
rm -fr " $TESTDIR " /overlay
364
- kernel=$KVERSION
351
+ export kernel=$KVERSION
365
352
(
366
353
mkdir -p " $TESTDIR " /overlay/source
367
354
# shellcheck disable=SC2030
419
406
export initdir=$TESTDIR /overlay
420
407
# shellcheck disable=SC1090
421
408
. " $basedir " /dracut-init.sh
422
- inst_multiple sfdisk mkfs.ext3 poweroff cp umount sync dd
409
+ inst_multiple sfdisk mkfs.ext3 poweroff cp umount sync dd sync
423
410
inst_hook initqueue 01 ./create-server-root.sh
424
411
inst_hook initqueue/finished 01 ./finished-false.sh
425
412
inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
@@ -480,8 +467,8 @@ test_setup() {
480
467
-f " $TESTDIR " /initramfs.server " $KVERSION " || return 1
481
468
482
469
" $basedir " /dracut.sh -l -i " $TESTDIR " /overlay / \
483
- -o " plymouth" \
484
- -a " debug watchdog" \
470
+ -o " plymouth dash iscsi nfs ${OMIT_NETWORK} " \
471
+ -a " debug watchdog ${USE_NETWORK} " \
485
472
-d " af_packet piix ide-gd_mod ata_piix ext3 ext3 sd_mod e1000 i6300esb ib700wdt" \
486
473
--no-hostonly-cmdline -N \
487
474
-f " $TESTDIR " /initramfs.testing " $KVERSION " || return 1
0 commit comments