2024. március 29., péntek

Gyorskeresés

Gentoo blog - Telepítés - Második rész

Írta: |

[ ÚJ BEJEGYZÉS ]

Alap rendszer telepítése

Lassan belefoghatunk a tényleges telepítésbe, előtte már csak néhány beállítani való maradt. A mirrorselect nevű programmal például a preferált tükörszervereket választhatjuk ki, és írathatjuk bele a make.conf-ba. Ezzel egy egyszerű menüs felületen választhatjuk ki a nekünk megfelelőket, a program kimenete pedig azok a sorok lesznek, amiket a fájlba kell írni, ezt egyből bele is irányítjuk. Ez fogja meghatározni, hogy amikor az emerge paranccsal (ez kb megfelel az apt-get-nek debian alapú, és az urpmi-nek red hat alapú disztróknál) telepíteni akarunk egy csomagot, akkor azt melyik szerverről töltse le. Ajánlott több szervert is kijelölni, hogy elosszuk a terhelést köztük.

$ mirrorselect -i -o >> etc/make.conf
(figyeljünk a dupla kacsacsőrre, mert ha csak egyet írunk, felülcsapjuk az előbb beírt változtatásokat.

Hogy biztosítsuk, hogy az internetelérés biztosan működjön a chroot-olt környezetbe lépésünk után is, az eddig eltárolt névszerverek címeit átmentjük a saját rendszerünkbe.

$ cp -L /etc/resolv.conf etc/

Majd a proc és a dev fájlrendszereket mountoljuk át a saját rendszerünkbe.

$ mount -t proc none proc/
$ mount --rbind /dev dev/

Végre elérkezett a pillanat, hogy chrootoljunk a saját rendszerünkbe, amit három lépésben hajtunk végre. Először a gyökér jegyzéket átrakjuk a /mnt/gentoo-ba. Aztán létrehozatjuk a környezeti változókat, majd az új környezetet betöltjük a memóriába. A parancsok közül az utolsó opcionális, ezzel a prompt kinézetét változtatjuk meg, hogy ne felejtsük el, hogy chroot-olt környezetben vagyunk.

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

Végre otthon érezhetjük magunkat. A berendezés viszont még elég szegényes, szóval még nincs itt az ideje hátradőlni. Először a portage-et szinkronizáljuk, vagyis frissítjük a csomaginformációkat.

$ emerge --sync

Hoppá, a sync végén a portage tájékoztatott, hogy olvasnivaló hírek vannak, ezeket érdemes mindig megnézni, én sem teszek másként.

$ eselect news list
(két hírt listáz ki)
$ eselect news read 1
$ eselect news read 2

A kézikönyv szerint érdemes még beállítani a lokálokat, úgyhogy tegyük meg ezt is. Ehhez az /etc/locale.gen fájlt kell módosítani, aztán lefuttatni a locale-gen scriptet.

$ nano -w /etc/locale.gen
en_GB ISO-8859-1
en_GB.UTF-8 UTF-8
hu_HU ISO-8859-2
hu_HU.UTF-8 UTF-8
$ locale-gen

Kernel konfiguráció

A kernel fordítás előtt még egy apró tennivalónk maradt: a timezone beállítása.

$ cp /usr/share/zoneinfo/Europe/Budapest /etc/localtime

Most már tényleg minden készen áll a kernel "fogadására". A gentoo csomagok formájában rendelkezésre bocsátja a kernel forráskódját, de emlékeztem, hogy régebben nem volt így. Mindenesetre itt a parancs, amivel a repóból szedhetjük le.

$ emerge gentoo-sources

Ez a 2.6.39-es kernelt szedte le, nekem viszont a 3.0.1-re fáj a fogam. Úgyhogy úgy döntök, inkább leszedem kézzel. Links-el felgyaloglok a www.kernel.org-ra, és letöltöm a legutóbbi stabil kernel forrást. Ezután bemegyek a /usr/src jegyzékbe, ide kibontom, és a szimbolikus linket is átirányítom rá.

$ cd /usr/src
$ mv /linux-3.0.1.tar.bz2 .
$ tar xvjpf linux-3.0.1.tar.bz2
$ rm -f linux-3.0.1.tar.bz2
$ rm linux
$ ln -s linux-3.0.1/ linux

A kernel beállítását végezhetnénk a genkernel nevű alkalmazással is, amivel állítólag könnyebb, de én mindig a manuális megoldást szoktam választani, ez sem nehéz. Egy egyszerű menüs környezetet fogunk használni a komponensek kiválasztásához.

$ cd linux/
$ make menuconfig

Hogy miket érdemes kiválasztani, vagy kihagyni, arra nem tudnék általános szabályt mondani. Először is, érdemes pontosan ismerni a hardvert amin dolgozunk, ebben segítségünkre lehet az lspci program (a pciutils csomagban van). Amikre érdemes figyelni:

- válasszuk ki a saját processzorunkat (ebben segít a cat /proc/cpuinfo parancs)
- fordítsuk bele az összes fájlrendszert, amit használunk a rendszeren, persze ne modulként, és a /proc fájlrendszert is
- az USB támogatásról se feledkezzünk meg

Szerintem érdemes végigszaladni az egész listán, és kiszedni, amiről tudjuk, hogy sosem fogjuk használni, és belerakni azt, amit igen (de amiben nem vagyunk biztosak, azt inkább ne bolygassuk). Én belefordítom az ipw2200 drivert is modulként, ez a wifimhez fog kelleni. Ha végeztünk, lépjünk ki, és mentsük el a változtatásokat. Most már csak maga a fordítás maradt hátra.

$ make
$ make modules_install

Készen áll a kernelünk. Nem kell aggódni, a kernelt bármikor újra lehet forgatni a fenti módon, ha valamit kifelejtettünk belőle. Velem például előfordult, hogy ext2-re formáztam a boot partíciót, a kernelbe viszont nem fordítottam bele a támogatását. A rendszer persze nem boot-olt be, ami elég kellemetlen tud lenni, de egyszerűen meg lehetett oldani: csak el kellett indítani a rendszert a minimal cd-ről, felmountolni a megfelelő partíciót, újrafordítani a kernelt a megfelelő beállítással, és már ment is.
A lefordított kernel most bzImage néven csücsül a lemezen. Ezt bemásoljuk a boot jegyzékbe. Jól meg kell jegyezni, hogy mi lett a neve a fájlnak, mert ezt kell majd beírni a grub konfigurálásánál is.

$ cp arch/i386/boot/bzImage /boot/kernel-3.0.1

Rendszer konfiguráció

Ennyi izgalom után gondolom számotokra is felüdülés lesz néhány konfigurációs fájlt megírni. Elsőnek például vegyük az fstab-ot. Ez a fájl mondja meg a rendszer számára, hogy mely partíciókat hova mountolja fel a rendszer bootolása során, és milyen módon. Nem egy bonyolult konstrukció, mondhatni self explainatory :). A rendszer csak egy példa fájlt ad, nekünk kell megírni a sajátunkat minden esetben. Először nézzük, hogy nekem hogy néz ki, aztán magyarázok.

