İşte kalıcı bir Debian canlı USB sürücü oluşturmanın bir yolu. Bundan sonra kalıcılığı kullanarak her canlı önyüklemede kullanılabilecek eksik paketleri yüklemeye izin verecektir. Canlı ISO görüntüsü dosya sistemi içeriğini okuma yazma özellikli bir dosya sisteminde yeniden oluşturduğumuzdan, kalıcılığı etkinleştirmek ve önyükleme sırasında klavye düzenini ayarlamak için önyükleyici yapılandırmalarını değiştirebiliriz.
Burada açıklanan adımlar, Debian streç canlı görüntüsü oluşturmak için Debian streç ve buster üzerinde çalışmak üzere test edildi.
Çok fazla adım var, ancak bu yöntemin hala oldukça verimli olduğu görülüyor.
Yasal Uyarı: Hedef USB sürücüsündeki verileri kaybedeceksiniz ve aşağıdaki komutları karıştırırsanız daha sonra çok üzülebilirsiniz. Yaptıklarından ben sorumlu değilim.
Şanslı hissetmek
Bugün özellikle şanslı hissediyorsanız , işlemi sizin için otomatik hale getiren bir bash betiğini deneyebilirsiniz . İlk parametre olarak ISO görüntü yolunuzu ve ikinci parametre olarak USB sürücü engelleme cihazınızın adını verin. Bu komut dosyasının delicesine tehlikeli olduğunu ve önce okumadan ve anlamadan çalıştırmamanız gerektiğini unutmayın.
TL; DR
Debian canlı ISO görüntüsünü alın, ardından aşağıdakileri yapın:
umount /dev/sdX*
parted /dev/sdX --script mktable gpt
parted /dev/sdX --script mkpart EFI fat16 1MiB 10MiB
parted /dev/sdX --script mkpart live fat16 10MiB 3GiB
parted /dev/sdX --script mkpart persistence ext4 3GiB 100%
parted /dev/sdX --script set 1 msftdata on
parted /dev/sdX --script set 2 legacy_boot on
parted /dev/sdX --script set 2 msftdata on
mkfs.vfat -n EFI /dev/sdX1
mkfs.vfat -n LIVE /dev/sdX2
mkfs.ext4 -F -L persistence /dev/sdX3
mkdir /tmp/usb-efi /tmp/usb-live /tmp/usb-persistence /tmp/live-iso
mount /dev/sdX1 /tmp/usb-efi
mount /dev/sdX2 /tmp/usb-live
mount /dev/sdX3 /tmp/usb-persistence
mount -oro live.iso /tmp/live-iso
cp -ar /tmp/live-iso/* /tmp/usb-live
echo "/ union" > /tmp/usb-persistence/persistence.conf
grub-install --no-uefi-secure-boot --removable --target=x86_64-efi --boot-directory=/tmp/usb-live/boot/ --efi-directory=/tmp/usb-efi /dev/sdX
dd bs=440 count=1 conv=notrunc if=/usr/lib/syslinux/mbr/gptmbr.bin of=/dev/sdX
syslinux --install /dev/sdX2
mv /tmp/usb-live/isolinux /tmp/usb-live/syslinux
mv /tmp/usb-live/syslinux/isolinux.bin /tmp/usb-live/syslinux/syslinux.bin
mv /tmp/usb-live/syslinux/isolinux.cfg /tmp/usb-live/syslinux/syslinux.cfg
sed --in-place 's#isolinux/splash#syslinux/splash#' /tmp/usb-live/boot/grub/grub.cfg
sed --in-place '0,/boot=live/{s/\(boot=live .*\)$/\1 persistence/}' /tmp/usb-live/boot/grub/grub.cfg /tmp/usb-live/syslinux/menu.cfg
sed --in-place '0,/boot=live/{s/\(boot=live .*\)$/\1 keyboard-layouts=de locales=en_US.UTF-8,de_DE.UTF-8/}' /tmp/usb-live/boot/grub/grub.cfg /tmp/usb-live/syslinux/menu.cfg
umount /tmp/usb-efi /tmp/usb-live /tmp/usb-persistence /tmp/live-iso
rmdir /tmp/usb-efi /tmp/usb-live /tmp/usb-persistence /tmp/live-iso
Ayrıntılı ve bazı açıklamalar ile
Aşağıdaki komutların çoğunu yükseltilmiş ayrıcalıklarla, yani sudo
çoğu GNU / Linux sisteminde kullanarak yürütmeniz gerekecektir .
İndir
Seçtiğiniz pencere yöneticisiyle bir Debian canlı ISO görüntüsü indirin:
https://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/
İndirilen ISO imajını "live.iso" olarak adlandıracağız.
Hedef sürücüyü belirleme
USB sürücünüzün kullanıldığı aygıtı bulun lsblk
. Bunu arayacağız /dev/sdX
.
Unmount
Sürücünüzdeki mevcut bölümleri kullanarak bağlantısını kesin umount /dev/sdX*
Bölüm oluşturma
UEFI PC'lerin USB sürücüden önyükleme yapabilmesi için bir EFI önyükleme bölümüne ihtiyacımız var. O zaman orijinal canlı ISO dosya sistemi görüntü içeriğini tutmak için yeterince büyük bir bölüme ihtiyacımız var. Bu bölümün legacy_boot
bayrağı ayarlanmış olmalıdır . Ardından, USB sürücüsünün kalan tüm alanını kullanarak kalıcılık bölümünü ekliyoruz. Bunu herhangi bir GPT özellikli bölümleme aracıyla yapabilirsiniz ( legacy_boot
bayrağa dikkat edin). İşte bir örnek parted
:
parted /dev/sdX --script mktable gpt
parted /dev/sdX --script mkpart EFI fat16 1MiB 10MiB
parted /dev/sdX --script mkpart live fat16 10MiB 3GiB
parted /dev/sdX --script mkpart persistence ext4 3GiB 100%
parted /dev/sdX --script set 1 msftdata on
parted /dev/sdX --script set 2 legacy_boot on
parted /dev/sdX --script set 2 msftdata on
Bu, bir GPT bölüm tablosu ve koruyucu bir MBR bölüm tablosu oluşturur.
Dosya Sistemleri Oluşturun
EFI ve canlı bölümlerde FAT istiyoruz ext4
ve kalıcılık bölümünü istiyoruz persistence
ve kalıcılık özelliğinin çalışması için etikete ihtiyacımız var .
mkfs.vfat -n EFI /dev/sdX1
mkfs.vfat -n LIVE /dev/sdX2
mkfs.ext4 -F -L persistence /dev/sdX3
Kaynakların birleştirilmesi
Kaynak ISO ve hedef bölümleri geçici bağlama noktalarına monte etmemiz gerekecek.
mkdir /tmp/usb-efi /tmp/usb-live /tmp/usb-persistence /tmp/live-iso
mount /dev/sdX1 /tmp/usb-efi
mount /dev/sdX2 /tmp/usb-live
mount /dev/sdX3 /tmp/usb-persistence
mount -oro live.iso /tmp/live-iso
Canlı sistemi yükle
Canlı ISO dosya sistemi içeriğini LIVE bölümüne kopyalayın.
cp -ar /tmp/live-iso/* /tmp/usb-live
persistence.conf
Kalıcılık dosya sistemini gerekli yapılandırma dosyasıyla hazırlayın. Kalıcılık özelliği bu dosya olmadan çalışmaz.
echo "/ union" > /tmp/usb-persistence/persistence.conf
UEFI desteği için Grub
UEFI önyükleme desteği için grub2'yi yükleyin (bu grub-efi-amd64-bin
Debian üzerinde paket gerektirir ). Biz zorlamak grub-install
için değil UEFI görünüşte ile çalışmıyor güvenli çizme, kullanma --removable
seçeneği.
grub-install --no-uefi-secure-boot --removable --target=x86_64-efi --boot-directory=/tmp/usb-live/boot/ --efi-directory=/tmp/usb-efi /dev/sdX
Eski BIOS desteği için Syslinux
Syslinux gptmbr.bin
bootloader'ı sürücüye kurun (syslinux'u indirin veya paketi kurun syslinux-common
). Ardından syslinux'u canlı bölüme kurun.
dd bs=440 count=1 conv=notrunc if=/usr/lib/syslinux/mbr/gptmbr.bin of=/dev/sdX
syslinux --install /dev/sdX2
Isolinux onarımı
Sislinux ile çalışmak için orijinal canlı ISO'nun izolinux yapılandırmasını yeniden kullanın.
mv /tmp/usb-live/isolinux /tmp/usb-live/syslinux
mv /tmp/usb-live/syslinux/isolinux.bin /tmp/usb-live/syslinux/syslinux.bin
mv /tmp/usb-live/syslinux/isolinux.cfg /tmp/usb-live/syslinux/syslinux.cfg
Çekirdek parametreleri
Canlı sistem dosyalarını gerçek bir okuma-yazma dosya sistemine kopyaladığımıza göre grub ve syslinux yapılandırmasını değiştirebiliriz.
Kalıcılık çekirdeği parametresini menu.cfg
ve öğelerine ekleyin grub.cfg
. Her iki dosyada da anahtar kelimeyi persistence
içindeki ilk satırın sonuna ekleyin boot=live
.
sed --in-place '0,/boot=live/{s/\(boot=live .*\)$/\1 persistence/}' /tmp/usb-live/boot/grub/grub.cfg /tmp/usb-live/syslinux/menu.cfg
Klavye düzeni çekirdek parametresini ayarlayın. Her iki dosyada da, anahtar kelimeleri içindeki ilk satırın sonuna ekleyin boot=live
.
sed --in-place '0,/boot=live/{s/\(boot=live .*\)$/\1 keyboard-layouts=de locales=en_US.UTF-8,de_DE.UTF-8/}' /tmp/usb-live/boot/grub/grub.cfg /tmp/usb-live/syslinux/menu.cfg
Grub sıçrama
Grub splash görüntüsünü düzeltin (isteğe bağlı; başka bir dizine taşıdık).
sed --in-place 's#isolinux/splash#syslinux/splash#' /tmp/usb-live/boot/grub/grub.cfg
Sökme ve Temizleme
umount /tmp/usb-efi /tmp/usb-live /tmp/usb-persistence /tmp/live-iso
rmdir /tmp/usb-efi /tmp/usb-live /tmp/usb-persistence /tmp/live-iso
Bu neden hem UEFI hem de BIOS için çalışmalı?
UEFI modunda başlatıldığında, PC, GPT bölüm tablosunda tanımladığımız FAT bölümlerini tarar. İlk FAT bölümü, çıkarılabilir sürücüler için UEFI tarafından belirtilen yolda bulunduğu için bulunan UEFI grub önyükleyicisini taşır (bunu yapma --removable
anahtarı grub-install
). Bunun için UEFI önyükleme girişi gerekmez, sadece bilgisayarın USB sürücüden önyüklemeye çalışmasını sağlamamız gerekir. Bu grub, oradan almak üzere yapılandırılmıştır (grub.cfg'yi yükleyin, menüyü gösterin, vb.).
BIOS modunda başlatılırken ve USB sürücüden önyükleme yapmayı seçerken, PC gptmbr.bin
, USB sürücünün koruyucu MBR'sine yazdığımız önyükleyici kodunu yürütür . Bu bootloader legacy_boot
, bu bölümden flag ve chainload syslinux ile işaretlenmiş GPT bölümünü arar . Syslinux daha sonra devreye girer (load menu.cfg, menüyü göster vb.).
Şifreli Kalıcılık
Kalıcılık bölümünde düz ext4 kullanmak yerine, önce kalıcılık bölümünü LUKS (kullanarak cryptsetup
) şifreleyebilir , sonra bunu ext4 ile biçimlendirebilir (uygun etiketi kullanarak). Ancak, belgelerin söylediği gibi, canlı sistem cryptsetup
paketi içermelidir . Aksi takdirde, şifrelenen bölümün şifresi canlı sistem tarafından çözülemez. Bu, kişinin önce özel bir canlı ISO oluşturması gerektiği anlamına gelir. Ancak bu, bu cevabın kapsamı dışındadır.
Tarih
--no-uefi-secure-boot
Seçenek, daha önce yapılan çağrı bir parçası değildi grub-install
. Sopa benim için iyi çalıştı, ancak makinemde güvenli önyükleme hala devre dışı bırakılsa da Debian buster ile durdu.