Gentoo

Z ωικι.matfyz.cz
Verze z 7. 6. 2007, 13:56, kterou vytvořil Protron (diskuse | příspěvky) (NAT)

(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Přejít na: navigace, hledání

Zpět na hlavní stránku Administrace Unixu.

Prečo Gentoo?[editovat | editovat zdroj]

  • 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[editovat | editovat zdroj]

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 ?[editovat | editovat zdroj]

Predpokladám, že máte nainštalované (zatiaľ) tri servre - u mňa sa volali gentoo50, gentoo20 a gentoo5020.

Urobíme si pohodlie[editovat | editovat zdroj]

Jeden môj známy vraví: "Uděláme si na hřišti pohodlíčko"

Zmena PS1[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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:

  1. Ja som najpr inštaloval gentoo50, ktoré keďže je pichnuté v hube 50, tak google ping'ne.
  2. 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
  3. 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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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í[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

Čo je cieľom ?[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

Ako rozchodiť NFS (EN)

NIS[editovat | editovat zdroj]

http://gentoo-wiki.com/HOWTO_Setup_NIS

--Betlista 21:58, 8 Apr 2007 (CEST)