2 TEST_DESCRIPTION
="root filesystem over iSCSI"
4 KVERSION
=${KVERSION-$(uname -r)}
10 echo "iSCSI TEST SETUP: Starting DHCP/iSCSI server"
12 $testdir/run-qemu
-hda server.ext2
-hdb root.ext2
-m 256M
-nographic \
13 -net nic
,macaddr
=52:54:00:12:34:56,model
=e1000 \
14 -net socket
,mcast
=230.0.0.1:1235 \
15 -serial udp
:127.0.0.1:9999 \
16 -kernel /boot
/vmlinuz-
$KVERSION \
17 -append "root=/dev/sda rw quiet console=ttyS0,115200n81 selinux=0" \
18 -initrd initramfs.server
-pidfile server.pid
-daemonize ||
return 1
19 sudo
chmod 644 server.pid ||
return 1
21 # Cleanup the terminal if we have one
24 echo Sleeping
10 seconds to give the server a
head start
30 # Need this so kvm-qemu will boot (needs non-/dev/zero local disk)
31 if ! dd if=/dev
/zero of
=client.img bs
=1M count
=1; then
32 echo "Unable to make client sda image" 1>&2
36 $testdir/run-qemu
-hda client.img
-m 256M
-nographic \
37 -net nic
,macaddr
=52:54:00:12:34:00,model
=e1000 \
38 -net socket
,mcast
=230.0.0.1:1235 \
39 -kernel /boot
/vmlinuz-
$KVERSION \
40 -append "root=dhcp rw quiet rdinitdebug rdinfo rdnetdebug console=ttyS0,115200n81 selinux=0 $DEBUGFAIL" \
41 -initrd initramfs.testing
42 grep -m 1 -q iscsi-OK client.img ||
return 1
47 echo "Failed to start server" 1>&2
52 if [[ -s server.pid
]]; then
53 sudo
kill -TERM $
(cat server.pid
)
60 if [ ! -x /usr
/sbin
/iscsi-target
]; then
61 echo "Need iscsi-target from netbsd-iscsi"
65 # Create the blank file to use as a root filesystem
66 dd if=/dev
/zero of
=root.ext2 bs
=1M count
=20
69 # Create what will eventually be our root filesystem onto an overlay
71 initdir
=overlay
/source
72 .
$basedir/dracut-functions
73 dracut_install sh shutdown poweroff stty
cat ps
ln ip \
74 /lib
/terminfo
/l
/linux mount dmesg mkdir \
76 inst .
/client-init
/sbin
/init
77 (cd "$initdir"; mkdir
-p dev sys proc etc var
/run tmp
)
78 ldconfig
-n -r "$initdir" /lib
* /usr
/lib
*
81 # second, install the files needed to make the root filesystem
84 .
$basedir/dracut-functions
85 dracut_install sfdisk mke2fs poweroff
cp umount
86 inst_simple .
/create-root.sh
/initqueue
/01create-root.sh
87 inst_simple .
/99-idesymlinks.rules
/etc
/udev
/rules.d
/99-idesymlinks.rules
90 # create an initramfs that will create the target root filesystem.
91 # We do it this way so that we do not risk trashing the host mdraid
92 # devices, volume groups, encrypted partitions, etc.
93 $basedir/dracut
-l -i overlay
/ \
94 -m "dash crypt lvm mdraid udev-rules base rootfs-block kernel-modules" \
95 -d "piix ide-gd_mod ata_piix ext2 sd_mod" \
96 -f initramfs.makeroot
$KVERSION ||
return 1
100 # Need this so kvm-qemu will boot (needs non-/dev/zero local disk)
101 if ! dd if=/dev
/zero of
=client.img bs
=1M count
=1; then
102 echo "Unable to make client sdb image" 1>&2
105 # Invoke KVM and/or QEMU to actually create the target filesystem.
106 $testdir/run-qemu
-hda root.ext2
-hdb client.img
-m 256M
-nographic -net none \
107 -kernel "/boot/vmlinuz-$kernel" \
108 -append "root=/dev/dracut/root rw rootfstype=ext2 quiet console=ttyS0,115200n81 selinux=0" \
109 -initrd initramfs.makeroot ||
return 1
110 grep -m 1 -q dracut-root-block-created client.img ||
return 1
114 .
$basedir/dracut-functions
115 dracut_install poweroff shutdown
116 inst_simple .
/hard-off.sh
/emergency
/01hard-off.sh
117 inst_simple .
/99-idesymlinks.rules
/etc
/udev
/rules.d
/99-idesymlinks.rules
119 sudo
$basedir/dracut
-l -i overlay
/ \
120 -o "plymouth dmraid" \
122 -d "piix ide-gd_mod ata_piix ext2 sd_mod" \
123 -f initramfs.testing
$KVERSION ||
return 1
126 dd if=/dev
/zero of
=server.ext2 bs
=1M count
=60
127 mke2fs
-F server.ext2
129 sudo mount
-o loop server.ext2 mnt
134 .
$basedir/dracut-functions
137 mkdir
-p dev sys proc etc var
/run tmp var
/lib
/dhcpd
/etc
/iscsi
139 inst
/etc
/passwd
/etc
/passwd
140 dracut_install sh
ls shutdown poweroff stty
cat ps
ln ip \
141 /lib
/terminfo
/l
/linux dmesg mkdir
cp ping \
143 /etc
/services
sleep mount
chmod
144 dracut_install
/usr
/sbin
/iscsi-target
145 instmods iscsi_tcp crc32c ipv6
146 inst .
/targets
/etc
/iscsi
/targets
147 [ -f /etc
/netconfig
] && dracut_install
/etc
/netconfig
148 which dhcpd
>/dev
/null
2>&1 && dracut_install dhcpd
149 [ -x /usr
/sbin
/dhcpd3
] && inst
/usr
/sbin
/dhcpd3
/usr
/sbin
/dhcpd
150 inst .
/server-init
/sbin
/init
151 inst .
/hosts
/etc
/hosts
152 inst .
/dhcpd.conf
/etc
/dhcpd.conf
153 dracut_install
/etc
/nsswitch.conf
/etc
/rpc
/etc
/protocols
154 inst
/etc
/group
/etc
/group
156 /sbin
/depmod
-a -b "$initdir" $kernel
157 ldconfig
-n -r "$initdir" /lib
* /usr
/lib
*
163 # Make server's dracut image
164 $basedir/dracut
-l -i overlay
/ \
165 -m "dash udev-rules base rootfs-block debug kernel-modules" \
166 -d "piix ide-gd_mod ata_piix ext2 sd_mod e1000" \
167 -f initramfs.server
$KVERSION ||
return 1
172 if [[ -s server.pid
]]; then
173 sudo
kill -TERM $
(cat server.pid
)
177 rm -f client.ext2 server.ext2 client.img initramfs.server initramfs.testing
178 rm -f initramfs.makeroot root.ext2
181 .
$testdir/test-functions