Erinevus lehekülje "Gentoo install" redaktsioonide vahel
(→NFS server) |
(→NFS server) |
||
953. rida: | 953. rida: | ||
# /etc/init.d/in.tftpd start | # /etc/init.d/in.tftpd start | ||
# /etc/init.d/nfs start | # /etc/init.d/nfs start | ||
− | |||
− | |||
# rc-update add nfs default | # rc-update add nfs default | ||
− | |||
− | |||
====Alternatiiv kasutades pxegrubi pxelinux.0 asemel==== | ====Alternatiiv kasutades pxegrubi pxelinux.0 asemel==== |
Redaktsioon: 22. september 2011, kell 15:41
Sisukord
- 1 Sissejuhatus
- 2 installiks valmistumine
- 3 Install
- 4 Installi järgsed tegevused
- 5 Tarkvara haldus
- 6 Veel pisemat lisaseadistust
- 7 Eelinstalleeritud Gentoo liigutamine ühest serverist teise
- 8 Gentoo startimine üle võrgu PXE, TFTP ja NFS abil
- 9 Jamadega jamamine
- 10 Lingid
Sissejuhatus
installiks valmistumine
Sisestame installi cdplaadi mille saame muretseda lehelt http://www.gentoo.org/main/en/where.xml
Võimalik on kasutada livecd'd kus boodib ülex xfce graafiline keskkond ning saab kasutada graafilist installerit kuid gentoo põhiline positiivne omadus ongi ju tema võimalikult detailses ning kasutaja enda tehtavas käsurea installis, kus võimalik kogu süsteem äärmiselt minimaalselt ning enda nõudmistele vastavalt häälestada.
Seega boodime masina mida plaanime installida plaadilt üles ja Seadistame ssh ning võrgu
Esimeseks tuleks kontrollida kas tunti kaart ikka ära
# ifconfig -a eth0 Link encap:Ethernet HWaddr 00:21:5a:f5:31:e7 BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Interrupt:39 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
kui võrgus on töötav DHCP server on tõenäoline, et install CD on juba saanud IP automaatselt, kui ei seadistame need käsitsi
# ifconfig eth0 192.168.1.10 netmask 255.255.255.0 # route add default gw 192.168.1.254 # echo "nameserver 192.168.1.1" > /etc/resolv.conf
ning lõpuks seadistame ruudu parooli
# passwd root
Seejärel stardib ssh
# /etc/init.d/sshd start ..genereeritakse võtmed starditakse ssh
..ja nüüd võime minna teise masina taha kus saame võtta mugavalt ette ssh konsooli ning manualid
ehk
$ ssh root@<ip aadress> Welcome to the Gentoo 11 Linux LiveDVD!
Install
Partitsioonide - failisüsteemide loomine ja mountimine
Kuna näites kasutatud masina näol on tegemist HP serveriga siis kettaseadme rajaks on /dev/cciss/c0d0
Esimesena tuleks luua partitsioonid
# fdisk /dev/sda
- p näitab partitsioone
- n teeb uue partisiooni - küsitakse kas tegemist extended või primary partitsiooniga ning algust ja lõppu kus esimese võib jätta nagu ise
pakub ning teise puhul defineerida soovitud suuruse näiteks +512M
- d kustutab partitsiooni
n puhul küsitakse partitsiooni algust ja lõppu
Loome endale kolm partitsiooni /boot / (juur) /var ning swap
- /boot suuruseks 100-300mega (300M)
- swap piisab kahest-neljast gigast igati tänapäevastel masinatel (2048-4096M)
- / suuruseks 15 giga (paneme nii / kui /usr kokku) (15360M)
- /var kakskümmend giga (20480M)
- ülejäänud ruum kõik /srv alla
Partitsioonide skeem peaks tulema siis järgnev
* /dev/sda1 -- /boot * /dev/sda2 -- (swap) * /dev/sda3 -- / * /dev/sda4 -- /var * /dev/sda5 -- /home
Loome partitsioonid
Esiteks loome kolm põhipartitsiooni (boot, swap ja root). Selleks vajutame klahvi n, seejärel p (ehk primaarne partitsioon) trükime 1 (või enter) Kui küsitakse first sector vajutame enterit. Kui küsitakse last sector kirjutame +300M
Teiseks loome swap partitsiooni. Selleks vajutame uuesti klahvi n ja p, trükime 2 (või enter) Kui küsitakse first sector vajutame enterit. Kui küsitakse last sector kirjutame +4G
Kolmandaks loome / ehk root partitsiooni. Selleks vajutame uuesti klahvi n ja p, trükime 3 (või enter) Kui küsitakse first sector vajutame enterit. Kui küsitakse last sector kirjutame +15G
Device Boot Start End Blocks Id System /dev/sda1 2048 616447 307200 83 Linux /dev/sda2 616448 9005055 4194304 83 Linux /dev/sda3 9005056 40462335 15728640 83 Linux
Nüüd on kolm primaarset partitsiooni tehtud. Edasi tuleb luua extended partitsioon. Ajaloolistel
põhjustel on võimalik luua ainult kolm primaarset partitsioone. Soovides luua neid rohkem kui neli
tuleb neljas teha laiendatud.
Selleks vajutame uuesti klahvi n. Valime e (extended) ja vajutame nii last kui first cylinder küsimise peale enter. Mispeale võetakse kasutusse kogu ülejäänud kettaruum.
Device Boot Start End Blocks Id System /dev/sda1 2048 616447 307200 83 Linux /dev/sda2 616448 9005055 4194304 83 Linux /dev/sda3 9005056 40462335 15728640 83 Linux /dev/sda4 40462336 312581807 136059736 5 Extended
Nüüd võime hakata looma loogilisi partitsioone mis tekitatakse laiendatud partitsiooni sisse.
Tekitame /var partitsiooni. Vajutame uuesti n, first sectori peale enter ja last sectorile trükime +20G
Seejärel lisame kogu allesjäänud ruumi /home partisiooniks. Selleks pole vaja teha muud kui vajutada taaskord n ja nii first kui last sectori küsimisele vastata enterivajutusega. Vaslmis
Imetleme kätetööd:
Device Boot Start End Blocks Id System /dev/sda1 2048 616447 307200 83 Linux /dev/sda2 616448 9005055 4194304 83 Linux /dev/sda3 9005056 40462335 15728640 83 Linux /dev/sda4 40462336 312581807 136059736 5 Extended /dev/sda5 40464384 82407423 20971520 83 Linux /dev/sda6 82409472 312581807 115086168 83 Linux
Täiendavad tegevused partitsioonidega
Boot partitsioon tuleb muuta starditavaks. Sellejs vajutame klahvi a ja seejärel number 1. Ehk siis muudame esimese partitsiooni /dev/sda1 bootpartitsiooniks.
Swapi juures tuleb lisaks täpsustada partitsiooni tüüpi. Selleks tuleb vajutada klahvi t, valida teine partitsioon 2 ja trükkida 82 mis seadistab partitsiooni tüübiks "Linux swap"
Device Boot Start End Blocks Id System /dev/sda1 * 2048 616447 307200 83 Linux /dev/sda2 616448 9005055 4194304 82 Linux swap / Solaris /dev/sda3 9005056 40462335 15728640 83 Linux /dev/sda4 40462336 312581807 136059736 5 Extended /dev/sda5 40464384 82407423 20971520 83 Linux /dev/sda6 82409472 312581807 115086168 83 Linux
Kui partitsioonid tehtud tuleb vajutada klahvi w millejärel partitsioonitabel kirjutatakse paika
Ext2 /boot partitsioonile sest Grub veel veidi aeg tagasi sisaldas bugi muult bootimisel
# mke2fs /dev/sda1
Ext3 juurfailisüsteemile, var kettale ja homele
# mke2fs -j /dev/sda3 # mke2fs -j /dev/sda5 # mke2fs -j /dev/sda6
Tekitame swapi
# mkswap /dev/sda2
Ja aktiveerime selle
# swapon /dev/sda2
Moundime tekkinud partitsioonid
# mount /dev/sda3 /mnt/gentoo # mkdir /mnt/gentoo/boot # mkdir /mnt/gentoo/var # mount /dev/sda1 /mnt/gentoo/boot # mount /dev/sda5 /mnt/gentoo/var
stage && portage lahtipakkimine
Stage on Gentoo arendajate poolt kokkupandud tarball mis sisaldab kogu baassüsteemi koos utiliitide ning init skriptidega säästes nii kasutaja nende eraldi tõmbamisest ja kompileerimisest
Tõmbame alla stage mis sisaldab kogu gentoo worldi, ehk kõiki gnu vajalikke utiliite /programme juba kokkupandud paketina (init, bash jms töövahendid)
hetkel värskeima stage 64bitise opsüsteemiga arvuti jaoks leiab kaustast http://distfiles.gentoo.org/releases/amd64/current-stage3/
Paigaldame ka 64 bitise värskeima stage
# cd /mnt/gentoo # wget ftp://ftp.eenet.ee/gentoo/releases/amd64/current-stage3/stage3-amd64-20110908.tar.bz2
Ning pakime stage lahti
# tar xvjpf stage3-*.tar.bz2
Seejärel edasiseks tegutsemiseks tuleb luua lahtipakitud keskkonna ümber chroot. Enne seda aga on vajalik mountida veel proc ning dev
# mount -t proc proc /mnt/gentoo/proc # mount -o bind /dev /mnt/gentoo/dev
Ja kopeerida resolv.conf selleks ,et nimelahendused toimiksid
# cp -L /etc/resolv.conf /mnt/gentoo/etc/
Nüüd võime ehitada enda ümber chroot keskkonna ,et jätkata süsteemi seadistust Chroot on vajalik selleks, et kõik edasised käsud mis anname täidetaks kaustas /mnt/gentoo mitte aga livecd keskkonnas.
# chroot /mnt/gentoo /bin/bash # env-update && source /etc/profile >>> Regenerating /etc/ld.so.cache...
Häälestamine ning lisaprogrammide paigaldus
make.conf on minul selline
CHOST="x86_64-pc-linux-gnu" CFLAGS="-O2 -pipe" CXXFLAGS="${CFLAGS}" MAKEOPTS="-j3" FEATURES="parallel-fetch -userfetch fixpackages" USE="-X -kde -qt -gnome -gtk -gpm -ldap" SYNC="rsync://ftp.eenet.ee/gentoo-portage" GENTOO_MIRRORS="http://ftp.eenet.ee/pub/gentoo/ http://ftp.linux.ee/pub/gentoo/distfiles/ ftp://ftp.belnet.be/mirror/rsync.gentoo.org/gentoo/"
- CHOST on meie masina arhidektuur.
- MAKEOPTS abil seme mitme threadiga kompileeritakse.
- USE abil mis on globaalsed kompileerimise seaded.
- GENTOO_MIRRORS abil defineerime lähimad serverid.
Ning paigaldame värske portsude puu
# emerge --sync
Selle käsu täitmine võtab mõningase aja...jõuab vahepeal kohvi teha
Lokaalid
Kuna oleme eestlased ja sooviks sellest iseärasusest tingituna täpilisi märke näha siis avame faili /etc/locale.gen
ja lisame sinna read
en_US ISO-8859-1 en_US.UTF-8 UTF-8 en_GB.UTF-8 UTF-8 et_EE ISO-8859-1 et_EE.UTF-8 UTF-8
Ajatsooni seadistamine
Et kella peale ei kobisetaks siis ajatsoon korrektseks
# echo 'TIMEZONE="Europe/Tallinn"' >> /etc/conf.d/clock
fstab seadistus
Lisame faili /etc/fstab järgmised read:
/dev/sda1 /boot ext2 noatime 1 2 /dev/sda2 none swap sw 0 0 /dev/sda3 / ext3 noatime 0 1 /dev/sda5 /var ext3 noatime 0 1
võrgu seadistus
Avame võrgu seadistusfaili /etc/conf.d/net
config_eth0=( "192.168.1.20/24" ) routes_eth0=( "default via 192.168.1.254" )
Netmaski võib ka pikalt välja kirjutada
config_eth0="192.168.0.2 netmask 255.255.255.0"
Seejärel tuleb tekitada link
# ln -s /etc/init.d/net.lo /etc/init.d/net.eth0
Kui on veel eth1 ka olemas tuleb see samamoodi linkida.
# rc-update add net.eth0 default * net.eth0 added to runlevel default
Tuleb silmas pidada, et nii tuleb kõik teised täiendavad võrguseadmed samuti lisada default runlevelile näiteks eth1 seade
Teenused toimima
Et ssh stardiks ka peale booti st
rc-update add sshd default * sshd added to runlevel default
Põhimõtteliselt teeb see sama mis ln -vs /etc/init.d/sshd /etc/runlevels/default/
Olulised komponendid on syslog ja cron
# emerge syslog-ng # rc-update add syslog-ng default
# emerge vixie-cron # rc-update add vixie-cron default
Sama käsuga käib üldiselt kõikide teenuste Gentoos vaikimisi startima seadistamine nt rc-update add apache default jne eemaldada saab mingi teenuse käsuga näiteks rc-update del postfix
Ja siis lisaks veel
# emerge gentoolkit
Mis annab süsteemile lisaks equery ja glsa-checki mõlemad väga vajalikud abivahendid
http://www.gentoo.org/doc/en/gentoolkit.xml
Kerneli ehitamine
# emerge gentoo-sources # cd /usr/src/linux # make menuconfig
Kindlasti tuleb vaadata, et ext2 ja ex3 tugi oleks lubatud. Samuti tuleks tähelepanu pöörata ,et võrgu ning ketaste või kettakontrollerite draiverid oleksid sees kuna ilma nendeta on tõenäoline ,et tuleb uuesti livecd bootida ja asuda kernelit tegema, teisi komponente saab paigaldada juba kiiremini. Antud HP juhul tuli kontrollida compaq array suppordi olemasolu
# make && make modules_install
Paigaldamiseks töötab kas käsk
# make install sh /usr/src/linux-2.6.39-gentoo-r3/arch/x86/boot/install.sh 2.6.39-gentoo-r3 arch/x86/boot/bzImage \ System.map "/boot"
Millega paigaldatalse kernel kausta /boot nimega /boot/vmlinuz-2.6.39-gentoo-r3
kuid võib kerneli ka käsitsi paika kopeerida näiteks sarnaselt
# cp arch/x86_64/boot/bzImage /boot/kernel-versioon
või x86 arhidektuuri puhul
# arch/i386/boot/bzImage /boot/kernel-versioon
Selleks ,et kõik arvuti küljes olevad seadmed identifitseerida tuleks paigaldada lspci tarkvara selleks tuleb paigalda pciutils pakett
# emerge sys-apps/pciutils
Kasutamiseks öelda lihtsalt
# lspci 00:00.0 Host bridge: VIA Technologies, Inc. VT8377 [KT400/KT600 AGP] Host Bridge (rev 80) 00:01.0 PCI bridge: VIA Technologies, Inc. VT8237/VX700 PCI Bridge 00:09.0 Ethernet controller: Intel Corporation 82557/8/9/0/1 Ethernet Pro 100 (rev 08) 00:0b.0 Ethernet controller: Intel Corporation 82557/8/9/0/1 Ethernet Pro 100 (rev 08) 00:0c.0 VGA compatible controller: S3 Inc. ViRGE/DX or /GX (rev 01) 00:0f.0 IDE interface: VIA Technologies, Inc. VIA VT6420 SATA RAID Controller (rev 80) 00:0f.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (rev 06) 00:11.0 ISA bridge: VIA Technologies, Inc. VT8237 ISA bridge [KT600/K8T800/K8T890 South] 00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 78)
Abiks on ka lsmod käsk
# lsmod Module Size Used by vzethdev 12288 0 simfs 7900 1 vznetdev 17540 2 vzrst 117652 0 vzcpt 99748 0 tun 14084 2 vzrst,vzcpt vzdquota 37240 1 [permanent] vzmon 24968 5 vzethdev,vznetdev,vzrst,vzcpt vzdev 6664 4 vzethdev,vznetdev,vzdquota,vzmon ipv6 222988 23 vzrst,vzcpt,vzmon ata_generic 8580 0 pata_acpi 7680 0 sata_via 10884 0 libata 133844 3 ata_generic,pata_acpi,sata_via scsi_mod 123260 1 libata i2c_viapro 10772 0 i2c_core 21396 1 i2c_viapro e100 33164 0 via_rhine 23048 0 s3fb 19328 1 mii 8192 2 e100,via_rhine svgalib 11136 1 s3fb ide_cd_mod 30852 0 cdrom 32792 1 ide_cd_mod pcspkr 6272 0 vgastate 11648 1 s3fb button 10000 0
Kui seadmete tuvastamine käib esiti üle jõu võib alguses kasutada genkernelit http://www.gentoo.org/doc/en/genkernel.xml
Bootloaderi paigaldamine
# emerge grub
Loome faili mtab, see fail annab infot mis kettaseamed on hetkel süsteemis mounditud
# grep -v rootfs /proc/mounts > /etc/mtab
Kontrollime, et grubi konfiguratsioonis on seadme mapimine tehtud õigele seadmele ja eemaldame sealt vajadusel fd0 rea ehk flopiketta.
# nano /boot/grub/device.map (hd0) /dev/sda
Näiteks HP serverite puhul peab seadistus olema tehtud selline
(hd0) /dev/cciss/c0d0
Ning stardile grub'i interaktiivse shelli kus muudame ketta bootivaks
# grub --device-map /boot/grub/device.map
Kus boot partitsioon asub
grub> root (hd0,0) root (hd0,0) Filesystem type is ext2fs, partition type 0x83
Installime mbr'i grubi
grub> setup (hd0)
Edasi vajalik ka grubi konfiguratsiooni tekitamine
# nano /boot/grub/grub.conf
timeout 5 default 0 title GNU/Linux root (hd0,0) kernel /boot/vmlinuz-2.6.39-gentoo-r3 root=/dev/sda3
Kui kasutuses HP server siis on root kujul /dev/cciss!c0d0p1
kasutajad ja paroolid süsteemile
# sudo useradd kasutaja # sudo passwd kasutaja
Tekitame kasutaja sest Gentoos ei peeta root kasutajaga otse logimist heaks tooniks, vajalik on luua eraldi kasutaja kellega SU käsuga minna admin useriks, kasutaja peab olema seejuures nagu FreeBSDsgi wheel grupis
# adduser kasutaja # passwd kasutaja # usermod -G wheel kasutaja
Viimaks root parool
# passwd
unmount & reboot!
Installi järgsed tegevused
Peale installi oleks soovitatav kogu world uuesti buildida. Piisab muidugi küll kuid esialgu glsa teatatud vigadega pakettide uuendamisest kuid mõni öö võiks tõsiselt mõelda ka kõige uuesti ehitamisele.
- enne tuleks kindlasti paigaldada gentoolkit mis tekitab revdep käsu
# emerge --update --newuse --deep world # emerge --depclean # revdep-rebuild
ning lõpuks uuendame seadistusfaile
# etc-update
Kui emerge teatab ,et pakett näiteks tavaline editor on maskitud tuleks selle nimi lisada faili /etc/portage/package.unmask
>=app-editor/nano
Või täpselt paketi nimi ja versioon
=dev-lang/ruby-1.9.2_rc2-r1
Ja üritada uuesti tarkvara emergeda
Kui teatatakse ,et masked by keyword nt masked by: ~x86 keyword, siis tuleb faili /etc/portage/package.keywords lisada rida
app-editor/nano **
Seda võib teha automaatselt käsurealt süntaksi alusel
# echo "category/packagename **" >> /etc/portage/package.keywords
Kui veateateks masked by: EAPI 3
Aitab portage nimelise tarkvara uuendamine
# emerge portage
Abi saab üldiselt gentoo enda bugrepordi allikatest http://bugs.gentoo.org/
Gentoo uuendamisel pigem soovitaks siiski pidevat kogu süsteemi rebuildimist vältida ning uuendada aegajalt vaid turvavigadega pakette, järgneva käsuga saab seda kontrollida
# glsa-check -l affected [A] means this GLSA was already applied, [U] means the system is not affected and [N] indicates that the system might be affected.
selleks ,et gentoo iga nädalaselt saadaks teateid turvavigadega pakettidest võib lisada crontabi
40 22 * * 6 /usr/bin/emerge --sync > /dev/null && /usr/bin/glsa-check -m affected
Tarkvara haldus
Soovies näha mis erinevaid tarkvara nt php versioone installida saab aitab käsk
# equery l -p dev-lang/php [ Searching for package 'php' in 'dev-lang' among: ] * installed packages * Portage tree (/usr/portage) [-P-] [ ] dev-lang/php-5.2.9-r2 (5) [-P-] [ ] dev-lang/php-5.2.10 (5) [-P-] [M~] dev-lang/php-5.2.10-r1 (5) [-P-] [M~] dev-lang/php-5.2.10-r2 (5) [-P-] [ ] dev-lang/php-5.2.11 (5)
M~ tähendab, et pakett on maskitud
Pikemalt juttu aadressilt
http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&chap=3
Veel pisemat lisaseadistust
Hostname /etc/conf.d/hostname
HOSTNAME="zoo.loomaaed.ee"
ntpdate käsu saamiseks vaja paigaldada pakett ntp
# emerge ntp
Kui vaja dhcp clienti siis selleks tuleb paigaldada dhcpcd pakett
Teise ip saab võrgukaardile lisada käsuga
# ifconfig eth0:0 192.168.1.45 up
Seejuures on igasuguste võrguseadistuste juures abiks fail /etc/conf.d/net.example
süsteemi info vaatamiseks on head käsud
# grep bogo /proc/cpuinfo bogomips : 4617.99 bogomips : 4592.88 bogomips : 4592.78 bogomips : 4592.77 bogomips : 4588.57 bogomips : 4588.58 bogomips : 4588.56 bogomips : 4588.57
# grep MemTotal /proc/meminfo MemTotal: 8179900 kB
Paigaldame hdparm utiliidi
# emerge hdparm
Testime ketast
# hdparm -tT /dev/sda /dev/cciss/c0d0: Timing cached reads: 2762 MB in 2.00 seconds = 1381.99 MB/sec Timing buffered disk reads: 538 MB in 3.01 seconds = 178.47 MB/sec
inittab sisaldab mõttetuid konsoole, korjame need ära
# sed -i -e 's|^c[2-6]:2345:|#&|' /etc/inittab
TCP syncookie ja suured PIDid failis /etc/sysctl.conf
net.ipv4.tcp_syncookies = 1 kernel.pid_max = 999999
Käsk pwgen tuleb paigaldada pakist pwgen
Eelinstalleeritud Gentoo liigutamine ühest serverist teise
Vahel võib tekkida süsteemiga ikka juhuseid kui otstarbekam on update hoitud süsteemi mitte uuesti nullist paigaldada ning seadistada vaid hoopis kopeerida ümber
Selleks vajalikud sammud
1. bootida uus arvuti mõnelt live cd'lt või rescue plaadilt, Linuxi versioon ei pea olema üldse Gentoo selleks toiminguks
2. Fdiski käsu abil tekitada kettale partitsoonid, neile omakorda failisüsteemid ja mountida nad külge /mnt/boot, /mnt/var ...
3. rsyncida info vanast serverist näiteks sobiks selleks hästi käsk
# rsync -av --numeric-ids -d -H --exclude-from=exclude / root@ip:/mnt/boot/
exclude fail sisaldas minul järgnevaid ridu, üldiselt võib sinna kirjutada kõik mounditud failisüsteemid
/var/ /srv/ /proc/ /dev/
4. fstab faili tekitamine ja vastavalt kettatähitstele ja partitsioonidele kohandamine
5. grubi initsialiseerimine, vt ülespoole gentoo installi kus õpetus kuidas seda teha
6. luua kaust /proc ja /dev ning anda MKDEV käsk, kui kasutatud mitte Gentoo live cd'd siis võib jääda dev sisu poolikuks ning kui süsteem bootides teatab näiteks unable to open initial console, siis aitab käsk
# mknod /dev/console c 5 1
Peale rebooti peaks olema valmis süsteem
Gentoo startimine üle võrgu PXE, TFTP ja NFS abil
- võimalus startida testserver enne production serverit, ja proovida kas nt meilitarkvara töötab veeb töötab
- upgrademise lihtus, ühe buildi e skripti käivitamisega saab värske tarkvara kõik peale ja viimasepeal süsteemi
- võimalus kiirelt konfi muutes bootida ühes paraleelseid servereid balancingu jaoks või uute teenuste
- nfsi üle käib vaid serveri boot, seega nfs pudelikaelaks ei jää hilisemal kasutamisel
- Kokkuvõtteks 2a juba see käigus EENeti kõige rasvasematel teenustel ja ühe korra päästis selline lahendus pigem ülikiirelt paljude kasutajatega süsteemi jukerdavalt raualt, teinekord võimaldas aga liiga rasvase veebi jaoks startida sama konfiga uue serveri spetsiaalselt nimetatud teenusele
- nfs serveril pole reaalset erilist koormust, kasutust leiab aktiivselt vaid serveri stardil
Selline lahendus võimaldab mugavuse
käivitatakse skript ./build_new_masin test mis tõmbab kõige uuema tarkvara, pakib lahti, konfib lahendab sõltuvuse teen test masinale boodi...vaatan, et töötab annan käsu ./build_new_masin work ja teen tollele reboodi
Skeem mille alusel süsteem tööle hakkab
Antud näide koosneb kolmest serverist A. bootserverist, B. testserverist ja C. Ametlikust tööserverist
____ | | A (Bootserver kus asetsevad NFS, DNCP, TFTPD teenused) |____| 192.168.0.10 .... Sisevõrk.... ..... ____ ____ | |B | |C (PXE bootivad serverid) |____| |____| 192.168.1.20 192.168.1.21
Vajalik NFS toega kernelit bootserverile.
Gentoo paigalduse skript
Kuna Gentoo paigaldus võtab isegi eksperdil aega mitu tundi on mõistlik see paljude serverite puhul automatiseerida bash skripiga. Järgnev skript tekitab kettale /srv/server kataloogi millelt saab bootida juba üle NFSi
#!/bin/bash
PXEROOT="/srv/server/"
STAGE="/srv/gentoo/stage3-amd64-20100429.tar.bz2"
NFS_SERVER="192.168.1.10"
ROOTPW="parool"
NS="192.168.14"
# kontrollime failide kaustade olemasolu
[ -z "$PXEROOT" ] && error "Missing install root (PXEROOT). Terminating!"
[ -f "$STAGE" ] || error "Missing STAGE tarball $STAGE"
echo "Extracting stage: $STAGE ..."
tar xjf $STAGE -C $PXEROOT
[ $? -ne 0 ] && error "Cannot extract tarball [$STAGE] into [$PXEROOT]"
# Loome /usr/portage and /etc/portage directories, vajalikud emerge jaoks
[ -e $PXEROOT/usr/portage ] || mkdir -pv $PXEROOT/usr/portage
[ -e $PXEROOT/etc/portage ] || mkdir -pv $PXEROOT/etc/portage
# Loome minimaalse /dev haru
[ -e $PXEROOT/dev ] || mkdir -pv $PXEROOT/dev
( cd $PXEROOT/dev && ../sbin/MAKEDEV std )
# Seadistame ajatsooni
rm -f $PXEROOT/etc/localtime
ln -s /usr/share/zoneinfo/$TZONE $PXEROOT/etc/localtime
echo "TIMEZONE=\"${TZONE}\"" >> $PXEROOT/etc/conf.d/clock
# Süsteemi charset on UTF-8
echo 'LC_ALL="en_US.utf8"' >> $PXEROOT/etc/env.d/02locale
# Täidame resolv.conf faili
echo "domain $DOMAIN" > $PXEROOT/etc/resolv.conf
echo "search $DOMAIN" >> $PXEROOT/etc/resolv.conf
echo "nameserver $NS" >> $PXEROOT/etc/resolv.conf
# Paigaldame mõned fundamentaalsed paketid, kuna see töö tuleb teha chroot keskkonnas tuleb
# siin veidi trikitada, esiteks tekitame pxeroot alla skripti mis sisaldab vajalikke
# käske ning seejärel käivitame selle skripti chroot keskkonnas
cat > $PXEROOT/paigalda.sh <<EOT
emerge mail-mta/postfix sys-process/vixie-cron app-admin/syslog-ng
# NFS client needs portmap
emerge net-nds/portmap net-fs/nfs-utils sys-apps/kexec-tools
EOT
chmod 755 $PXEROOT/paigalda.sh
mount --bind /usr/portage $PXEROOT/usr/portage
mount -t proc none $PXEROOT/proc
chroot $PXEROOT /paigalda.sh
umount -f $PXEROOT/proc
umount -f $PXEROOT/mnt/pkgcache
umount -f $PXEROOT/usr/portage
rm -f $PXEROOT/paigalda.sh
ln -vs /etc/init.d/{vixie-cron,syslog-ng,sshd} $PXEROOT/etc/runlevels/default/
# Kexec vajab kernelit, kernel tuleb eelnevalt valmis buildida ja patchida
cp -rp /srv/kernel/kern-2.6.32-unionfs $PXEROOT/bzImage
# Moodulite otsimise vältimiseks
echo 'CDBOOT="yes"' >> $PXEROOT/etc/conf.d/modules
echo 'CDBOOT="yes"' >> $PXEROOT/etc/conf.d/bootmisc
install -D /dev/null $PXEROOT/lib/modules/2.6.32-gentoo/modules.dep
# Võrguseaded tulevad DHCPlt
echo 'config_eth0=( "noop" )' > $PXEROOT/etc/conf.d/net
# checkroot gets error after 'rm' and halts the boot
sed -i -e 's|rm -f /etc/mtab|#rm -f /etc/mtab|' $PXEROOT/etc/init.d/checkroot
# Speed up booting
sed -i -e 's|^svcmount="no"$|svcmount="yes"|' $PXEROOT/etc/conf.d/rc
# To not make persistent rules onto readonly disk
> $PXEROOT/lib64/udev/move_tmp_persistent_rules.sh
# fstab fail
cat > $PXEROOT/etc/fstab <<EOT
${NFS_SERVER}:${PXEROOT%.tmp} / nfs ro 0 0
proc /proc proc defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
EOT
# SSHD võtmed
/usr/bin/ssh-keygen -t rsa1 -b 1024 -f $PXEROOT/etc/ssh/ssh_host_key -N ''
/usr/bin/ssh-keygen -d -f $PXEROOT/etc/ssh/ssh_host_dsa_key -N ''
/usr/bin/ssh-keygen -t rsa -f $PXEROOT/etc/ssh/ssh_host_rsa_key -N ''
# Sätime root kasutaja parooli
pw=`ruby -e "print '${ROOTPW}'.crypt('\\$1\\$ABcdefGH\\$')"`
sed -i -e "1 s|^root:\*:|root:${pw}:|" $PXEROOT/etc/shadow
# Suuname kirjutatavad failid ümber /fstmp alla
mkdir $PXEROOT/fstmp/{tmp,run,lock}
rm -rf $PXEROOT/tmp
ln -s fstmp/tmp $PXEROOT/tmp
rm -rf $PXEROOT/var/tmp
ln -s ../fstmp/tmp $PXEROOT/var/tmp
rm -rf $PXEROOT/var/run
ln -s ../fstmp/run $PXEROOT/var/run
rm -rf $PXEROOT/var/lock
ln -s ../fstmp/lock $PXEROOT/var/lock
rm -f $PXEROOT/etc/mtab
ln -s ../proc/mounts $PXEROOT/etc/mtab
chmod 711 $PXEROOT/fstmp
# init skript rc-extra mis tekitab tmpfs failisüsteemi ajutiseks hoidlaks
cat > $PXEROOT/etc/conf.d/rc-extra <<'EOT'
if [[ $1 = "sysinit" && ! -f /fstmp/.fstmp ]]; then
mount -n -t tmpfs -o size=256m,nodev,noexec,nosuid temp /fstmp
mkdir /fstmp/{tmp,run,lock,log,mail}
chmod 711 /fstmp
chmod 1777 /fstmp/tmp
chmod 755 /fstmp/{run,lock,log}
mount -n -t unionfs -o dirs=/fstmp/log=rw:/var/log=ro none /var/log
if [ -d /var/spool/postfix ]; then
mount -n -t unionfs -o dirs=/fstmp/mail=rw:/var/spool/postfix=ro none /var/spool/postfix
fi
touch /fstmp/.fstmp
echo "/fstmp mounted."
fi
EOT
# Tühjad logfiles
> $PXEROOT/var/log/dmesg
> $PXEROOT/var/log/lastlog
> $PXEROOT/var/log/messages
> $PXEROOT/var/log/wtmp
DHCP seadistamine
Paigaldame dhcp serveri, võib paigaldada ka mingi teise lemmik dhcp serveri erinevalt selles näites esitatust
# emerge dhcp
/etc/dhcp/dhcpd.conf
defineerime siin ära esiteks dns serveri, tftp serveri, pxekerneli nime ja kaks masinat mis sellelt boodivad, test serveri ja teenuste serveri
option domain-name "zoo.ee"; option domain-name-servers 192.168.1.1; default-lease-time 14400; max-lease-time 28800; authoritative; ddns-update-style none; log-facility local7; group { next-server 192.168.1.10; server-name "bootserver"; filename "pxelinux.0"; host vabrikutest { hardware ethernet 00:15:10:94:72:01; fixed-address 192.168.0.20; } host vabrikuserver { hardware ethernet 00:23:B9:14:8C:BC; fixed-address 192.168.0.21; } }
Sedistame võrgukaardi millel dhcp kuulab failist /etc/conf.d/dhcp
IFACE="eth1"
TFTPD
paigaldame ftpd tarkvara
# emerge tftp-hpa
Määrame ära tftpd töökausta asukoha ja pordid/ipd mida ta kuulab
/etc/conf.d/in.tftpd
INTFTPD_PATH="/srv/tftproot/" INTFTPD_OPTS="-R 4096:32767 -s ${INTFTPD_PATH} -a 192.168.0.10"
Stardime teenuse
# rc-update add in.tftpd default
PXElinux ja selle konfiguratsioon
/srv/tftproot/ kausta tekitame esiteks unionfs'iga patchitud kerneli, pxelinux.0 faili ja kausta pxelinux.cfg kuhu tekitame iga masina kohta tema MAX aadressi nimelise konfiguratsioonifaili
pxelinux.0 tuleb paketist
# emerge syslinux
Paigaldame selle õigesse kausta
# cp /usr/share/syslinux/pxelinux.0 /srv/tftproot # mkdir /srv/tftproot/pxelinux.cfg # touch /srv/tftproot/pxelinux.cfg/default
PXE otsib pxelinux.cfg/ kaustast kahte tüüpi konfifaile, esieks mac aadressi kujul ja teiseks hexadecimal kujul ip aadresse, selles näites kasutame füüsilse aadress nimelisi konfiguratsioonifaile
Näiteks vabrikutesti füüsiline aadress on 00:15:10:94:72:01; ning fail peab olema siis 01-00-15-10-94-72-01, põhiline on kirjutada mac aadressi ette 01 ja asendada koolonid kaldkriipsudega
Faili sisuks kirjutame esiteks kerneli nime ja root failisüsteemi asukoha ehk ip ja jaotise
DEFAULT /kern-2.6.32-unionfs APPEND ip=dhcp root=/dev/nfs nfsroot=193.168.0.10:/srv/vabrikutest
Seadistame NFS serveri, tekitame selle konfiguratsiooni kaks järgnevat rida
Võrgust startivate masinate tuum
Vaja tekitada bootiv kernel mis unionfsiga patchitud
Tõmbame alla värske kerneli koodi, hetkel viimaseks Gentoo portages 2.6.34-r1
# emerge gentoo-sources
Liigume kausta kuhu emerge paigaldas kerneli koodi
# cd /usr/src
Liigutame kerneli ümber uue nime alla, igasjuhuks
# cp -rp linux-2.6.34-gentoo-r1 linux-2.6.34-gentoo-r1-unionfs
Liigume aadressile http://www.fsl.cs.sunysb.edu/project-unionfs.html ja tõmbame sealt enda kerneli versioonile sobiva paiga NB! kerneli ja unionfsi versioonid peavad kindlasti klappima.
# wget http://download.filesystems.org/unionfs/unionfs-2.x/unionfs-2.5.5_for_2.6.34.3.diff.gz
Liigutame patchi kerneli kausta
# mv unionfs-2.5.5_for_2.6.34.3.diff.gz linux-2.6.34-gentoo-r1-unionfs
Ja anname käsu
# gzip -dc unionfs-*.diff.gz | patch -p1
Ning seejärel kompileerime kerneli
Serverivabriku buildimis skriptis tuleb muuta veel vastavaks rida
# install -D /dev/null $PXEROOT/lib/modules/2.6.32-gentoo/modules.dep
PS. Kui fireholi käivitamisel kurdab, et kerneli võiks /proc/config toega kokku ehitada. Viimane näitab mis konfiguratsiooniga on kernel nimelt kokku ehitatud. Seadistada saab seda kerneli kompileerimisel General setup alt
$ head /proc/config CONFIG_X86=y CONFIG_UID16=y CONFIG_EXPERIMENTAL=y CONFIG_MODULES=y CONFIG_MODVERSIONS=y CONFIG_KMOD=y CONFIG_M386=y CONFIG_X86_L1_CACHE_SHIFT=4 CONFIG_RWSEM_GENERIC_SPINLOCK=y CONFIG_X86_PPRO_FENCE=y
Firehol võib moodulite kohta infot küsides lihtsalt netist bootitud masina muidu hanguma panna
proc/config lahendust saab kasutada ka soovides kompileerida täpselt samasugust kernelit kui originaal, lihtsalt tuleb anda käsk
zcat /proc/config.gz > /usr/src/linux/.config
Pole vaja "make install" ega "make modules_install" kirjutada. Fail arch/x86/boot/bzImage tuleb kopeerida /srv/tftproot/ alla ja /srv/tftproot/pxelinux.cfg/servertest esimesel real viidata.
NFS server
# emerge nfs-utils
/etc/exports
/srv/servertest 192.168.0.0/255.255.255.0(ro,sync,no_root_squash,no_subtree_check,no_acl) /srv/vabrikuserver 192.168.0.0/255.255.255.0(ro,sync,no_root_squash,no_subtree_check,no_acl)
Paneme lõpuks kõik teenusd tööle
# /etc/init.d/dhcp start # /etc/init.d/in.tftpd start # /etc/init.d/nfs start
# rc-update add nfs default
Alternatiiv kasutades pxegrubi pxelinux.0 asemel
# echo "sys-boot/grub netboot" >> /etc/portage/package.use # emerge -av grub # cp /usr/lib/grub/pxegrub /diskless/eta/boot/pxegrub # nano -w /diskless/eta/boot/grub.lst
TODO
Võrgust veel lisalugemist
Jamadega jamamine
Kui emerge teatab
!!! Your current profile is deprecated and not supported anymore. !!! Please upgrade to the following profile if possible: default/linux/x86/10.0/server
tuleb uuendada profiili, esiteks kirjutada käsk
# eselect profile list
ning valida pakutud jimekirjast sobivam profiil ja anda käsk
# eselect profile set <number>
Mille järel uuendatakse /etc/make.profiles linki
Lingid
- http://www.yolinux.com/TUTORIALS/LinuxTutorialNetworking.html linuxite võrgundusest