dilluns, 5 de març de 2012

Instal·lació d’una Debian en un sistema remot

1. Introducció

L’objectiu d’aquest document és actualitzar el document “Howto Install Debian Onto Remote Linux System” de Erik Jacobson realitzat en 2003 [1].
S’han revisat els programes utilitzats durant aquest any i s’han canviat per
l’equivalent a Debian Etch, que es la distribució stable de debian en el moment de redactar aquest tutorial.

També s’ha adaptat el document de l’autor anterior per a satisfer les nostres necessitats. Per tant l’esquema de particionat emprat ha sigut el que
hem considerat mes adient per a la nostra situació. En altres situacions
aquest pot canviar.

2. Debootstrap

Existeixen diverses formes per a instal·lar Debian remotament. La més fàcil és utilitzar debootstrap així que utilitzarem aquesta. Abans es podia
obtenir un paquet rpm del programa de la pàgina:

http://people.debian.org/~blade/install/debootstrap

Però després de l’atac als servidors Debian no es una font fiable, com a la
pàgina es diu. Per tant hi ha que buscar els paquet a la pàgina de Debian
i convertir-lo amb el programa alien. Nosaltres utilitzarem la versió estable de Debian. Descarreguem el programa de la rama estable de debian en la pàgina i el convertim a rpm si aquest es el sistema d’administració de paquets utilitzat. La següent ordre fa la conversió:

alien −vr debootstrap_0.3.3.2etch1_all.deb

Una volta s’ha realitzat la conversió  del programa a rpm el podem instal·lar fàcilment amb:

rpm −ivh debootstrap_0.3.3.2etch1_all.deb


Si estem en una distribució basada en debian, podem instal·lar-lo amb dpkg,
aquest paquet depen de binutils:

 
dpkg −i debootstrap_0.3.3.2etch1_all.deb


3. Inicialització de la partició de treball

Anem a instal·lar el sistema sobre la partició de swap existent, per a no tindre problemes necessitarem un espai swap amb almenys 256 MB encara que un poc més ens ajudarà també. El primer que fem es desactivar el swap.


 swapoff -a
  
Pel que fa a la RAM de la màquina pot ser interessant crear un fitxer de swap si la màquina en questio no disposa d’espai. Podem crear un fitxer swap amb:

dd if=/dev/zero of=/swapfile bs=1024 count=65536

Així creem un fitxer de 64 MB. Després fem que aquest fitxer siga swap
amb la comanda:


mkswap /swapfile

I l’activem:

swapon /swapfile

Una volta sol·lucionat els problems de memoria utilitzem fdisk per a canviar la partició swap en una partició de dades de Linux.
 

fdisk /dev/hda


Busquem la partició amb identificador 82 y sistema Linux swap i canviem el tipus de partició a Linux (id: 83) amb t i salvem els canvis a fdisk amb w. Una volta ja fets els canvis en la taula de particions, formategem la partició amb el format ext3.

mkfs.ext3 /dev/hda2

Una volta ja tenim el sistema formatejat amb ext3 exportarem el punt
de montatge per a treballar més comodament. També creem el directori i
montem el punt de montatge.


export LFS=/mnt/ lfs
mkdir −p $LFS
mount /dev/hda2 $LFS


Hi ha que assegurar-se que la partició que montem es la swap i no una altra. La següent ordre ens ajudarà.

df -h

4. Instal·lació del sistema base

Ara ha arribat el moment de llançar debootstrap (açò tardarà un moment). Aquest programa necessita diversos arguments. L'arquitectura, la distribució, el directori, i la url al arxiu debian.
 

La arquitectura que utilitzarem serà i386. Potser necessites una arquitectura diferent depenent del hardware. Les possibilitats són les següents: alpha, arm, hppa, ia64, mips, mipsel, powerpc, s390 o sparc.
 

La distribució es qualsevol nom de distribució de Debian. Els típics són Stable, Testing i Unstable. Els noms en codi per a cada una son Etch per Stable, Lenny per a testing i Sid és sempre Unstable. El millor es utilitar stable per a evitar problemes i despres quan finalitzem la instal·lació ja podem actualitzar el que necesitem.
 

Per a l’últim parametre l’url qualsevol mirror de Debian es vàlid

debootstrap −−arch i386 etch $LFS

