--##bgcolor white --##fgcolor black --title "chroot mal anders" -- VServer 2.0 --author Karsten Horsmann --date today --horline --- --beginslidetop Viel Spass - Fragen werden gern beantwortet! --endslidetop --- --newpage VServer - was ist das? --heading Vserver - was ist das? --- * VServer steht für eine Erweiterung des Linux Kernels um einige neue Systemaufrufe. --- * Somit sind Virtuelle Server auf Basis von Betriebssystemen möglich. --- * Im Gegensatz zu UML und XEN nutzt VServer nur einen Kernel. --- * Performance ist somit genauso wie auf einen nicht virtuellen Server (im Gegensatz zu anderen VM Lösungen) --- * Um Dienste wie dns, http, smb, smtp usw. zu trennen, wäre ein VServer Gast pro Dienst denkbar --- * Absicherung von VServer gegenüber Host --- * VServer Patch ist nicht an eine Plattform (i386) gebunden - funktioniert unter i386, amd64, ppc, ppc64, sparc usw. --- * UML und XEN sind nur weitere Architekturen - VServer läuft auch innerhalb eines UML - VServer wird schon auf XEN portiert --- --newpage Sourcen holen --heading Sourcen holen --- * Wir benötigen --- - die Quellen des 2.6er Kernels --- - den VServer 2.0 Patch für den Kernel --- - die Utils von Enrico Scholz --- * Ich habe das mal kurz vorbereitet --- --beginoutput $ cd /usr/src $ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.12.4.tar.bz2 $ wget http://www.13thfloor.at/vserver/s_rel26/v2.0/patch-2.6.12.4-vs2.0.diff.bz2 $ wget http://www.13thfloor.at/vserver/s_rel26/v2.0/util-vserver-0.30.208.tar.bz2 $ tar xfj linux-2.6.12.4.tar.bz2 $ tar xfj util-vserver-0.30.208.tar.bz2 $ rm linux $ ln -s linux-2.6.12.4 linux $ --endoutput --- --newpage Sourcen patchen --heading Sourcen patchen * Vanilla Kernel patchen --- --beginshelloutput $ cd linux $ bzcat ../patch-2.6.12.4-vs2.0.diff.bz2 | patch -p1 $ --endshelloutput --- * Abgelehnte Dateien finden --- --beginshelloutput $ find ./ -name *.rej $ --endshelloutput --- --newpage Kernel konfigurieren --heading Kernel konfigurieren * Den Kernel ein wenig justieren --beginshelloutput $ make menuconfig $ --endshelloutput --- * Das jeweilige Dateisystem sollte mit "extended attributes" übersetzt werden --- * Die VServer Optionen im Kernel aktivieren --beginoutput Linux VServer ---> [*] Enable Legacy Kernel API [ ] Show a Legacy Version ID [ ] Disable Legacy Networking Kernel API [*] Enable Proc Security [*] Enable Hard CPU Limits [*] Limit the IDLE task Persistent Inode Context Tagging (Disabled) ---> [ ] Tag NFSD User Auth and Files [ ] VServer Debugging Code --endoutput --- --newpage VServer Host vorbereiten --heading VServer Host vorbereiten --- * VServer Kernel installieren --- * Vserver Userspacetools installieren --- * VServer Verzeichnis mit der chroot-barrier versehen setattr --barrier /var/lib/vservers --- * Debian Sarge, da gibbes doch schon was ... --- - util-vserver - tools for Virtual private servers and context switching Leider veraltet --- - vserver-debiantools - Tools to manage debian virtual servers Diente früher zum VServer-Guest erstellen in VServer 2.0 nicht notwendig. --- --newpage VServer Gast Erzeugen --heading VServer Gast Erzeugen --- * Es ist keine "normale" Systeminstallation möglich --- * Implementierung einiger in util-vserver: - apt-rpm für Fedora/RH vserver - debootstrap für Debian vserver - skeleton für Basis Verzeichnisstruktur + Konfiguration --- * Wir lernen den Befehl vserver kennen --- - VServername/Hostname lugh - (optional aber wichtig) einmalige Contextnummer 42 - Debootstrap dient zum erstellen - das Interface eth0 soll genutzt werden - die IP-Adresse 192.168.0.208/24 verwenden - (optional) lugh als eth Alias - Ich möchte Sarge haben - Als Spiegel soll mein APT-Proxy herhalten --- * So schauts aus --beginshelloutput $ sudo vserver lugh build -m debootstrap --hostname lugh \ --context 42 --interface lugh=eth0:192.168.0.208/24 -- -d sarge \ -m http://stargate:9999/debian --endshelloutput --- --newpage VServer Guest erstellen --heading VServer Guest erstellen * Das dauert circa 3 Minuten (auf P3 733MHZ) --- --boldon * Anmerkung: das mach ich jetzt mal live --boldoff --- * Zum Kopieren und Pusten $ sudo vserver lugh build -m debootstrap --hostname lugh \ --context 42 --interface lugh=eth0:192.168.0.208/24 -- -d sarge \ -m http://stargate:9999/debian --- --newpage VServer Tools --heading VServer Tools * Was läuft hier? --- --beginshelloutput $ sudo vserver-stat CTX PROC VSZ RSS userTIME sysTIME UPTIME NAME 0 42 95.1M 22.7M 8m06s70 2m50s11 2d00h37 root server 49152 25 221.9M 57.9M 2m21s10 0m17s43 2d00h36 stargate --endshelloutput --- * Wie starte ich den neuen VServer lugh? --- --beginshelloutput $ sudo vserver lugh start --endshelloutput --- --newpage lugh startet --heading lugh startet * Was sagt vserver-stat dazu? --- --beginshelloutput $ sudo vserver-stat CTX PROC VSZ RSS userTIME sysTIME UPTIME NAME 0 42 95.1M 22.7M 8m06s70 2m50s11 2d00h37 root server 49152 25 221.9M 57.9M 2m21s10 0m17s43 2d00h36 stargate 42 5 11.1M 3.9M 0m00s00 0m00s00 8m22s30 lugh --endshelloutput --- --newpage VServer beenden --heading VServer beenden * Wie beendete ich einen VServer? --- --beginshelloutput $ vserver lugh stop Stopping periodic command scheduler: cron. Stopping MTA: exim4. Stopping internet superserver: inetd. Saving the System Clock time to the Hardware Clock... hwclock is unable to get I/O port access: the iopl(3) call failed. Hardware Clock updated to Wed Aug 10 10:20:19 UTC 2005. Stopping deferred execution scheduler: atd. Stopping kernel log daemon: klogd. Stopping system log daemon: syslogd. Sending all processes the TERM signal...done. Sending all processes the KILL signal...done. Saving random seed...done. Unmounting remote and non-toplevel virtual filesystems...done. Deconfiguring network interfaces...done. Cleaning up ifupdown...done. Deactivating swap...umount: none: not found umount: /tmp: must be superuser to umount Not superuser. done. Unmounting local filesystems...umount: none: not found umount: /tmp: must be superuser to umount umount: /dev/hdv1: not found umount: /: not mounted done. mount: permission denied Rebooting... ifdown: shutdown eth0: Permission denied ifdown: shutdown eth0: Permission denied ifdown: shutdown eth0: Permission denied --endshelloutput --- --newpage VServer Bedienung --heading Vserver Bedienung * vserver lugh enter --- - Ermöglicht das chrooten in den VServer lugh --- * deb-Packet iproute --> using 'ip addr ls' instead of the ancient ifconfig you will _see_ the configured (and allowed) ips ... * Den VServer lugh löschen --- --beginshelloutput $ sudo rm -rf /etc/vservers/lugh/ $ sudo rm -rf /var/lib/vservers/lugh/ --endshelloutput --newpage Dienste anpassen --heading Dienste anpassen * Samba Daemonen nur an die VServer IP binden --- bind interfaces only = yes interfaces = 192.168.0.208/24 --- * SSH Daemon auf dem Host anpassen --- ListenAddress 192.168.0.33 --newpage Quellen --heading Quellen * Erläuterung zu VServer, Xen und UML http://de.wikipedia.org/wiki/Vserver http://de.wikipedia.org/wiki/Xen http://de.wikipedia.org/wiki/User_Mode_Linux * VServer Wiki Seite, Herbert Pötzl (Kernel), Enrico Scholz (util-vserver) http://linux-vserver.org/ http://linux-vserver.org/Documentation http://www.13thfloor.at/vserver/s_rel26/v2.0/ http://www.13thfloor.at/~ensc/util-vserver/files/doc/virtual-servers.pdf util-vserver http://www.nongnu.org/util-vserver #vserver auf oftc.net