I’m using OpenSUSE 11.4, trying to install to an iSCSI partition. I’m using gPXE to boot to my iSCSI volume. This works fine, and pulls up grub with my boot options. I think boot the openSUSE 11.4 entry, which kicks off the boot process. I see the steps for running DHCP on the interface, but when it gets to iscsiadm, there’s an error logging in to the iSCSI target portal along the lines of “15 - already exists.” After that things start to fall apart - I/O errors, mainly, and the system completely fails to boot. Can someone help me figure out what’s going on and what this already exists message means?
I have heard of using gPXE to boot from the network, but confused as to its usage here. Most often, if you download, create and boot from a LiveCD and can not “see” a hard drive, its not going to work with openSUSE and its grub legacy boot loader. Further, using a standard BIOS setup, if you can’t select the drive as a boot drive, you can’t get openSUSE to boot from it either. Try the LiveCD and tells us what it can “see”.
So, gPXE (and iPXE) are PXE-loaded (or Boot ROM-loaded) extensions that extend PXE functionality. One of the features of gPXE/iPXE is the ability to “SAN boot” - make the PXE stack understand iSCSI (or AOE) targets and boot from them. It also stores the information in the iBFT tables so that the O/S that’s booted can retrieve it later. This is not the issue I’m having - I am 100% capable of getting the boot going. I install SuSE, using either a Live CD Installer or the official install DVD, I configure iSCSI and point it at the right location, and the install goes. The system reboots, gPXE connects to the SAN target and establishes the disk connection with the BIOS, and then grub loads. Perfectly fine - no problems up to here. I then select the proper grub entry, and grub loads the kernel and initrd and begins to boot. Again, everything is fine up to here. This is where I start to see problems, though.
The kernel and initrd are now booting. The initrd script brings up eth0, starts dhcpcd, and waits for the link. The link is established, eth0 gets a DHCP address, and the process moves on. At this point in the initrd, the initrd script issues the iscsiadm command to connect to the proper target to continue the iSCSI boot process. This is where I have a problem. The iscsiadm command finds the proper target to connect to, iSCSI is up and running, and iscsiadm attempts to establish a connection to the target. At this point, I get the error message from iscsiadm “Error 15 - Already exists.” The error message isn’t very helpful, and things begin to deteriorate from here. Basically, at this point, the O/S itself (Linux kernel) needs to establish that iSCSI connection and can no longer rely on the BIOS to handle the disk I/O requests. Unfortunately, the iSCSI connection fails with this error, and the BIOS code unloads and so I start getting disk I/O errors and everything falls apart.
So, the problem is not in the BIOS boot, the gPXE/iPXE boot, the grub boot, or even loading into memory the kernel and initrd image. It’s in the iscsiadm command or something about how the command is being run that causes it to fall apart, and I’m hoping someone has some experience taking care of this problem and booting Linux over iSCSI correctly.
Unfortunately, this issue is beyond my experience, though I normally just maintain a separate hard drive, either internal or external, that is standard enough to boot openSUSE and then deal with the rest of the hardware after openSUSE is up and running. You can then load the most recent kernel version, where most drivers are kept and updated often. The Kernel is now up to 2.6.38.1 and easy to install into openSUSE 11.4. Good luck with your present issue.
Like Jdmcdaniel13, it’s above my paygrade but 2 areas of personal interest, pls forgive my ignorance.
So, my 2 questions are does the PXE boot image contain the mounted iSCSI target?
And the 2nd is the PXE iscsiadm command sequence constructed properly, may it should try discovery first then attempt the mount?
Last this really sounds like an iSCSI or PXE issue and not a openSUSE issue, so, I’d look for a iSCSI forum group.
Apparently I’m still not communicating this clearly enough - I apologize! Maybe the following page will help: sanboot - Etherboot/gPXE Wiki. gPXE/iPXE contains to code to connect to an iSCSI target and then to make that target appear to the BIOS just as if it were a local disk. It’s actually very similar to the way a hardware HBA (iSCSI HBA, SCSI HBA, SAS HBA) works, it’s just done in the PXE stack (PXE HBA, perhaps?). Once this is done, the BIOS boots from the MBR of the iSCSI target directly (like a normal, SAS or SATA or IDE-attached disk), which gives you grub, a kernel, etc. The initrd image does contain all of the necessary code and modules to make the iSCSI connection - or, at least, it’s supposed to.
I’m not sure if the iscsiadm command sequence is constructed properly, but I’ll look into this possibility. openSuSE is supposed to take care of this automatically - it supports installing directly to the iSCSI target, and is supposed to properly generate commands to make the necessary iSCSI connections. However, this seems like where it’s falling apart - either an incorrectly-generated initrd image, or a bug in open-iscsi. I’m not sure which, just wondering if anyone else has seen this error or had any experience booting over iSCSI (without the help of an iSCSI HBA).
You #1 scenario is how I thought it was working, which led me to number my #2 question of how is the iscsiadmin command constructed. PXEs are built by someone and it could be human error. Just guessing here.
I’m not actually constructing the initrd image - openSuSE does that by itself, so I’m not sure how the command is constructed. I’ll dig a little deeper and see what I can work out - I think I’ll also file a bug in the openSuSE 11.4 Bugzilla DB.