A continuació, copia resolv.conf, hostname i hosts. Seran iguals en el nou sistema. L’eixida de la comanda hostname ha de ser la mateixa que /etc/hostname.
cp /etc/resolv.conf $LFS/etc/resolv.conf
cp /etc/hosts $LFS/etc/hosts
cp /etc/hostname $LFS/ etc/hostname

 
5. Entrant en el chroot


Ara que ja tenim tots els fitxer copiats es moment de entrar en el chroot.
Tecleja el següent:



chroot $LFS /usr/bin/env −i HOME=/root \
> TERM=$TERM PS1=’\u:\w\$’ PATH=/bin:/usr/bin:/sbin:/usr/sbin \
> /bin/bash −−login


També necessitem especificar-li al sistema quines particions s’han de montar durant l’arranc. Primer realitzarem un fstab bàsic.

cat > /etc/fstab << ”EOF”
>#filesystem  mount−point  fs-type options  dump fsck-order

>
>/dev/hda2    /            auto   defaults  0    1

>proc         /proc        proc   defaults  0    0
>EOF



Tot seguit montem el sistema de fitxers proc:

mount −t proc proc /proc

Abans que ens oblidem, es important que fixem el hostname. Canvia
mybox.domain.com per el teu hostname. Pots verificar-lo amb hostname –
fqdn. Si obtens un error com a resposta de la comanda, revisa el man per
a trobar informació sobre com sol·lucionar-ho. Tamb é pots canviar aquestos
valors desde /proc (/proc/sys/net, crec). Mira la pàgina del man de proc
per a més detalls.



hostname mybox.domain.com

6. Configuració dels paquets





En primer lloc instal·lem els següents paquests:




apt−get install console−data kbd console−common








Després configurarem el teclat.


dpkg−reconfigure console−data kbd




Es important que seleccionem la nostra varietat de teclat, que seleccionen qwerty com a keyboard layout, Spanish com a key layout, estandar com a variant i estandar com a specific keymap.
 

Ara acabarem de configurar la xarxa. Si no coneixes la informació, simplement obrir una segona sessió i mira els fitxer rellevants (En l’entorn original, no en el chroot).
 

Debian té un fitxer que no es troba en altres distribucions. El fitxer /etc/network/interfaces i presenta una sintaxi molt simple. La que proporcione
funciona be. Assegurat de canviar les adreces IP com es mostra més avall.


Necessitaras fer una configuració diferent si la IP es dinàmica. Hi ha
documentació en les manpages de Debian. La ordre man interfaces aportarà aquesta documentació. Deuria estar disponible en el chroot.
 

Configurem el fitxer /etc/network/interfaces:
  
cat > /etc/network/interfaces << ”EOF”
> #The loopback interface
> auto lo
> iface lo inet loopback
>
> # The first networkcard
> auto eth0
> iface eth0 inet static
> address 207.44.214.88
> netmask 255.255.254.0
> network 207.44.214.0
> broadcast 207.215.255
> gateway 207.44.214.1
> EOF
 

Es pot obtenir tota aquesta informació obrint un altre shell fora del chroot. Les següents ordres ajudaran a obtindre la adreça IP, la m+ascara de la subxarxa, la xarxa, la adreça de broadcast i la porta d’enllaç.



eth0    Link encap : Ethernet  HWaddr 00:01:80:31:81:AD
        inet addr:207.44.214.88 Bcast:207.44.215.255 Mask:255.255.254.0
        UP BROADCAST MULTICAST MTU:1500 Metric:1
...  ...  ...



La segona linea té la informació rellevant, amb IP, Broadcast i Màscara de subxarxa en aquest ordre. La resta de la informació la podem obtenir amb route -n.


Kernel IP routing table
Destination  Gateway                
Genmask        Flags  Metric Ref Use Iface 
207.44.214.0 0.0.0.0                 255.255.254.0  U      0      0   eth0
127.0.0.0    0.0.0.0                 255.0.0.0      U      0      0       lo
default      207.44.214.1   0.0.0.0        UG     0      0       eth0



La primera IP de destinació en la eth0 es la Xarxa, normalment serà la teua IP amb un 0 en l’ultim quartet. La porta d’enllaç ̧ es mostra en la columna “Gateway” i en la fila “default”.
Arribats a aquest punt procedirem amb la configuraci ́ de la fus horari.

Tecleja les següents ordres. La primera s’encarrega de la configuració del
rellotge UTC i la segona de la propia configuració del Fus horari.



tzselect
tzconfig


