Gentoo
Zpět na hlavní stránku Administrace Unixu.
Obsah
Prečo Gentoo?
- môj dôvod bol, že Gentoo je distribúcia s ktorou som sa chcel naučiť pracovať, nechcel som sa učiť ako je to niekde inde, keď viem, že mňa zaujíma Gentoo
- Gentoo má silný a pohodlný nástroj na inštaláciu nových balíčkov - emerge
- Gentoo má dosť slušnú česko-slovenskú komunitu
Inštalácia
Začiatok je rovnaký ako pri OpenBSD, je potreba skopírovať image a nabootovať. Hneď prvý rozdiel je, že Gentoo nabootuje do X prostredia. Do konzole sa dá prepnúť pomocou Ctrl+Alt+F2, ale pozor po následnom prepnutí späť sa už do X'iek nevrátite! V podstate je jedno, či inštalácia prebehne v konzole alebo v X'kách. Ak máte záujem tak som napísal aj podrobný postup inštalácie. Nainštalujte si server do hubu 50, do hubu 20 a router zapojeny do oboch.
Čo po inštalácii ?
Predpokladám, že máte nainštalované (zatiaľ) tri servre - u mňa sa volali gentoo50, gentoo20 a gentoo5020.
Urobíme si pohodlie
Jeden môj známy vraví: "Uděláme si na hřišti pohodlíčko"
Zmena PS1
Prvá vec, ktorú si ja zvyknem zmeniť na novom systéme je premenná PS1.
Samozrejme chcem mať rovnaké pohodlie pri každom prihlásení, preto oeditujem ~/.profile
vi ~/.profile
takže to čo do premennej PS1 dávam je:
"^[[0;32mroot@gentoo50 ^[[0;34m\w^[[0m\n^[[1;33m$ ^[[0m"
kde ^[ je jeden znak a zadá sa ako ctrl+v a potom Esc a nastavenie PS1 spôsobí, že môj prompt bude vyzerať:
root@gentoo50 ~
$
Čo budem ďalej používať aby bolo vidieť s ktorou mašinou pracujem (za zavináčom je meno stroja).
Nastavenie alias'ov
Kým ešte máme otvorený ~/.profile súbor tak si tam pridám pár aliasov, ktoré mne osobne uľahčujú život.
Pretože vo Windows sa sieť nastavuje pomocou ipconfig, kdežto v linux'e je to ifconfig, tak si urobím alias ipconfig na ifconfig.
alias "ipconfig=ifconfig"
Z podobného dôvodu nastavujem aj cd.. na cd .., dokonca ešte skracujem cd .. na ..
alias "cd..=cd .." alias "..=cd .."
Tiež sa mi nechce zakaždým vypisovať príkaz history a preto
alias "h=history"
A preto, že mám rád v príkazovom riadku farbičky, tak ešte nastavujem ls aby používal farby:
alias "ls=ls --color"
Zmena rozlíšenia
Možno mi dáte zapravdu (možno nie), ale mám radšej väčšie rozlíšenie ako malé, petože sa tam vlezie viac informácií, preto si rozlíšenie zmením.
Robí sa to v konfiguráku pre grub, past'nem sem výpis pred a po zmene:
Pred (ak vás výpis takto nevyzerá, hlavne ak tam nemáte riadok začínajúci initrd, tak skúste urobiť reboot):
POZOR riadky začínajúce kernel a initrd sú vždy jeden riadok
root@gentoo50 ~
$ cat /boot/grub/grub.conf
default 0
timeout 30
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
title=Gentoo linux
root (hd0,2)
kernel /boot/kernel-genkernel-x86-2.6.17-gentoo-r7 root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/sda3 doscsi
initrd /boot/initramfs-genkernel-x86-2.6.17-gentoo-r7
Title si môžete upraviť ako chcete - pri štarte Vám to potom dovolí si vybrať. Ja odporúčam nechať tam zatiaľ obe verzie, pretože keby ste sa uklepli, tak by ste už asi nenabootovali, aj po tom čo to odladíte tak je rozumné to tam nechať, akurát zmeniť default na 1.
Čiže to treba upraviť tak aby to po úprave vyzeralo takto (vga=0x303 je 800x600 vga=0x305 je 1024x756, viac možností):
root@gentoo50 ~
$ cat /boot/grub/grub.conf
default 0
timeout 30
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
title=Gentoo linux
root (hd0,2)
kernel /boot/kernel-genkernel-x86-2.6.17-gentoo-r7 root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/sda3 doscsi
initrd /boot/initramfs-genkernel-x86-2.6.17-gentoo-r7
title=Gentoo linux (framebuffer)
root (hd0,2)
kernel /boot/kernel-genkernel-x86-2.6.17-gentoo-r7 root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/sda3 doscsi video=vesafb:ywrap,mtrr vga=0x303
initrd /boot/initramfs-genkernel-x86-2.6.17-gentoo-r7
Zmena timeout'u pre grub
Nakoľko to občas budeme musieť otočiť je rozumné zmeniť timeout pre grub.
Grub je bootloader - dá sa pomocou toho zariadiť to, keď sa pri štarte systému chcete rozhodnúť či nabootujete Windows alebo Linux (alebo rôzne distribúcie Linuxu atď.), preto pri štarte čaká na Vašu voľbu a čaká 30 sekúnd, zmeníte to takto:
root@gentoo50 ~
$ vi /boot/grub/grub.conf
zmeniť riadok
timeout 30
na menšiu hodnotu (ja dávam 2 sekundy)
Nastavenie siete
Pretože sme pri inštalácii neinštalovali sieť je potreba urobiť to teraz.
Ako na tom sme zistíme príkazom ifconfig
root@gentoo50 ~
$ ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
...
Musíme nahodiť sieťovku...
root@gentoo50 ~
$ ifconfig eth0 up
...a nastaviť IP adresu (samozrejme si IP nastavte ako potrebujete)
root@gentoo50 ~
$ ifconfig eth0 192.168.50.38 netmask 255.255.255.0
Keď potom opäť spustíme ifconfig mali by sme vidieť niečo ako:
root@gentoo50 ~
$ ifconfig
eth0 Link encap:Ethernet ...
inet addr:192.168.50.38 Bcast:192.168.50.255 Mask:255.255.255.0
...
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
...
Ak ste pripojený na hub 50 tak sa dostaneme aj na internet, stačí ako gateway nastaviť 192.168.50.2:
root@gentoo50 ~
$ route default gw 192.168.50.2
Teraz by ste bez problémov mali ping'núť google
root@gentoo50 ~
$ ping google.com
Ak ste úspešne ping'li google tak gratulujem, všetko sa prebehlo dobre.
!!! pozor google ping'nete iba zo stroja, ktorý má prístup na internet, čo sú zatiaľ iba stroje pichnuté do hubu 50. Ak chcete vedieť či ste úspešne nastavili sieť na iných strojoch skúšajte ping'ať stroje, ktoré by ste mali vidieť = stroje, ktoré sú v rovnakej sieti.
Príklad:
- Ja som najpr inštaloval gentoo50, ktoré keďže je pichnuté v hube 50, tak google ping'ne.
- Potom som inštaloval router medzi sieťou 50 a 20, keďže router je jednou sieťoukou pichnutý do hubu 50 tak tiež ping'ne google
- Ako další som inštaloval stroj z 20kovej siete gentoo20 a ten už sa na internet nedopingá, preto môžete nastavenie siete kontrolovať iba pinganím na niečo čo v sieti máte, teda gentoo5020
Uloženie nastavenia siete
Problém je, že keď teraz reboot'nete, tak budete musieť sieť nastavovať znovu. Aby vaše nastavenie ostalo trvalé tak oeditujte súbor /etc/conf.d/net, tak aby obsahoval toto:
root@gentoo50 ~
$ cat /etc/conf.d/net
config_eth0=( "192.168.50.38 netmask 255.255.255.0" )
routes_eth0=( "default gw 192.168.50.2" )
Pre gentoo5020 s dvomi sieťovkami to bude:
root@gentoo50 ~
$ cat /etc/conf.d/net
config_eth0=( "192.168.50.58 netmask 255.255.255.0" )
routes_eth0=( "default gw 192.168.50.2" )
config_eth1=( "192.168.20.58 netmask 255.255.255.0" )
To bolo iba nastavenie, ešte musíte zariadiť to, že pri štarte systému sa bude štartovať aj sieť, na to slúži príkaz rc-update.
root@gentoo50 ~
$ rc-update add net.eth0 default
Funfuje to tak, že v /etc/init.d/ sú tzv. runscript'y a vy tam máte pripravený net.eth0 a pomocou rc-update nastavíte, že sa bude pri štarte systému spúšťať.
Ak to už máte nastavené skúste si zhodiť sieť...
root@gentoo50 ~
$ ifconfig eth0 down
a naštartovať ju presne tak, ako sa to bude diať pri štarte systému
root@gentoo50 ~
$ /etc/init.d/net.eth0 start
Keď to chcete urobiť pre eth1, zisíte, že máte menší problém - nemáte script pre eth1.
To sa vyrieši jednoducho, nemusíte kopírovať net.eth0 na net.eth1, stačí urobiť link pomocou ln
root@gentoo50 ~
$ ln /etc/init.d/net.eth0 /etc/init.d/net.eth1
a potom už len jednoducho zariadiť aby sa pri štarte spúšťal aj skript net.eth1
root@gentoo50 ~
$ rc-update add net.eth1 default
Inštalácia ďalších balíčkov
Samozrejme sa pri inštalácii systému nenainštaluje všetok potrebný software, ktorý by sa kedy hodil. V gentoo na to používa utilita emerge.
Nájdenie balíčka
Pretože budeme občas niečo potrebovať emerge'ovať, tak si emerge'nem utilitu mirrorselect, ktorá slúži na výber mirror servrov pre gentoo (čo v našom prípade budeme chcieť Európske).
Aby som ukázal ako môžete nejaký balíčak aj nájsť, tak si to hneď aj vyskúšame pri mirrorselect'e. Slúži k tomu voľba --search, ktorá vyhľadáva v menách balíčkov, možno by sa hodila možnosť vyhľadávať v popisoch, k tomu slúži voľba --searchdesc.
root@gentoo50 ~
$ emerge --search wget
Inštalácia balíčka
Ono to (typicky) nájde niekoľko balíčkov a podľa popisu si ľahko vyberiete to čo nás zaujíma. Aby som ukázal, to že keď to nájde viac balíčkou, ako si vyberiete ten svoj, tak zadám plné meno balíčka.
root@gentoo50 ~
$ emerge app-portage/mirrorselect
Nájdenie závislostí
Keď chcete vedieť, čo všetko sa bude inštalovať tak môžete použiť príkaz emerge -av balíček
Aktualizácia systému
Je pochopiteľné, že CD z ktorého boli VPC inštalované nebude na veky aktuálne a preto náš systém zaktualizujeme
root@gentoo5020 ~
$ emerge-webrsync
Po dokončení Vám to napíše, že strom Portage bol aktualizovaný a že je potreba urobiť emerge portage, tak to urobíme ;-)
root@gentoo5020 ~
$ emerge portage
NAT
Čo je cieľom ?
Možno ste si všimli, zatiaľ som sa servru gentoo20 nevenoval, aj keď dúfam, že ho nainštalovaný máte.
Problém, ktorý máme je, že zo servru gentoo20 sa nedostaneme ďalej, po pridaní smerovania zatiaľ maximálne tak na druhý sieťový interface servra gentoo5020. Aby sme sa dostali ešte ďalej tak musíme vytvoriť NAT:
Prvý krok je ľahký - nainštalovať iptables na servri gentoo5020.
root@gentoo5020 ~
$ emerge iptables
Následne je potreba nastaviť iptables a to tak, že povolíme forwarding:
root@gentoo5020 ~
$ iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
a ešte povoliť aj forwardovanie v kerneli:
root@gentoo5020 ~
$ echo 1 > /proc/sys/net/ipv4/cong/all/forwarding
Prispôsobenie si kernelu
Ak ste si to skúsili spraviť tak ste asi zlyhali už pri iptables (napísal som to tak schválne, aby ste sa niečo naučili ;-).
Náš kernel najprv musí IP tabuľky podporovať. Keďže sme inštalovali systém z live CD, tak si budeme najprv musieť stiahnuť zdrojáky
root@gentoo5020 ~
$ emerge gentoo-sources
Keď už máme zdrojáky gentoo, tak si prispôsobíme kernel (zapneme podporu smerovacích tabuliek) a zkompilujeme ho. Tu sa ľudia často zľaknú a pri tom o nič zložité neide
Vlezieme do adresára /usr/src/linux a spustíme make menuconfig
root@gentoo5020 ~
$ cd /usr/src/linux
root@gentoo5020 /usr/usr/linux
$ make menuconfig
Objaví sa "grafické" rozrhanie v ktorom si zvolíme podporu nových vecí
Zvolíme si:
Networking ---> Networking options ---> [*] Network packet filtering (replaces ipchains) ---> Core netfilter configuration ---> <*> Netfilter Xtables support (required for ip_tables) IP: Netfilter configuration ---> <*> Connection tracking (required for masq/NAT) <M> IP tables support (required for filtering/masq/NAT) <M> Full NAT <M> MASQUERADE target support Device drivers ---> Network device suport ---> Ethernet (10 or 100Mbit) ---> <M> AMD PCnet32 PCI support
Zkompiluje jadro:
root@gentoo5020 /usr/usr/linux
$ make && make modules_install
Prvá kompilácia trochu trvá (ale nie tak ako emerge-webrsync), keď to potom kompilujete ešte niekoľko krát tak už to tak netrvá.
Je potreba nájsť všetky moduly, ktoré boli práve skompilované
root@gentoo5020 /usr/usr/linux
$ find /lib/modules/2.6.19-gentoo-r5 find -type f -iname '*.o' -or -iname '*.ko'
Kde 2.6.19-gentoo-r5 je jadro, ktoré práve používate.
To aké používate zistíte pomocou príkazu eselect kernel list, v mojom prípade:
root@gentoo5020 /usr/usr/linux
$ eselect kernel list
Available kernel symlink targets:
[1] linux-2.6.19-gentoo-r5
Ak vám to vypísalo nejaké moduly, tak ich treba zapísať do súboru /etc/modules.autoload.d/kernel-2.6, ja to robím práve použitím toho find'u a to tak, že výstup presmerujem do tohoto súboru, pozor na to, že je potreba to potom osekať a cestu na začiatku a koncovku na konci !!!
Stačí skopírovať bzImage a rebootnuť, to že je to váš bzImage, zistíte napr. podľa času.
root@gentoo5020 /usr/usr/linux
$ cp arch/i386/boot/bzImage /boot/kernel-x86-2.6.19-gentoo-r5
Ak zmeníte meno, tak je nutné ho zmeniť aj v konfiguráku pre grub (/boot/grub/grub.conf) inak nenabootujete !!!
Mne to vypísalo moduly
/lib/modules/2.6.19-gentoo-r5/kernel/net/ipv4/netfilter/ip_tables /lib/modules/2.6.19-gentoo-r5/kernel/net/ipv4/netfilter/ip_nat /lib/modules/2.6.19-gentoo-r5/kernel/net/ipv4/netfilter/ipt_MASQUERADE /lib/modules/2.6.19-gentoo-r5/kernel/net/ipv4/netfilter/iptables_nat /lib/modules/2.6.19-gentoo-r5/kernel/net/netfilter/x_tables /lib/modules/2.6.19-gentoo-r5/kernel/net/netfilter/xt_tcpudp /lib/modules/2.6.19-gentoo-r5/kernel/drivers/net/pcnet32.ko
preto do súboru /etc/modules.autoload.d/kernel-2.6 napíšem
ip_tables ip_nat ipt_MASQUERADE iptable_nat x_tables xt_tcpudp pcnet32
Môžete moduly skúsiť hneď naloadovať pomocou modprobe, tak napr. sieťovku (všetky naloadovať nep§jde, to nevadí, spôsobené je to tým, že na to ešte nemáme pripravený kernel):
root@gentoo5020 /usr/usr/linux
$ modprobe pcnet32
Umožnenie emerge pre ostatné servre
Gentoo linuxu sa niekedy vyčíta, že bez netu sa používať nedá, je to preto, že emerge hľadá balíčky práve na internete.
Vytrikujem to tak, aby nám stačilo pripojenie so servra gentoo5020 (inšpiráciu som čerpal v návode Práca s Gentoo Linuxom v offline prostredí).
Stiahnutie a konfigrácia apache
Najprv stiahnem HTTP server - čo iné ako apache (lighttpd vôbec nepoznám).
root@gentoo5020 ~
$ emerge net-www/apache
Apache v podstate nie je potreba konfigurovať, pre naše účely postačí defaultná konfigurácia, akurát aby prebehol emerge-webrsync, je potreba stiahnuť aktuálny snapshot, napr. z Brnenského mirroru do adresára http servra (wget budete musieť najprv emerge'núť ;-)
Všimnite si, že v mene súboru je dátum, takže stiahnite ten najnovší, okrem toho je dobré stiahnuť aj kontrolný súčet.
root@gentoo5020 ~
$ cd /var/www/localhost/httpdocs/snapshots
root@gentoo5020 /var/www/localhost/httpdocs/snapshots
$ wget ftp://ftp.fi.muni.cz/pub/linux/gentoo/snapshots/portage-20070406.tar.bz2
root@gentoo5020 /var/www/localhost/httpdocs/snapshots
$ wget ftp://ftp.fi.muni.cz/pub/linux/gentoo/snapshots/portage-20070406.tar.bz2.md5sum
Teraz už len stačí nahodiť apache:
root@gentoo5020 ~
$ /etc/init.d/apache2 start
Synchronizácia proti nášmu apachu
Predtým ako hneď skúsite emerge-webrsync, asi chcete skúsiť, či je to všetko pripravené. Nemáte ani telnet ani nič (o čom by som vedel) čím sa to dá overiť, preto môžete emerge'núť telnet, ja si radšej emerge'nem elinks (niečo ako links, lynx atď), samozrejme by sa hodilo vytvoriť si akúsi testovaciu stránku.
<html>
<head>
<title> test page </title>
</head>
<body>
Test page: <br>
<a href="./distfiles">distfiles</a> <br>
<a href="./snapshots">snapshots</a> <br>
</body>
</html>
root@gentoo50 ~
$ emerge elinks
root@gentoo50 ~
$ elinks 192.168.50.58
Ak Vám to zobrazilo testovaciu stránku, tak máme vystarané, spustíme emerge-webrsync (bude to nejaký čas trvať), jo samozrejme musíme mu povedať že má emerge-webrsync spustiť proti nášmu apachu a preto doplníme (prípadne zmeníme) hodnotu premennej GENTOO_MIRRORS v /etc/make.conf
root@gentoo20 ~
$ cat /etc/make.conf | grep GENTOO_MIRRORS
GENTOO_MIRRORS="http://192.168.50.58"
root@gentoo20 ~
$ emerge-webrsync
NFS
NIS
http://gentoo-wiki.com/HOWTO_Setup_NIS
--Betlista 21:58, 8 Apr 2007 (CEST)