Hogyan: Gentoo kiszolgáló építés I. rész


Azt hiszem viszonylag eleget tapasztaltam Gentoo ügyben ahhoz, hogy az eredeti kézikönyvet felhasználva írhassak egy saját tapasztalatokon alapuló
hogyan-t. Sok helyen támaszkodok persze a dokumentációra (főleg ami a sorrendet illeti), de beleviszem a saját gyakorlati tapasztalatomat is, így egy picit user-közelibben tudom bemutatni a Gentoo-t.

A rendszer telepítése közben az ideális eseteket veszem figyelembe (ahogy pl. VirtualBox-ban.. khmm... elnézést "Sun Virtualizációs Megoldásában" működik), így nem nagyon fogok hibajavító dolgokra kitérni, kivéve persze ha a helyzet megkívánja. Itt szeretném megjegyezni hogy _KEZDO_ Linux használók NE kezdjenek bele Gentoo telepítésébe mert csak megutálják az egészet. Nekik az Ubuntu való, hiszen az gyors is, szép is, mindent (na jó, majdnem mindent :)) felismer. Mi most Gentoo-t kiszolgáló célra telepítünk. Ha valakiben felmerülne a kérdés, hogy miért nem Ubuntut telepítünk kiszolgálóra, akkor azt mondom, hogy az Ubuntu egy nagyon jó rendszer, de én szeretem pontosan azokat a programokat a rendszeremen tudni amiket akarok, se többet se kevesebbet. Az Ubuntu nagyon sok mindent felrak, ami megkönnyíti a használatot (így a felhasználó / adminisztrátor életét), de a kiszolgálóknak nem a felhasználó barátság a lényege, hanem a gyorsaság és a megbízhatóság (ezzel nem azt mondom hogy az Ubuntu lassú és megbízhatatlan, hanem azt hogy a Gentoo a logikája miatt gyorsabb és a kevesebb telepített alkalmazás miatt kissebb a hibalehetőség).

No de elég a fecsegésből, kezdjük a gyakorlatot!

# Telepítő beszerzése

A telepítéshez Gentoo Mini install CD-t fogjuk használni. Hogy miért? Mert kicsi (ugye mini), mert van rajta egy szépen felkészített alap rendszer és mert én is így tanultam :)) A telepítő CD letölthető a Gentoo.org-ról.

# Telepítés / login

A telepítő médiumról való boot után kapunk egy shell-t. A legkényelmesebb - és gyorsabb - ha inkább SSH-n keresztül érjük el a cél gépet, mint előtte ülve pötyögünk mert sokkal gyorsabb így és a fordítás sem 1-2 perc.

Előszőr is adjunk egy jelszót az automatikusan bejelentkezett root-nak a passwd paranccsal, majd indítsuk el az SSH-t amit az /etc/init.d/sshd start paranccsal kelthetünk életre. Ezután már be tudunk loginolni a liveCD-re rootként (ifconfig-al kideríthető az IP).

# Telepítés / HDD előkészítése

Boot partíció: 32MB
Swap 512MB-ot javasol a hivatalos dokumentáció, ez a minimum. Ennél kevesebbet nem érdemes, mert ha véletlenül elfogyna a RAM, akkor a cserehely lesz ram-ként használva és ha ez elfogyik akkor a rendszer hosszú percekre megáll, ez pedig egy kiszolgálónál végzetes, mondjuk már az sem előnyös, ha Swappol, de legalább megy.

A maradék hely lehet a rendszernek. Aki úgy kívánja, még a /tmp -t átrakhatja máshova, de igazából lényegtelen most.

A felismert lemezeket kérdezzük le:

livecd ~ # cat /proc/partitions
major minor #blocks name
7 0 55328 loop0
3 0 8388608 hda

Tehát teljesen üres a lemezünk. Partícionáljük meg (egyértelmű felület):

cfdisk /dev/hda

Partícionálás után így néz ki a partíciós tábla:

livecd ~ # cat /proc/partitions
major minor #blocks name

7 0 55328 loop0
3 0 8388608 hda
3 1 31216 hda1 #boot
3 2 499968 hda2 #swap
3 3 7857360 hda3 #rendszer

Most formázzuk meg őket! Alapértlmezetten a boot-nak ext2-t, a rendszernek pedig ext3-at javasol a kézikönyv. Ez nekünk tökéletes.

