viernes, 12 de noviembre de 2010

Ubntu Server on a USB

Instalar debootstrap:

# sudo apt-get install debootstrap
# fdisk -l


Buscar la partición del usb y la formateamos.

# sudo mkfs.ext3 -F /dev/sdd1


Luego crear un punto de montaje para el dispositivo y mpntarlo:

# sudo mkdir -p /stick
# sudo mount /dev/sdXY /stick


Ahora lo mas simple, utilizamos debootstrap para instalar la distribución que deseamos:

# debootstrap lucid /stick


Esto debe descargar y desempaquetar los paquetes necesarios, directamente en el dispositivo USB. Cuando halla terminado estaremos nuevamente en el bash prompt.
Ahora se deben copiar algunos archivos, realizar algunos links simbólicos y editar el archivo fstab en el nuevo sistema.

# sudo cp /etc/hosts /stick/etc/
# sudo cp /etc/network/interfaces /stick/etc/network/
# sudo cp /etc/bash_completion /stick/etc/
# sudo cp /etc/bash.bashrc /stick/etc/


Ahora necesitamos el UUID del fs de nuestro USB para editar el fstab.

# blkid


nos devuelve todos los UUID que hay en el sistema. Copiamos el correspondiente al USB y editamos /stick/etc/fstab.


Editamos /stick/etc/fstab para que se vea así:

proc /proc proc defaults 0 0
UUID=6a96f671-a7b0-4954-bd48-f9d739730b3a / ext3 relatime 0 1


Una vez hecho esto podemos hacer chroot dentro del nuevo sistema, pero debemos montar primero algunos cosas criticas dentro de /stick
Once that is done you will want to chroot into your new filesystem but mount some critical filesystems inside it first:

# sudo mount -t sysfs sysfs /stick/sys
# sudo mount --bind /dev /stick/dev
# sudo mount -t proc proc /stick/proc
# sudo su -c 'chroot /stick'


Por ahora somos root porque sudo no esta implementado todavía.
Ahora copiaremos el nuestro timezone local en /etc:

# sudo cp /usr/share/zoneinfo/America/Argentina/Mendoza /etc/localtime


Ahora instalaremos un editor, por ejemplo vim:

# apt-get install vim


Ahora es momento de actualizar apt y tener los repositorios listos. Editamos /etc/apt/source.list para que quede así:

deb http://archive.ubuntu.com/ubuntu/ lucid restricted main multiverse universe
deb-src http://archive.ubuntu.com/ubuntu/ lucid restricted main multiverse universe
deb http://archive.ubuntu.com/ubuntu/ lucid-updates restricted main multiverse universe
deb-src http://archive.ubuntu.com/ubuntu/ lucid-updates restricted main multiverse universe
deb http://archive.ubuntu.com/ubuntu/ lucid-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ lucid-backports main restricted universe multiverse
deb http://archive.canonical.com/ubuntu lucid partner
deb-src http://archive.canonical.com/ubuntu lucid partner


Luego actualizamos la base de datos de paquetes y actualizamos el sistema, luego cambiamos la clave de root y finalmente agregamos usuarios, creamos el grupo admin y configuramos sudo para que los miembros del grupo admin tengan privilegios de sudo.

# apt-get update
# apt-get dist-upgrade
# passwd
# adduser steve
# addgroup admin
# adduser steve admin
# echo "%admin ALL=(ALL) ALL" >> /etc/sudoers


Instalamos el kernel de servidor junto con GRUB como bootloader, y configuramos correctamente el boot:

# apt-get install linux-image-server grub
# mkdir /boot/grub
# update-grub
# update-initramfs -u


Ahora dejamos el chroot e instalamos grub en el USB:

# exit
# grub-install --root-directory=/stick --no-floppy --recheck /dev/sda


Si todo fue bien podremos reiniciar dentro del USB. En este punto el sistema no es de solo lectura.

Para que el sistema sea de solo lectura utilizaremos "fsprotect"

Sobre fsprotect:
Conjunto de scripts para montar de forma transparente un fs en RAM, como sistema de ficheros de sólo lectura para proteger el almacenamiento flash. (La idea es no escribir nada en el disco flash mientras el sistema está en funcionamiento, esta utilidad protege su sistema contra la corrupción fs después de bajadas de energía inesperada.)

La página de inicio de Fsprotect tiene la versión disponible para su descarga en formato de archivo de origen del paquete debian fsprotect.dsc + tar.gz 1.0.5.

Para instalarlo:

Buscar la particion corespondiente al USB y montarla.

# sudo fdisk -l
# sudo mount /dev/sdXY /stick

# sudo mount -t sysfs sysfs /stick/sys
# sudo mount --bind /dev /stick/dev
# sudo mount -t proc proc /stick/proc
# sudo su -c 'chroot /stick'

wget http://ftp.de.debian.org/debian/pool/main/f/fsprotect/fsprotect_1.0.5.dsc
wget http://ftp.de.debian.org/debian/pool/main/f/fsprotect/fsprotect_1.0.5.tar.gz

# dpkg-source -I fsprotect_1.0.5.dsc


Aquí pueden aparecer algunos errores, pero se va a extraer los archivos necesarios en el directrio fsprotect-1.0.5.
Puede ser necesario instalar dpkg-dev

# cd fsprotect-1.0.5


Contruir el paquete .deb para la instalación:

# dpkg-buildpackage -b


Este comando va a crear el paquete .deb en ../

Ahora lo instalamos:

#> dpkg -i fsprotect_1.0.5_all.deb


Ahora despues de una instalación exitosa debemos agregar algunas opciones en el grub.cfg para habilitar fsprotect añadiendo la siguiente opcion al kernel deseado: fsprotect=1G (para un dispositivo flash 1GB).