$ nano -w /etc/fstab
/dev/sda1 /boot ext3 noauto,noatime 1 2
/dev/sda3 / ext3 noatime 0 1
/dev/sda2 none swap sw 0 0

/dev/cdrom /mnt/cdrom auto noauto,user 0 0

proc /proc proc defaults 0 0
shm /dev/shm tmpfs nodev,nosuid,noexec 0 0

Mint látható, a fájl 6 oszlopból áll. Az elsőben mountolandó eszközt adjuk meg, a másodikban a céljegyzéket, a harmadik a fájlrendszer típusa, a negyedikben opciókat adhatunk meg a mount parancsnak (ezekről a mount manual-jában - man mount - lehet tájékozódni), az ötödik a dump paramétere (nem volt kedvem utána nézni), a hatodik pedig az fsck-nak (file system check) mondja meg, hogy milyen sorrendben ellenőrizze a partíciókat. Figyeljünk oda, hogy a negyedik oszlopban az opciók közötti vessző mellett nincs helyköz... ne is legyen, hisz akkor az utána lévő szöveget már a következő oszlopnak értelmezi, és nem szeretnénk, ha az fstab fájlunkban hiba lenne, higgyétek el.

Térjünk rá a hálózati beállításokra. Először a hostnevet állítjuk be, ami rém egyszerű: a hostname file-ban kell átírni egy változót. Mindenféle domain nevekkel most nem bohóckodunk ha nem haragszotok, nekem semmi szükségem rá egyelőre.

