Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
sanboot:gentoo_iscsi [2010/01/31 16:28]
owen
sanboot:gentoo_iscsi [2010/10/26 07:16]
ctr added workaround for "FIXME: Gentoo will not shut down properly"
Line 2: Line 2:
 =====  Scope  ===== =====  Scope  =====
 This How-To is intended for anyone who wants to install Gentoo Linux on an iSCSI target. This How-To is intended for anyone who wants to install Gentoo Linux on an iSCSI target.
-  * What is not covered: +== What is covered: ​==
-    * Understanding and configuring a network environment +
-  * What is covered:+
     * Connecting to the iSCSI target     * Connecting to the iSCSI target
     * Installing a generic base system     * Installing a generic base system
     * Installing the kernel     * Installing the kernel
     * Installing the bootloader     * Installing the bootloader
 +== What is not covered: ==
 +    * Understanding and configuring a network environment
  
 =====  Credits ​ ===== =====  Credits ​ =====
Line 21: Line 21:
  
 ====== ​ Installation ​ ====== ====== ​ Installation ​ ======
-=====  Connect to your iscsi disk  ===== +=====  Connect to your iSCSI disk  ===== 
-====  Method 1: use (x)ubuntu boot cd (safest) ​ ====+====  Method 1: use (x)ubuntu boot CD (safest) ​ ====
  
 (I've only tried this with xubuntu, but other ubuntu versions should work as well.) (I've only tried this with xubuntu, but other ubuntu versions should work as well.)
  
-This is by far the safest way to install, since you are booting from the live-cd, why not just disconnect all your harddrives ​to avoid mistakes?+This is by far the safest way to install, since you are booting from the live-cd. Why not just disconnect all your hard drives ​to avoid mistakes?
  
 ===  Install open-iscsi ​ === ===  Install open-iscsi ​ ===
Line 32: Line 32:
  sudo aptitude install open-iscsi</​code>​  sudo aptitude install open-iscsi</​code>​
  
-===  Discover your iscsi target ​ ===+===  Discover your iSCSI target ​ ===
 <​code>​ <​code>​
  sudo iscsi_discovery <​SAN-IP></​code>​  sudo iscsi_discovery <​SAN-IP></​code>​
Line 44: Line 44:
  sudo iscsiadm -m node -p <​SAN-IP>​ -T iqn.1986-03.com.sun:​02:​86afa64e-9baf-451c-84bb-826ea71300db.gentootest -l</​code>​  sudo iscsiadm -m node -p <​SAN-IP>​ -T iqn.1986-03.com.sun:​02:​86afa64e-9baf-451c-84bb-826ea71300db.gentootest -l</​code>​
  
-You should see something ​simmilar ​to:+You should see something ​similar ​to:
 <​code>​ <​code>​
  ​Logging in to [[iface:​|default,​ target: iqn.1986-03.com.sun:​02:​86afa64e-9baf-451c-84bb-826ea71300db.gentootest,​ portal: 10.9.8.250,​3260]]  ​Logging in to [[iface:​|default,​ target: iqn.1986-03.com.sun:​02:​86afa64e-9baf-451c-84bb-826ea71300db.gentootest,​ portal: 10.9.8.250,​3260]]
Line 52: Line 52:
  
 ===  Update kernel ​ === ===  Update kernel ​ ===
-Make sure your current kernel supports ​iscsi:+Make sure your current kernel supports ​iSCSI:
 Roll a new kernel if necessary. Roll a new kernel if necessary.
  
-I had trouble when CRC32c was compiled as M so i made it *+  * I had trouble when CRC32c was compiled as a module, but it worked when built-in
- +  ​* ​Open-iscsi will not start when ''​iSCSI Initiator over TCP/IP'' ​is built-in, ​so you have to make it a module ​for now. 
-Open-iscsi will not start when iSCSI Initiator over TCP/IP is so you have to make it for now. +  ​* ​Open-iscsi will not start when ''​iSCSI Transport Attributes'' ​is built-in, ​so you have to make it a module ​for now.
-Open-iscsi will not start when iSCSI Transport Attributes is so you have to make it for now.+
  
 <​code>​ <​code>​
Line 84: Line 83:
  * Loading iSCSI modules ...  * Loading iSCSI modules ...
  * Loading libiscsi: not found ...                                        [[|!! ]]</​code>​  * Loading libiscsi: not found ...                                        [[|!! ]]</​code>​
-then you have to addapt ​your kernel:+then you have to adapt your kernel:
 <​code>​ <​code>​
  <​M> ​  iSCSI Initiator over TCP/IP  <​M> ​  iSCSI Initiator over TCP/IP
Line 103: Line 102:
  
 ===  Discover your iscsi-target ​ === ===  Discover your iscsi-target ​ ===
-Find the mac-adres ​of your network card:+Find the MAC address ​of your network card:
 <​code>​ <​code>​
  ​ifconfig eth0 | grep HWaddr</​code>​  ​ifconfig eth0 | grep HWaddr</​code>​
Line 135: Line 134:
 You should see something like: You should see something like:
 <​code>​ <​code>​
