lunes, diciembre 10, 2007

Montar particiones al arrancar con FSTAB

Este articulo es para enseñar y yo recordar en un futuro, como y que hay que hacer para montar una partición que ubuntu no monta solo al instalar el sistema o simplemente no monta al arrancar el sistema.

Introducción

Primero empezaremos diciendo que en linux las particiones son los archivos hd?? o sd?? que están en el directorio /dev. Si lo que tenemos es un disco duro de conexión IDE o PATA, como quieras llamarlo, pues tus particiones empezarán por hd, luego según donde tengas conectado el disco duro, si en el primer conector o en el segundo, el archivo será hda? o hdb?, también esta los hdc y hdd, dependiendo si el disco duro esta conectado al otro cable IDE. Por otro lado, si tu disco duro es de conexión SATA, entonces tu archivo será sd? y luego la a,b,c, etc... dependiendo de en que cable lo hayas conectado en la controladora. De todas maneras no se si se le asigna los nombres secuencialmente y siempre habrá un sda si hay un sdb, y se puede decir lo mismo de los hda, hdb, etc...

Una vez explicado como se va a llamar tu archivo que representa el disco duro en linux, pasamos a describir como representa las particiones dentro de tu disco duro linux. Imaginemos que tenemos 4 particiones en nuestro disco duro, donde en la 1 tenemos instalada el windows XP, en la 2 , en la una partición que no se exactamente que es (¿la raíz para la partición logica?), en la 3 tenemos instalado el SWAP (partición de intercambio), en la 4 tenemos instalada nuestra distribución Ubuntu y en la 5 tenemos una partición de almacenamiento llamada Datos. Pues planteado este entorno de particiones y que en mi caso mi disco duro es un SATA y solo tengo uno, podemos decir que linux llamará sda1 a la partición donde esta XP, sda2 a esa "partición", sda3 a la partición swap, sda4 a la partición donde esta instalado el linux y sda5 a la partición de datos. Para ver nuestras particiones tenemos el comando:

$ sudo fdisk -l

que nos mostrá lo siguiente:


(hacer clic para agrandar y que se vea bien)

De esta imagen podemos observar que la columna:

1º es el nombre de la partición.

2º marca con un * la partición de arranque donde esta el MBR.

7º nos cuenta en que tipo de formato esta formateada la partición.

Llegados a este punto ya sabemos como tenemos organizado nuestro disco duro y he contado todo esto, por que cuando leo algo sobre linux me gusta que antes me pongan en situación, por que muchas veces hacen las cosas, casi no las explican y peor aun, no explican de donde sacar los datos que son necesarios para realizar la tarea.

Desarrollo

Una vez sabemos ya todo lo necesario, solo decir que el archivo que le dice al linux que particiones tiene que montar al arrancar o que particiones hay en nuestro equipo es el archivo /etc/fstab .

De este archivo lo que nos interesa son explicar para que sirven las columnas útiles ya que hay algunas que no se para que son y por lo tanto no me son útiles para montar simples particiones de datos. A continuación muestro el contenido de mi archivo fstab, con la línea ya introducida.




(hacer clic para agrandar y que se vea bien)

De esta imagen podemos observar que la columna:

1º es el identificador de la partición el UUID.

2º es el lugar donde vamos a montar la partición, la carpeta debe existir previamente.

3º es el tipo de formateo que tiene la partición.

4º son las distintas opciones para montar la partición

la 5º y la 6º no se para que son, yo copie los valores de la partición sda1 que esa si me la monto solo el ubuntu.

En mi caso, la partición que quise meter en el fstab es la sda5, la última linea, para saber que hay que poner en la 1º columna, el UUID, podemos sacar su valor con el siguiente comando, el cual nos devuelve el UUID de la partición que le pasamos.

$ sudo vol_id -uuid /dev/sda5

El valor que nos devuelva, lo pondremos a continuación de UUID="ristra_devuelta". En la 2º columna pondremos la ruta donde queremos montar nuestra partición, acordaos de crear antes la carpeta y de poner los permisos para que podáis acceder sin ser root. En la 3º columna ponemos ntfs, ya que la partición es de ese tipo. En la cuarta columna ponemos las opciones con que queramos montar nuestra partición, estas opciones están explicadas en el man mount. Las mas relevantes son:

umask : Con ello se indica con que permisos se montará la partición.

gid : Con ello se indica que grupo de usuarios podrán acceder a la partición (o eso creo).

