I tried this with 9.10 server amd64 final ISO, but the problems stay:

=========

PROBLEM #1: no suitable initrd.img file is provided that allows for
iSCSI-on-root booting, though it is possible to create one after
installing 9.10 to a VM for example and create a custom initrd.img file,
like i did.

mkdir ~/tmp
cd ~/tmp
gunzip < /boot/initrd.img-2.6.31-14-server | cpio -i --make-directories

touch etc/iscsi.initramfs
cp -p /lib/modules/2.6.31-14-server/kernel/crypto/crc32c.ko 
lib/modules/2.6.31-14-server/kernel/crypto/
cp -p /lib/modules/2.6.31-14-server/kernel/lib/libcrc32c.ko 
lib/modules/2.6.31-14-server/kernel/lib/
cp -p /sbin/iscsid sbin/
cp -p /sbin/iscsistart sbin/

find ./ | cpio -H newc -o > ~/initrd-iscsi.cpio
gzip ~/initrd-iscsi.cpio
mv ~/initrd-iscsi.cpio.gz ~/initrd-iscsi.img
// now move the initrd-iscsi.img in your home directory to the TFTP server, and 
make sure it is used by pxelinux.cfg config file

note 1) this procedure has to be performed each time the initrd.img file
is updated by the Ubuntu update system; otherwise it would not receive
the updates the update system thinks its making. The local
/boot/initrd.img file would not be used; only the initrd.img file
provided by the TFTP server is used.

note 2) the etc/iscsi.initramfs file needs to exist, even though being
an empty file. Not creating this file would cause the pxelinux.cfg iscsi
login data to not be used. If you prefer getting the iSCSI
authentication data from pxelinux.cfg file like i did, simply create an
empty file by using the touch command in the above example. Putting the
authentication data in the /etc/iscsi.initramfs file instead might be
more secure, however. But only barrely as this is unencrypted and
located on the TFTP server as well; which does not provide for any
authentication by itself.

=========

PROBLEM #2: after having a suitable initrd.img file, iSCSI booting
works. But upon rebooting or shutting down, the rc.d shutdown script
configuration causes a bug that shuts down networking before the (iscsi-
mounted) root filesytem is unmounted, causing an unclean shutdown with
possible dataloss/corruption. It also requires a manual reset to
continue. To fix this, i used the following commands:

cd /etc/rc0.d/
rm S35networking
mv S41open-iscsi S80open-iscsi
cd /etc/rc6.d/
rm S35networking
mv S41open-iscsi S80open-iscsi

Note 1) the file S41open-iscsi may be called differently; i do not remember 
100% correctly; but anyway the open-iscsi file in the /etc/rc0.d/ and 
/etc/rc6.d/ directories have to called S80open-iscsi to allow clean shutdown
Note 2) removing the S35networking may have side effects i'm unaware of; it 
does seem to work without issues for me. I don't really understand why the 
network interface has to be "down" before shutting down anyway. The only thing 
important is that the root filesystem is unmounted cleanly, and the network 
interface has to be up long enough to make that happen. Removing the network 
shutdown script seemed the most simple solution to me.

=========

After coping with these two problems, diskless Ubuntu systems work. To get a 
desktop, i used the following commands:
sudo apt-get install ubuntu-desktop
reboot

Hope this helps both you Colin, and other people as i got many many requests on 
how to get iscsi diskless ubuntu working. Its not just me thinking this is a 
cool feature; more people actually like this idea. It would also allow 
thin-clients running Ubuntu in business environments, so reason the more to 
make this work with less effort. I recommend:
- putting iscsi stuff in the initrd.img file by default; even for desktops; is 
the added 200 kilobytes really an issue?
- changing the rc.d startup scripts; do we really need networking in there? can 
something be done to make this work automatically for both iscsi clients and 
normal ubuntu installs? do my changes to the shutdown scripts affect normal 
installs in any negative way?
- it would be nice if during/after iscsi installation it would prompt to login 
to a TFTP server to put a modified iscsi file including all files needed for 
booting (pxelinux and the pxelinux.cfg/<MACADDR>) there.
- to go even further, the TFTP remote directory could be mounted as /boot/tftp/ 
or something; and during each update to initrd or the kernel, this is copied to 
/boot/tftp/ as well. This would fully automate updating without any human 
intervention.
- i also recommend making the desktop ubuntu iso able to install to iscsi 
targets; as well as AoE (ATA-over-Ethernet) if possible. With the above changes 
as well, this would make installing and setting up a diskless ubuntu system a 
breeze; and would be a very sexy feature which ubuntu can use to promote itself.

Kind regards,
- sub

-- 
iSCSI installation on root too complicated
https://bugs.launchpad.net/bugs/447377
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to