$ nano -w /etc/conf.d/hostname
hostname="hosztnev_vagy_amit_akartok"

Most a netet fogjuk beállítani, ami az én esetemben nem lesz túl bonyolult feladat, hisz még mindig csak dhcp-t akarok használni, a munka oroszlánrészét a routerre hagyom. Ha esetleg zavarna egyeseket a tény, hogy egyszer már beállítottuk a netkapcsolatot a telepítés elején, vegyük észre, hogy akkor csak a telepítő rendszer számára állítottunk, most viszont a már telepített rendszernek kell, amit használni fogunk a gépen. Nos, a dhcp beállítása annyiból áll, hogy a net nevezetű config fájlban megadom a dhcp-t a hálókártyám interfészének.

$ nano -w /etc/conf.d/net
config_eth0="dhcp"

Ezután teszünk róla, hogy a hálózat minden indításkor elinduljon. A gentoo nem csak az init futási szintjeit ismeri (tudjátok, pl az init 0 a kikapcsolt állapot), hanem bevezet saját, nevesített futási szinteket, amihez szolgáltatásokat adhatunk hozzá, amik elindulnak, ha az adott futási szinten vagyunk. Ezek a parancsok a hálózati szolgáltatást adják hozzá a default futási szinthez.

$ cd /etc/init.d
$ ln -s net.lo net.eth0
$ rc-update add net.eth0 default

Még most telepítem a dhcp klienst is.

$ emerge dhcpcd

Már csak néhány alap beállítás van hátra. Megadom a root jelszót, átírom az alapértelmezett billentyűzetkiosztást magyarra (a konzolban a loadkeys paranccsal lehet ezt on-the-fly váltani), és beállítom a hardveres órát is.

$ passwd
$ nano /etc/conf.d/keymaps
keymap="hu"
$ nano /etc/conf.d/hwclock
clock="local"
timezone="Budapest"

Bootloader konfigurálása

Legelőször telepítjük a használni kívánt bootloadert, ami az én esetemben a grub.

$ emerge grub

Amíg települ (úgyis fel kell raknia pár függőséget), egy kis magyarázatot adok a grub-féle jelöléshez. Amikor a grub boot loadert konfiguráljuk, a partíciókra sajátos (de logikus) módon hivatkozunk. Például az első winchester első partíciója így néz ki: (hd0,0). Az első szám a vinyó sorszáma (ha esetleg több is lenne a gépben), a második a partícióé, mindkettő számozása 0-val kezdődik. Így pl ha én a debian rendszerem akarom majd bootolni, ami az sda4-en van, arra (hd0,3)-al tudok hivatkozni.

Akár hiszitek, akár nem, pont mire ezt leírtam, befejeződött a grub telepítése. Ugorjunk is bele a grub.conf-ba. Ebben alapvetően azt a listát írjuk le, amit látni szeretnénk a gép elindításakor. Az alapértelmezetten kiválasztott elem és a várakozási idő beállítása után egyenként megadjuk a menüelemek címét, a bootolandó partíciót, és a betöltendő kernelt. Mint látjátok, már a debian rendszeremet is hozzáadtam a listához.

default 0
timeout 30

title Gentoo Linux (deepconsole)
root (hd0,0)
kernel /boot/kernel-3.0.1 root=/dev/sda1

title Gentoo Linux (rescue)
root (hd0,0)
kernel /boot/kernel-3.0.1 root=/dev/sda1 init=/bin/bb

title Debian Linux
root (hd0,3)
kernel /boot/vmlinuz-2.6.32-5-686 root=/dev/sda4 ro quiet
initrd /boot/initrd.img-2.6.32-5-686

title Debian Linux (rescue)
root (hd0,3)
kernel /boot/vmlinuz-2.6.32-5-686 root=/dev/sda4 ro single
initrd /boot/initrd.img-2.6.32-5-686

