Nov 22

Configurant una Atheros AR5212/5213 amb Ubuntu 6.06 Dapper

Reading time: 2 – 4 minutes

La base del MPK és una Ubuntu 6.06 Dapper, doncs bé ahir vaig tenir la necessitat de configurar-hi una targeta Wifi per primera vegada. La qüestió és que la cosa em va donar una mica més de feina de la esperada. Així doncs, aquí penjo quatre notes de com posar-la en solfa ben ràpid.

Al iniciar l’Ubuntu amb l’Atheros punxada els drivers de madwifi del kernel la detecten perfectament però malgrat no em donava cap error i després d’associar-me a diversos APs amb WEP i WPA-PSK no hi havia manera d’intercanviar tràfic, sempre donava l’error de que no trobava el destí del paquet. Finalment el que vaig fer va ser descarregar els drivers de madwifi, concretament la versió 0.9.3.3. Que ha compilat sense problemes i després de borrar els drivers que inclou l’Ubuntu per defecte, s’han instal·lat a la carpeta dels mòduls del kernel. Després de comprobar que amb un depmod -a no donen cap error he reiniciat i la targeta s’ha detectat sense problemes.

Amb les següents simples comandes:

iwconfig ath0 essid ssid_ap
iwconfig ath0 key codi_wep_en_hexadecimal
ifconfig ath0 up
dhclient ath0

Només amb això ja esta llesta la xarxa wifi per funcionar amb xifrat WEP, obviament no ús el recomano però hi ha gent que encara viu enganyada confiant-hi. En cas de voler-la configurar per WPA-PSK la cosa és tan senzilla com crear el següent fitxer /etc/wpa_supplicant.conf:

network={
        ssid="ssid_ap"
        scan_ssid=1
        proto=WPA
        key_mgmt=WPA-PSK
        psk="clau_psk"
}

Després des de la línia de comandes podem cridar el wpa_supplicant per provar-lo així:

wpa_supplicant -Dwext -iath0 -c/etc/wpa_supplicant.conf

Un cop veiem que s’ha associat podem anar a una altre consola i configurar la interficie de xarxa. Com sempre amb la comanda iwconfig podem observar si l’associació s’ha fet correctament, entre d’altres dades com el nivell de senyal.

Finalment si voleu posar en la seqüència d’arrencada la crida del wpa_supplicant podem afegir el següent a /etc/network/interfaces:

auto ath0
iface ath0 inet dhcp
pre-up wpa_supplicant -Bw -Dwext -iath0 -c/etc/wpa_supplicant.conf
post-down killall -q wpa_supplicant

Per automatitzar el WEP, el que he fet malgrat sigui una mica xapussa és fer un script que fa les dues comandes iwconfig i aquest script es crida a pre-up al fitxer /etc/network/interfaces.

Oct 27

Passant d’una Ubuntu real a una de Virtual (VMWare)

Reading time: 2 – 2 minutes

