संपादित करें: जब मैंने यह उत्तर लिखा था कि एक EFI_STUB कॉन्फ़िगर कर्नेल के साथ भेजे गए बहुत कम वितरणों को कस्टम एक का निर्माण करना था। आजकल अधिकांश वितरण उपयुक्त रूप से कॉन्फ़िगर किए गए कर्नेल को शिप करते हैं और कस्टम बिल्ड की अब आवश्यकता नहीं है। इस मामले में अनुभाग "अपने विभाजन सेट करें" और "चीजों को सेट करना" दिलचस्प हैं, "आवश्यकताएँ" और "गिरी को संकलित करना" छोड़ दिया जा सकता है।
मुझे नहीं पता कि विंडोज UEFI को कैसे संभालता है, लेकिन डेबियन की तरफ से यह बहुत सीधा है।
अपने विभाजन सेट करें
जीपीटी विभाजन योजना का उपयोग करें, एमबीआर का नहीं।
यूईएफआई के साथ एक जीपीटी विभाजन से बूट करने के लिए एक समर्पित बूट विभाजन अनिवार्य है, जिसे ईएफआई सिस्टम पार्टिशन कहा जाता है (ईएसपी) । यह अनिवार्य नहीं है, लेकिन सबसे संगत तरीका एक FAT32 विभाजन का उपयोग करना है। अधिकांश मामलों के लिए 200 MiB का आकार ठीक होना चाहिए।
विभाजन को ईएसपी के रूप में पंजीकृत करने के लिए, इसे भाग के साथ चिह्नित करना होगा boot
ध्वज के । एमबीआर योजनाओं के विपरीत, बूट ध्वज का उपयोग केवल ईएसपी को इंगित करने के लिए किया जाता है, न कि विभाजन से बूट करने में सक्षम होने के लिए।
UEFI \EFI\<vendor>\<application>.efi
अनुप्रयोगों को संग्रहीत करने के लिए UEFI निर्देशिका संरचना का उपयोग करता है । एक निर्देशिका विभाजक द्वारा चिह्नित किया जाता है बैकस्लैश , यहां तक कि लिनक्स पर भी। एक वितरण नाम हो सकता है, वास्तविक मूल्य यूईएफआई के लिए प्रासंगिक नहीं है।
एप्लिकेशन मेमोरी चेकर्स या यूईएफआई शेल जैसी सिस्टम उपयोगिताओं हो सकते हैं। यह ओएस लोडर या ऑपरेटिंग सिस्टम भी हो सकता है। इन अनुप्रयोगों को बूट समय पर लॉन्च करने में सक्षम होने के लिए यूईएफआई में पंजीकृत होने की आवश्यकता है।
आवश्यकताएँ
लिनक्स कर्नेल संस्करण> = 3.3 को यूईएफआई द्वारा सीधे लोड किया जा सकता है। कर्नेल अपने स्वयं के लोडर के रूप में कार्य कर सकता है। इसे EFISTUB कहा जाता है । निम्नलिखित कर्नेल कॉन्फ़िगरेशन की आवश्यकता है।
CONFIG_EFI = y
CONFIG_EFI_PARTITION = y
CONFIG_EFI_STUB = y
CONFIG_RELOCATABLE = y
CONFIG_FB_EFI = y
CONFIG_FRAMEBUFFER_CONSOLE = y
CONFIG_EFI_VARS = मी
इस विन्यास के साथ एक कर्नेल वर्तमान में डेबियन स्थिर नहीं है, फिर भी। आप या तो अपना कर्नेल सेंक सकते हैं या प्रायोगिक पेड़ से एक का उपयोग कर सकते हैं उस स्थिति में आप अगले पैराग्राफ को छोड़ सकते हैं।
कर्नेल का संकलन
(शायद किसी भी अधिक आवश्यक नहीं, संपादित देखें)
यदि आप कर्नेल को संकलित करने का निर्णय लेते हैं तो यह निर्देश है कि ऐसा कैसे किया जाए। यदि आप समस्याओं में भाग लेते हैं, तो कर्नेल को संकलित करने के बारे में बहुत सारी जानकारी उपलब्ध है।
स्रोत मिल रहा है
git क्लोन क्लोन git: //git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
एक विशेष संस्करण देखें
git चेकआउट v3.6
कर्नेल को कॉन्फ़िगर करना
menuconfig करें
अपने सिस्टम पर आवश्यक सेटिंग्स करें या इसे छोड़ दें जैसे कि आपके पास अनुकूलित करने के लिए कुछ भी नहीं है। यह फ़ाइल के लिए कर्नेल कॉन्फ़िगरेशन लिखता है .config
।
सुनिश्चित करें कि पिछले पैराग्राफ से सेटिंग्स सेट की गई हैं। यह भी चयन करने के लिए समझ में आता है CONFIG_INPUT_EVBUG=n
। अन्यथा आपके लॉग कबाड़ के GiB से भर जाएंगे।
भवन गिरी
INSTALL_MOD_STRIP = 1 मेक-kpkg --uc - बाइनरी-आर्क
पैकेज मूल निर्देशिका में बनाए जाते हैं।
कर्नेल स्थापित करना
dpkg -i linux-image-3.5.0_Custom.deb linux-headers-3.5.0_Custom.deb
Initramfs का निर्माण
mkinitramfs -o /boot/initrd.img-3.6.0-amd64 3.6.0
3.6.0 कर्नेल संस्करण है। यह चल रहे कर्नेल को डिफॉल्ट करता है, जो एक अच्छा विकल्प नहीं है, क्योंकि आप अभी भी पुराने कर्नेल चला रहे हैं।
चीजों को स्थापित करना
लिनक्स कर्नेल को बूट करने में सक्षम होने के लिए, इसे इनट्रैमफैट्स के साथ ईएसपी में कॉपी करना होगा। यह देखते हुए कि ईएसपी पर मुहिम शुरू की गई है/boot/efi
/boot/efi/EFI/debian/vmlinuz-3.6.0.efi
/boot/efi/EFI/debian/initrd.img-3.6.0
नोट: अधिकांश प्रणालियों के साथ संगतता सुनिश्चित efi
करने के लिए कर्नेल में विलोपन जोड़ा जाना है।
अब कर्नेल को यूईएफआई में पंजीकृत किया जा सकता है। हम उसके लिए टूल का उपयोग करते हैं efibootmgr
।
इको "रूट = UUID = 3a4287b6-b3a7-4721-da38-acc38a928278 ro rootfstype = ext4 add_efi_memmap initrd =\ EFI \\ debian \\ initrd.img-3.6.0" |
iconv -f ascii -t ucs2 |
ईजीबूटमग्र \ _
--सृजन करना \
-
-डिस्क / देव / sda \
- प्रति 4 \
- लैबल "डेबियन लिनक्स कर्नेल 3.6.0" \
- लोडर "\\ EFI \\ डेबियन \\ vmlinuz-3.6.0"
- राइट-सिग्नेचर \
- बेंड-बाइनरी-आर्ग -
तर्क --disk
वह उपकरण है जहां कर्नेल रहता है, ईएसपी नहीं।
--part
वह विभाजन संख्या है जहाँ कर्नेल रहता है। --label
UEFI बूट मेनू में प्रविष्टि है।
उपलब्ध प्रविष्टियों की सूची देखने के लिए, बस efibootmgr
बिना तर्क के लॉन्च करें । किसी विशेष प्रविष्टि को हटाने के लिए सिंटैक्स
efibootmgr -b प्रविष्टि (हेक्स) -बी
उदाहरण के लिए:
ऑफीबूटमग्र-बी 001 ए-बी
ये निर्देश कर्नेल अद्यतन के मामले को संभालते नहीं हैं। कर्नेल और इनट्राम्राम्स स्वचालित रूप से ईएसपी में कॉपी नहीं किए जाते हैं। यह एक छोटी लिपि का उपयोग करके किया जा सकता है, जो कर्नेल और इनट्र्रामोफ़्स को ईएसपी और रनों को कॉपी करता है efibootmgr
। यह स्क्रिप्ट /etc/kernel/postinst.d
कर्नेल के अपडेट होने के बाद स्वचालित रूप से लॉन्च होने के लिए रखी जा सकती है ।
नोट: GRUB जैसे बूट मैनेजर की जरूरत नहीं है, UEFI खुद बूट मैनेजर के रूप में कार्य करता है।
लिनक्स की तरफ से आपको बस इतना ही चाहिए, मुझे नहीं पता कि विंडोज को जोड़ने में क्या लगता है।