Régebben előfordult velem, hogy a minimal rendszer a vinyómat hda-nak nevezte, és én ennek megfelelően töltöttem ki az fstab-ot és a grub.conf-ot is. A kellemetlen az volt, hogy amikor már a saját rendszerem töltődött be, már sda-ként volt ismert (pontosabban nem ismert), így nem tudott bootolni a rendszer (persze könnyen javítható a hiba). Szóval az ilyesmikre ügyeljetek.
A következő dolgunk, hogy a bootloaderünket beleírjuk az MBR-be (master boot record). Ezt könnyedén megtehetjük a grub-install futtatásával, ám előtte még tudatni kell a grubbal a jelenlegi mount sémát.

$ grep -v rootfs /proc/mounts > /etc/mtab
$ grub-install --no-floppy /dev/sda

Elérkezett a várva várt pillanat: újraindítjuk a rendszert, és imádkozunk mindenhez, ami szent. Persze előtte kilépünk a chroot-ból és umountolunk mindent.

$ exit
$ cd /
$ umount -l /mnt/gentoo/dev{/shm,/pts,}
$ umount -l /mnt/gentoo{/boot,/proc,}
$ reboot

Ne felejtsük el kivenni a cd-t, mielőtt újra az bootolna be.

A szüzesség elvesztése: az első kernel pánik

Legelőször is kipróbálom a boot menü összes pontját. Imáink, úgy látszik, nem kerültek meghallgatásra: bármelyik gentoo-t is választom, bepánikol a kernel. A debian-nal sincs minden rendben, elkövettem egy gépelési hibát a grub.conf-ban, így a sima rendszer nem indul el, de a rescue igen. Így most azt töltöm be, és először kijavítom az elgépelést (ezt a procedúrát azt is megteheti, akinek nincs másik rendszere a gépén, a minimal cd betöltésével), ami meg is oldja a problémát, legalább a régi rendszerem működik. Ezután próbálok rájönni, miért is történik kernel panic.

Kernel panic: no syncing: no init found

No, ti rájöttök a hibára? Nekem google barátom segített: a grub.conf-ban a root-nak azt a partíciót kell megadni, ami a gyökérre van mountolva (sda3), nem pedig ami a /boot-ra. Elég láma hiba, beismerem, dehát így tanul az ember. Nem ez az első kernel pánikom, és nem is az utolsó. Gyorsan kijavítom a fájlt a debian rescue módjában, aztán be is töltöm az új rendszert.

Utolsó simítások

Bejelentkezek root felhasználónévvel és a jelszavammal. Persze nem lehet a rendszert állandóan root-ként használni (ne tegyünk már úgy, mintha windows-t használnánk), úgyhogy hozzunk létre egy új felhasználót. Ez rendkívül egyszerűen megtehető a useradd script segítségével. A kapcsolók közül egyedül a -G szorul magyarázatra, ezzel adhatjuk meg, hogy mely csoportokba fog tartozni az adott user. Ettől függ, hogy mikhez lesz joga majdan. A létező csoportokat a groups paranccsal kérhetjük le, de ezekhez később újak is létrejöhetnek, ahogy egyre több programot telepítünk a rendszerre. Utána beállítjuk az új user jelszavát, és pik pak készen is vagyunk a rendszer telepítésével :).

$ useradd -m -G wheel,disk,video -s /bin/bash tobal
$ passwd tobal

Nos, hát ennyi lenne egy nagyon alap gentoo rendszer telepítése. Ezzel egy csak konzolon használható rendszert kaptunk, innen viszont a határ a csillagos ég, olyan rendszert rakunk össze magunknak, amilyet csak akarunk. A blog további részében ezt követhetitek figyelemmel.

Hozzászólások

(#1) sz4blya


sz4blya
csendes tag

Jó lesz ez, köszönjük! :R

Cum Deo Pro Patria Et Libertate. Verje meg a mi Istenünk, aki ezt engedte! | Free life, free people, free internet! *See you, space cowboy!

(#2) Mr.Csizmás


Mr.Csizmás
félisten

címlapra nem küldöd be? szakmai cikket szívesen fogadnak bármikor. :R

"Szólítson csak Cirminek." | B&B XI | 3D nyomtatás Bp és környéke |

(#3) tobal válasza Mr.Csizmás (#2) üzenetére


tobal
tag

Kérték is hogy toljam ki, már beküldtem, engedélyre vár per pill.

További hozzászólások megtekintése...
Copyright © 2000-2024 PROHARDVER Informatikai Kft.