Aquesta setmana he clonat un sistema montat en Ubuntu, d’una màquina real a una màquina virtal corrent dins d’un VMWare Server. La veritat pensava tenir més problemes, però finalment la cosa ha estatm és senzilla del que pensava. Intentearé explicar-vos els passos que he seguit, espero no deixar-me cap detall important ja que ho faré de memòria.

  • Servidor nou
  • Creem una màquina virtual amb la VMWare Server Console.
  • Instal·lem una Ubuntu 6.06 LTS (la mateixa versió qu hi ha a la màquina que volem clonar)
  • A diferencia de la original aquesta la montem amb LVM, això va ser un capritxu meu no una necessitat
  • Un cop finalitzada la instal·lació estàndard i fetes les actualitzacions, instal·lem el servidor d’ssh
  • Servidor original
  • Creem un fitxer de text amb aquest contingut, l’anomenaré exclude.txt:
  • /proc
    /sys
    /dev
    /mnt
    /cdrom
    /tmp
    /etc/fstab
    /etc/mtab
    /boot
    /etc/iftab
    
  • Ara ve l’hora de la veritat i usant rsync començo a clonar la màquina:
  • rsync -cavz --exclude-from=exclude.txt /* root@IP_NOVA_MAQUINA:/
    
  • Apaguem o desconnectem cable de xarxa
  • Server nou
  • Reiniciem la màquina, jo ho vaig fer a sac, o sigui… apretant botó reset de la màquina virtual. Digueu-me radical però vaig pensar que era el millor en aquest cas.

Jul 29

Ubuntu LiveCD sense CDROM i amb mode persistent

Reading time: 4 – 6 minutes

El gener passat vaig escriure sobre com arrencar un LiveCD d’Ubuntu en mode persistent, és a dir, guardant la configuració en un pendrive o disc dur de forma que els ajustos que fem a la configuració del CD no es perdin. Bé doncs, ara del que es tracta és que fem el mateix però sense el LiveCD. M’explico, l’objectiu és tenir una partició de només lectura al nostre disc dur, o en un altre disc dur on hi hagi el LiveCD copiat. Llavors usem una altre partició per guardar les modifiacions que fem sobre el CD, o sigui, la informació persistent. Això ens permet al propi GRUB tenir modes de recuperació sense haver de posar el CD. A més sempre podrem tornar enrera i tenir una configuració bàsica. I podrem treballar exactament igual que si tinguessim un LiveCD però sense tenir-lo físicament.

La solució és ben senzilla, potser el problema més greu esta en que s’ha de modificar un arxiu de configuració que es diu /scripts/casper i que es troba dintre del fitxer /boot-live/initrd.gz cosa que fa una mica entretingut modificar-lo. A continuació faig un petit cookbook de tots els passos a seguir.

  • Arrenquem des del LiveCD.
  • Creem una nova partició al disc de tipus vfat i la formategem.
  • Montem la partició i hi creem el directori /casper.
  • Copiem el contingut del directori /casper del LiveCD d’Ubuntu dins del nou directori que hem creat a la partició.
  • Suposant que a la partició persistent hi tenim instal·lat el GRUB per arrancar des de LiveCD però cridant-lo des del disc dur la configuració seria semblant a aquesta:
  • default 0
    timeout 30
    hiddenmenu
    color cyan/blue white/blue
    # Calling LiveCD from hard drive
    title           mpti
    root            (hd0,0)
    kernel          /boot-live/vmlinuz boot=casper initrd=new-initrd.gz ramdisk_size=1048576 root=/dev/ram rw quiet splash vga=791 -- persistent
    initrd          /boot-live/new-initrd.gz
    boot
    # Calling LiveCD from hard drive in single user and persistent mode
    title           mpti persistent (recovery mode)
    root            (hd0,0)
    kernel          /boot-live/vmlinuz boot=casper initrd=initrd.gz ramdisk_size=1048576 root=/dev/ram ro single persistent
    initrd          /boot-live/new-initrd.gz
    boot
    # Calling LiveCD from hard drive without persistent and single user mode
    title           mpti w/o persistent (recovery mode)
    root            (hd0,0)
    kernel          /boot-live/vmlinuz boot=casper initrd=initrd.gz ramdisk_size=1048576 root=/dev/ram ro single
    initrd          /boot-live/new-initrd.gz
    boot
    
  • Ara toca modificar el fitxer /boot-live/new-initrd.gz que és el que conté la seqüència d’arrencada que ens interessa modificar. Així doncs, anem al directori /boot-live.
  • Per descomprimir el fitxer new-initrd.gz podem fer això:
  • mkdir new-initrd
    cd new-initrd
    gzip -dc /boot-live/new-initrd.gz | cpio -id
    
  • Dintre de /boot-live/new-initrd/scripts hi ha el fitxer casper que hem de modificar, així doncs l’editem.
  • A la línia 257 hi ha la funció is_usb_device que l’hem de deixar com segueix:
  • is_usb_device() {
    #    sysfs_path="${1#/sys}"
    #    if /lib/udev/path_id "${sysfs_path}" | grep -E -q "ID_PATH=(usb|pci-[^-]*-usb)"; then
            return 0
    #    fi
    #    return 1
    }
    
  • Guardem el fitxer de configuració i tornem a crear el fitxer new-initrd, així:
  • # Fem una còpia l'antic new-initrd.gz per si les mosques
    cd /boot-live
    cp new-initrd.gz new-initrd.gz.old
    # Creem el nou new-initrd.gz
    cd new-initrd
    find . | cpio --quiet --dereference -o -H newc | gzip -9 > ../new-initrd.gz
    cd ..
    rm -rf new-initrd
    
  • Ara ja podem reiniciar i treure el LiveCD ja que tot hauria d’arrencar com si el tinguessim posat.

Al fitxer casper és on es detecta si hi ha algún LiveCD posat a partir del qual es montarà el sistema de fitxers root. L’script busca a molts llocs si troba una unitat de CD, fins hi tot busca pendrives formatejats en vfat amb el contingut del CD, però abans d’intentar montar-los i buscar dintre seu el directori /casper i algún fitxer anomenat *.squashfs comproba que el dispositiu estigui connectat via USB.

Així doncs, la modificació que jo he fet només força que la comprobació d’USB sempre sigui certa, així també intentarà montar les pariticions dels possibles discs durs connectats o d’altres similars. Així doncs, després l’únic que faig és crear una partició vfat, crear-li el directori que busca i copiar el fitxer *.squashfs que és on hi ha el sistema de fitxers squashfs que conté l’arbre de directoris i fitxers del LiveCD.

Malgrat estic content en el resultat obtingut, m’hagués agradat aconseguir el mateix resultat sense haver de modificar els fitxers del initrd.gz ja que això fa que a l’actualitzar l’Ubuntu si hi ha modificacions en l’script casper hauré de mirar-me què ha canviat per actualitzar el meu sistema.

Jul 18

Clonant una Ubuntu

Reading time: 3 – 4 minutes

Disposava d’un servidor en una màquina virtual d’VMWare que esta en producció i per tant, no era bona idea apagar-lo. La idea era montar una altre màquina física igual per posar-la en producció per quan la primera falli. Doncs bé, havia de montar una màquina igual que la de producció amb la mateixa configuració del servidor en producció. La cosa se m’ha allargat una mica malgrat els passos són simples. Bàsicament m’he trobat amb problemes tontos que per no estar habituat a usar Ubuntu m’han portat més temps del previst.

Per començar del host en producció aconseguim un llistat del paquets instal·lats, llencem la següent comanda des del directori i l’usari root:

dpkg --get-selections | grep -v deinstall > llista_paquets

A continuació ja podem fer tots els processos des de la màquina que anem a instal·lar. En la segona màquina he instal·lat una Ubuntu Server 6.06.1 LTS (Long Time Support) igual que en la primera, he fet una configuració de servidor normal (no LAMP) configurant el hardware adequat perquè tot funcioni. Un cop acabada la instal·lació:

# Copiem configuració del APT de producció al nou servidor
rsync -cavz root@ip_produccio:/etc/apt/ /etc/apt/
# Actualitzem repositori
apt-get update
# Actualizem paquets bàsics de la distribució
apt-get dist-upgrade
# Copiem llistat de fitxers de producció
rsync -cvz root@ip_produccio:/root/llista_paquets /root/
# Marquem paquets a instal·lar en local
dpkg --set-selections < llista_paquets
# Entrem al gestor de paquets dselect
dselect
# Ara premem la tecla 'I' i després 'intro' perquè comenci la
# descarrega i instal·lació de paquets
# Finalment premem la tecla 'Q' i 'intro'

En aquest punt ja tenim els mateixos paquets instal·lats en producció que en la nova màquina. Ara s’ha de copiar les configuracions de les aplicacions que tenim en marxa. La idea és copiar tot /etc i tot /var. Tot i que això s’ha de fer molt en compte i s’ha de depurar molt, per poder saber sempre si l’hem liat en algún moment. Ja que per exemple, no cal copiar tots els directoris de logs tot i que si estem en una LAN i no són molts megues tampoc passa res si ho copiem. El més crític, és no sobre-escriure fitxers com /etc/fstab que poden variar segons la arquitectura de les màquines. En el meu cas no calia tenir en compte gran cosa més, però penseu que hi ha aplicacions que tenen fitxers de configuració en llocs poc habituals i això també s’hauria de copiar. A més és vital que no oblideu que no només s’han de copiar els fitxers, sinó també els seus atributs, o sigui, permisos i propietaris.

Una bona idea per copiar el directori /etc és crear un fitxer amb la llista de fitxers i/o directoris que no volem copiar, en el meu cas: (exclude_list.txt)

/etc/fstab
/etc/modprobe.d
/etc/modutils

Després amb la següent comanda sincronitzem els fitxers i els seus permisos del servidor de producció al nou servidor:

rsync -cavz --delete --exclude-from=exclude_list.txt root@ip_publica:/etc/ /etc/

La resta de configuracions es poden copiar amb el mateix procés.

Jan 13

Unbuntu liveCD en mode persistent

Reading time: 2 – 3 minutes

En l’article d’unionFS ja parlava dels liveCD en mode persistent. La idea és ben senzilla i potent a la vegada, es tracata d’inicar el linux a partir del liveCD en aquest cas, la Ubuntu. Però a direferència d’un procés d’inici normal indicarem al menú inicial que volem fer-ho en mode persistent i guardarem tots els canvis que fem durant la sessió: nous paquets instal·lats, dades d’aplicacions, personalitzacions del sistema, configuracions diverses, etc.

Com fer-ho és ben senzill i només cal disposar d’un pendrive, disc dur o qualsevol altre dispositiu d’enmagatzematge amb suport d’escriptura. Ara només cal:

  • Canviar l’etiqueta el nom del volum per casper-rw:
    e2label /dev/hda1 casper-rw
  • Si la partició té format ext3 s’usarà la partició arrel per enmagatzemar-hi els fitxers persistents.
  • Si tenim un disc dur amb format FAT32, per exemple, podem crear un fitxer a l’arrel amb el nom casper-rw i dins del fitxer hi creem un sistema de fitxers ext3, així:
    • Suposem que tenim la partició FAT32 montada a /media/hda1 i hi creem un sistema de fitxers ext3 de 128M. Cal que ens fixem en que el fitxer que conté el sistema de fitxers s’ha de dir casper-rw:
      dd if=/dev/zero of=/media/hda1/casper-rw bs=1M count=128
  • Quan iniciem el sistema amb el CD o DVD i ens trobem al menú inicial cal premer F6 i als paràmetres del kernel que ens apareixen a la part inferior de la pantalla afegim la paraula persistent al final.
  • Si ens hi fixem quan s’inicia la distribució ja no només llegeix del CD sinó també del pendrive o disc dur.

Com que aquesta guia no és gaire exaustiva, ja que només volia exposar la idea i explicar la funcionalitat, per més informació es pot consultar: LiveCDPersistence del wiki d’ubuntu.

NOTA: és vital que recordeu que al disc dur també li heu de canviar l’etiqueta perquè es monti com a part d’enmagatzematge del mode persistent del liveCD sinó no es montarà. Jo vaig perdré més de 2h mirant codi font per culpa d’un error ortogràfic i de no tenir clar el que posava el manual d’ubuntu.

Nov 07

Cookbook: upgrade ubuntu edgy a dapper i FAQ d’ubuntu

Reading time: < 1 minute

Notes per un lamer com jo per saber fer un upgrade de la versió d’ubuntu dapper a la edgy que és l’última. Però és que necessito la nota perquè mai recordo com es fa:

  • A l’arxiu /etc/apt/source.list canviar les entrades de dapper per edgy
  • apt-get update com a root
  • apt-get dist-upgrade també com a root

També aprofito per referenciar un FAQ d’ubuntu que té molt bona pinta i que té resoltes coses tan interessants com obrir PDF dins del firefox en linux. Cosa que jo estava convençut que no es podia fer, digueu-me incult.

Oct 04

Ubuntu Adding Startup Daemon/Process

Reading time: 2 – 4 minutes

Aquest és un d’aquells articles que mai sé com titular en català. Així doncs s’ha quedat en anglès. Bàsicament es tracta de documentar una miqueta les suors que em va costar saber quin carai era l’equivalent al /etc/conf.d/local.start de Gentoo en Ubuntu. De fet, al final no el vaig trobar. El que he hagut de fer és crear un fitxer a /etc/init.d i llençar-lo com un dimoni d’arrancada en els runlevels que m’interessen. De fet, aquesta solució és més neta que la que jo volia aplicar inicialment però al final he perdut una bona estona per saber-ho fer i per això he decidit documentar-ho.

El problema concret que tenia és que volia llençar el Abyss Webserver al iniciar la màquina. Concretament l’ordre per llençar-lo és:

# su usuari /opt/abyssws/abyssws -d

Doncs bé per crear el fitxer que fes aquesta crida t’has de basar en el fitxer /etc/init.d/skeleton. Skeleton usa el mateix script que en Gentoo el start-stop-daemon per fer la crida del dimoni d’Abyss. Per saber més detalls sobre com funciona aquest complert script us recomano mirar el man de la comanda.

La comanda anterior per llençar l’Abyss basada en start-stop-daemon seria així:

start-stop-daemon --start --quiet --pidfile /var/run/abyssws.pid -u usuari --exec /opt/abyssws/abyssws -- -d

Pel que fa a l’script sencer també podeu usar un generador de fitxers d’inici de dimonis que he trobat a Robert Pectol’s Ubuntu Linux Projects Website – Startup Script Generator el problema és que aquest generador és molt bàsic i no suporta el pas de paràmetres contra el start-stop-daemon. O sigui, que no podriem definir quin és l’usuari que ha de llençar el dimoni.

Després de crear l’script que llençarà el dimoni només cal afegir-lo als runlevels que ens interessin. Per exemple, si volem que estigui disponible en qualsevol runlevel podem fer:

# update-rc.d script defaults

Si el que volem és iniciar-lo l’últim (posició 99) de la seqüència d’arrancada en els runlevels 2, 3, 4 i 5 la comanda seria així:

# update-rc.d -f script start 99 2 3 4 5

Si el que no sabeu és en quin runlevel esteu treballant és tan senzill com escriure runlevel i us informarà del runlevel actual. Una petita referència de quins són els runlevels existents la podeu trobar aquí.

May 02

Boot-up Services Ubuntu (ncurses)

Reading time: < 1 minute

Una eina xorra basada en ncurses per Ubuntu per poder controlar quins serveis s’inicien al re-iniciar la màquina. De fet, tothom que treballa en X’s parla del BUM però és clar en mode text no trobava res i per no oblidar el tema el paquet ideal és el sysv-rc-conf.

No és res de l’altre dijous però fa el que ha de fer.

Apr 22

VMWare ESX Server i Ubuntu Breezy sobre una Gentoo

Reading time: 4 – 7 minutes

He de reconeixer que malgrat portar molt de temps usant linux i haver provant moltes distribucions no sóc gaire amant d’anar provant continuament quina distribució esta millor, de fet, sempre he pensat que és millor coneixer una distribució a fons. Encara que no diguin que és la millor, però la qüestió és que jo diria que això serveix més per la vida que anar provant quina és la més xula, còmode, etc.

Fruit d’això podriem dir que només he treballat amb dues ditribucions amb tots aquests anys, l’Slackware i els últims 5 anys (apròximadament) la Gentoo. Però per certes necessitats de la vida aquestes últimes dues setmanes he instal·lat el VMWare Workstation a la Gentoo del portàtil i després m’he creat una màquina virtual on he instal·lat l’Ubuntu 5.1 Breezy Bedger.

vmware-ubuntu.png

Doncs bé amb els típics problemes que suposa el que us explico: no trobar fitxers on estas acostumats que estiguin, no saber com es llencen els dimonis, on es posen les configuracions d’inici i el més greu de tot, això del apt-get és un suplici, ràpid de collons, però un suplici….buf!!! on és el meu emerge.

Cal reconeixer que l’entorn gràfic és molt senzill d’usar amb totes les seves eines i floritures, però jo m’he centrat amb l’instal·lació de tipus “server”, o sigui, sense entorn gràfic ja que havia de montar-la com a servidor i no pas com a workstation. Així que m’ha tocat patir.

També us volia comunicar la meva primera experiència amb el VMWare ESX Server. Quina passada nanos! això si que és una bona idea, ja sé que ara em sortiràn els amics del Xen dient que hi ha una bona versió lliure que fa algo semblant. Però realment jo diria que de moment les funcionalitats no es poden comparar.

La gràcia de la versió ESX esta en que instal·la un Linux amb uns mòduls pel kernel propietaris. Després a través d’una pàgina web pots montar-te les teves màquines virtuals que les pots tenir funcionant, parades, suspeses, en alta disponibilitat, com vulguis. A més aquestes màquines poden compartir el disc dur, o sigui, l’storage. Normalment connectat per fibra i amb una bona quantitat de gigues perquè la cosa no s’acabi.

Les màquines virtuals creades es poden arrancar a través de l’apicació consola, que esta disponible per força sistems operatius, fins hi tot el portage de Gentoo. Amb la consola podem usar una ISO d’un CD, DVD o el que volguem per bootar la màquina per primera vegada i instal·lar el sistema operatiu que volguem. Concretament al servidor que jo vaig instal·lar l’Ubuntu hi havia diversos Windows 2000 i 2003 funcionant. Quan acabes de montar-te l’SSH ja pots parar la consola i començar a treballar amb remot a través de la xarxa.

Aquesta forma de treballar en el futur crec que es tornarà a imposar. Dic es tornarà perquè aquesta idea ja fa molts anys que esta inventada i aplicada, pels famosos main frames el problema que teniem fins ara és que no hi podiem correr sistemes operatius de PC dintre d’aquests sistemes i amb aplicatius com aquest i d’altres similars tot això ja és una realitat.

Segur que a mesura que aquests sistemes tan interessants arribin al gran mercat, moltíssimes empreses canviaran la seva filosofia de montatge de servidors. Ja que és molt comode això de poder-se crear màquines sota demanda amb les característiques que volguem i a més modificar-los les característiques quan es queden petites (RAM, disc, etc). A més com que es tracten de màquines virtuals si la màquina mare es queda petita podem posar-ne de més potents i l’únic que hem de fer és arrossegar la màquina virtual de l’una a l’altre i amb breus segons la podem tornar a arrancar.

Amb el complicada que és sempre una migració de hardware i el senzill que es torna en sistemes d’aquests tipus. Tan que no és cap problema, només un pur tràmit. A més us puc assegurar que funciona tal com dic, que no és la típica funcionalitat que després mai funciona. Penseu que el fet de compartir l’storage fa que no haguem de migrar cap dada només el perfil i si l’storage es fa petit podem afegir discos i fins hi tot afegir un altre backplane al que ja tinguem perquè hi puguin cabre més discos, ja serà el RAID el que s’encarregarà de fer-los visibles al sistema.

Ja teniu un altre gusanillo provar el VMWare ESX o el Xen, tot i que pel que tinc entès el segon només funciona amb màquins virtuals que corrin linux. Així que no podrem tenir una xarxa de servidores heterogènia dintre de la nostre màquina mare. Però temps al temps, de ben segur que aviat podrà fer això i més.