IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Linux Professional Institute Certificate. LPIC-1

Lpic1 large.gif
Certificat LPIC-1
Examen: 101 (torneu a la resta de temes)
Fitxers: LPI104.1_104.2_104.3_ParticionsSistemesFitxersIMuntatge.pdf (LPI104.1_104.2_104.3_ParticionsSistemesFitxersIMuntatge.odp)
Objectius: http://www.lpi.org/eng/certification/the_lpic_program/lpic_1/exam_101_detailed_objectives
Dipòsit SVN: https://svn.projectes.lafarga.cat/svn/lpi/Materials/Examen_101/103.1
Usuari: anonymous
Paraula de pas: qualsevol paraula de pas

Objectius del tema

104.3. Muntatge i desmuntatge de sistemes de fitxers
Objective.jpg
  • Objectiu: Els candidats han de ser capaços de configurar el muntatge i desmuntatge d'un sistema de fitxers.
  • Pes: 3
060317 Icon - Theory of Knowledge v01 pdc.jpg

Àrees Clau de Coneixement:

Icon list.jpg

La següent és una llista parcial de fitxers, termes i utilitats utilitzades:

Text-editor.svg

Apunts: LPI 104.3. Muntatge i desmuntatge de sistemes de fitxers

Muntar un sistema de fitxers. ordre mount

La sintaxi de l'ordre depèn del mode en que la utilitzem. Existeix un mode consulta amb la següent sintaxi:

$ mount [-lvH]

On les opcions són:

  • -l: Mostra el mateix resultat que sense -l.
  • -V: Mostra la versió
  • -h: Mostra l'ajuda.

NOTA: Observeu que l'ordre mount no necessita de superusuari. Això és degut a que els usuaris sempre poden consultar els dispositius muntat i fins i tot muntar sistemes de fitxers si se'ls hi ha donat permís

Per exemple:

$ mount
/dev/sda1 on / type ext3 (rw,relatime,errors=remount-ro)
proc on /proc type proc (rw)
none on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type tmpfs (rw,mode=0755)
none on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
none on /dev/shm type tmpfs (rw,nosuid,nodev)
none on /var/run type tmpfs (rw,nosuid,mode=0755)
none on /var/lock type tmpfs (rw,noexec,nosuid,nodev)
none on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
gvfs-fuse-daemon on /home/sergi/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=sergi)
/dev/loop0 on /home/sergi/Documents/LPI/lpi/Materials/Examen_101/104.1/loop0 type ext3 (rw)

NOTA: És equivalent als continguts del fitxer /etc/fstab

La sintaxi per a muntar un dispositiu és:

$ mount [-fnrsvw] [-t vfstype] [-o options] device dir

On:

  • -f: Mode fake. No executa realment el muntatge. Útil combinat amb -v
  • -n: Munta sense escriure a /etc/mtab
  • -r: Munta el sistema de fitxers en mode només lectura (-r readonly)
  • -s: ignora les opcions que no siguin correctes.
  • -v: mode verbose
  • -w: Munta el sistema de fitxers en mode lectura/escriptura

L'opció -t especifica el tipus de sistema de fitxers. Podeu consultar els sistemes de fitxers que possibles amb:

$ man fs

NOTA: Si no s'especifica el tipus, aleshores s'intenta determinar de forma automàtica

L'opció -o és per especificat paràmetres opcionals (opcions). Hi ha de dos tipus:

  • No específiques del sistema de fitxers: consulteu la secció FILESYSTEM INDEPENDENT MOUNT OPTIONS del manual de mount
  • Específiques del sistema de fitxers: consulteu la secció FILESYSTEM SPECIFIC MOUNT OPTIONS

Per muntar una partició només cal executar:

$ sudo mkdir carpeta_on_muntar_dispositiu

I muntar-lo amb

$ sudo mount /dev/sda1 carpeta_on_muntar_dispositiu

Recursos:

L'opció -a. Muntar els dispositius del fitxer /etc/fstab

La sintaxi és la següent:

$ mount -a [-fFnrsvw] [-t vfstype] [-O optlist]

On totes les opcions són les mateixes que sense l'opció -a, excepte:

  • -F: Fa el muntatge més ràpid (fent forks i muntant tots els dispositius en paral·lel). L'inconvenient és que el muntatge no es fa en ordre i pot haver-hi muntatges que depenguin d'altres.

L'opció -a el que es muntar tots els dispositius especificats al fitxer /etc/fstab. Si ja estan muntats no fa res i també cal tenir en compte que no muntarà els dispositius que tinguin l'opció noauto.

Quan es munten dispositius especificats al fitxer /etc/fstab, aleshores no cal indicar el punt de muntatge.

L'opció -t (type) té el significat invers a l'habitual quan s'utilitza conjuntament amb l'opció -a. Per exemple:

$ sudo mount -a -t nomsdos,ext

Munta tots els dispositius del fitxer fstab excepte els de tipus nomsdos i ext.

L'ordre mount com a frontend d'altres ordres

Si executeu:

$ whereis mount
mount: /bin/mount /sbin/mount.fuse /sbin/mount.ntfs /sbin/mount.ntfs-3g /usr/share/man/man8/mount.8.gz /usr/share/man/man2/mount.2.gz

Veureu que per a certs sistemes de fitxers (p. ex. NTFS), existeix una ordre mount pròpia. Així, quan muntem un sistema de fitxers amb NTFS realment estem utilitzant l'ordre:

/sbin/mount.ntfs

bind

Permet muntar dos cops una mateixa carpeta:

# mount --bind /home/users /export/users

També es pot fer a /etc/fstab:

/home/users    /export/users   none    bind  0  0

Opcions independents del sistema de fitxers

  • async: Els accessos d'entrada/sortida (I/O) poden ser asíncrons.
  • sync: Els accessos d'entrada/sortida (I/O) són síncrons.
  • atime: Modifica la marca de temps (timestamp) a cada accés. Aquesta opció s'aplica per defecte
  • noatime: el contrari de l'anterior.
  • auto: Es pot muntar amb l'opció -a
  • noauto: Cal muntar-lo explícitament.
  • context: Relacionat amb selinux
  • defaults: utilitzar les opcions per defecte, que són: rw, suid, dev, exec, auto, nouser i async
  • dev: Interpreta els fitxer de dispositiu del sistema de fitxers a muntar
  • nodev: No interpreta els fitxer de dispositiu del sistema de fitxers a muntar
  • diratime: Modifica la marca de temps (timestamp) a cada accés al directory .És l'opció per defecte
  • nodiratime: el contrari de l'anterior.
  • exec: permet l'execució de fitxers binaris (executables) del sistema de fitxers muntat
  • noexec: el contrari de l'anterior.
  • group: permet a un usuari ordinari muntar el dispositiu si pertany al grup del fitxer de dispositiu. Implica les opcions nosuid i nodev
  • encryption: permet muntar un sistema de fitxers xifrat. s'utiliza conjuntament amb l'opció loop
  • keybits: especifica la mida en bits de la clau de xifratge
  • _netdev: indica que el dispositiu es pot muntar només si tenim accés a la xarxa. Evita que s'intenti muntar el dispositiu si no tenim encara xarxa.
  • nofail: no mostra missatges d'error si el dispositiu no existeix.
  • relatime: Actualitza les marques de temps mtime i ctime
  • norelatime: el contrari de l'anterior
  • relatime: desactiva noatime i relatime
  • suid: permet utilitzar els bits SUID i GID
  • nosuid: el contrari de l'anterior
  • owner: permet a un usuari ordinari muntar el dispositiu si es propietari del fitxer de dispositiu. Implica les opcions nosuid i nodev
  • remount: permet tornar a muntar un dispositiu que ja està muntat.
  • ro: muntar en mode només lectura
  • rw: muntar en mode lectura/scriptura
  • user: Consulteu LPI_104.3._Muntatge_i_desmuntatge_de_sistemes_de_fitxers#Muntar_dispositius_sense_ser_superusuari
  • nouser: el contrari de l'anterior
  • users: Consulteu LPI_104.3._Muntatge_i_desmuntatge_de_sistemes_de_fitxers#Muntar_dispositius_sense_ser_superusuari

NOTA: Algunes de les opcions són només útils quan estan al fitxer fstab

Opcions que depenen del sistema de fitxers

Opcions ext2, ext3 i ext4

Opcions ext2:

  • acl/noacl: Permet muntar un sistema de fitxers ext am suport per a ACLs (POSIX Access Control Lists)
  • bsddf/minixdf: estableix el comportament de la crida de sistema statfs
  • check=none/nocheck: No comprova el sistema de fitxers (vegeu fsck) durant el muntatge. Aquest és el comportament per defecte.
  • debug: mostra informació de depuració
  • errors=continue / errors=remount-ro / errors=panic: Que fer si hi ha un error.
  • grpid or bsdgroups / nogrpid or sysvgroups: Quin identificador de grup pren un nou fitxer durant la seva creació. Normalment és el grup de l'usuari que crea la carpeta, però si s'estableix grpid aleshores s'escull el grup de la carpeta on es col·loca el fitxer
  • grpquota / noquota / quota / usrquota: Aquestes opcions s'accepten però són ignorades.

Opcions ext3:

  • journal=update: Actualitza el journal al format actual
  • journal=inum: Si el journal ja existeix, aquesta opció és ignorada. Si no especifica el inode del journal
  • noload: no carrega el journal durant el muntatge

...

Opcions vfat

(Note: fat is not a separate filesystem, but a common part of the msdos, umsdos and vfat filesystems.)

Importants:

  • umask=value: estableix la mascara amb que es munten el fitxers (consulteu umask). Per exemple, umask=027 munta el fitxers amb els permisos 750 (-rwxr-x---).
  • dmask=value: Similar a umask, però estableix la mascarà només per als directoris
  • fmask=value: Similar a umask, però estableix la mascarà només per als fitxers
  • conv=code: Opcions del valor code:
  • b o binary: no modifica els continguts del fitxer
  • t o text: Autoconverteix els formats de fitxers de DOS (o MAC) a Linux (end-of-line characters).
  • a o auto: aplica la conversió inclòs en fitxers binaris.

NOTA: Millor no utilitzar conv per que pot deixar inservibles els fitxers

TODO:

blocksize=512 / blocksize=1024 / blocksize=2048
             Set blocksize (default 512). This option is obsolete.
      uid=value and gid=value
             Set the owner and group of all files.  (Default: the uid and gid of the current process.)
      umask=value
             Set the umask (the bitmask of the permissions that are not present). The default is the umask of the current process.  The value is given in octal.
      dmask=value
             Set the umask applied to directories only.  The default is the umask of the current process.  The value is given in octal.
      fmask=value
             Set the umask applied to regular files only.  The default is the umask of the current process.  The value is given in octal.
      allow_utime=value
             This option controls the permission check of mtime/atime.
             20     If current process is in group of file's group ID, you can change timestamp.
             2      Other users can change timestamp.
             The default is set from `dmask' option. (If the directory is writable, utime(2) is also allowed. I.e. ~dmask & 022)
             Normally  utime(2)  checks  current process is owner of the file, or it has CAP_FOWNER capability.  But FAT filesystem doesn't have uid/gid on disk, so normal
             check is too unflexible. With this option you can relax it.
      check=value
             Three different levels of pickyness can be chosen:
             r[elaxed]
                    Upper and lower case are accepted and equivalent, long name parts are truncated (e.g.  verylongname.foobar becomes verylong.foo), leading and  embedded
                    spaces are accepted in each name part (name and extension).
             n[ormal]
                    Like "relaxed", but many special characters (*, ?, <, spaces, etc.) are rejected.  This is the default.
             s[trict]
                    Like  "normal",  but  names  may  not  contain  long  parts and special characters that are sometimes used on Linux, but are not accepted by MS-DOS are


  codepage=value
             Sets the codepage for converting to shortname characters on FAT and VFAT filesystems. By default, codepage 437 is used.
      conv=b[inary] / conv=t[ext] / conv=a[uto]
             The fat file system can perform CRLF<-->NL (MS-DOS text format to UNIX text format) conversion in the kernel. The following conversion modes are available:
             binary no translation is performed.  This is the default.
             text   CRLF<-->NL translation is performed on all files.
             auto   CRLF<-->NL translation is performed on all files that don't have a "well-known binary" extension. The list of known extensions  can  be  found  at  the
                    beginning  of  fs/fat/misc.c (as of 2.0, the list is: exe, com, bin, app, sys, drv, ovl, ovr, obj, lib, dll, pif, arc, zip, lha, lzh, zoo, tar, z, arj,
                    tz, taz, tzp, tpz, gz, tgz, deb, gif, bmp, tif, gl, jpg, pcx, tfm, vf, gf, pk, pxl, dvi).
             Programs that do computed lseeks won't like in-kernel text conversion.  Several people have had their data ruined by this translation. Beware!
             For file systems mounted in binary mode, a conversion tool (fromdos/todos) is available. This option is obsolete.
      cvf_format=module
             Forces the driver to use the CVF (Compressed Volume File) module cvf_module instead of auto-detection. If the kernel supports kmod, the cvf_format=xxx  option
             also controls on-demand CVF module loading.  This option is obsolete.
      cvf_option=option
             Option passed to the CVF module. This option is obsolete.
      debug  Turn  on  the  debug  flag.  A version string and a list of file system parameters will be printed (these data are also printed if the parameters appear to be
             inconsistent).
      fat=12 / fat=16 / fat=32
             Specify a 12, 16 or 32 bit fat.  This overrides the automatic FAT type detection routine.  Use with caution!
      iocharset=value
             Character set to use for converting between 8 bit characters and 16 bit Unicode characters. The default is iso8859-1.  Long filenames are stored  on  disk  in
             Unicode format.
      tz=UTC This option disables the conversion of timestamps between local time (as used by Windows on FAT) and UTC (which Linux uses internally).  This is particuluarly
             useful when mounting devices (like digital cameras) that are set to UTC in order to avoid the pitfalls of local time.


 quiet  Turn on the quiet flag.  Attempts to chown or chmod files do not return errors, although they fail. Use with caution!
      showexec
             If set, the execute permission bits of the file will be allowed only if the extension part of the name is .EXE, .COM, or .BAT. Not set by default.
      sys_immutable
             If set, ATTR_SYS attribute on FAT is handled as IMMUTABLE flag on Linux.  Not set by default.
      flush  If set, the filesystem will try to flush to disk more early than normal.  Not set by default.
      usefree
             Use the "free clusters" value stored on FSINFO. It'll be used to determine number of free clusters without scanning  disk.  But  it's  not  used  by  default,
             because recent Windows don't update it correctly in some case. If you are sure the "free clusters" on FSINFO is correct, by this option you can avoid scanning
             disk.
      dots, nodots, dotsOK=[yes|no]
             Various misguided attempts to force Unix or DOS conventions onto a FAT file system.

ntfs

Mount options for ntfs

      iocharset=name
             Character set to use when returning file names.  Unlike VFAT, NTFS suppresses names that contain unconvertible characters. Deprecated.
      nls=name
             New name for the option earlier called iocharset.
      utf8   Use UTF-8 for converting file names.
      uni_xlate=[0|1|2]
             For  0  (or  `no'  or  `false'),  do  not  use escape sequences for unknown Unicode characters.  For 1 (or `yes' or `true') or 2, use vfat-style 4-byte escape
             sequences starting with ":". Here 2 give a little-endian encoding and 1 a byteswapped bigendian encoding.
      posix=[0|1]
             If enabled (posix=1), the file system distinguishes between upper and lower case. The 8.3 alias names are presented as hard links instead of being suppressed.
             This option is obsolete.
      uid=value, gid=value and umask=value
             Set the file permission on the filesystem.  The umask value is given in octal.  By default, the files are owned by root and not readable by somebody else.

iso9660

Correspont als CD-ROMs

Muntar les unitats de Windows

Per saber quines particions teniu i quines són les de Windows executeu:

$ sudo fdisk -l
Password: 

Disc /dev/hda: 60.0 GiB, 60011642880 octets
255 capçals, 63 sectors/pista, 7296 cilindres
Unitats = cilindres de 16065 * 512 = 8225280 octets 

Dispositiu Arrenc.   Comença       Acaba    Blocs    Id  Sistema
/dev/hda1               1         383     3076416   12  Diagnòstics Compaq
/dev/hda2   *         384        4744    35029732+   c  W95 FAT32 (LBA)
/dev/hda3            4745        7188    19631430   83  Linux
/dev/hda4            7189        7296      867510    5  Estesa
/dev/hda5            7189        7296      867478+  82  Linux swap / Solaris

Per exemple imagineu-vos que teniu Windows (cosa força comú) a /dev/hda1 amb NTFS i que hi volem accedir a través de la carpeta /media/windows:

$ sudo mkdir /media/windows

Feu una còpia de seguretat:

$ sudo cp /etc/fstab /etc/fstab_backup
$ gksudo gedit /etc/fstab

I afegim la següent línia:

/dev/hda1    /media/windows ntfs  nls=utf8,umask=0222 0    0

Ara imagineu-vos que teniu la FAT a /dev/hda2. Aleshores heu d'afegir la línia:

/dev/hda2    /media/windows vfat  iocharset=utf8,umask=000  0    0

Ara podeu reiniciar la màquina per que els canvis tinguin efecte o podeu executar

$ sudo mount -a 

Recursos:

Muntar imatges de disc. Dispositius loop

$ mkdir mnt
$ sudo mount -o loop ubuntu-9.10-desktop-i386.iso mnt

L'ordre anterior és equivalent a utilitzar prèviament l'ordre losetup:

$ sudo losetup /dev/loop0 ubuntu-9.10-desktop-i386.iso
$ sudo mount /dev/loop0 mnt

per desmuntar-lo:

$ sudo umount mnt

Consulteu també:

losetup

Segons el manual:

$ man losetup

Configura i control els dispositius loop. Aquests dispositius permeten accedir a un fitxer com si es tractes d'un dispositiu de blocs. L'ordre losetup es proporciona pel paquet mount:

$ dpkg -S /sbin/losetup
mount: /sbin/losetup

Vegem alguns exemples:

Associar un fitxer a un dispositiu de loop

Primer es recomanable consultar quin és el primer dispositiu lliure:

$ sudo losetup -f
/dev/loop0

Aleshores podem associar una imatge (per exemple un fitxer creat amb dd o una imatge ISO):

$ sudo losetup /dev/loop0 disk.img

Consultar l'estatus d'un dispositiu loop:

$ sudo losetup /dev/loop0
/dev/loop1: [0016]:4572421 (/home/sergi/disk.img)

Eliminar l'associació actual d'un dispositiu loop:

$ sudo losetup -d /dev/loop0

L'opció -d vol dir --detach i no pas esborrar.

Mostrar el primer dispositiu loop lliure:

$ sudo losetup -f
/dev/loop0

Consultar l'estat de tots els dispositius de loopback:

$ sudo losetup -a
/dev/loop0: [0016]:4572416 (/home/sergi/ubuntu-9.10-desktop-i386.iso)
/dev/loop1: [0016]:4572421 (/home/sergi/ProvesDiscs/images/100MB.img)
/dev/loop5: [0016]:4571691 (/home/sergi/ProvesDiscs/images/1GB.img)
/dev/loop7: [0016]:4572363 (/home/sergi/minipart), encryption aes (type 18)

Consultar els dispositius de loopback associats a un fitxer:

$ sudo losetup -j /home/sergi/minipart
/dev/loop7: [0016]:4572363 (/home/sergi/minipart), encryption aes (type 18)

$ sudo losetup -j /home/sergi/ProvesDiscs/images/100MB.img 
/dev/loop1: [0016]:4572421 (/home/sergi/ProvesDiscs/images/100MB.img)

Tornar a llegir la mida del fitxer associat al dispositiu de loopback:

$ dd if=/dev/zero of=~/ProvesDiscs/images/100MB.img bs=1M count=200
200+0 registres llegits
200+0 registres escrits
209715200 octets (210 MB) copiats, 7,66056 s, 27,4 MB/s
$ sudo losetup -a
/dev/loop0: [0016]:4572416 (/home/sergi/ubuntu-9.10-desktop-i386.iso)
/dev/loop1: [0016]:4572421 (/home/sergi/ProvesDiscs/images/100MB.img)
/dev/loop5: [0016]:4571691 (/home/sergi/ProvesDiscs/images/1GB.img)
/dev/loop7: [0016]:4572363 (/home/sergi/minipart), encryption aes (type 18)
$ sudo losetup -c /dev/loop1

Mostrar més informació (verbose)

$ sudo losetup -v -c /dev/loop1
Particions xifrades amb losetup

Es pot fer utilitzant l'opció -e (encryption) de losetup:

$ sudo losetup -e aes /dev/loop7 imatge

Per crear una carpeta privada a la home, primer cal crear un fitxer, de per exemple 100M:

$ dd if=/dev/urandom of=minipart bs=1M count=100

Ara cal activar el modul d'encriptació:

$ sudo modprobe cryptoloop

NOTA: segons el manual de losetup, cryptoloop esta deprecat i cal utilitzar dm-crypt. Consulteu $ man cryptsetup.

ara cal enllaçar el fitxer amb algun dels dispositius loop:

$ sudo losetup -e aes /dev/loop7 minipart

Ens demanarà una paraula de pas

Li donem format a la minipartició:

$ sudo mkfs -t ext3 /dev/loop7

I creem una carpeta a la nostra HOME que serà el punt a on muntem el fitxer xifrat:

$ mkdir ~/Privat

Ara per poder muntar el punt automàticament i poder-ho fer sense ser root, cal afegir la següent línia al fitxer /etc/fstab:

$ sudo nano /etc/fstab
/dev/loop7 /home/sergi/Privat ext3 noauto,noatime,encryption=aes,rw,exec,user,async 0 0

NOTA: heu de canviar sergi pel vostre nom d'usuari i feu un intro al final de línia si no voleu tenir problemes

Ara ja la podem muntar amb:

$ mount Privat

Indiqueu els permisos:

$ sudo chown -R sergi:sergi Privat


Per a desmuntar-ho tot:

$ umount Privat
$ sudo losetup -d /dev/loop7


Recursos:

Muntar la partició d'una imatge de disc

$ sudo mkdir -p /mnt/imatge_de_proves_1GB

I ara ja podeu muntar amb

$ sudo mount -o loop,offset=27136 -t auto /mnt/imatge_de_proves_1GB /home/sergi/ProvesDiscs/images/1GB.img


$ fdisk -u -l /mnt/storage/disk_image 
You must set cylinders.
You can do this from the extra functions menu.

Disk /mnt/storage/disk_image: 0 MB, 0 bytes
255 heads, 63 sectors/track, 0 cylinders, total 0 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x41172ba5
 
                  Device Boot      Start         End      Blocks   Id  System
/mnt/storage/disk_image1              63       64259       32098+  de  Dell Utility
/mnt/storage/disk_image2   *       64260    78108029    39021885    7  HPFS/NTFS
Partition 2 has different physical/logical endings:
     phys=(1023, 254, 63) logical=(4861, 254, 63)

$ sudo mount -o loop,offset=32901120 -t auto /mnt/storage/disk_image /home/cowgod/Desktop/drive_image

Recursos:


[root@virt rruban]# file rheltest.img rheltest.img: x86 boot sector, GRand Unified Bootloader (0.94); partition 1: ID=0x83, active, starthead 1, startsector 63, 208782 sectors; partition 2: ID=0x8e, starthead 0, startsector 208845, 3871665 sectors, code offset 0x48


Shown above, there are three partitions inside the image file. The startsector of each partition is also listed. Boot partition will have startsector of 63.


2. Next, you need to get the sector size:

[root@virt]fdisk -lu rheltest.img


Disk rheltest.img: 0 MB, 0 bytes 255 heads, 63 sectors/track, 0 cylinders, total 0 sectors Units = sectors of 1 * 512 = 512 bytes Device Boot Start End Blocks Id System rheltest.img1 * 63 208844 104391 83 Linux rheltest.img2 208845 4080509 1935832+ 8e Linux LVM

The above shows the startsector byte size is 512 bytes.


3. You then must calculate the offset. To do this, use: offset = start_sector x sector_byte_size.


The startsector is 63 for the first partition, therefore the first partition offset is: 63x512=32256


4. Finally, to mount the image, use:

mount -o loop,offset=32256 test.img /foldername

Modificar el comportament dels dispositius de loop per tal de suportar particions

Només funciona si el suport per a dispositius de loop està funcionant com a mòdul del nucli (kernel):

$ sudo modprobe loop max_part=63
$ sudo ls -l /dev/loop?*
brw-rw---- 1 root disk 7,   0 2008-03-05 14:55 /dev/loop0
brw-rw---- 1 root disk 7,  64 2008-03-05 14:55 /dev/loop1
brw-rw---- 1 root disk 7, 128 2008-03-05 14:55 /dev/loop2
brw-rw---- 1 root disk 7, 192 2008-03-05 14:55 /dev/loop3
brw-rw---- 1 root disk 7, 256 2008-03-05 14:55 /dev/loop4
brw-rw---- 1 root disk 7, 320 2008-03-05 14:55 /dev/loop5
brw-rw---- 1 root disk 7, 384 2008-03-05 14:55 /dev/loop6
brw-rw---- 1 root disk 7, 448 2008-03-05 14:55 /dev/loop7
$ sudo losetup -f etch.img
$ sudo ls -l /dev/loop?*
brw-rw---- 1 root disk 7,   0 2008-03-05 14:55 /dev/loop0
brw-rw---- 1 root disk 7,   1 2008-03-05 14:57 /dev/loop0p1
brw-rw---- 1 root disk 7,   2 2008-03-05 14:57 /dev/loop0p2
brw-rw---- 1 root disk 7,   5 2008-03-05 14:57 /dev/loop0p5
brw-rw---- 1 root disk 7,  64 2008-03-05 14:55 /dev/loop1
brw-rw---- 1 root disk 7, 128 2008-03-05 14:55 /dev/loop2
brw-rw---- 1 root disk 7, 192 2008-03-05 14:55 /dev/loop3
brw-rw---- 1 root disk 7, 256 2008-03-05 14:55 /dev/loop4
brw-rw---- 1 root disk 7, 320 2008-03-05 14:55 /dev/loop5
brw-rw---- 1 root disk 7, 384 2008-03-05 14:55 /dev/loop6
brw-rw---- 1 root disk 7, 448 2008-03-05 14:55 /dev/loop7

Recursos:


kpartx

Per instal·lar-lo:

$ sudo apt-get install kpartx

Segons el manual:

$ man kpartx
kpartx - Create device maps from partition tables

serveix per crear mapes de dispositius a partir de taules de partició.

Serveix per accedir a les particions de imatges i és una alternativa a la solució que hem vist en apartats anteriors (accedir a les particions utilitzant el offset):

Vegem un exemple complet. Primer creem una fitxer imatge de 500MB:

$ mkdir -p ~/ProvesDiscs/images
$ dd if=/dev/zero of=~/ProvesDiscs/images/500MB.img bs=1M count=500

Per poder-lo particionar amb fdisk cal que hi accedim com si fos un dispositiu de blocs:

$ sudo losetup /dev/loop6 ~/ProvesDiscs/images/500MB.img bs=1M count=500

Creem dos particions amb fdisk:

$ sudo fdisk /dev/loop6
El dispositiu no conté ni taula de particions DOS vàlida, ni cap etiqueta de disc Sun, SGI o OSF
Building a new DOS disklabel with disk identifier 0x4169c257.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Avís: el senyalador 0x0000 invàlid de la taula de particions 4 es corregirà amb w(escriu) 

Ordre (m per a obtenir ajuda): n
Acció de l'ordre
e   estesa
   p   partició primària (1-4)
1
Nombre de partició no vàlid per al tipus `1'
Acció de l'ordre
e   estesa
   p   partició primària (1-4)
p
Nombre de partició (1-4): 1
Primera cilindre (1-63, valor per defecte 1): 
S'està utilitzant el valor per defecte 1
Last cilindre, +cilindres or +size{K,M,G} (1-63, valor per defecte 63): 40 

Ordre (m per a obtenir ajuda): n
Acció de l'ordre
e   estesa
   p   partició primària (1-4)
p
Nombre de partició (1-4): 2
Primera cilindre (41-63, valor per defecte 41): 
S'està utilitzant el valor per defecte 41
Last cilindre, +cilindres or +size{K,M,G} (41-63, valor per defecte 63): 
S'està utilitzant el valor per defecte 63 

Ordre (m per a obtenir ajuda): p 

Disc /dev/loop6: 524 MB, 524288000 octets
255 heads, 63 sectors/track, 63 cylinders
Units = cilindres of 16065 * 512 = 8225280 bytes
Disk identifier: 0x4169c257 
 Dispositiu Arrenc.   Inici         Final    Blocs    Id  Sistema
/dev/loop6p1               1          40      321268+  83  Linux
/dev/loop6p2              41          63      184747+  83  Linux

Ordre (m per a obtenir ajuda): w
S'ha modificat la taula de particions.
 
S'està cridant ioctl() per rellegir la taula de particions.

WARNING: Re-reading the partition table failed with error 22: Invalid argument.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
S'estan sincronitzant els discs.

Ara eliminem el dispositiu de loop

$ sudo losetup -d /dev/loop6

Ara ja podem utilitzar kpartx per accedir a les particions de la imatge:

$ sudo kpartx -a ~/ProvesDiscs/images/500MB.img
$ sudo kpartx -l ~/ProvesDiscs/images/500MB.img
loop2p1 : 0 642537 /dev/loop2 63
loop2p2 : 0 369495 /dev/loop2 642600

Ara les particions estan accessibles a través de /dev/mapper/

$ ls /dev/mapper/
control  loop2p1  loop2p2 

Abans de poder-la muntar cal crear un sistema de fitxers:

$ sudo mkfs.ext3 /dev/mapper/loop2p2 
mke2fs 1.41.9 (22-Aug-2009)
Etiqueta del sistema de fitxers=
Tipus de sistema operatiu: Linux
Mida del bloc=1024 (log=0)
Mida del fragment=1024 (log=0)
46368 nodes-i, 184744 blocs
9237 blocs (5.00%) reservats per al superusuari
Bloc de dades inicial=1
Màxim de blocs del sistema de fitxers=67371008
23 grups de blocs
8192 blocs per grup, 8192 fragments per grup
2016 nodes-i per grup
Còpies de seguretat del superbloc desades en els blocs:  
	8193, 24577, 40961, 57345, 73729

Escriptura de les taules de nodes-i:fet                            
Creació del registre de transaccions (4096 blocs): fet
Escriptura de la informació dels súperblocs i de comptabilitat del sistema de fitxers:fet

This filesystem will be automatically checked every 27 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

Podem muntar la partició 2 amb:

$ mkdir particio2
$ sudo mount /dev/mapper/loop2p2 particio2
sergi@shuttle-BSF:~$ ls particio2/
lost+found

podeu desassociar amb:

$ sudo kpartx -d ~/ProvesDiscs/images/500MB.img

Recursos:

Muntar dispositius sense ser superusuari

Normalment només el superusuari pot muntar sistemes de fitxers. Hi ha però una excepció, si al fitxer /etc/fstab s'indica l'opció user, aleshores qualsevol usuari pot muntar aquell dispositiu. Per exemple, una línia com la següent al fitxers fstab:

/dev/cdrom  /cd  iso9660  ro,user,noauto,unhide

Permet que tothom pugui muntar el cdrom amb:

$ sudo mount /dev/cdrom

Només el usuari que ha muntat el dispositiu, pot desmuntar-lo (excepte el superusuari). Si voleu que tots els usuaris puguin desmuntar el dispositiu aleshores utilitzeu la opció users en comptes de l'opció user.

Muntar un dispositiu per etiqueta o UUID

Es poden utilitzar les opcions -L label per muntar per etiqueta i -U uuid per muntr per UUID.

Desmuntar un sistema de fitxers. Ordre umount

L'ordre umount és l'ordre contraria a mount i el seu ús és molt similar. La sintaxi és:

$ umount [-afnrv] [-t fstype] [device | mountpoint]

IMPORTANT: Per desmuntar poden especificar el punt de muntatge o el dispositiu, però no tots dos

La majoria de paràmetres tenen el mateix significat que a l'ordre mount. Cal destacar però:

  • Desmuntar tot (-a): Cal tenir en comte que no intenta desmuntar tots els sistemes de fitxers especificats al fitxer /etc/fstab sinó que desmunta el sistemes de fitxers especificats a /etc/mtab. Cal tenir en compte que sistemes crítics com l'arrel no es podran desmuntar.
  • Forçar el desmuntatge (-f): Força a fer la operació de desmuntatge. De totes maneres, acostuma a fallar si hi ha fitxers utilitzant el punt de muntatge. Es útil per desmuntar NFS quan el servidor NFS ha esdevingut inaccessible.
  • Si falla el desmuntatge intentar tornar a muntar com només lectura (-r): Si no pot desmuntar intenta que el sistema de fitxers al menys sigui de només lectura.

Cal recordar que els usuaris ordinaris no poden desmuntar a no ser que el punt de muntatge l'hagin muntat ells o que s'especifiqui el contrari amb les opcions user, users, owner o group

IMPORTANT: Cal desmuntar els dispositius removibles com llapis USB, sinó es poden perdre dades

Configuració del muntatge dels sistemes de fitxers durant l'arrencada del sistema. Fitxer /etc/fstab

Article molt interessant i complet: https://help.ubuntu.com/community/AutomaticallyMountPartitions

El fitxer /etc/fstab especifica les unitats que volem muntar durant l'arrancada del sistema i també quins usuaris poden o no muntar els dispositius disponibles. Un exemple de fitxer fstab:

$ cat /etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
# /dev/sda2
UUID=2a1f0d8f-bbd6-4f13-a393-ddfc08f8a73d /               ext3    defaults,errors=remount-ro 0       1
 # /dev/sda6
UUID=5823fa22-630a-4674-9288-b39d647b61bc /home           ext3    defaults        0       2
# /dev/sda1
UUID=2423-14FE  /media/sda1     vfat    defaults,utf8,umask=007,gid=46 0       1
# /dev/sdb1
UUID=49fbc8a3-c70b-4b7a-9427-0fcfb77fdf66 /linux2         ext3    defaults,errors=remount-ro 0       2
 # /dev/sda5
UUID=dc2056d5-a39f-41fb-a804-a7e30c008a17 /var            ext3    defaults        0       2
# /dev/sda7
UUID=41e12fe4-496a-4d50-b3a0-c09ec858ef75 none            swap    sw              0       0
/dev/hdc        /media/cdrom0   udf,iso9660 user,noauto,exec 0       0

Cada línia del fitxer fstab correspon a un possible dispositiu a muntar. Les línies que comencen amb # són comentaris i com a tal són ignorades. Cada línia té 6 camps que estan separats per espais, múltiples espais o tabuladors.

Segons el manual (man fstab):

  • Primer camp (device): Descriu el dispositiu local que s'ha de muntar o el sistema de fitxers remot. Hi ha diferents formats. Exemples
  • /dev/cdrom: cdrom
  • /dev/sdb7: Partició lògica del segon disc dur
  • 192.168.0.3:/mnt: Sistema de fitxers remot amb NFS
  • UUID=49fbc8a3-c70b-4b7a-9427-0fcfb77fdf66: Identificador únic de la partició
  • LABEL=<label>: Label del dispositiu
  • Segon camp (fs_file, punt de muntatge): Punt de muntatge del dispositiu. Veieu mount. Els espais es poden escapar amb ‘\040’. Els punts de muntatge swap no existeixen i per aquesta raó s'indica amb none
  • Tercer camp (fs_vfstype),: tipus de sistema de fitxers. Es suporten un munt de sistemes de fitxers. Consulteu-los amb $man fs o $ man mount. Si poseu auto el nucli intentarà esbrinar quin tipus de sistema de fitxers utilitza el dispositiu. Cal tenir en compte però que no funciona a tots els sistemes de fitxers
  • Quart camp (fs_mntops): Opcions de muntatge separades per coma. Consulteu la comanda mount per conèixer les opcions possibles o el manuals de NFS per a les opcions de NFS
  • Cinquè Camp (fs_freq): Utilitzat per la comanda dump. El valor de 0 indica que no s'ha de fer un dump del sistema de fitxers.
  • Sisè camp: l'ordre en que es fan els checks durant l'arrancada del sistema. La comanda fsck és la encarregada de per les comprovacions. Un valor 0 indica que no es farà una comprovació del sistema abans de muntar.

Es poden consultar els sistemes de fitxers suportats pel Kernel amb:

$ cat /proc/filesystems

o:

$ man fs

Per llegir valors del fitxers fstab cal utilitzar les rutines getmntent(3).

Des de la versió Edgy de Ubuntu que s'utilitzen uuid. Per obtenir la UID d'un dispositiu cal executar:

$ vol_id -u /dev/sda4

IMPORTANT: en versions posteriors d'ubuntu no trobem el comanda vol_id. Utilitzeu blkid

$ sudo blkid 
/dev/sda1: UUID="8b669217-d286-4a45-be7e-69c5f0f29090" TYPE="ext3" 
/dev/sda5: UUID="c4abc7f8-3ead-401d-b93d-8a17efbbc82f" TYPE="swap" 
/dev/sdb1: LABEL="SISTEMA" UUID="50B8-ADD2" TYPE="vfat" 
/dev/sdb3: UUID="db29ee49-9363-4978-b81d-a94bdaff2354" TYPE="ext4" 
/dev/sdb4: UUID="86070dd9-7b19-4548-bd40-9fb87f719b3a" TYPE="swap" 
/dev/sdb5: UUID="44704f1a-0453-40b7-8a2e-209f594e7b4f" TYPE="ext3" 

Més informació a:

També podeu trobar un fitxers fstab sense uuid:

# /etc/fstab: static file system information Per exemple:
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
/dev/sda2       /               ext3    defaults,errors=remount-ro 0       1
/dev/sda5       none            swap    sw              0       0
/dev/sdb1       /linux2         ext3    defaults,errors=remount-ro 0       2
/dev/hdc        /media/cdrom0   udf,iso9660 user,noauto 0       0

#Windows fat32
/dev/sda1       /mnt/windows    vfat    rw,uid=sergi,gid=sergi,umask=0222


Un altre exemple de fitxer:

#device         mount point filesystem options               dump   fsck
/dev/hda1       /               ext3         defaults            1  1
UUID=3631a288-673e-40f5-9e96-6539fec468e9 \
                /usr            reiserfs     defaults            0  0
LABEL=/home /home               reiserfs     defaults            0  0
/dev/hdb5       /windows        vfat         uid=500,umask=0 0      0
/dev/hdc        /media/cdrom iso9660         users,noauto        0  0
/dev/sda1        /media/pen      auto          users,noauto       0 0
server:/home     /other/home     nfs           users,exec         0 0
//winsrv/shr     /other/win      cifs          users,credentials=/etc/creds 0 0
/dev/hda4        swap            swap          defaults           0 0

Especificar credencials (usuaris i paraules de pas)

L'opció credentials permet especificar l'usuari i la paraula de pas per accedir a dispositius remots. tot i que es poden especificar les opcions usuaris i paraula de pas com altres opcions, el problema és que aleshores són visibles al fitxer /etc/fstab.

Per exemple:

credentials=/etc/creds

Al fitxer /etc/creds trobareu el usuari i la paraula de pas:

username=sergi
password=paraula_depas

Aquest fitxer el podeu posar de només lectura per a root.

Vegeu un exemple:

//winsrv/shr     /other/win      cifs          users,credentials=/etc/creds 0 0

Consulteu també NFS i Samba.

Desactivar les comprovacions de disc

Es pot posar a 0 l'última columna del dispositiu que no volem comprovar mai al fitxer fstab.

Consulteu també la comanda tune2fs.

Permetre als usuaris muntar sistemes de fitxers concrets

Consulteu LPI_104.3._Muntatge_i_desmuntatge_de_sistemes_de_fitxers#Muntar_dispositius_sense_ser_superusuari

Fitxer /etc/mtab

Conté la informació dels sistemes de fitxers muntats:

$ cat /etc/mtab 
/dev/sda1 / ext3 rw,relatime,errors=remount-ro 0 0
proc /proc proc rw 0 0
none /sys sysfs rw,noexec,nosuid,nodev 0 0
none /sys/fs/fuse/connections fusectl rw 0 0
none /sys/kernel/debug debugfs rw 0 0
none /sys/kernel/security securityfs rw 0 0
udev /dev tmpfs rw,mode=0755 0 0
none /dev/pts devpts rw,noexec,nosuid,gid=5,mode=0620 0 0
none /dev/shm tmpfs rw,nosuid,nodev 0 0
none /var/run tmpfs rw,nosuid,mode=0755 0 0
none /var/lock tmpfs rw,noexec,nosuid,nodev 0 0
none /lib/init/rw tmpfs rw,nosuid,mode=0755 0 0
/dev/sdb5 /home2 ext3 rw,relatime,errors=remount-ro 0 0
nfsd /proc/fs/nfsd nfsd rw 0 0
binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc rw,noexec,nosuid,nodev 0 0
gvfs-fuse-daemon /home/sergi/.gvfs fuse.gvfs-fuse-daemon rw,nosuid,nodev,user=sergi 0 0

És equivalent a utilitzar l'ordre mount sense opcions.

Carpeta /media

Segons l'estandard FHS en aquesta carpeta es defineixen els punts de muntatge per als dispositius removibles com CD/DVD-ROMS, llapis USB. etc:

/media/cdrom
/media/usbdisk

ordres

mount

Consulteu mount.

umount

Consulteu LPI_104.3._Muntatge_i_desmuntatge_de_sistemes_de_fitxers#Desmuntar_un_sistema_de_fitxers._Ordre_umount

Vegeu també

Enllaços externs