Con esto acabo la explicación de como hacer para que se monte una partición automáticamente, solo recordaos que también podemos montar la partición a mano, por si esto no funciona, con $ sudo mount -a /dev/sda5 /media/datos

Bueno chao y asta otra, intentaré completar el articulo añadiendo el significado de más opciones.

PD: Si he tenido algún error de concepto por favor diganlo.


NOTA: Si queréis saber más y/o mejor, leed el primer comentario de OLE, que amplía conocimiento y comenta las cosas que se podían mejorar.

7 comentarios:

Ole dijo...

Te explico un poco lo que aun dudas.

En linux los ficheros /dev/hdX y /dev/sdX no se asocian con los IDE o con los SATA, los asocia el administrador como mas le guste, lo que pasa es que de siempre se han usado los hdX para las cosas en el bus IDE (date cuenta que estos no son solo discos duros, tambien CD-ROMs, disqueteras y cosas mas raras como cintas magneticas, etc...) y los sdX estaban en un principio asociados con el bus SCSI. Mas tarde se paso a usar tambien para SATA y tambien para USB.

Sin embargo esto no tiene porque ser asi, de hecho yo por ejemplo tengo en el portatil un disco IDE rañoso y el fichero asociado es /dev/sda. El sitio donde se definen estos nombres es en el fichero /boot/grub/device.map (si estas usando GRUB, si usaras LILO o algun otro gestor de arranque ya no se). En ese fichero se define por un lado el dispositivo en los buses y por otro lado el nombre dentro del sistema. Por ejemplo, mi fichero en Ubuntu:

1 (hd0) /dev/sda
2 (hd1) /dev/sdb

¡AHI ES DONDE SE DEFINEN ESAS COSAS! Lo que ahi se dice es, el primer dispositivo del bus IDE estara mapeado en /dev/sda, el master, y el otro en /dev/sdb (que en mi ordenador dicho sea de paso es el controlador USB). Asi que ahi puedes poner el fichero que te de la gana... pero primero crealo con mknod (ahi ya te informas tu xD).

Mas cosas, cuando manipulas en /etc/fstab, el quinto campo le sirve a la familia de programas dump (ya van dos man) analizar el superbloque de una particion. El sexto campo es para fsck o sea File System ChecK, ademas indica el orden en que lo analizara.

En el primer campo de fstab no hace falta poner un nombre UUID kilometrico, basta con que pongas el fichero nodo donde va a estar, por ejemplo /dev/hda2. Ubuntu viene con los UUID por defecto, pero yo nunca lo pongo asi, de hecho si te fijas en la linea superior a cada declaracion del fstab veras que te pone comentado que fichero nodo le corresponde, de hecho el UUID ese sirve para que el kernel sepa donde tiene el directorio raiz, si te vas a /boot/grub/menu.lst y miras la entrada del nucleo (de uno de ellos), veras que el arranque tiene un parametro "root=UUID=numero_grande" que corresponde con el UUID del sistema que se montara en "/". A continuacion pongo mis tres ficheros en Ubuntu y luegon en Gentoo para que veas las analogias y donde se usa cada cosa:

Ubuntu /boot/grub/device.map
1 (hd0) /dev/sda
2 (hd1) /dev/sdb

Ubuntu /etc/fstab (una entrada na mas)
5 # /dev/sda3
6 UUID=47f512f2-53ba-4c1a-a6e6-12ee73efac8b / xfs defaults 0 1

Ubuntu /boot/grub/menu.lst (un nucleo)
132 title Ubuntu
133 root (hd0,0)
134 kernel /vmlinuz-2.6.22-14-generic root=UUID=47f512f2-53ba-4c1a-a6e6-12ee73efac8b ro quiet splash

Fijate como el nucleo que arraca esta en (hd0) primera particion de primer dispositivo IDE, sin embargo va a ser puesto en /dev/sda1, que es donde me indica fstab con device.map.

Ahora en Gentoo.

Gentoo device.map
1 (hd0) /dev/hda
2 (hd1) /dev/sdb

Gentoo /etc/fstab (solo una entrada)
18 /dev/hda6 / reiserfs noatime 0 1

Gentoo /boot/grub/menu.lst (un nucleo)
7 title Gentoo Linux 2.6.22-r9
8 root (hd0,4)
9 kernel /boot/kernel-genkernel-x86-2.6.22-gentoo-r9 root=/dev/hda6 ro quiet

Cosas que deberias fijarte:

1- En ubuntu mi disco duro es /dev/sda, en gentoo /dev/hda