Després configurem les fonts dels apt. Hi ha que configurar el fitxer sources.list situat en /etc/apt i habilitar les actualitzacions de seguretat i totes les actualitzacions the main contrib i non-free.
 

A continuació configurem el password de l’usuari root.


passwd

Per a evitar entrar com a root al sistema creem qualsevol nombre d’usuaris que necessitem.
adduser −−home /home/usuari −−shell /bin/bash −uid 1000 −ingroup operator usuari

Ara ja es possible utilitzar apt. Primer instal·larem uns paquets que ens
seran utils després.
apt−get install less vim wget netselect netselect−apt deborphan

Executem deborphan i després eliminem els paquests que s’han quedat
orfes amb apt-get remove.

Una volta instal·lats aquestos programes ens assegurem de quin es el millor
mirror i creem un sources.list nou.

cd /etc/apt
netselect−apt etch

Editem el fitxer i ens assegurem que estan activades les actualitzacions de seguretat. Arribats a aquest punt es important acutalitzar la distribuci ó perva que estiga tot el programari actualitzat.

apt−get update; apt−get upgrade









Instal·lem ssh per a poder accedir al sistema posteriorment.





apt−get install ssh

Configurem els locals.

apt−get install locales
dpkg−reconfigure locales

Ara es el moment d’instal·lar un kernel. La següent ordre mostrarà els kernels disponibles. SMP s'utilitza per a multiprocessadors (com els Xeon). S’instala amb apt-get intall

apt−cache search linux−image | less
Bàsicament elegeix la versió més actualitzada. Que en el nostre cas sera 2.6.X:X.

apt−get install linux−image



Es important que no reiniciem l’ordinador encara per tant hi que contestar
que no al reinici i evitar la instal·lació del grub ja que s’instalaria mal des d’un
chroot.

Podem instal·lar discover i executar-lo fora del chroot per a veure quin
software tenim i quins moduls hi ha que carregar per a que funcione correc-
tament.

Eixim del chroot i seguirem amb la configuració del grub.

logout

7. Configuració del kernel per al reinici




Copiem el kernel i la imatge d’initrd (si existeix) a la partició de boot. Realitzarem una copia dels que prèviament hem instal·lat.

cp $LFS/boot/vmlinuz−∗ /boot
cp $LFS/boot/initrd.img−∗ /boot



Editem el /boot/grub/menu.lst.

default saved
timeout 5
fallback 1
title DebianNet
root (hd0,0)
kernel /boot/vmlinuz−2.6.18.5−686 root=/dev/hda2 panic=60
initrd /boot/initrd.img−2.6.18−5−686
savedefault fallback
boot

title Ubuntu, kernel 2.6.12−9−386
root (hd0,0)
kernel /boot/vmlinuz−2.6.12.9−386 root=/dev/hda1 ro quiet splash
initrd
/boot/initrd.img−2.6.12−9−386
savedefault
boot

Amb grub-set-default 0 defineixes en el grub el default inicial. S’ha
d’anar molt en compte ja que el fallback prevaleix sobre el default. Si el
default es 0 i el fallback es 1 accedira al fallback.



8. Primer Reinici

Una volta realitzada tota la configuració bàsica reiniciem. Hi ha que assegurar-se molt be que tot el realitzat anteriorment es correcte.  Reinicem!!!

shutdown −r now


Amb sort ... hauriem de tenir instal·lat el sistema base de Debian.
 

Espera uns minuts el reinici, i entra via ssh a la IP que hem configurat prèviament. Hauriem de ser capaços de poder utilitzar ambdos contes, el d’usuari i el de root, que prèviament hem creat.
 

Si no reinicia el següent reinici després de 10 minuts t’hauria de portar al sistema que hi havia configurat prèviament.


9. Particionat del disc

En aquest moment creem les particions que necessitem. En el nostre cas
aquestes seran les següents:


/ on instal·larem tot el sistema
• swap on esta la debian instalada actualment
/home
/tmp
/var/www
•  /var/cache/apt/


Per a particionar el disc utilitzarem la utilitat fdisk tal i conforme l’hem utilitzat anteriorment. Recorda que només estem canviant la taula de particions i no modifiquem la partició en si.

Una volta canviada la taula de particions aquesta no sera efectiva fins que reiniciem per tant preparem el sistema per a reiniciar.
 

En primer lloc instal·lem grub.

apt−get install grub


Una volta instal·lat el grub el fem permanent amb:


grub−install /dev/hda

Revisem el directori /boot/grub/menu.lst i si aquest no està el creem
utilitzant el mateix que hem utilitzat abans en la secció 7.
 

Una volta instal·lat correctament el gestor d’arranc reiniciem per a que els canvis de la taula de partions siguen permanents.
 

10. Formatejant les noves particions



Una volta ja hem reiniciat i la nova taula de particions del sector d’arranc
està ja activa, procedim al formateig de les noves particions.
 
mkfs.ext3 /dev/hda2
mkfs.ext3 /dev/hda3 
mkfs.ext3 /dev/hda5
mkfs.ext3 /dev/hda6 
mkfs.ext3 /dev/hda7

Una volta estan formatejades totes les particions procedim a la copia del sistema a la seua partició. La partició que rep la copia ha de ser igual o major o fallar la execució de les ordres de comprobació que expliquem just després.
 

dd if=/dev/hda1 of=/dev/hda2 bs=1024


Una volta finalitzada aquesta ordre. Pot costar uns minuts. Seguim amb un xequeig del sistema. Hi ha que xequejar tantes vegades com faça falta fins arribar a una exida sense errors. Fins que no s’aconsegueixca açò no executar l’ordre següent. 

e2fsck −f /dev/hda2


Una volta aquesta eixida ja no ens mostra errors, procedim amb una compactació i un canvi de mida de les dades copiades anteriorment amb dd.
  
resize2fs −p /dev/hda2
Quan aquesta ordre finalitze procedim a realitzar successius xequejos del sistema de fitxers fins que aquest siga completament correcte.


e2fsck −f /dev/hda2





  
Quan finalitze aquesta ultima ordre sense errors, montem la partició per a assegurar-se que no hi ha errors.

mount −t auto /dev/hda2 /mnt



Accedim al fitxer /mnt/etc/fstab i canviem la partició que allotjarà la barra per la que acabem de copiar.

#filesystem  mount−point  fs-type options  dump fsck-order

/dev/hda2    /            auto   defaults  0    1
proc         /proc        proc   defaults  0    0

Tambe editem el menu del grub situat en /boot/grub/menu.lst per a que
quede com a si s’indica.


default 0
timeout 5

title DebianNet
root (hd0,0)
kernel /boot/vmlinuz−2.6.18.5−686 root=/dev/hda2
initrd /boot/initrd.img−2.6.18−5−686
savedefault
boot

Una volta configurat el grub reiniciem.


11. Modificació del fstab

Editem el fitxer /etc/fstab per a que continga les següents entrades:



#filesystem  mount−point    fs-type options  dump fsck-order

/dev/hda1    none           swap   sw        0    0
/dev/hda2    /              auto   defaults  0    1
/dev/hda3    /home          auto   defaults  0    2
/dev/hda5    /tmp           auto   defaults  0    3
/dev/hda6    /var/cache/apt auto   defaults  0    4
/dev/hda7    /var/www       auto   defaults  0    5   
proc         /proc          proc   defaults  0    0

Montem la partició hda3 i copiem el contingut actual de /home a la nova partició, borrem el contingut de /home i desmonetem la partició.

mount −t auto /dev/hda3 /mnt
cp −r /home/∗ /mnt
rm −r /home/∗
umount /dev/hda3

Montem la partició hda5 per a assegurar-nos que funciona correctament. A
continuació montem la partició hda6 i copiem el contingut de /var/cache/apt,
borrem el contingut de /var/cache/apt i desmonetem la partició.

mount −t auto /dev/hda6 /mnt
cp −r /var/cache/apt/∗ /mnt
rm −r /var/cache/apt/∗
umount /dev/hda6

Creem un directori /var/www

mkdir /var/www

Per ultim habilitem el swap amb:


mkswap /dev/hda1
swapon −a

Arribats a aquest punt ja tenim la Debian instal·lada,

12. Referencias

[1] Erik Jacobson Howto - Install Debian Onto a Remote Linux System http://www.underhanded.org/papers/debian-conversion/remotedeb.html
[2] http://www.linuxfromscratch.org/lfs/downloads/
[3] http://www.debian.org/releases/stable/i386/ch-preparing.en.html#s-linux-upgrade (BROKEN)
[4] http://www.gnu.org/software/grub/manual/legacy/Booting-fallback-systems.html
[5] Howto Remote Kernel Upgrade http://www.gentoo-wiki.info/HOWTO_Remote_Kernel_Upgrade

Cap comentari:

Publica un comentari a l'entrada