====== PXE-Boot ====== * [[http://www.ubuntu.com/getubuntu/releasenotes?os=ubuntu&ver=11.10&lang=de]] Ubuntu 11.10 Release Notes * Bei Ubuntu wurde das Dateisystem __JFS__ aus dem Kernel (3.0) entfernt. Es gibt also seit Kernel 3.0 bei Ubuntu keine native __JFS__-Untestützung mehr, dafür kann man aber jetzt __BtrFS__ als "/boot"- bzw. "/"-Dateisystem verwenden! * [[http://www.kegel.com/linux/pxe.html]] * [[http://wiki.ubuntuusers.de/PXE-Boot]] * [[http://www.n3ncy.com/UNIX/CentOS/PXE.htm]] * [[http://www.panticz.de/Ubuntu-LiveCD-PXE-boot]] * [[http://andreasmarschke.wordpress.com/2012/11/04/pxe-setup-with-libvirt-and-kvm/]] * [[https://github.com/paulmaunders/TFTP-PXE-Boot-Server]] ===== NetBoot ===== * [[http://netboot.sourceforge.net/german/einfuehrung.html]] * [[http://www.vpsdiscussions.com/index.php/topic,119.0.html]] * [[http://etherboot.org/wiki/httpboot]] * [[http://www.howtoforge.com/boot-linux-over-http-with-boot.kernel.org-bko]] * [[http://www.howtoforge.com/boot-linux-over-http-with-netboot.me]] * [[http://www.linuxtoday.com/it_management/2009100200735OSHLNT]] * [[http://forums.techarena.in/operating-systems/1303647.htm]] ===== booting over HTTP ===== * [[https://help.ubuntu.com/community/PXEInstallServer]] * [[https://help.ubuntu.com/community/Desktop/PXE]] mount --bind /media/cdrom/ /var/www/ubuntu/ mount --bind /media/cdrom/install/netboot/ /tftpboot/ ==== ks.cfg ==== install url --url http://192.168.0.1/ubuntu/ ==== /tftpboot/pxelinux.cfg/default ==== label linux kernel ubuntu-installer/i386/linux append ks=http://192.168.0.1/ks.cfg vga=normal initrd=ubuntu-installer/i386/initrd.gz ramdisk_size=16432 root=/dev/rd/0 rw -- ===== TFTP ===== ==== Installationsdateien ==== # mkdir -p /tftpboot/pxelinux.cfg /tftpboot/install/amd64 /tftpboot/install/i386 Ubuntu Desktop amd64 - CD kopieren: # cp -a /media/cdrom0/ /tftpboot/install/amd64/ubuntu-desktop Ubuntu Desktop i386 - CD kopieren: # cp -a /media/cdrom0/ /tftpboot/install/i386/ubuntu-desktop Ubuntu Server amd64 - CD kopieren: # cp -a /media/cdrom0/ /tftpboot/install/amd64/ubuntu-server Ubuntu Server i386 - CD kopieren: # cp -a /media/cdrom0/ /tftpboot/install/i386/ubuntu-server ==== PXE-Boot ==== das Menü-Programm von der CD kopieren: # cp /media/cdrom0/isolinux/vesamenu.c32 /tftpboot/pxelinux.cfg/ === /tftpboot/pxelinux.cfg/default === In dieser Datei können nur maximal 64 //LABEL// verwaltet werden. Stehen mehr drin, dann werden alle ab dem 65. //LABEL// ignoriert. == mit VESA-Menü == Für diese Variante muss man die Datei //vesamenu.c32// von einer CD kopieren! PROMPT 0 TIMEOUT 0 DEFAULT pxelinux.cfg/vesamenu.c32 MENU TITLE PXE Boot-Menue LABEL u64d MENU LABEL ^u64 - Ubuntu 64 Bit - Desktop KERNEL install/amd64/vmlinuz APPEND ks=http://192.168.2.1/amd64/ubuntu-desktop_ks.cfg ide=nodma fetch=tftp://192.168.2.1/install/amd64/ubuntu-desktop/casper/filesystem.squashfs vga=normal initrd=install/amd64/initrd.img boot=casper splash locale=de_DE bootkbd=de console-setup/layoutcode=de ramdisk_size=16432 root=/dev/rd/0 rw -- LABEL u32d MENU LABEL ^u32 - Ubuntu 32 Bit - Desktop KERNEL install/i386/vmlinuz APPEND initrd=install/i386/ubuntu-desktop/casper/initrd.lz boot=casper ramdisk_size=717000 root=/dev/ram0 rw -- LABEL u64s MENU LABEL ^u64 - Ubuntu 64 Bit - Server KERNEL install/amd64/vmlinuz APPEND ks=http://192.168.2.1/amd64/ubuntu-server.cfg preseed/url=http://192.168.2.1/amd64/ubuntu-desktop/preseed/ubuntu-server.seed vga=normal initrd=install/amd64/initrd.img locale=de_DE bootkbd=de console-setup/layoutcode=de ramdisk_size=16432 root=/dev/rd/0 rw -- LABEL u32s MENU LABEL ^u32 - Ubuntu 32 Bit - Server KERNEL install/i386/vmlinuz APPEND ks=http://192.168.2.1/i386/ubuntu-server.cfg preseed/url=http://192.168.2.1/i386/ubuntu-desktop/preseed/ubuntu-server.seed vga=normal initrd=install/i386/initrd.img locale=de_DE bootkbd=de console-setup/layoutcode=de ramdisk_size=16432 root=/dev/rd/0 rw -- LABEL memtest32d MENU LABEL ^MEM-Test von dem Ubuntu 32 Bit - Desktop - CD - Image KERNEL install/i386/ubuntu-desktop/install/mt86plus LABEL memtest32s MENU LABEL ^MEM-Test von dem Ubuntu 32 Bit - Server - CD - Image KERNEL install/i386/ubuntu-server/install/mt86plus LABEL memtest64d MENU LABEL ^MEM-Test von dem Ubuntu 64 Bit - Desktop - CD - Image KERNEL install/amd64/ubuntu-desktop/install/mt86plus LABEL memtest64s MENU LABEL ^MEM-Test von dem Ubuntu 64 Bit - Server - CD - Image KERNEL install/amd64/ubuntu-server/install/mt86plus == ohne VESA-Menü == Diese Variante kommt ohne //vesamenu.c32// aus, jedoch muss man für den START das komplette //LABEL// eintippen, deshalb sollte man sich an __kurze__ //LABEL// halten. PROMPT 0 TIMEOUT 0 DISPLAY pxelinux.cfg/menue.txt MENU TITLE PXE Boot-Menue LABEL u64d KERNEL install/amd64/vmlinuz APPEND ks=http://192.168.2.1/amd64/ubuntu-desktop_ks.cfg ide=nodma fetch=tftp://192.168.2.1/install/amd64/ubuntu-desktop/casper/filesystem.squashfs vga=normal initrd=install/amd64/initrd.img boot=casper splash locale=de_DE bootkbd=de console-setup/layoutcode=de ramdisk_size=16432 root=/dev/rd/0 rw -- LABEL u32d KERNEL install/i386/vmlinuz APPEND initrd=install/i386/ubuntu-desktop/casper/initrd.lz boot=casper ramdisk_size=717000 root=/dev/ram0 rw -- LABEL u64s KERNEL install/amd64/vmlinuz APPEND ks=http://192.168.2.1/amd64/ubuntu-server.cfg preseed/url=http://192.168.2.1/amd64/ubuntu-desktop/preseed/ubuntu-server.seed vga=normal initrd=install/amd64/initrd.img locale=de_DE bootkbd=de console-setup/layoutcode=de ramdisk_size=16432 root=/dev/rd/0 rw -- LABEL u32s KERNEL install/i386/vmlinuz APPEND ks=http://192.168.2.1/i386/ubuntu-server.cfg preseed/url=http://192.168.2.1/i386/ubuntu-desktop/preseed/ubuntu-server.seed vga=normal initrd=install/i386/initrd.img locale=de_DE bootkbd=de console-setup/layoutcode=de ramdisk_size=16432 root=/dev/rd/0 rw -- LABEL memtest32d KERNEL install/i386/ubuntu-desktop/install/mt86plus LABEL memtest32s KERNEL install/i386/ubuntu-server/install/mt86plus LABEL memtest64d KERNEL install/amd64/ubuntu-desktop/install/mt86plus LABEL memtest64s KERNEL install/amd64/ubuntu-server/install/mt86plus === /tftpboot/pxelinux.cfg/menue.txt === In dieser Datei listet man sinnvoller weise alle //LABEL// aus der Datei ///tftpboot/pxelinux.cfg/default// mit einer Kurzbeschreibung auf. # u32d: Ubuntu 32 Bit - Desktop u32s: Ubuntu 32 Bit - Server u64d: Ubuntu 64 Bit - Desktop u64s: Ubuntu 64 Bit - Server memtest32d: MEM-Test von dem Ubuntu 32 Bit - Desktop - CD - Image memtest32s: MEM-Test von dem Ubuntu 32 Bit - Server - CD - Image memtest64d: MEM-Test von dem Ubuntu 64 Bit - Desktop - CD - Image memtest64s: MEM-Test von dem Ubuntu 64 Bit - Server - CD - Image # === ks.cfg === # aptitude install system-config-kickstart # system-config-kickstart == /tftpboot/install/amd64/ubuntu-desktop_ks.cfg == network --bootproto=dhcp --device=eth0 install url --url http://192.168.2.1/amd64/ubuntu-desktop/ keyboard de == /tftpboot/install/amd64/ubuntu-server_ks.cfg == network --bootproto=dhcp --device=eth0 install url --url http://192.168.2.1/amd64/ubuntu-server/ keyboard de == /tftpboot/install/i386/ubuntu-desktop_ks.cfg == network --bootproto=dhcp --device=eth0 install url --url http://192.168.2.1/i386/ubuntu-desktop/ keyboard de == /tftpboot/install/i386/ubuntu-server_ks.cfg == network --bootproto=dhcp --device=eth0 install url --url http://192.168.2.1/i386/ubuntu-server/ keyboard de === Rechte === # chown -R nobody:nogroup /tftpboot/ # chmod 0644 /tftpboot/install/*/*ks.cfg # chmod 0644 /tftpboot/install/*/initrd.img # chmod 0644 /tftpboot/install/*/vmlinuz ==== HTTP ==== Die nötige VirtualHost-Sektion könnte so aussehen: Listen 80 DocumentRoot "/tftpboot/install" ServerName server:80 ServerAdmin root@domain.de ErrorLog "/var/log/httpd-error_tftp.log" TransferLog "/var/log/httpd-access_tftp.log" allow from all ==== initrd ==== Möglicherweise brauchen wir eine neu gebaute //initrd//. Dann müssen wir entweder die //initrd// aus einem bereits installierten System verwenden oder uns eine eigene bauen. In jedem Fall benötigen wir dann ein laufendes Ubuntu-System, auf dem die gleiche Ubuntu-Version läuft, wie sie sich auf dem CD-Image befindet (manchmal geht auch eine ähnliche). Wenn wir über keine bereits vorhandene Ubuntu-Installation verfügen, müssen wir jetzt unseren Client von unserer CD installieren, und erstellen uns dort die benötigte //initrd//. Die Installation kann selbstverständlich auch auf einem USB-Stick erfolgen, um das ursprüngliche System nicht zu beeinflussen oder zu beschädigen. Diese Installation muss aber dann mit der [[http://wiki.ubuntuusers.de/Alternate_Installation|Alternate CD]] erfolgen, da es sonst nicht möglich ist festzulegen, wo der Bootloader installiert werden soll. === eine vorhandene initrd verwenden === hier kopieren wir uns den //Kernel// und die //initrd//: # cp /boot/initrd.img-$(uname -r) . # cp /boot/vmlinuz-$(uname -r) . die 64Bit-Version: # scp initrd.img-2.6.38-11-generic root@server:/tftpboot/install/amd64/initrd.img # scp vmlinuz-2.6.38-11-generic root@server:/tftpboot/install/amd64/vmlinuz die 32Bit-Version: # scp initrd.img-2.6.38-11-generic root@server:/tftpboot/install/i386/initrd.img # scp vmlinuz-2.6.38-11-generic root@server:/tftpboot/install/i386/vmlinuz Manchmal können wir uns auch die benötigten Dateien irgendwo aus dem Internet holen... === unsere initrd modifizieren === Um die //initrd//, wenn nötig, an spezielle Wünsche anpassen zu können, lesen sie bitte hier weiter: [[Dateisystem-Images]]