2-En ubuntu mi fstab tiene un UUID enorme y el nucleo usa ese UUID. En gentoo no tengo ese UUID por lo que uso directamente /dev/hdX para referirme a la particion, tanto en fstab para indicar que es /dev/hda6 la que es / y en el nucleo para indicar que la particion raiz es /dev/hda6.

Por cierto, tu "particion rara" que tienes en /dev/sda2 no es tan rara xD. Es una particion extendida (ay mi madre! no sabes ni como tienes el disco). Fijate en la geometria, comienza en el bloque 2612 y termina en el 18276 y ¡oooh que cosas!, tu /dev/sda5 comienza y termina en los mismos bloques... TACHAN! SE PISAN!!! no, particiones fisicas en un bus IDE no se pueden tener mas de 4... y tu tienes 5, la forma de "solucionar" esto es creando una de las particiones fisicas como extendida, lo que significa que esa particion va a contener cualquier cantidad de particiones logicas. En tu caso es un poco tonto la verdad, porque crear una particion extendida para poner encima una UNICA particion logica... para eso usas directamente la fisica... lo bueno es que si necesitas redimensionar el disco puedes redimensionar la logica y volver a partir, eso ya a gusto del consumidor.

Espero que queden unas cuantas cosas claras.

Suerte con eso.

Nauzet dijo...

Hola tio, lo del tema de los hdX y sdX, lo explique como para alguien que no haya estudiado informatica, osea para alguien que no sepa nada de nada y este empezando con el mundillo. Se que no esta bien explicado, aunque lo quiesiera resumir.

Por todos los datos de incluyes, sobre lo del fstab gracias... no llegue a entender si significado.. pero no me parecian relevantes las 2 ultimas columnas. Lo del grub, pues joder cuando lo lei dije ostiasss si esto lo dimos en ASO y claro me hiciste recordad los viejos tiempos jajaj.

Y bueno para acabar... se que no tengo perdon de dios por lo de las particiones.. pero claro, 2 particiones, las ntfs, las cree cuando instale el XP, y parece ser que la particion sda5 la creo logica, y luego cuando instalo el ubuntu creo las otras 2 particiones, la swap y la de montar el sistema.

Pero bueno como le digo a la gente.. esta instalacion de ubuntu en el portatil nuevo, es para cacharrear, y hacerle trastadas y probarlo como sistema primario y ver todo lo que me ofrece.. si un dia se peta, ya cogere y hare las mejoras pertinentes, pero por ahora mientras vaya agustote :)

Anónimo dijo...

Hey gracias por el post. Es de mucha utilidad sobre todo porque yo guardo todas las cosas en un hd y no es el root ni el del usuario. Pero no e podido llegar a montar el hd.

Un poco de informacion:
Tengo Ubuntu 8.04 Harly
Mi hd es sata 160gb (sdb1)


Bueno siguiendo los pasos que has puesto, lo unico que me fallo fue a la hora de poner la siguiente instruccion:

$ sudo vol_id -uuid /dev/sdb1
vol_id: invalid option -- i

Por lo cual use la instruccion si poner el -uuid.

$ sudo vol_id /dev/sdb1
ID_FS_USAGE=filesystem
ID_FS_TYPE=vfat
ID_FS_VERSION=FAT32
ID_FS_UUID=47EF-96AE
ID_FS_UUID_ENC=47EF-96AE
ID_FS_LABEL=LION
ID_FS_LABEL_ENC=LION
ID_FS_LABEL_SAFE=LION

Siguiendo todos los otros pasos al final lo que añadi en el /etc/fstab fue lo siguiente:

# /dev/sdb1
UUID=47EF-96AE /media/datos FAT32 relatime 0 1

La carpeta datos ya existe, tambien he intentado cambiando la opcion.
Donde dice relatime lo he cambiado por
default ó relatime,errors=remount-ro

Pero no me a funcionado.
Alguna ayuda por fa. Y gracias de verdad que me es muy util este post

Ole dijo...

Veamos, esto es lo que tienes en el fstab

UUID=47EF-96AE /media/datos FAT32 relatime 0 1

Sinceramente, yo no usaria el UUID para referirme a la particion, a mi por lo menos me resulta un coñazo. Otra cosa mas que tienes que saber es que el sistema de ficheros es vfat no fat32 (mira man mount y observa cuales son los sistemas de ficheros). Para que funcionara yo lo dejaria asi:

/dev/sdb1 /media/datos vfat relatime 0 1

