Cum se montează ISO și alte tipuri de fișiere imagine în Linux?

Publicat: 2018-09-06

Ați avut vreodată nevoie să verificați conținutul unui fișier imagine? Poate ai uitat ce versiune a acelei distribuții Linux a fost. Pot exista multe motive pentru verificarea unei imagini, dar cum o faci fără a o arde? Să aflăm, nu este nevoie de software suplimentar.

Fiecare utilizator Linux experimentat în tehnologie ar trebui să fie familiarizat cu comanda mount . Este o parte foarte importantă a administrării generale a sistemului. Dar, mulți nu știu că comanda mount este de fapt mult mai puternică decât apare la prima vedere.

Montarea fișierelor imagine în Linux

Putem monta rapid și ușor, nu doar imagini ISO, ci chiar și imagini de discuri cu partiții.

Rapid, iată un exemplu de montare a unui fișier ISO.

mount -o loop imagine_disc.iso /cale/la/mont/dir

Aici marcajul -o este pentru trecerea opțiunilor de montare și, în acest caz, îi spunem lui mount că vrem să montem imaginea folosind un dispozitiv loopback . Un dispozitiv loopback este un concept foarte frumos dezvoltat pentru a ajuta la montarea fișierelor de imagine. Un dispozitiv loopback este un pseudo-dispozitiv software care acționează ca un intermediar și permite sistemului să trateze fișierul ca și cum ar fi un dispozitiv bloc, cum ar fi o unitate CDROM, un hard disk etc. cu fișierul, cum ar fi realizarea de funcții ale sistemului de fișiere (care presupun că există un dispozitiv bloc subiacent) .

E destul de grozav, dar cine mai folosește ISO-uri, nu? Ei bine, mount poate face și ceva mai mult. Dacă aveți un fișier imagine al unui hard disk (obținut de la dd sau ceva similar) , să-l numim hdd.img, atunci puteți monta și sistemele de fișiere în interiorul acestuia. Și dacă bănuiți că trebuie să folosim din nou un dispozitiv de loopback, sunteți pe drumul cel bun.

Dar dacă încerci asta...

mount -o loop hdd.img /path/to/mount/dir

nu vei avea prea mult noroc.

Asta pentru că majoritatea discurilor au tabele de partiții. CD-urile și DVD-urile nu au de obicei tabele de partiții, deoarece nu se potrivește cu cazurile lor de utilizare. Când mount începe să monteze un volum, se așteaptă să întâlnească un sistem de fișiere, nu o tabelă de partiții.

Asta nu înseamnă însă că nu se poate face. Pentru a monta sistemul de fișiere, trebuie să îi spunem lui mount unde se află în fișierul imagine, cu o informație transmisă în opțiunile de montare. Informația pe care o necesită montarea este offset-ul partiției, adică numărul de octeți din fișierul imagine de unde începe partiția. Există diferite moduri de a înțelege asta, dar fdisk face treaba pentru tine.

fdisk -l hdd.img

Să presupunem că fdisk ne spune că sectorul de pornire este 100 (acesta este pur un exemplu, este foarte improbabil ca acest lucru să fie corect în cazul dumneavoastră specific) . Ceea ce trebuie să facem acum este să luăm acel număr de sector și să-l înmulțim cu dimensiunea sectorului HDD-ului de pe care a fost luată imaginea, acesta va fi (cel mai probabil) 512 octeți pe unitățile mai vechi și, eventual, 4096 (4K) pe cele mai noi, dar ar trebui să verificați întotdeauna acest lucru când clonați unitățile (poate să-l puneți în numele fișierului pentru o măsură bună) . Mărimea sectorului este numărul de octeți pe sector.

Pentru simplitate, vom alege o dimensiune a sectorului de 512 octeți, ceea ce ne-ar oferi un offset de 51.200. Acest offset este numărul de octeți din imagine de unde începe sistemul de fișiere. Știind acest lucru, îi putem spune lui mount exact unde să găsească sistemul de fișiere.

