oriolrius.cat

Des del 2000 compartiendo sobre…

Tag: livecd

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.

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.