Sistemas operativos, seguridad, redes, programación, robótica y astronomía
Posteos etiquetados pendrive
Crear nuestra propia distribución basada en Ubuntu en un pendrive
6 dic 2009
Motivación
¿Por qué hacerlo? En primer lugar para aprender. Existen muchos sistemas hechos para instalar en pendrive, ¿pero donde estaremos más cómodos que en el nuestro propio? Como instalaremos sólo lo que necesitemos, podemos reducirlo a un sistema minimalista que entre en un Pendrive de 1GB, o un sistema completo para Pendrives de mayor capacidad.
Además bastará con crear una imagen del pendrive (mediante ‘cat’ o ‘dd’) para clonarlo las veces que queramos y en el número de memorias USB que deseemos (sería un buen regalo para un amigo: “un pendrive con una mini distribución hecha por ti mismo” xD).
Requisitos
Preparando el Pendrive
ATENCIÓN: Todos los datos que contenga el pendrive serán destruidos. Así que guárdate la información importante antes de empezar con el proceso. Introducimos el Pendrive en la ranura USB, suponemos que esta en /dev/sdc1 pero esto puede variar de un sistema a otro. Para asegurarte del dispositivo que es, una vez hayas insertado el pendrive se montará automáticamente. Ejecuta la orden mount desde la consola y verás el dispositivo que corresponde al pendrive.
Particionamos mediante fdisk, creamos 1 sola partición de tipo Linux (83), formateamos en ext2 y montamos en /mnt. Para ello seguimos los siguientes pasos:
- En primer lugar debemos desmontar el pendrive, ya que de lo contrario no nos dejará formatear y modificar las particiones. Para ello ejecutamos:
- sudo umount /dev/sdc1
- En segundo lugar creamos las particiones:
- sudo fdisk /dev/sdc1
- Pulsamos p para imprimir la tabla de particiones.
- Borramos todas las particiones, para ello pulsamos d e indicamos la partición a borrar. Repetimos este proceso tantas veces como particiones tengamos.
- Creamos una partición nueva, para ello pulsamos n y aceptamos los valores por defecto que son el principio y el fin, es decir, nuestra partición nueva ocupará toda la capacidad del pendrive.
- Guardamos y salimos con la opción w.
- sudo fdisk /dev/sdc1
- Formateamos con el sistema de archivos nativo de Linux:
- sudo mkfs.ext2 /dev/sdc1
- Montamos el dispositivo (pendrive) en /mnt:
- mount /dev/sdc1 /mnt
Instalando el sistema base
Esto nos lo hará la genial herramienta debootstrap. Sólo necesitamos indicarle la arquitectura y la versión de Ubuntu a usar.
En nuestro caso sera ‘i386′ y ‘karmic’, pero podéis variarlo según queráis. También le indicamos que incluya algunas herramientas extras y los paquetes de idioma en español.
- sudo debootstrap –include=language-pack-es,language-pack-es-base,initramfs-tools,nano,linux-image –components=main,universe –verbose –arch i386 karmic /mnt http://archive.ubuntu.com/ubuntu
Customizando el sistema
Ahora ya tenemos un sistema mínimo en el Pendrive. Vamos a instalar las herramientas que encontremos necesarias, y a personalizarlo un poco a nuestro gusto.
- En primer copiamos el archivo de resolución de las dns:
- sudo cp /etc/resolv.conf /mnt/etc/resolv.conf
- Luego montamos /proc
- sudo mount -t proc none /mnt/proc
- Ahora montamos /dev
- sudo mount -o bind /dev /mnt/dev
- Realizamos el cambio de sistema (chroot).
- sudo chroot /mnt
- Puede que de algún error del tipo “groups: no se puede encontrar el nombre para el grupo con ID 124″. Pero no hay que darle importancia.
- Instalamos unos paquetes extras.
- aptitude install joe screen ssh less openssl console-data console-common
- Instalamos el paquete de sistema
- aptitude install syslinux
- Establecemos una contraseña para root
- passwd
- Añadimos un usuario al sistema (substitye <nombre_usuario> por el nombre de usuario que desees).
- adduser <nombre_usuario>
Para poder usar el Pendrive en cualquier PC, necesitamos algun método que nos permita detectar en que unidad lo ha detectado la BIOS. Es decir sda,sdb,sdc… Para ello utilizaremos las etiquietas de disco (Label). Para asignar una etiqueta a un disco utilizaremos tune2fs. La etiqueta puede llamarse como queramos.
- tune2fs -L G3X /dev/sdc1
Configuramos los archivos básicos. El contenido de estos depende de nuestro caso en particular. Para editarlos podemos usar nano por ejemplo.
nano /etc/network/interfaces auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp nano /etc/hostname G3X nano /etc/hosts 127.0.0.1 localhost G3X nano /etc/fstab proc /proc proc defaults 0 0 LABEL=G3X / ext2 defaults,rw 0 1
Creamos el archivo mtab, e instalamos extlinux en el disco y mbr. ¡Mucho cuidado con este último paso!
- grep -v rootfs /proc/mounts > /etc/mtab
- mkdir -p /boot/extlinux
- extlinux -zi /boot/extlinux
-
CUIDADO: El siguiente comando es importante que te fijes en el dispositivo al cual redireccionamos. Si nuestro pendrive estaba en /dev/sdc1 redireccionaremos a /dev/sdc (es decir sin el número). Si el pendrive fuese /dev/sdb1 redireccionaríamos a /dev/sdb.-
cat /usr/lib/syslinux/mbr.bin > /dev/sdb
-
Ahora creamos el archivo de configuración de extlinux.hora creamos el archivo de configuración de extlinux.
- nano /boot/extlinux/extlinux.conf
default G3X prompt 1 timeout 5 display /boot/extlinux/hola.msg label G3X kernel /boot/vmlinuz-2.6.31-14-generic append initrd=/boot/initrd.img-2.6.31-14-generic rw root=LABEL=G3X
Los parámetros señalados en azul deben obtenerse haciendo un ls sobre /boot