Fórum Root.cz
Hlavní témata => Software => Téma založeno: Ħαℓ₸℮ℵ ␏⫢ ⦚ 16. 08. 2022, 16:55:31
-
Mám takový problémek: vytvořil jsem image celého (vč.table) externí disku na nějakou partition na hlavním disku.
Postupuji podle tohoto (https://superuser.com/questions/1173600/how-to-mount-a-partition-by-specifying-block-range-instead-of-partition-on-linux) návodu.
První partition se mi daří připojit: mount -o offset=$((512*2048)) /dev/sda3 p1, jelikož je to FAT32.
Jenže další jsou ntfs. a mount se řeší přes `ntfs-3g` A option offset nemá. A tedy nevím , jak ntfs-3g vnutit offset, viděl partition od správné pozice.
Potíž je , že to není klasický linux, ale nějaký embedded bastl.
Existuje nějaká oklika, jak třeba vytvořit přes losetup nová blockdev, která budou "zoffsetěná"? Ale jestli tomu dobře rozumím, losetup nepřijme blockev jako "input", nýbrž jen fajly.
že bych pak zvolal mount /dev/loop3 p2
Například findnt ani lsblk,lsb_release,systemctl,lscpu tu není. losetup nezná argument -P.
-
A toto mi hlásí:
[/share] # dmsetup create --table "52635648 113423360 linear /dev/sda3" loop3
device-mapper: create ioctl on loop3 failed: Device or resource busy
Command failed
[/share] # dmsetup create --table "52635648 113423360 linear /dev/sda3" loop66
device-mapper: reload ioctl on loop43 failed: Invalid argument
Command failed
(analogicky echo "123... sda3" | dmsetup create nazev)
-
Kdybys nebyl linej, tak zjistis ze veci normalne funguji, nevim kde beres info ze losetup nezere block device:
# losetup -f -o $(( 2048 * 512 )) /dev/sdb
# losetup -l
NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE DIO LOG-SEC
/dev/loop0 0 1048576 0 0 /dev/sdb 0 512
A pokud ti to ta platforma nedovoli, tak si uprav partition table na danem disku, abys oddelil tu systemovou oblast od samotne partisny (tj. ze sda3 udelej sda3+sda4 a mountuj pak sda4)
-
Aha, už mi to šlo přes losetup. losetup -o $((26949451776)) /dev/loop77 /dev/sda3 (Vycházel jsem nelogicky z toho, že naopak mount nejde použít s mount /cesta/k/souboru )
Akorát neumí --size-limit, ale co se dá dělat.
Dokonce jsem si ušetřil idiotské počítání 512*.
parted /dev/sda3 unit b print
Mimochodem, ta on-the fly konverze tabulky oddílů by se udělala jak (že to monoliticky vypadající sda3 rozparsuje na jednotlivé partition a ty to "přičte" k nadřazené tabulce /dev/sda)? Umí to i třeba takový gparted nebo gnome-disks? Je na to nějaká utilita, která to zvládne, než abych musel nějak manuálně dělat alchymii s parted a doufat, že neudělám někde chybu a omylem nesmažu tabulku nebo nepřepíšu stávající oddíly?
... Mezitím mě systém fóra odhlásil a při přihlášení mě přesměroval na psaní nového tématu místo do odpovědi.
-
Tohle fakt není potřeba dělat takhle složitě, normálně "kpartx -a soubor.img", vytvoří to /dev/mapper/loop0p1 až N namapované podle partitions v image.
-
Dokonce jsem si ušetřil idiotské počítání 512*.
parted /dev/sda3 unit b print
parted nepouzivam, jedu klasicky fdisk -l /dev/sdx a to pise v sektorech, proto je tam *512. A opisovat mensi cislo zpameti je snazsi :)
Pokud tam ale nemas vzorec tak nepotrebujes $(( a )). Bez vzorce to ma smysl napr. na prevod z hexa zapisu jako $(( 0xABCD ))
-
Dokonce jsem si ušetřil idiotské počítání 512*.
parted /dev/sda3 unit b print
parted nepouzivam, jedu klasicky fdisk -l /dev/sdx a to pise v sektorech, proto je tam *512. A opisovat mensi cislo zpameti je snazsi :)
Pokud tam ale nemas vzorec tak nepotrebujes $(( a )). Bez vzorce to ma smysl napr. na prevod z hexa zapisu jako $(( 0xABCD ))
(()) byl relikt předchozího příkazu . nechci teď vařit z vody, ale pro losetup používám větší čísla ("násobená 512"), zatímco -o offset bere menší čísla... Každopádně na zkopírování čísel mi stačí označit a Ctrl Shift V