यहाँ दृढ़ता के साथ एक डेबियन लाइव यूएसबी ड्राइव बनाने का एक तरीका है। यह लापता पैकेजों को स्थापित करने की अनुमति देगा जो तब से दृढ़ता का उपयोग करते हुए हर लाइव बूट पर उपलब्ध होंगे। चूँकि हम पढ़े-लिखे सक्षम फाइल सिस्टम पर लाइव आईएसओ इमेज फाइलसिस्टम कंटेंट को फिर से बनाते हैं, हम बूस्ट लोडर कॉन्फ़िगरेशन को दृढ़ता से सक्षम करने और कीबोर्ड लेआउट को बूट पर सेट करने के लिए बदल सकते हैं।
डेबियन खिंचाव लाइव छवि बनाने के लिए डेबियन खिंचाव और बस्टर पर काम करने के लिए यहां वर्णित चरणों का परीक्षण किया गया था।
इसमें बहुत सारे चरण शामिल हैं, लेकिन ऐसा लगता है कि यह विधि अभी भी काफी कुशल है।
अस्वीकरण: आप लक्ष्य USB ड्राइव पर डेटा खो देंगे और यदि आप नीचे दिए गए आदेशों को गड़बड़ करते हैं तो आपको बाद में बहुत खेद महसूस हो सकता है। मैं आपके कार्यों के लिए जिम्मेदार नहीं हूं।
ख़ुशकिस्मत महसूस करना
यदि आप आज विशेष रूप से भाग्यशाली महसूस करते हैं, तो आप अपने लिए प्रक्रिया को स्वचालित करने के लिए एक बैश स्क्रिप्ट की कोशिश कर सकते हैं। पहले पैरामीटर के रूप में इसे अपनी आईएसओ छवि पथ दें और दूसरे के रूप में यूएसबी ड्राइव ब्लॉक डिवाइस नाम। ध्यान दें कि यह स्क्रिप्ट बहुत खतरनाक है और आपको इसे पहले पढ़े और समझे बिना क्रियान्वित नहीं करना चाहिए।
टी एल; डॉ
डेबियन लाइव आईएसओ छवि प्राप्त करें, फिर निम्न कार्य करें:
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
विस्तार से और कुछ स्पष्टीकरण के साथ
आपको निम्न निर्देशों के अधिकांश को उन्नत करने की आवश्यकता होगी, जो sudo
कि अधिकतर GNU / Linux सिस्टम पर प्रयोग करके उन्नत विशेषाधिकार के साथ है ।
डाउनलोड
अपनी पसंद के विंडो मैनेजर के साथ एक डेबियन लाइव ISO छवि डाउनलोड करें:
https://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/
हम डाउनलोड की गई आईएसओ छवि को "live.iso" के रूप में संदर्भित करेंगे।
लक्ष्य ड्राइव निर्धारित करें
उस डिवाइस को खोजें जो आपके USB ड्राइव का उपयोग कर रहा है lsblk
। हम वह फोन करेंगे /dev/sdX
।
अनमाउंट
अपने ड्राइव का उपयोग करके मौजूदा विभाजन को अनमाउंट करें umount /dev/sdX*
विभाजन बनाएँ
हमें USB ड्राइव से बूट करने के लिए UEFI पीसी के लिए एक EFI बूट विभाजन की आवश्यकता है। फिर हमें मूल लाइव आईएसओ फाइलसिस्टम छवि सामग्री को रखने के लिए एक पर्याप्त बड़े विभाजन की आवश्यकता है। उस विभाजन में legacy_boot
ध्वज सेट होना चाहिए । फिर हम यूएसबी ड्राइव के सभी शेष स्थान का उपयोग करते हुए दृढ़ता विभाजन को जोड़ते हैं। आप किसी भी GPT सक्षम विभाजन टूल ( legacy_boot
ध्वज को ध्यान में रखते हुए ) के साथ कर सकते हैं । यहाँ एक उदाहरण का उपयोग किया गया है 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
यह एक GPT विभाजन तालिका और एक सुरक्षात्मक MBR विभाजन तालिका बनाता है।
Filesystems बनाएँ
हम ईएफआई और लाइव विभाजन पर एफएटी चाहते हैं और हम ext4
दृढ़ता पर निर्भर हैं और हमें persistence
काम करने के लिए दृढ़ता सुविधा के लिए लेबल की आवश्यकता है ।
mkfs.vfat -n EFI /dev/sdX1
mkfs.vfat -n LIVE /dev/sdX2
mkfs.ext4 -F -L persistence /dev/sdX3
संसाधन जुटाना
हमें अस्थायी माउंट बिंदुओं पर स्रोत ISO और लक्ष्य विभाजन माउंट करने की आवश्यकता होगी।
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
लाइव सिस्टम स्थापित करें
लाइव आईएसओ फाइलसिस्टम कंटेंट को LIVE पार्टीशन पर कॉपी करें।
cp -ar /tmp/live-iso/* /tmp/usb-live
persistence.conf
आवश्यक कॉन्फ़िगरेशन फ़ाइल के साथ दृढ़ता फाइल सिस्टम तैयार करें। इस फ़ाइल के बिना दृढ़ता सुविधा काम नहीं करेगी।
echo "/ union" > /tmp/usb-persistence/persistence.conf
UEFI समर्थन के लिए ग्रब
UEFI बूटिंग समर्थन के लिए grub2 स्थापित करें (इसके लिए grub-efi-amd64-bin
डेबियन पर पैकेज की आवश्यकता होती है )। हम यूईएफआई सुरक्षित बूट का उपयोग नहींgrub-install
करने के लिए मजबूर करते हैं , जो स्पष्ट रूप से --removable
विकल्प के साथ काम नहीं करता है।
grub-install --no-uefi-secure-boot --removable --target=x86_64-efi --boot-directory=/tmp/usb-live/boot/ --efi-directory=/tmp/usb-efi /dev/sdX
विरासत BIOS समर्थन के लिए Syslinux
gptmbr.bin
ड्राइव में syslinux बूटलोडर स्थापित करें (syslinux डाउनलोड करें या पैकेज स्थापित करें syslinux-common
)। फिर लाइव विभाजन के लिए syslinux स्थापित करें।
dd bs=440 count=1 conv=notrunc if=/usr/lib/syslinux/mbr/gptmbr.bin of=/dev/sdX
syslinux --install /dev/sdX2
आइसोलिनक्स तय
Syslinux के साथ काम करने के लिए मूल लाइव ISO के आइसोलिनक्स विन्यास का पुन: उपयोग करें।
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
कर्नेल पैरामीटर
अब जब हमने लाइव सिस्टम फ़ाइलों को एक वास्तविक रीड-राइट फाइलसिस्टम में कॉपी किया है, तो हम ग्रब और सिसलिनक्स कॉन्फिग को मैनिपुलेट कर सकते हैं।
करने के लिए दृढ़ता कर्नेल पैरामीटर जोड़ें menu.cfg
और grub.cfg
। दोनों फाइलों में, persistence
इसमें संबंधित पहली पंक्ति के अंत में कीवर्ड जोड़ें 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
कीबोर्ड-लेआउट कर्नेल पैरामीटर सेट करें। दोनों फाइलों में, इसमें संबंधित पहली पंक्ति के अंत में कीवर्ड जोड़ें 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
पीस छप
ग्रब स्प्लैश छवि को ठीक करें (वैकल्पिक; हमने इसे किसी अन्य निर्देशिका में स्थानांतरित किया है)।
sed --in-place 's#isolinux/splash#syslinux/splash#' /tmp/usb-live/boot/grub/grub.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
क्यों यह UEFI और BIOS दोनों के लिए काम करना चाहिए
यूईएफआई मोड में शुरू होने पर, पीसी जीपीटी विभाजन तालिका में परिभाषित एफएटी विभाजन को स्कैन करेगा। पहला FAT विभाजन UEFI ग्रब बूटलोडर को ले जाता है, जो पाया जाता है क्योंकि यह हटाने योग्य ड्राइव (यह --removable
करने के लिए स्विच grub-install
) के लिए UEFI द्वारा निर्दिष्ट पथ में स्थित है । काम करने के लिए कोई यूईएफआई बूट प्रविष्टि आवश्यक नहीं है, हमें केवल यूएसबी ड्राइव से पीसी को बूट करने का प्रयास करने की आवश्यकता है। उस ग्रब को वहां से लेने के लिए कॉन्फ़िगर किया गया है (grub.cfg को लोड करें, मेनू दिखाएं आदि)।
BIOS मोड में शुरू करने और USB ड्राइव से बूट करने के लिए चयन करते समय, पीसी gptmbr.bin
बूट लोडर कोड निष्पादित करेगा जिसे हमने USB ड्राइव के सुरक्षात्मक एमबीआर को लिखा है। वह बूटलोडर उस विभाजन से legacy_boot
ध्वज और श्रृंखला लोड सिसलिन के साथ चिह्नित GPT विभाजन की तलाश करता है। इसके बाद Syslinux ओवर लोड (मेनू menu। एफजी, मेन्यू इत्यादि दिखाता है)।
एन्क्रिप्टेड दृढ़ता
दृढ़ता विभाजन पर सादे ext4 का उपयोग करने के बजाय, कोई पहले LUKS (उपयोग cryptsetup
) के साथ दृढ़ता विभाजन को एन्क्रिप्ट कर सकता है , फिर ext4 (उचित लेबल का उपयोग करके ) के साथ प्रारूपित करें । हालाँकि, जैसा कि प्रलेखन कहता है, लाइव सिस्टम में cryptsetup
पैकेज शामिल होना चाहिए । अन्यथा, एन्क्रिप्टेड विभाजन को लाइव सिस्टम द्वारा डिक्रिप्ट नहीं किया जा सकता है। इसका मतलब है कि किसी को पहले एक कस्टम लाइव आईएसओ का निर्माण करना होगा। हालांकि, इस जवाब के दायरे से बाहर है।
इतिहास
--no-uefi-secure-boot
विकल्प पहले से करने के लिए कॉल का हिस्सा नहीं था grub-install
। छड़ी ने मेरे लिए ठीक काम किया, लेकिन वह डेबियन बस्टर के साथ बंद हो गई, भले ही सुरक्षित बूट अभी भी मेरी मशीन पर अक्षम है।