GNU/Linux >> Linux Esercitazione >  >> Linux

Come creare un file immagine di partizione formattato da zero?

Se su Linux, durante il caricamento del file loop module, assicurati di passare un max_part opzione al modulo in modo che i dispositivi del loop siano partizionabili.

Controlla il valore corrente:

cat /sys/module/loop/parameters/max_part

Se è 0:

modprobe -r loop # unload the module
modprobe loop max_part=31

Per rendere questa impostazione persistente, aggiungi la seguente riga a /etc/modprobe.conf o in un file in /etc/modprobe.d se quella directory esiste sul tuo sistema:

options loop max_part=31

Se modprobe -r loop fallisce perché "Module loop is builtin", dovrai aggiungere loop.max_part=31 alla riga di comando del kernel e riavviare. Se il tuo bootloader è Grub2, aggiungilo al valore di GRUB_CMDLINE_LINUX in etc/default/grub .

Ora puoi creare un dispositivo loop partizionabile:

truncate -s64M file # no need to fill it with zeros, just make it sparse
fdisk file # create partitions
losetup /dev/loop0 file
mkfs.vfat /dev/loop0p1 # for the first partition.
mount /dev/loop0p1 /mnt/

(nota che hai bisogno di una versione relativamente recente di Linux).


losetup /dev/loop0 file -o 1048576 --sizelimit limit

L'offset specificato deve essere in byte (1048576 =2048 settori * 512 byte per settore).

mount -o loop,offset=1048576,sizelimit=limit

Per maggiori informazioni vedi losetup e mount.


Le seguenti procedure consentono di montare le partizioni dell'immagine per modificarle.

losetup 2.21 -P opzione

losetup -P -f --show my.img

Crea un /dev/loopXpY per partizione.

Vantaggio:eseguibile preinstallato in molte distribuzioni (pacchetto util-linux).

Svantaggio:opzione abbastanza recente, non presente in Ubuntu 14.04.

losetup -P automazione

Utilizzo:

$ los my.img
/dev/loop0
/mnt/loop0p1
/mnt/loop0p2

$ ls /mnt/loop0p1
/whatever
/files
/youhave
/there

$ sudo losetup -l
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE                                                                                      DIO
/dev/loop1         0      0         0  0 /full/path/to/my.img

$ # Cleanup.
$ losd 0
$ ls /mnt/loop0p1
$ ls /dev | grep loop0
loop0

Fonte:

los() (
  img="$1"
  dev="$(sudo losetup --show -f -P "$img")"
  echo "$dev"
  for part in "$dev"?*; do
    if [ "$part" = "${dev}p*" ]; then
      part="${dev}"
    fi
    dst="/mnt/$(basename "$part")"
    echo "$dst"
    sudo mkdir -p "$dst"
    sudo mount "$part" "$dst"
  done
)
losd() (
  dev="/dev/loop$1"
  for part in "$dev"?*; do
    if [ "$part" = "${dev}p*" ]; then
      part="${dev}"
    fi
    dst="/mnt/$(basename "$part")"
    sudo umount "$dst"
  done
  sudo losetup -d "$dev"
)

kpartx

sudo apt-get install kpartx
losetup -fs my.raw
sudo kpartx -a my.img
ls /dev/mapper

Uscita:

/dev/mapper/loop0
/dev/mapper/loop0p1

dove loop0p1 è la prima partizione, quindi possiamo fare:

mkdir -p d
sudo mount /dev/mapper/loop0p1 d

Vantaggio di questo metodo:funziona su Ubuntu 14.04 senza riavviare.


Linux
  1. Come creare uno scambio in Linux

  2. Linux:come creare un file immagine di partizione formattato da zero?

  3. Come creare un file in Linux dalla finestra del terminale?

  4. In che modo install -c è diverso da cp

  5. Come posso creare un file con una dimensione specifica da una riga di comando?

Come creare un nuovo file system Ext4 (partizione) in Linux

Come creare un file in Linux

Come creare file Tar Gz

Crea un file di backup dell'immagine ISO da una cartella in Ubuntu 17.10

Come creare directory da un file di testo in Linux

Come creare un'immagine Docker da un contenitore in esecuzione