Con esto ya deberia funcionarte sin embargo tal cual esta no te dejara (con un usuario normal) escribir en el disco a menos que uses sudo, recuerda que estos montajes se hacen en el arranque y todo es del root a menos que se indique lo contrario, para ello yo pondria la siguiente linea:

/dev/sdb1 /media/datos vfat defaults 0 1

Si lees man mount (recomendado) veras que defaults se expande por rw (entre otras), lo que te permitira leer y escribir en el sistema de ficheros (a menos que la mascara de permisos no la tengas bien configurada pero lo dudo mucho). Sobre la opcion relatime... bueno, si quieres ponerla ponla, basicamente sirve "para acelerar el disco" (no es para eso pero es el efecto que tiene... man mount) pero tu no lo notaras pk no tienes un ordenador de prestaciones criticas.

Bueno, con lo que te he puesto deberias poder resolver el problema, no obstante siempre puede pasar que no sea asi (yo mismo me conozco varios motivos por lo que podria no funcionar), pero el 98% de las veces con eso te basta.

Otra cosa y esta ya me resulta mas interesante... ¿por que el automounter de gnome (gnome-volume-manager) no te lo automonta? Eso si que me extraña.

Anónimo dijo...

Hola

Veras soy nuevo en ubuntu, aun tengo instalado güindous y uso una particion comun por asi decirlo para ambos SO..
la particon esta en fat32.
he logrado montarla pero no la encuentro,
mmm dejame ver is me puedo explicar ..
antes obviamente aparecia en lugares..y como el papel tapiz esta guardado en este particon comun, no aparecia hasta que montaba manualmente la particion.o lo q es lo mismo hasta q le daba clic en lugares a esta particion..
modifique el fstab y si ha logrado montarla por q cuando trato de montarla despues de editar dice que ya esta montada o que esta ocupada y desaparece de "lugares",sin embargo por ejemplo no aparece el papel tapiz que me daria la seguridad de que esta montada, si edito nuevamente y borro la linea de esta particion o la hago comentario aparece de nuevo en lugares.no se que sea lo que este mal. creo q las opciones te muestro la linea q he puesto en el fstab

/dev/sda7 /mnt/comun vfat defaults,gid=46,user,auto 0 1

la carpeta existe /mnt/comun existe
/dev/sda7 es la particion y estoy seguro q esta montada por q :

root@**:~# mount /dev/sda7
mount: /dev/sda7 ya está montado o /mnt/comun está ocupado
mount: según mtab, /dev/sda7 ya está montado en /mnt/comun
creo q lo q esta mal son las opciones pero no se cuales elegir para q se monte automaticamente al iniciar ubuntu y asi por ejemplo aparezca automaticamente el papel tapiz y no tenga montarla desde lugares...sin que esto signifique q desaparezca de alli...
gracias por tu ayuda
me seria de gran ayuda

gracias por tu tiempo

Gerardo dijo...

mmm creo que debo dejar mi correo por cualquier cosa se me olvido jejeje mm acabo de hacer un comentario sobre una duda ggh1988@gmail.com

Ole dijo...

@anonimo, @gerardo (sois el mismo supongo).

Mira, tendria que mirar algunos archivos mas de tu sistema, concretamente el /etc/passwd. Te explico.

Una de las opciones que tienes puesta en fstab es gid=46. Esto significa que cuando se monte esa particion TOOOOOODOS los ficheros tendran como grupo el grupo de tu sistema que tiene un gid igual a 46. Todo esto lo digo sin confirmar, pero veo que eres un usuario normal y que no haces cosas raras... supongo. Asinn que te informo de que cuando creas un usuario normal en tu sistema ubuntu le crea un grupo para el y por supuesto le da un uid y un gid... estos suelen ser 1000 si es el primero y a partir de ahi segun se van creando usuarios 1001, 1002, etc...

Si no fuera porque no apuesto apostaria a que tu usuario se llama algo asi como "gerardo" y que su uid y gid son ambos dos 1000. Deberias modificar la entrada en fstab y añadirle uid y gid algo tal que asinn:

/dev/sda7 /mnt/comun vfat defaults,uid=1000,gid=1000 0 2

No estoy seguro de que tu uid y gid sean 1000, estos estan escritos en /etc/passwd, miralo ahi, si no sabes que es cada campo... "man 5 passwd".

Si te funciona pero sigue habiendo comportamiento raro o quisieras dejarlo un poco mas comodo insisto, lee profundamente man mount, se que puede resultar un poco pesado, pero amigo esto funciona asi, si metes las manos por dentro del sistema acepta las consecuencias.