- ​Logging in to [[iface:​|iface0,​ target: iqn.1986-03.com.sun:​02:​86afa64e-9baf-451c-84bb-826ea71300db.gentootest,​ portal: 10.9.8.250,​3260]]+ ​Logging in to [[iface:​|iface0,​ target: iqn.1986-03.com.sun:​02:​86afa64e-9baf-451c-84bb-826ea71300db.gentootest,​ portal: 10.9.8.250,​3260]]
  Login to [[iface:​|iface0,​ target: iqn.1986-03.com.sun:​02:​86afa64e-9baf-451c-84bb-826ea71300db.gentootest,​ portal: 10.9.8.250,​3260]]:​ successful</​code>​  Login to [[iface:​|iface0,​ target: iqn.1986-03.com.sun:​02:​86afa64e-9baf-451c-84bb-826ea71300db.gentootest,​ portal: 10.9.8.250,​3260]]:​ successful</​code>​
  
-=====  Chroot into your iscsi-disk  =====+=====  Chroot into your iSCSI disk  =====
 (Make sure you are root from now on) (Make sure you are root from now on)
  
 ===  Find out where the disk is attached to  === ===  Find out where the disk is attached to  ===
-(In this case the "​disk"​ is a file filled with zeroes, so fdisk will complain there is no valid partition table, it does not matter.)+(In this case the "​disk"​ is a file filled with zeroes, so fdisk will complain there is no valid partition table. It does not matter.)
 <​code>​ <​code>​
  fdisk -l</​code>​  fdisk -l</​code>​
  
-You should see something ​simillar ​to:+You should see something ​similar ​to:
 <​code>​ <​code>​
  Disk /dev/sda: 4194 MB, 4194304000 bytes  Disk /dev/sda: 4194 MB, 4194304000 bytes
Line 158: Line 157:
 **WARNING: Pay attention to what device your iscsi disk is attached, if you don't have other disks connected to your computer the device will probably be /dev/sda, if you do have other disks you have to find out what device your iscsi disk is connected to! You don't want to (re)format the wrong disk! I will refer to the disk as /dev/sdX.** **WARNING: Pay attention to what device your iscsi disk is attached, if you don't have other disks connected to your computer the device will probably be /dev/sda, if you do have other disks you have to find out what device your iscsi disk is connected to! You don't want to (re)format the wrong disk! I will refer to the disk as /dev/sdX.**
  
-===  Partition the iscsi-harddisk ​ === +===  Partition the iSCSI disk  === 
-(i've made only 1 partition to make it simple, you could add boot and swap if you want)+(I've made only 1 partition to make it simple. You could add boot and swap if you want)
 <​code>​ <​code>​
  fdisk /​dev/​sdX</​code>​  fdisk /​dev/​sdX</​code>​
Line 172: Line 171:
  mkdir /​mnt/​gentoo</​code>​  mkdir /​mnt/​gentoo</​code>​
  
-===  Mount your iscsi-disk  ===+===  Mount your iSCSI disk  ===
 <​code>​ <​code>​
  mount /dev/sdX1 /​mnt/​gentoo</​code>​  mount /dev/sdX1 /​mnt/​gentoo</​code>​
  
-=====  Install Gentoo ​Base-system ​ =====+=====  Install Gentoo ​base system ​ =====
 From here on you have to download a stage3 just like you would in a normal installation. Unpack the stage in /​mnt/​gentoo. From here on you have to download a stage3 just like you would in a normal installation. Unpack the stage in /​mnt/​gentoo.
  
Line 212: Line 211:
  
 ====  Network configuration ​ ==== ====  Network configuration ​ ====
-**IMPORTANT:​** Since your storage is connected over the network do not allow init scripts to start or restart the network!+**IMPORTANT:​** Since your storage is connected over the networkdo not allow init scripts to start or restart the network!
  
 <​code>​ <​code>​
Line 221: Line 220:
  
 ====  Fstab  ==== ====  Fstab  ====
-Add your harddisk ​in fstab like any normal ​harddisk:+Add your iSCSI disk in fstab like any normal ​hard disk:
 <​code>​ <​code>​
  nano -w /​etc/​fstab</​code>​  nano -w /​etc/​fstab</​code>​
Line 239: Line 238:
  
 ====  Compile the sources with genkernel ​ ==== ====  Compile the sources with genkernel ​ ====
-Dont forget to add --iscsi for iscsi support.+Don'​t ​forget to add --iscsi for iscsi support.
 <​code>​ <​code>​
  ​genkernel --menuconfig --iscsi all</​code>​  ​genkernel --menuconfig --iscsi all</​code>​
  
-===  Enable ​(i)scsi ​ ===+===  Enable ​iSCSI  ===
 I had trouble when CRC32c was compiled as M so i made it *. I had trouble when CRC32c was compiled as M so i made it *.
  
Line 283: Line 282:
  
 =====  Install Bootloader ​ ===== =====  Install Bootloader ​ =====
-==== Install ​grub  ====+==== Install ​GRUB  ====
 <​code>​ <​code>​
  ​emerge sys-boot/​grub</​code>​  ​emerge sys-boot/​grub</​code>​
  
-====  Configure ​Grub  ====+====  Configure ​GRUB  ====
 <​code>​ <​code>​
  ​grub</​code>​  ​grub</​code>​
  
-**WARNING, WARNING, WARNING: make sure you enter the right disk!! if you are running the ubuntu-cd and don't have any real harddisks connected to your computer then hdx=hd0, if you are installing from a real harddisk ​then hdX=hd1 or hd2 or so on!!!+**WARNING, WARNING, WARNING: make sure you enter the right disk!! if you are running the ubuntu-cd and don't have any real harddisks connected to your computer then hdx=hd0, if you are installing from a real hard disk then hdX=hd1 or hd2 or so on!!!
 ** **
 <​code>​ <​code>​
Line 298: Line 297:
  ​quit</​code>​  ​quit</​code>​
  
-====  Edit grub configuration ​ ==== +====  Edit GRUB configuration ​ ==== 
-You have to set at least these options for iscsi to work:+You have to set at least these options for iSCSI to work:
 ip=dhcp, iscsi_target=,​ iscsi_address=,​ iscsi_initiatorname ====== ip=dhcp, iscsi_target=,​ iscsi_address=,​ iscsi_initiatorname ======
  
Line 319: Line 318:
  cd ~  cd ~
  ​exit</​code>​  ​exit</​code>​
-If you dont' have a boot partition like me then you can leave out /​mnt/​gentoo/​boot+If you don'have a boot partition like methen you can leave out /​mnt/​gentoo/​boot
 <​code>​ <​code>​
  ​umount /​mnt/​gentoo/​dev /​mnt/​gentoo/​proc /​mnt/​gentoo/​boot /​mnt/​gentoo</​code>​  ​umount /​mnt/​gentoo/​dev /​mnt/​gentoo/​proc /​mnt/​gentoo/​boot /​mnt/​gentoo</​code>​
  
-======  ​Troubeshooting ​ ​======+======  ​Troubleshooting ​ ​======
 =====  Made a mistake in the base system ​ ===== =====  Made a mistake in the base system ​ =====
-You can connect to your iscsi disk again with one of the methods above, chroot and fix the problem.+You can connect to your iSCSI disk again with one of the methods above, chroot and fix the problem.
 =====  System won't boot and drops you in a shell  ===== =====  System won't boot and drops you in a shell  =====
 Enter the shell and try to figure out what went wrong. Enter the shell and try to figure out what went wrong.
-  * Did the network interface come up with an ip-adres?+  * Did the network interface come up with an ip-address?
 <​code>​ <​code>​
  ​ifconfig eth0</​code>​  ​ifconfig eth0</​code>​
  
-You may have forgotten to enable ​the kernel ​ip autoconfiguration and the kernel ​dhcp +  * You may have forgotten to enable ​''​IP: ​kernel ​level  ​autoconfiguration'' ​and/or DHCP in the kernel 
- +  ​* ​You may have forgotten to enable your network card in the kernel (* not M)
-You may have forgotten to enable your network card in the kernel (* not M) +
   * Does dmesg show any warnings?   * Does dmesg show any warnings?
 <​code>​ <​code>​
Line 353: Line 350:
  ​reboot</​code>​  ​reboot</​code>​
 =====  Kernel boots but hangs/​crashes when it tries to bring up eth0  ===== =====  Kernel boots but hangs/​crashes when it tries to bring up eth0  =====
-You cannot allow the system to start or restart the network connection, this will severa ​your iscsi connection!+You cannot allow the system to start or restart the network connection, this will sever your iscsi connection!
 <​code>​ <​code>​
  ​mount ​ -o remount rw /  ​mount ​ -o remount rw /
Line 366: Line 363:
  
 =====  Boot fails when adding other storage to computer ​ ===== =====  Boot fails when adding other storage to computer ​ =====
-If you add a harddisk, usb drive, usb-stick to the computer it will probably take the /dev/sda spot and your iscsi-disk will move to /dev/sdb or/​dev/​sdc, ​or so on...+If you add a hard disk/​USB ​drive/USB stick/etc. to the computerit will probably take the /dev/sda spot and your iSCSI disk will be moved to /dev/sdb or /​dev/​sdc, ​etcUsing filesystem labels will help in this situation.
  
-======  ​FIXME  ====== +=====  ​Gentoo will not shut down properly ​ ​===== 
-Gentoo will not shut down properly.+Because an iscsi mount is not recognized as netmount (like nfs) by Gentoo, the system ​will try to shutdown the network interface during normal shutdown/​reboot procedure. This will obviously break the iscsi connection and let the system hang. 
 +To avoid this the following workaround can be used: 
 +add (where eth0 is the interface being used for the iscsi connection):​ 
 +/​etc/​init.d/​net.eth0 zap 
 +to /​etc/​init.d/​local.start (or the start section of /​etc/​init.d/​local depending on your baselayout version). 
 +Doing so will make Gentoo think eth0 is already down, so it wont try to shut it down on halt. All other init-scripts that depend on net will still be invoked to shut them down cleanly, just eth0 itself wont be stopped.

QR Code
QR Code sanboot:gentoo_iscsi (generated for current page)