Linux From Scratch II: Entrando en materia

Después de comprobar los prerequisitos en mi post anterior, continúo con mi aventura de instalar Linux From Scratch en su versión actual, que es la 7.2. El libro continúa dando información acerca de cómo obtener ayuda en caso de problemas. Es la típica información que conviene tener a mano. Intuyo que me va a resultar útil. 🙂 El primer consejo que dá es leer la FAQ. Curiosamente, en la propia FAQ también hay una sección sobre cómo obtener ayuda. Sin duda es algo importante cuando se está instalando algo como Linux From Scratch. Por suerte estamos bien surtidos. Hay listas de correo, canales de IRC, y un documento que indica qué hacer si algún paquete dá errores de compilación. Tomo nota de esto para el futuro.

Creando la partición

Hasta aquí llega la primera parte del libro, que está formada sólo por el capítulo 1 de introducción. El capitulo 2 parece que ya empieza con cosas más interesantes: Crear una partición. Nada que un linuxero no haya hecho ya muchas veces. En mi caso, he decidido instalarlo en un USB que tengo disponible para que, de paso, me sirva como disco de rescate. Las particiones ya las tengo hechas. Tengo 8 Gb disponibles con 1 Gb de swap. El libro recomienda 2.8 Gb mínimo con hasta 10 Gb en caso de que se vayan a compilar muchas cosas. Creo que los 8 Gb me sirven. De no ser así, siempre puedo aumentar un poco el tamaño de la partición.

El siguiente paso es formatear la partición. Ya tenía un sistema de ficheros ext4 creado en esa partición, pero Linux From Scratch se instala sobre ext3 y, por lo que dice el libro, si el sistema de ficheros tiene más características de las necesarias es posible que tenga problemas en el futuro porque no estén soportadas por la versión del paquete e2fsprogs que Linux From Scratch instala. Por esta razón voy a formatear en ext3 y comprobar las características tal y como indica el libro:

[~]# mke2fs -jv /dev/sdc3
mke2fs 1.42.6 (21-Sep-2012)
fs_types for mke2fs.conf resolution: 'ext3'
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
447040 inodes, 1786760 blocks
89338 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1832910848
55 block groups
32768 blocks per group, 32768 fragments per group
8128 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done 

[~]# debugfs -R feature /dev/sdc3
debugfs 1.42.6 (21-Sep-2012)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype sparse_super large_file

Según el libro, las características que puede tener el sistema de fichero como máximo son has_journal, ext_attr, resize_inode, dir_index, filetype, sparse_super, large_file y needs_recovery. Veo que cumplo la condición. Lo siguiente es formatear la swap. No me acuerdo de si ya la tenía formateada, así que hacerlo una vez más no hará daño:

[~]# mkswap /dev/sdc2
mkswap: /dev/sdc2: warning: wiping old swap signature.
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=340b50a5-3b52-4b22-b86d-ff211511fc03

A juzgar por el mensaje parece que ya la tenía creada, pero no importa. No estaba en uso y nunca había sido usada.

Montando la partición recién creada

El siguiente paso es montar la partición. El libro recomienda crear una variable de entorno llamada LFS que contenga la ruta del punto de montaje de la partición. Me parece una idea bastante práctica, así que voy a hacerlo así. Montaré la partición en /mnt/lfs tal y como lo hace el libro.

[~]# mkdir /mnt/lfs
[~]# export LFS=/mnt/lfs
[~]# mkdir -pv $LFS
[~]# mount -v -t ext3 /dev/sdc3 $LFS
mount: /dev/sdc3 mounted on /mnt/lfs

El libro advierte que la partición debe estar montada con permisos que no sean demasiado restrictivos. En particular, no debe estar montada con las opciones nosuid, nodev, ni noatime. Vamos a comprobarlo:

[~]# mount | grep /mnt/lfs
/dev/sdc3 on /mnt/lfs type ext3 (rw,relatime,data=ordered)

No está montada con ninguna de esas opciones, pero está montada con relatime. La opción relatime es parecida a noatime, pero relatime actualiza la fecha de acceso de cada fichero cuando tiene más de un día de antigüedad. Esto es para mejorar el rendimiento del dispositivo reduciendo el número de accesos a la partición. Por lo que veo aquí, esto no tiene por qué darme problemas. Voy a fiarme.

Lo siguiente que el libro hace es activar la swap. No sé si es realmente necesario, porque ya estoy usando la swap de mi sistema, pero como tener dos swaps activadas no hace daño voy a hacerlo.

[~]# swapon -v /dev/sdc2
swapon /dev/sdc2
swapon: /dev/sdc2: found swap signature: version 1, page-size 4, same byte order
swapon: /dev/sdc2: pagesize=4096, swapsize=1073741824, devsize=1073741824

Descargando los paquetes necesarios

El siguiente capítulo explica cómo descargar los paquetes de código fuente necesarios para compilar. Para que esos paquetes estén disponibles durante todo el proceso, tengo que dejarlos en un directorio dentro de la partición en la que estoy instalando. Por alguna razón que desconozco, el libro recomienda hacer el directorio sticky, o sea, que los usuarios sólo puedan borrar los ficheros que les pertenecen. No sé por qué es necesario, pero seguiré la recomendación:

[~]# mkdir -v $LFS/sources
mkdir: created directory ‘/mnt/lfs/sources’
[~]# chmod -v a+wt $LFS/sources
mode of ‘/mnt/lfs/sources’ changed from 0755 (rwxr-xr-x) to 1777 (rwxrwxrwt)