mke2fs /dev/hda1 #boot formázása
mkswap /dev/hda2 #swap beállítása
mke2fs /dev/hda3 -j # rendszer formázása -j = journaling -> naplózás engedélyezése -> ext3 :)

Most kapcsoljuk be a Swap-ot:

livecd ~ # swapon -a

Az újonnan létrehozott partíciókat csatoljuk a /mnt/gentoo alá így:

Rendszerpartíció:
mount /dev/hda3 /mnt/gentoo

Boot partíció:
mkdir /mnt/gentoo/boot # létrehozzuk a boot könyvtárat a rendszerben
mount /dev/hda1 /mnt/gentoo/boot # csatoljuk a boot partíciót a létrehozott könyvtárba

Ezzel készen is vagyunk a telepítés első negyedével, következzen az alap rendszer letöltése és telepítése.

# Telepítés / Alap rendszer telepítése

Kérdezzük le a rendszerórát:

livecd ~ # date
Thu Apr 9 12:49:59 UTC 2009

Ha nem lenne helyes, akkor MMDDhhmmYYYY formátumban beadagolható neki az új idő.

# Töltsük le az alap rendszert:

Abból indultam ki hogy minden jó, tehát működik a hálózat, ergo tudsz tölteni CD képeket az internetről. Ha nem, akkor másik gépről áthozhatod erre a gépre képeket.

Rengeteg Gentoo tükör található az interneten, többek között magyar is. A cikk írásakor valamiért nem volt elérhető a helyi, így egy közeli, német tükröt használtam a letöltéshez.

Most jött el a pillanat, hogy eldöntsük: Maradunk a jó öreg 32 bites rendszernél, vagy - kompatibilis processzor lévén - 64 bites Gentoo-t telepítünk. Én 32 biteset telepítek, de elméletileg a 64 bites rendszernek is ugyanez a telepítési menete [fixme].

# Lépjünk be a /mnt/gentoo könyvtárba:
cd /mnt/gentoo

# Majd töltsük le az alap rendszert:
wget -c http://de-mirror.org/distro/gentoo/releases/x86/2008.0/stages/stage3-i68... # -c azért kell, ha megszakadna, akkor emberek révén elfelejthetjük a -c kapcsolót a wget után írni, így előrről kezdi a letöltést ami ugye idő.

# Majd az ellenőrző össuegeket tartalmazó állományt:
wget http://de-mirror.org/distro/gentoo/releases/x86/2008.0/stages/stage3-i68...

# És hasonlítsuk össze a kettőt:
md5sum -c stage3-i686-2008.0.tar.bz2.DIGESTS

# Minden jó, ha a kimenet ELSŐ sora ez:
stage3-i686-2008.0.tar.bz2: OK

# Majd csomagoljuk ki:
tar xjpf stage3-*.tar.bz2

# Majd ugyanezt játszuk el a portage-val (szoftvertár) is:

wget -c http://de-mirror.org/distro/gentoo/snapshots/portage-latest.tar.bz2
wget http://de-mirror.org/distro/gentoo/snapshots/portage-latest.tar.bz2.md5sum
md5sum -c portage-latest.tar.bz2.md5sum
tar xjf /mnt/gentoo/portage-latest.tar.bz2 -C /mnt/gentoo/usr

Végre, kezd kialakulni a rendszer "alakja" :)

# Telepítés / Fordítási beállítások

A Gentoo nagy előnye, hogy az összes GCC (GNU C Complier && GNU C Fordító) által támogatott processzor arhitektúrára telepíthetjük a rendszert. Érdemes, a telepítéskor a lehető legbiztonságosabb beállításokat használni, később változtatható. Igaz, idő míg az egész rendszer újrafordul, de telepítés közben jóval macerásabb egy elrontott érték miatt vesződni.

Az összes fordítási beállítást a /etc/make.conf állományban lehet megtalálni.

# Nézzük meg, hogyan is néz ki:

CHOST="i686-pc-linux-gnu" # Fordítandó rendszer arhítektúrája
CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer" # Processzor specifikus beállítások
CXXFLAGS="${CFLAGS}"

Ez Pentium DualCore -ra egy biztonságos beállítás. A processzorodhoz _biztosan_ működő beállításokat itt találod meg.

