2 TEST_DESCRIPTION
="root filesystem over iSCSI"
4 KVERSION
=${KVERSION-$(uname -r)}
7 #SERIAL="-serial udp:127.0.0.1:9999"
12 echo "iSCSI TEST SETUP: Starting DHCP/iSCSI server"
15 -hda $TESTDIR/server.ext2 \
16 -hdb $TESTDIR/root.ext2 \
17 -hdc $TESTDIR/iscsidisk2.img \
18 -hdd $TESTDIR/iscsidisk3.img \
20 -net nic
,macaddr
=52:54:00:12:34:56,model
=e1000 \
21 -net socket
,listen
=127.0.0.1:12330 \
23 -kernel /boot
/vmlinuz-
$KVERSION \
24 -append "root=/dev/sda rw quiet console=ttyS0,115200n81 selinux=0" \
25 -initrd $TESTDIR/initramfs.server \
26 -pidfile $TESTDIR/server.pid
-daemonize ||
return 1
27 sudo
chmod 644 $TESTDIR/server.pid ||
return 1
29 # Cleanup the terminal if we have one
32 echo Sleeping
10 seconds to give the server a
head start
38 # Need this so kvm-qemu will boot (needs non-/dev/zero local disk)
39 if ! dd if=/dev
/zero of
=$TESTDIR/client.img bs
=1M count
=1; then
40 echo "Unable to make client sda image" 1>&2
45 -hda $TESTDIR/client.img \
47 -net nic
,macaddr
=52:54:00:12:34:00,model
=e1000 \
48 -net socket
,connect
=127.0.0.1:12330 \
49 -kernel /boot
/vmlinuz-
$KVERSION \
50 -append "root=LABEL=sysroot ip=192.168.50.101::192.168.50.1:255.255.255.0:iscsi-1:eth0:off netroot=iscsi:192.168.50.1::::iqn.2009-06.dracut:target1 netroot=iscsi:192.168.50.1::::iqn.2009-06.dracut:target2 rw quiet rd.retry=5 rd.debug rd.info console=ttyS0,115200n81 selinux=0 $DEBUGFAIL" \
51 -initrd $TESTDIR/initramfs.testing
52 grep -m 1 -q iscsi-OK
$TESTDIR/client.img ||
return 1
54 if ! dd if=/dev
/zero of
=$TESTDIR/client.img bs
=1M count
=1; then
55 echo "Unable to make client sda image" 1>&2
60 -hda $TESTDIR/client.img \
62 -net nic
,macaddr
=52:54:00:12:34:00,model
=e1000 \
63 -net socket
,connect
=127.0.0.1:12330 \
64 -kernel /boot
/vmlinuz-
$KVERSION \
65 -append "root=dhcp rw quiet rd.retry=5 rd.debug rd.info console=ttyS0,115200n81 selinux=0 $DEBUGFAIL" \
66 -initrd $TESTDIR/initramfs.testing
67 grep -m 1 -q iscsi-OK
$TESTDIR/client.img ||
return 1
73 echo "Failed to start server" 1>&2
78 if [[ -s $TESTDIR/server.pid
]]; then
79 sudo
kill -TERM $
(cat $TESTDIR/server.pid
)
80 rm -f $TESTDIR/server.pid
86 if [ ! -x /usr
/sbin
/iscsi-target
]; then
87 echo "Need iscsi-target from netbsd-iscsi"
91 # Create the blank file to use as a root filesystem
92 dd if=/dev
/null of
=$TESTDIR/root.ext2 bs
=1M seek
=20
93 dd if=/dev
/null of
=$TESTDIR/iscsidisk2.img bs
=1M seek
=20
94 dd if=/dev
/null of
=$TESTDIR/iscsidisk3.img bs
=1M seek
=20
97 # Create what will eventually be our root filesystem onto an overlay
99 initdir
=$TESTDIR/overlay
/source
100 .
$basedir/dracut-functions
101 dracut_install sh shutdown poweroff stty
cat ps
ln ip \
102 mount dmesg mkdir
cp ping grep
103 for _terminfodir
in /lib
/terminfo
/etc
/terminfo
/usr
/share
/terminfo
; do
104 [ -f ${_terminfodir}/l
/linux
] && break
106 dracut_install
-o ${_terminfodir}/l
/linux
107 inst .
/client-init
/sbin
/init
108 (cd "$initdir"; mkdir
-p dev sys proc etc var
/run tmp
)
109 cp -a /etc
/ld.so.conf
* $initdir/etc
110 sudo ldconfig
-r "$initdir"
113 # second, install the files needed to make the root filesystem
115 initdir
=$TESTDIR/overlay
116 .
$basedir/dracut-functions
117 dracut_install sfdisk mke2fs poweroff
cp umount
118 inst_hook initqueue
01 .
/create-root.sh
119 inst_simple .
/99-idesymlinks.rules
/etc
/udev
/rules.d
/99-idesymlinks.rules
122 # create an initramfs that will create the target root filesystem.
123 # We do it this way so that we do not risk trashing the host mdraid
124 # devices, volume groups, encrypted partitions, etc.
125 $basedir/dracut
-l -i $TESTDIR/overlay
/ \
126 -m "dash crypt lvm mdraid udev-rules base rootfs-block kernel-modules" \
127 -d "piix ide-gd_mod ata_piix ext2 sd_mod" \
128 -f $TESTDIR/initramfs.makeroot
$KVERSION ||
return 1
129 rm -rf $TESTDIR/overlay
132 # Need this so kvm-qemu will boot (needs non-/dev/zero local disk)
133 if ! dd if=/dev
/null of
=$TESTDIR/client.img bs
=1M seek
=1; then
134 echo "Unable to make client sdb image" 1>&2
137 # Invoke KVM and/or QEMU to actually create the target filesystem.
139 -hda $TESTDIR/root.ext2 \
140 -hdb $TESTDIR/client.img \
141 -hdc $TESTDIR/iscsidisk2.img \
142 -hdd $TESTDIR/iscsidisk3.img \
143 -m 256M
-nographic -net none \
144 -kernel "/boot/vmlinuz-$kernel" \
145 -append "root=/dev/dracut/root rw rootfstype=ext2 quiet console=ttyS0,115200n81 selinux=0" \
146 -initrd $TESTDIR/initramfs.makeroot ||
return 1
147 grep -m 1 -q dracut-root-block-created
$TESTDIR/client.img ||
return 1
148 rm $TESTDIR/client.img
150 initdir
=$TESTDIR/overlay
151 .
$basedir/dracut-functions
152 dracut_install poweroff shutdown
153 inst_hook emergency
000 .
/hard-off.sh
154 inst_simple .
/99-idesymlinks.rules
/etc
/udev
/rules.d
/99-idesymlinks.rules
156 sudo
$basedir/dracut
-l -i $TESTDIR/overlay
/ \
157 -o "plymouth dmraid" \
159 -d "piix ide-gd_mod ata_piix ext2 sd_mod" \
160 -f $TESTDIR/initramfs.testing
$KVERSION ||
return 1
163 dd if=/dev
/null of
=$TESTDIR/server.ext2 bs
=1M seek
=60
164 mke2fs
-F $TESTDIR/server.ext2
166 sudo mount
-o loop
$TESTDIR/server.ext2
$TESTDIR/mnt
171 .
$basedir/dracut-functions
174 mkdir
-p dev sys proc etc var
/run tmp var
/lib
/dhcpd
/etc
/iscsi
176 inst
/etc
/passwd
/etc
/passwd
177 dracut_install sh
ls shutdown poweroff stty
cat ps
ln ip \
178 dmesg mkdir
cp ping \
180 /etc
/services
sleep mount
chmod
181 dracut_install
/usr
/sbin
/iscsi-target
182 for _terminfodir
in /lib
/terminfo
/etc
/terminfo
/usr
/share
/terminfo
; do
183 [ -f ${_terminfodir}/l
/linux
] && break
185 dracut_install
-o ${_terminfodir}/l
/linux
186 instmods iscsi_tcp crc32c ipv6
187 inst .
/targets
/etc
/iscsi
/targets
188 [ -f /etc
/netconfig
] && dracut_install
/etc
/netconfig
189 type -P dhcpd
>/dev
/null
&& dracut_install dhcpd
190 [ -x /usr
/sbin
/dhcpd3
] && inst
/usr
/sbin
/dhcpd3
/usr
/sbin
/dhcpd
191 inst .
/server-init
/sbin
/init
192 inst .
/hosts
/etc
/hosts
193 inst .
/dhcpd.conf
/etc
/dhcpd.conf
194 dracut_install
/etc
/nsswitch.conf
/etc
/rpc
/etc
/protocols
195 inst
/etc
/group
/etc
/group
197 /sbin
/depmod
-a -b "$initdir" $kernel
198 cp -a /etc
/ld.so.conf
* $initdir/etc
199 sudo ldconfig
-r "$initdir"
202 sudo umount
$TESTDIR/mnt
205 # Make server's dracut image
206 $basedir/dracut
-l -i $TESTDIR/overlay
/ \
207 -m "dash udev-rules base rootfs-block debug kernel-modules" \
208 -d "piix ide-gd_mod ata_piix ext2 sd_mod e1000" \
209 -f $TESTDIR/initramfs.server
$KVERSION ||
return 1
214 if [[ -s $TESTDIR/server.pid
]]; then
215 sudo
kill -TERM $
(cat $TESTDIR/server.pid
)
216 rm -f $TESTDIR/server.pid
220 .
$testdir/test-functions