Gentoo Installation from Scratch auf einem Manitu Dedicated Server
In meinem ersten Beitrag habe ich schon erwähnt, dass ich gerne Blogs lese. Einer dieser Blogs ist von Manuel Schmitt, Chef des Webspace und Serververmieters Manitu.
Vor einigen Tagen hat er dort ein Angebot über einen Dedicated Server für 20 Euro brutto im Monat gepostet. In einer Art Glücksspiel wurde hier bunt zusammengewürfelten Hardware-Komponenten aus alten Servern ein zweites Leben geschenkt.
Da man sich nur einen Monat binden musste, habe ich mir einen Server bestellt und einen Dual Core Athlon 64 X2 3800+ (2x2Ghz) mit zwei Gigabyte RAM und zwei 160-GB-Festplatten erhalten.
Super Angebot für den Preis, wenn man bedankt, dass mein vServer auf nur einem Kern des baugleichen Prozessors läuft.
Der Support hat bis jetzt immer super schnell und kompetent reagiert.
Der neue Server war anfangs nur per Half-Duplex an das Internet angebunden, weshalb die Download-Geschwindigkeit sehr gelitten hat. Dies wurde schnell erkannt und gelöst. Außerdem hat der Boot ins Rescue-System nicht funktioniert, da eine BIOS-Einstellung falsch war. Auch das wurde sehr schnell behoben.
Auf dem System habe ich verschiedene Linux-Distributionen getestet, da ich von Gentoo zu einer Binärdistribution wechseln wollte. Leider haben diese mich schon beim Installieren sehr aufgeregt. Keine war passend für mich. Also musste doch wieder Gentoo her...
Gentoo habe ich from Scratch installiert - also nicht das fertige Image von Manitu.
Meine Schritte habe ich hier einmal dokumentiert:
Der Server wird mit einem RAID-1 und 64-Bit eingerichtet.
Als allererstes bootet man in das Rescue-System. Dann kann man gleich die Platten neu formatieren.
# Format Diskscfdisk /dev/sda1
Insgesamt werden vier Partitionen angelegt.
Eine /boot vom Typ fd (Linux RAID Autodetect, hier 512MB), eine Swap-Partition (hier 1024 MB), danach eine Root-Partition (auch fd, 20 480MB). Der Rest wird auch als RAID konfiguriert.
Die Einstellungen von der ersten Festplatte können nun auf die zweite Festplatte geschrieben werden.
# Copy Partition Layout to new disksfdisk -d /dev/sda | sfdisk /dev/sdb
Die Swap-Partitionen werden eingerichtet...
# Set up swapmkswap /dev/sda2
mkswap /dev/sdb2
... und aktiviert
# Activate itswapon -p 1 /dev/sda2 && swapon -p 1 /dev/sdb2
Danach kann man schon das RAID aufsetzen:
# Set up RAIDmdadm --create /dev/md1 --level=1 --raid-devices=2 --metadata=0.90 /dev/sda1 /dev/sdb1
mdadm --create /dev/md3 --level=1 --raid-devices=2 /dev/sda3 /dev/sdb3
mdadm --create /dev/md4 --level=1 --raid-devices=2 /dev/sda4 /dev/sdb4
Als nächstes müssen wir warten, bis das RAID fertig ist. Watch ruft dafür alle zwei Sekunden den aktuellen Status ab und gibt ihn aus.
# Wait for syncwatch cat /proc/mdstat
Nun legen wir das Boot- und das Root-Dateisystem an...
# Root-Filesystemmke2fs /dev/md1
mkreiserfs /dev/md3
... und aktivieren das LVM.
# LVMvgscan
vgchange -a ypvcreate /dev/md4
vgcreate main /dev/md4
# LVM Logical Volumeslvcreate -n usr -L 5G main
lvcreate -n var -L 3G main
lvcreate -n home -L 5G main
lvcreate -n srv -L 5G main
lvcreate -n tmp -L 1G main
lvcreate -n vartmp -L 1G main
lvcreate -n root -L 0.5G main
Auf den LVM-Partitionen erstellen wir nun noch das Dateisystem.
# Filesystemsfor i in /dev/main/*; do yes | mkreiserfs $i ; done;
Jetzt ist es an der Zeit, die nötigen Verzeichnisse zu erstellen und die Partitionen zu mounten.
# Set up filesystemmkdir /mnt/gentoo/
mount /dev/md3 /mnt/gentoo
mkdir /mnt/gentoo/boot/
mount /dev/md1 /mnt/gentoo/boot
mkdir /mnt/gentoo/home
mkdir /mnt/gentoo/var
mkdir /mnt/gentoo/usr
mkdir /mnt/gentoo/srv
mkdir /mnt/gentoo/tmp
mkdir /mnt/gentoo/root
mount /dev/main/usr /mnt/gentoo/usr/
mount /dev/main/var /mnt/gentoo/var/
mount /dev/main/home /mnt/gentoo/home/
mount /dev/main/srv /mnt/gentoo/srv/
mount /dev/main/tmp /mnt/gentoo/tmp/
mount /dev/main/root /mnt/gentoo/root/
mkdir /mnt/gentoo/var/tmp
mount /dev/main/vartmp /mnt/gentoo/var/tmp/
chmod 1777 /mnt/gentoo/tmp /mnt/gentoo/var/tmp
Der erste Teil ist nun geschafft, jetzt können wir das Stage-3-Image herunterladen und entpacken.
# Bootstrapcd /mnt/gentoo/
wget ftp://mirror.netcologne.de/gentoo/releases/amd64/current-stage3/stage3-amd64-20101111.tar.bz2
time tar xjpf stage3-amd64-20101111.tar.bz2
rm stage3-amd64-20101111.tar.bz2
Genauso den aktuellen Portage-Snapshot.
# Portagecd /mnt/gentoo/usr
wget ftp://mirror.netcologne.de/gentoo/snapshots/portage-latest.tar.bz2
time tar xjf portage-latest.tar.bz2
rm portage-latest.tar.bz2
Bereits jetzt können wir in unser neues System chrooten.
# Chrootcd /
cp -L /etc/resolv.conf /mnt/gentoo/etc/
mount -t proc none /mnt/gentoo/proc
mount -o bind /dev /mnt/gentoo/dev
mount -o bind /dev/pts /mnt/gentoo/dev/pts
chroot /mnt/gentoo /bin/bash
env-update && source /etc/profile
Und erste Einstellungen wie Hostname und Zeitzone vornehmen.
# First settingscp /usr/share/zoneinfo/Europe/Berlin /etc/localtime
cd /etc
echo "127.0.0.1 aliena.tfgservers.net aliena localhost" > hosts
sed -i -e 's/HOSTNAME.*/HOSTNAME="aliena"/' conf.d/hostname
hostname alienahostname -f
Um die Installation schnell abschließen zu können empfiehlt es sich, schon jetzt schnelle Mirrors auszuwählen.
# Mirrorsemerge -v mirrorselectmirrorselect -i -o >> /etc/make.conf
mirrorselect -i -r -o >> /etc/make.conf
Nun installieren wir einige Systemverwaltungstools.
# Emerge System toolsemerge -v vim iproute2 mdadm lvm2 reiserfsprogs
rc-update add mdraid boot
rc-update add lvm boot
Den Kernel bauen wir anhand der vorgeschlagenen Config von Manitu.
# Kerneltime emerge -v gentoo-sources
cd /usr/src/linux
cp ~/aliena/config-2.6.35.6 .config
make oldconfigmake menuconfigmake -j2
make modules_installcp arch/x86_64/boot/bzImage /boot/kernel
Nun Editieren wir die Mounteinstellungen...
# Fstabvim /etc/fstab
... mit folgendem Inhalt:
/dev/md1 /boot ext2 noauto,noatime 1 2
/dev/md3 / reiserfs noatime 0 0
/dev/sda2 none swap sw,pri=1 0 0
/dev/sdb2 none swap sw,pri=1 0 0
/dev/main/root /root reiserfs noatime,nodev,noexec 0 0
/dev/main/usr /usr reiserfs noatime,nodev 0 0
/dev/main/var /var reiserfs noatime,nodev 0 0
/dev/main/srv /srv reiserfs noatime,nodev 0 0
/dev/main/tmp /tmp reiserfs noatime,nodev,noexec,nosuid 0 0
/dev/main/vartmp /var/tmp reiserfs noatime,nodev 0 0
Desweiteren richten wir noch das Netzwerk ein...
# Network configcd /etc/conf.d/
echo 'modules=( "iproute2" )' > net
echo 'config_eth0=( "89.238.82.222/24" "89.238.82.223/24" "89.238.82.224/24" "89.238.82.225/24" )' >> net
echo 'routes_eth0=( "default via 89.238.82.1" )' >> net
rc-update add net.eth0 default
... und setzen ein root-Passwort:
# passwordpasswd
Die Zeitzone legen wir noch auf Europe/Berlin fest...
# Timezonevim /etc/conf.d/clock
# TIMEZONE="Europe/Berlin"
... und richten Cron und Syslogd ein.
# Syslog and Cronemerge -v syslog-ng vixie-cronrc-update add syslog-ng default
rc-update add vixie-cron default
Als Bootloader verwenden wir Grub:
# Bootloadergrep -v rootfs /proc/mounts > /etc/mtab
emerge -v grubecho 'default 0
timeout 5title Gentooroot (hd0,0)kernel /boot/kernel root=/dev/md3' > /boot/grub/grub.conf
echo 'root (hd0,0)
setup (hd0)root (hd1,0)setup (hd1)quit' | grub
Zugriff auf unseren Server wollen wir per SSH erhalten. Dazu verwenden wir den schlanken dropbear.
# SSHemerge -v dropbearsed -i -e 's/DROPBEAR_OPTS.*/DROPBEAR_OPTS="-p 9112 -g"/' /etc/conf.d/dropbear
rc-update add dropbear default
Anschließend richten wir noch die Firewall ein:
# Firewallvim /etc/netfilter
echo '#!/sbin/runscript
# Copyright 1999-2006 Gentoo Foundation# Distributed under the terms of the GNU General Public License v2# $Header: $depend() {need net}start() {#bash /etc/netfilter.shiptables-restore < /etc/netfilterip6tables-restore < /etc/netfilter6}#stop() {##}#restart() {##}' > /etc/init.d/netfilter
chmod +x /etc/init.d/netfilter
rc-update add netfilter default
Geschafft! Nun können wir in unser neues System booten.
# REBOOTreboot
Sobald der Server hochgefahren ist, machen wir noch ein paar Schönheitskorrekturen:
# Useful Stuffemerge -v autounmask screen ethtool iptables traceroute bind-tools
# Localeecho 'de_DE.UTF-8 UTF-8' >> /etc/locale.gen
locale-gen
echo 'LANG="de_DE.UTF-8"
LC_COLLATE="C"' > /etc/env.d/02locale
env-update && source /etc/profile
# Make Optionssed -i -e 's/CFLAGS.*/CFLAGS="-march=k8 -O2 -pipe"/' /etc/make.conf
echo 'ACCEPT_LICENSE="*"' >> /etc/make.conf
# Speed up portageemerge -v pysqliteecho 'portdbapi.auxdbmodule = cache.sqlite.database' >> /etc/portage/modules
echo '# Portage w/ SQLite
FEATURES="${FEATURES} metadata-transfer"' >> /etc/make.conf
rm -rf /var/cache/edb/dep
emerge --metadata# NTPemerge -v ntp/etc/init.d/ntpd start
rc-update add ntpd default
- Blog von timogoebel
- Anmelden um Kommentare zu schreiben