mount -o ro,loop,offset=51200 hdd.img /path/to/mount/dir

NOTĂ: Am adăugat și opțiunea ro în acest exemplu pentru a arăta cum puteți monta un sistem de fișiere ca doar citire. Acest lucru este util în special în aplicațiile criminalistice în care nu puteți perturba integritatea datelor din motive de securitate sau chiar juridice. Adesea, un fișier imagine va fi creat de pe disc folosind un adaptor special numit write-blocker care blochează literalmente toate comenzile de scriere și permite doar comenzile de citire.

Este destul de multă muncă cu matematica și toate celelalte, dar trebuie să existe o cale mai ușoară, nu? Asta depinde de cât de recentă o distribuție Linux pe care o utilizați, dar nimic din ultimii cinci ani sau cam asa ceva nu ar trebui să aibă probleme.

Instrumentul losetup este pentru configurarea dispozitivelor loopback. S-ar putea să vă întrebați de ce doriți să configurați manual un dispozitiv de loopback atunci când mount se ocupă de toate acestea pentru dvs. Îți amintești cum Mount nu a vrut să monteze întreaga imagine de disc din cauza acelui tabel de partiții enervant? Ei bine, având în vedere că tabelul de partiții este ceea ce conține toate calculele despre unde sunt localizate partițiile (unde fdisk primește toate informațiile) , ar fi mult mai ușor să lași sistemul să facă referire la el. Putem să creăm pur și simplu un dispozitiv de loopback pentru întreaga imagine de disc și apoi să spunem sistemului să caute partiții pe dispozitivul de loopback nou creat.

losetup -f hdd.img

NOTĂ: Indicatorul -f transmis către losetup îi spune pur și simplu să creeze un dispozitiv de loopback cu un nume care nu este încă folosit, cum ar fi /dev/ loop1 dacă /dev/loop0 este deja în uz . Alternativ, puteți transmite un nume de dispozitiv, cum ar fi /dev/loop0 , dacă acel dispozitiv nu există, losetup îl va crea, dacă o face, îl va reatribui noului fișier imagine.

Dacă comanda are succes, veți vedea dispozitivul loopback nou creat sub /dev/ . Acum, puteți folosi

partprobe /dev/loopback0

sau

kpartx -u /dev/loopback0

dacă aveți instalat partprobe sau, respectiv, kpartx . Cu toate acestea, parted ar trebui să fie instalat pe majoritatea distribuțiilor Linux moderne.

Odată ce ați făcut acest lucru, ar trebui să vedeți ceva de genul /dev/loop0p1 în /dev/ . Aceasta este partiția dvs., pe care apoi o puteți monta cu ușurință.

mount /dev/loop0p1 /path/to/mount/dir

După cum probabil veți observa, nu este nevoie de loopback. Asta pentru că deja ne-am ocupat de asta.

Putem face acest lucru și mai ușor, totuși, adăugând un singur steag la losetup .

losetup -f -P hdd.img

Indicatorul -P pe care l-am folosit îi spune de fapt losetup să facă ca nucleul să scaneze tabelul de partiții, astfel încât să putem trece la montarea partiției pe care o dorim.

Folosind cele de mai sus, puteți monta o varietate de imagini de disc. Nu contează dacă provin din medii optice, chei USB, partiționare MBR sau GPT. Nucleul Linux poate gestiona atât de multe tabele de partiții și sisteme de fișiere diferite, încât veți avea mai greu să găsiți ceva pe care nu îl acceptă.

Sigur, ar putea exista instrumente care fac acest lucru mult mai ușor, dar unde este distracția în asta? Am folosit aceste tehnici în recuperarea datelor și administrarea generală a sistemului și, ca orice tip de cunoștințe, este extrem de valoroasă atunci când este nevoie.

Spuneți-ne în comentariile de mai jos dacă aveți trucuri care le-ar completa pe acestea.

Citește și: