Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
sanboot:gentoo_iscsi [2010/01/31 16:28] owen |
sanboot:gentoo_iscsi [2010/10/26 07:18] (current) ctr formating |
||
---|---|---|---|
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 M 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 M 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 network, do 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't have a boot partition like me, then 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 computer, it will probably take the /dev/sda spot and your iSCSI disk will be moved to /dev/sdb or /dev/sdc, etc. Using filesystem labels will help in this situation. |
+ | |||
+ | ===== 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): | ||
+ | |||
+ | <code> | ||
+ | /etc/init.d/net.eth0 zap</code> | ||
- | ====== FIXME ====== | + | to /etc/init.d/local.start (or the start section of /etc/init.d/local depending on your baselayout version). |
- | Gentoo will not shut down properly. | + | 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. |