Disk görüntüsü yerleştirme ve içine dosya kopyalama


2

Buraya sormadan önce, SU / SE ve Google’da başarılı bir şekilde arama yapmayı denedim. Bu aldığım en yakın şey.

Temel olarak, aşağıdakileri yapmaya çalışıyorum:
- yaklaşık 128 MB'lık bir disk görüntüsü oluşturun;
- bir GPT oluşturun;
- ilk 32 MB’da bir FAT32 bölümü oluşturun (buna UEFI diyeceğim);
- kalan baytlarda bir FAT32 bölümü oluşturun (buna SİSTEM diyeceğim);
- UEFI bölümünde aşağıdaki alt dizini oluşturun: / EFI / BOOT /;
- alt dizindeki bir dosyayı kopyala;
- SYSTEM bölümünde başka bir dosyayı kopyalayın.


Şimdiye dek yaptıklarım:

dd eğer = / dev / sıfır = = disk.img bs = 1M sayısı = 128

ayrıldı disk.img
mktable gpt (ayrıldı)
(ayrıldı) mkpart primer fat32 2048s 65535s
(ayrıldı)% 100 mkpart primer fat32 65536s
(ayrıldı) hizalamak kontrol optimum 1
(ayrıldı) hizalamak kontrol uygun 2
(ayrıldı) adı 1 UEFI
(ayrıldı ) adı 2 SİSTEM

Bu benim çıktım:

Disk disk.img: 134MB  
Sektör boyutu (mantıksal / fiziksel): 512B / 512B  
Bölümleme tablosu: gpt  
Disk Bayrakları:  

Sayı Başlangıç ​​Bitiş Boyutu Dosya sistemi Ad Bayrakları  
 1 1049kB 33,6 MB 32,5 MB UEFI msftdata
 2 33,6 MB 134 MB 101 MB SİSTEM msftdata



Alternatif yol, iki farklı bölüm oluşturmak ve daha sonra bunları birleştirmek:

dd eğer = / dev / sıfır = uefi.img bs = İM sayısı = 32
mformat -i uefi.img -v UEFI -f 1440 -c 1 ::
mmd -i uefi.img :: / EFI
mmd -i uefi.img :: / EFI / BOOT
mcopy -i uefi.img BOOTX64.EFI :: / EFI / BOOT
= eğer = / dev / sıfır = system.img bs = İM sayısı = 100
mformat -i system.img -v UEFI -f 1440 -c 1 ::
mcopy -i system.img myawesomeOS ::



Eski şekilde, "Dosya sistemi" sütununun neden boş olduğunu (fat32 yazmalı) ve alt dizinlerin nasıl oluşturulacağını ve dosyaların kopyalandığını çözemiyorum.
İkinci şekilde, iki resim için uygun bir FAT32 dosya sistemi oluşturamıyorum.

Bu yağ boyutu için çok az küme. Lütfen /etc/mtools.conf veya .mtoolsrc dosyanızda 16 bit yağ seçin

Yapmayı başarırsam GPT'yi nasıl kuracağımı ve iki görüntüyü tek bir dosyada nasıl birleştireceğimi bilmiyorum.

Bunu nasıl başarabilirim? Herhangi bir yardım veya ipucu takdir edilmektedir.

Yanıtlar:


3

Birkaç saat uğraştıktan sonra, tek başıma çözdüm. Çözümü buraya gönderirim, tam olarak:

# 256MB boş bir disk görüntüsü oluşturur, GPT'sini oluşturur ve sonra
# iki bölüm: birincisi yaklaşık 60 MB, ikincisi ise
# kalan bayt. Her iki bölüm de hizalanır.
dd ise = / dev / = = disk.img bs = 1M sayısı = 256
bölünmüş disk.img
mktable gpt
mkpart birincil yağ32 2048'ler 131071'ler
mkpart primer yağ32 131072'ler% 100
Hizala-kontrol optimal 1
hizala kontrol optimal 2
ad 1 UEFI
isim 2 SİSTEM
bırakmak, vazgeçmek

# 33 MB'lık boş bir disk görüntüsü oluşturur.
dd eğer = / dev / sıfır = uefi.img bs = İM sayısı = 33
# Disk görüntüsünü FAT32 olarak biçimlendirir
mkfs.vfat uefi.img -F 32
# İstenilen alt dizinleri oluşturur.
mmd -i uefi.img :: / EFI
mmd -i uefi.img :: / EFI / BOOT
# Önyükleme dosyasını kopyalar.
mcopy -i uefi.img BOOTX64.EFI :: / EFI / BOOT

# 100 MB boş bir disk görüntüsü oluşturur.
= eğer = / dev / sıfır = system.img bs = İM sayısı = 100
# Disk görüntüsünü FAT32 olarak biçimlendirir
mkfs.vfat system.img -F 32
# OS dosyasını kopyalar.
mcopy -i system.img SİSTEMİ.EFI ::

# Sadece durumunda kpartx tarafından istenen çekirdek modülünü etkinleştirir.
sudo modprobe dm-mod
# Disk.img içindeki iki bölümü eşleştirir ve bağlar / dev / mapper / loop0p1 ve
# / dev / mapper / loop0p2
sudo kpartx - av disk.img
# UEFI bölümünü, disk görüntüsüne kopyalar.
sudo dd if = uefi.img = / dev / mapper / loop0p1 bs = 1M
# SİSTEM bölümünü, disk görüntüsüne kopyalar.
sudo dd if = system.img = / dev / mapper / loop0p2 bs = 1M
# İki bölümün bağlantısını keser
sudo kpartx -dv disk.img

1
-i image@@offsetBölümü oluşturmak için biçimlendirmek için sözdizimini kullanabilir ve böylece ayrı bir dosya oluşturmak zorunda kalmazsınız.
RolKau

@RolKau teşekkür ederim !!! Sanırım (umarım) bu ipucu benim sorunumu çözecek (bunu Linux için Windows Alt Sisteminde bash yapmaya çalışıyorum ve görünüşte
eşleyemiyor
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.