A USE flag-ek határozzák meg, hogy a különböző programok milyen opciókkal forduljanak, pl. nem akarsz IPv6 támogatást (mert nincs elérésed) akkor felesleges fordítási idő (és program méret növekedés) a rendszerben, így kilökhető. Egy szerverre továbbá felesleges X kiszolgáló is, így azt is ki lehet lőni. Az én use flagjeim-em így néznek ki:

USE="acpi apache2 php mysql usb mmx sse syslog curl xml -X -ipv6 -cups -berkdb"

Tehát ahol csak lehet a következő programok támogatását akarom a többi programba integrálni:
apache, php, mysql, syslog, curl, xml

És amiket nem:
X, cups, berkdb

Továbbá ha lehet, a következő processzor utaskészletek szerinti optimalizálást is szeretném (biztosan megy):
mmx, sse

Illetve USB támogatást:
usb

Azt hiszem érthető :)

# Tovább haladva megadhatjuk a nyelvet:

LINGUAS="hu"

# Megadjuk a fordítási szálakat. Ez a kapcsoló sok esetben hatástalan, vagy nem érezzük a hátását. Azt javasolják -j$processzor_szam+1 értéke legyen, de vitatott. Részemről marad a mag / -j felosztás

MAKEOPTS="-j2"

# Beviteli eszközök:

INPUT_DEVICES="evdev keyboard synaptics"

# Párhuzamos letöltés és fordítás engedélyezése:

FEATURES="parallel-fetch ccache"

# Tükrök listája:

GENTOO_MIRRORS="ftp://gentoo.inode.at/source/ http://gentoo.supp.name/ http://gentoo.inode.at/ http://gentoo.inf.elte.hu/ http://gentoo.supp.name/ ftp://gentoo.inode.at/source/ http://gentoo.ITDNet.net/gentoo http://ftp.gentoo.bg/ ftp://pandemonium.tiscali.de/pub/gentoo/"

Ezzel kész is vagyunk az alap rendszer fordítójának a konfigurálásával.

# Telepítés / Új rendszer élesztése

Ha jól megnézzük, van egy majdnem működő rendszerünk, csak néhány apróság mint a kernel vagy a grub hiányzik hozzá :)

A rendszert chroot-olva fogjuk használni. Ez azt jelenti hogy pár dolgot fogunk már csak a LiveCD-ről használni, minden más olyan lesz mint az éles rendszeren.

# Másoljuk át a névszerver adatokat:
cp -L /etc/resolv.conf /mnt/gentoo/etc/

# Majd csatoljuk a /proc és a /dev könyvtárakat, hogy a live kernel és a még csak félig élő rendszer között kapcsolatot teremtsünk:
mount -t proc none /mnt/gentoo/proc
mount -o bind /dev /mnt/gentoo/dev

# Most pedig ha úgy tetszik lépjünk be az új rendszerbe. Innentől kezdve minden olyan mint amilyen a kész Gentoo-ban lesz, tehát minden a helyén van, így a programokat is úgy használhatjuk ahogy megszoktuk.

chroot /mnt/gentoo /bin/bash
env-update
source /etc/profile
export PS1="(chroot) $PS1"

# Most pedig frissítsük a szoftverkészletet
emerge --sync

# Most pedig a portage-t
emerge portage

# Állítsuk be rendszerünk nyelvét:
nano -val adjunk egy új sort a /etc/locale.gen állományhoz:
hu_HU UTF-8

# Majd érvényesítsük a beállítást:
locale-gen

# Telepítés / Kernel konfigurálás

# Állítsuk be az időzónát:
cp usr/share/zoneinfo/Europe/Budapest /etc/localtime

# Kernel forrás letöltése:

# Választhatunk: Vagy az általános gentoo-sources csomagot töltjük le, ami igazából egy általános célú kernel, vagy a hardened-sources csomagot, ami sok, biztonsággal kapcsolatos foltot (patch) is tartalmaz, pl. SeLinux.

emerge hardened-sources

# Kernel fordítása:

# A rendszer lelke a kernel. Ennek a helyes beállítása a legfontosabb dolog. Most összekötjük a kellemeset a hasznossal, genkernellel fordítunk, de testreszabjuk a kernelt a menuconfiggal, így leegyszerüsödik a fordítás, de olyan kernelünk lesz amilyet megálmodtunk.

# genkernel fordítása
emerge genkernel

# Genkernel lefordítja a menuconfig-ot, majd a konfigurálás után a kernelt mindenestül.
genkernel --menuconfig all

# Telepítés / Rendszer beállítása

Gratulálok, sikeresen lefordítottad a kerneled!

#Most következzen az Fstab beállítása. Az Fstab mondja meg, hogy mit és hova csatoljon a rendszer indításkor.

Eszköz Csatolási pont FS Kapcsolók
/dev/hda1 /boot ext2 noauto,noatime 1 2
/dev/hda3 / ext3 noatime 0 1
/dev/hda2 none swap sw 0 0

#Gépnév beállítása:
nano /etc/conf.d/hostname

#Domain név beállítása:
nano /etc/conf.d/net

#Hálózat beállítása:

# Ha üresen hagyod vagy a config_eth0=( "dhcp" ) sort illeszted be, akkor DHCP-től kapod az IP-t:
nano /etc/conf.d/net

#Egyéb esetben konfigurálni kell így:

config_eth0=( "192.168.0.2 netmask 255.255.255.0 brd 192.168.0.255" )

#Ahol az eth0 a hálózati csatoló neve és az 192.168.0.2 a gép neve.

#Hálózat indítása a boot során:
rc-update add net.eth0 default

#A helyi háló gépeinek nevei és címei ha szükséges a /etc/hosts fájlba kerüljenek

#!! FONTOS! Rendszergazda jelszó beállítása !!
passwd

Billentyűzet kiosztás beállítása az
nano /etc/conf.d/keymaps
KEYMAP="hu"

# Időzóna beállítása:
/etc/conf.d/clock állomány Timezone sorát írjuk át a nekünk megfelelőre pl. TIMEZONE="Europe/Budapest"

Már majdnem készen vagyunk! :)

# Telepítés / rendszerpogramok telepítése

#Talán az első és legfontosabb dolgunk a SysLog telepítése, hiszen ha valami balul üt ki, nem tudjuk miért van mert nincs naplózás:
emerge syslog-ng

#Majd adjuk hozzá a rendszer indításakor indítandó programokhoz:
rc-update add syslog-ng default

#DHCP kliens telepítése:

#Ha a hálózati csatolót DHCP-re konfiguráltuk, akkor szükségünk van egy DHCP kliensre is:
emerge dhcpcd

#Úgy gondolom nem kell magyarázni a cron telepítését:
emerge vixie-cron

#Szintén adjuk hozzá az automatikusan induló programok listájához:
rc-update add vixie-cron default

#Az SSH-t is adjuk hozzá az automatikusan induló programokhoz:
rc-update add sshd default

# Telepítés / Rendszertöltő

# Lassan az alap rendszer telepítésének a végéhez érünk, mi sem bizonyítja ezt jobban, mint a rendszertöltő telepítése :)
emerge grub

# Szerkesszük a /boot/grub/menu.lst állományt így:

#Alapértelmezetten induló rendszer száma:
default 0
# Ennyi másodperc elteltével automatikusan indítja a default értékben meghatározott sorszámú rendszert.
timeout 30
# Gentoo-s háttér a Grub-hoz :)
splashimage=(hd0,0)/boot/grub/splash.xpm.gz

# Grub-ban megjelenő rendszer neve
title Gentoo Linux 2.6.28-r7
# A boot könyvtár helye a lemezen,partíción
root (hd0,0)
# Kernel elérési útvonala
kernel /boot/kernel-genkernel-x86-2.6.28-hardened-r7 root=/dev/ram0 real_root=/dev/hda3
# Initrd elérési útvonala
initrd /boot/initramfs-genkernel-x86-2.6.28-hardened-r7

# Jelenlegi csatolások megértetése a Grub telepítővel:
grep -v rootfs /proc/mounts > /etc/mtab

# Végül a grub telepítése:
(chroot) livecd / # grub-install --no-floppy /dev/hda
!! Installation finished. No error reported. !!

Ha a fenti sor megvan, akkor baj nem lehet.

# Eszközök lecsatolása és a rendszer újraindítása:
(chroot) livecd / # exit
livecd ~ # umount /mnt/gentoo/boot /mnt/gentoo/dev /mnt/gentoo/proc /mnt/gentoo
livecd ~ # reboot

Broadcast message from root (pts/0) (Thu Apr 9 15:58:15 2009):

The system is going down for reboot NOW!

Hurrá! Gratulálok! Telepítetted az alap rendszert! Nem is volt olyan nehéz.. ugye? :)

gentoo kiszolgáló épités

Eddig a fenti leírás alapján tudtam telepiteni a Gentoo-t de a grub telepítése nekem sem sikerült.
A /boot/grub/menu.lst állományt nem tudom szerkeszteni mert az az üzenet jön, hogy nincs ilyen fájl vagy könyvtár.

A /boot -nak mindenképpen

A /boot -nak mindenképpen csatolva kell lennie, ugyanis oda kerül a Grub.

Többszöri próbálkozás után

Többszöri próbálkozás után sem bootol be a rendszer. A boot-menüben ott a Gentoo.A /boot/grub/menu.lst igy néz ki:

# Config file for GRUB - The GNU GRand Unified Bootloader
/boot/grub/menu.lst

# DEVICE NAME CONVERSIONS
#
# Linux Grub
# -------------------------
# /dev/fd0 (fd0)
/dev/sda (hd0)
# /dev/sdb2 (hd1,1)
# /dev/sda3 (hd0,2)
#

# FRAMEBUFFER RESOLUTION SETTINGS
# +-------------------------------------------------+
# | 640x480 800x600 1024x768 1280x1024
# ----+--------------------------------------------
# 256 | 0x301=769 0x303=771 0x305=773 0x307=775
# 32K | 0x310=784 0x313=787 0x316=790 0x319=793
# 64K | 0x311=785 0x314=788 0x317=791 0x31A=794
# 16M | 0x312=786 0x315=789 0x318=792 0x31B=795
# +-------------------------------------------------+
# for more details and different resolutions see
# http://wiki.archlinux.org/index.php/GRUB#Framebuffer_Resolution

# general configuration:
timeout 5
default 0
color light-blue/black light-cyan/blue

# boot sections follow
# each is implicitly numbered from 0 in the order of appearance below
#
# TIP: If you want a 1024x768 framebuffer, add "vga=773" to your kernel line.
#
#-*

# (0) Arch Linux
title Arch Linux
root (hd0,0)
kernel /vmlinuz26 root=/dev/disk/by-uuid/8d54728f-67c0-47e0-83cc-4bc016bf083e ro
initrd /kernel26.img

# (1) Arch Linux
title Arch Linux Fallback
root (hd0,0)
kernel /vmlinuz26 root=/dev/disk/by-uuid/8d54728f-67c0-47e0-83cc-4bc016bf083e ro
initrd /kernel26-fallback.img

# (2) Gentoo
title Gentoo Linux 2.6.28-r7
root (hd0,0)
kernel /boot/kernel-genkernel-x86-2.6.28-hardened-r7 root=/dev/ram0 real_root=/dev/hdb3
initrd /boot/initramfs-genkernel-x86-2.6.28-hardened-r7

# (3) Windows
#title Windows
#rootnoverify (hd0,0)
#makeactive
#chainloader +1

Hibaüzemet?

A hibaüzenetet le tudnád írni?

Booting "Gentoo Linux"

Booting "Gentoo Linux 2.6.28-r7"

root (hd0,0)
Filesystem type is ext2fs, partition type 0x83
kernel /boot/kernel-genkernel-x86-2.6.28-hardened-r7 root=/dev/ram0 real_root=/dev/hda3

Error 15: File not found

Az Arch és a Gentoo kernele

Az Arch és a Gentoo kernele ugyanott van? Mert azt mondja, hogy nem találja a kernelt. Az Arch bejegyzése nem ad meg alkönyvtárat, a Gentoo-s viszont igen. Itt lehet a kutya elásva. Szerintem a /boot helyett csak a /kernel-genkernel... és az initramfs-genkernel... legyen. Ha együtt vannak, akkor jónak kell lennie.

Eddig a pontig (látszólag)

Eddig a pontig (látszólag) minden rendben megy aztán a grub install-nál mindig ez van:

(chroot) livecd / # grub-install --no-floppy /dev/sda
bash: grub-install: command not found
(chroot) livecd / #

Amit fentebb írtam

Amit fentebb írtam elolvastad? A Grub jó, mert indítja az Arch-ot, csak a konfig nem jó szerintem.