El siguiente paso es descargar todos los paquetes desde las webs originales de cada uno. Descargarlos todos de uno en uno sería un auténtico coñazo :), así que el libro proporciona un fichero con la lista de direcciones de cada paquete adecuado para usar con wget. Además, en este fichero están también los parches de cada paquete hechos por los autores de Linux From Scratch. Voy a usar este fichero para descargar todo.

[~]# wget http://www.linuxfromscratch.org/lfs/view/stable/wget-list
--2012-12-13 17:18:15--  http://www.linuxfromscratch.org/lfs/view/stable/wget-list
Resolving www.linuxfromscratch.org (www.linuxfromscratch.org)... 216.171.237.234
Connecting to www.linuxfromscratch.org (www.linuxfromscratch.org)|216.171.237.234|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 4788 (4.7K) [text/plain]
Saving to: ‘wget-list’

100%[=======================================================================================================>] 4,788       18.6KB/s   in 0.3s   

2012-12-13 17:18:16 (18.6 KB/s) - ‘wget-list’ saved [4788/4788]

[~]# wget -i wget-list -P $LFS/sources
--2012-12-13 17:19:14--  http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.xz
Resolving ftp.gnu.org (ftp.gnu.org)... 208.118.235.20, 2001:4830:134:3::b
Connecting to ftp.gnu.org (ftp.gnu.org)|208.118.235.20|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1214744 (1.2M) [application/x-tar]
Saving to: ‘/mnt/lfs/sources/autoconf-2.69.tar.xz’

100%[=======================================================================================================>] 1,214,744    560KB/s   in 2.1s   

2012-12-13 17:19:16 (560 KB/s) - ‘/mnt/lfs/sources/autoconf-2.69.tar.xz’ saved [1214744/1214744]

--2012-12-13 17:19:16--  http://ftp.gnu.org/gnu/automake/automake-1.12.3.tar.xz
Reusing existing connection to ftp.gnu.org:80.
HTTP request sent, awaiting response... 200 OK
Length: 1378784 (1.3M) [application/x-tar]
Saving to: ‘/mnt/lfs/sources/automake-1.12.3.tar.xz’

100%[=======================================================================================================>] 1,378,784    871KB/s   in 1.5s   

....

2012-12-13 17:30:06 (149 MB/s) - ‘/mnt/lfs/sources/readline-6.2-fixes-1.patch’ saved [1287/1287]

--2012-12-13 17:30:06--  http://www.linuxfromscratch.org/patches/lfs/7.2/sed-4.2.1-testsuite_fixes-1.patch
Reusing existing connection to www.linuxfromscratch.org:80.
HTTP request sent, awaiting response... 200 OK
Length: 1853 (1.8K) [text/plain]
Saving to: ‘/mnt/lfs/sources/sed-4.2.1-testsuite_fixes-1.patch’

100%[=======================================================================================================>] 1,853       --.-K/s   in 0s      

2012-12-13 17:30:06 (7.47 MB/s) - ‘/mnt/lfs/sources/sed-4.2.1-testsuite_fixes-1.patch’ saved [1853/1853]

FINISHED --2012-12-13 17:30:06--
Total wall clock time: 7m 38s
Downloaded: 78 files, 293M in 6m 56s (721 KB/s)

He omitido la mayor parte de la salida ya que no tenía mucho sentido ponerlo todo aquí. En total han sido 293 Mb en 7 minutos 38 segundos. No ha tardado mucho. Lo siguiente es comprobar que la descarga ha sido correcta. Para esto, el libro proporciona otro fichero con los md5 de cada paquete. Hay que descargarlo en el mismo directorio que los paquetes y comprobarlo con md5sum.

[~]# wget http://www.linuxfromscratch.org/lfs/view/stable/md5sums -P $LFS/sources
--2012-12-13 17:39:00--  http://www.linuxfromscratch.org/lfs/view/stable/md5sums
Resolving www.linuxfromscratch.org (www.linuxfromscratch.org)... 216.171.237.234
Connecting to www.linuxfromscratch.org (www.linuxfromscratch.org)|216.171.237.234|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 4374 (4.3K) [text/plain]
Saving to: ‘/mnt/lfs/sources/md5sums’

100%[=======================================================================================================>] 4,374       17.1KB/s   in 0.3s   

2012-12-13 17:39:01 (17.1 KB/s) - ‘/mnt/lfs/sources/md5sums’ saved [4374/4374]

[~]# cd $LFS/sources
[/mnt/lfs/sources]# md5sum -c md5sums
autoconf-2.69.tar.xz: OK
automake-1.12.3.tar.xz: OK
bash-4.2.tar.gz: OK
binutils-2.22.tar.bz2: OK
bison-2.6.2.tar.xz: OK
bzip2-1.0.6.tar.gz: OK

...

procps-3.2.8-fix_HZ_errors-1.patch: OK
procps-3.2.8-watch_unicode-1.patch: OK
readline-6.2-fixes-1.patch: OK
sed-4.2.1-testsuite_fixes-1.patch: OK
[/mnt/lfs/sources]# cd

Parece que está todo correcto. El libro recomienda instalar el último kernel de la serie 3.5 para evitar los bugs corregidos que haya en este. Actualizar el kernel puede ser un buen ejercicio para hacer después de tenerlo todo instalado. De momento voy a seguir con la versión que indica el libro. En el siguiente post terminaré de preparar el entorno y quizás empiece a compilar algo.

EOF

Anuncios