UEFI / GPT प्रणाली पर दोहरे बूट RAID 1 विभाजन के साथ Ubuntu 14.04 / 16.04 64-बिट कैसे स्थापित करें?


22

अपडेट: नीचे दिया गया प्रश्न और उत्तर उबंटू 16.04 पर भी लागू होता है

मेरे पास दोहरी SSDs और विन (7) के साथ एक और डिस्क पर पूर्व-स्थापित कंप्यूटर है। पूर्व-संस्थापन उपयोग (U) EFI / GPT बूट। मैं अपने SSDs पर एक RAID1 रूट विभाजन पर Ubuntu 14.04 64-बिट डेस्कटॉप स्थापित करना चाहता हूं और अभी भी मेरे Win7 सिस्टम को डुअल-बूट करने में सक्षम हूं। क्या यह संभव है?

डेस्कटॉप इंस्टॉलर का उपयोग करने वाला यह गाइड काम नहीं करता था, शायद इसलिए कि यह (स्पष्ट रूप से) एमबीआर बूटिंग को मानता है। न तो सर्वर वितरण स्थापित किया , शायद उसी कारण से।

जवाबों:


36

अद्यतन: मैंने सत्यापित किया है कि नीचे दिया गया विवरण उबंटू 16.04 के लिए भी काम करता है। अन्य उपयोगकर्ताओं ने 17.10 और 18.04.1 को काम करने की सूचना दी है।

नोट: यह HOWTO आपको LVM नहीं देगा। यदि आप LVM भी चाहते हैं, तो इसके बजाय UEFI BIOS के साथ मशीन पर RAID 1 और LVM के साथ Ubuntu 18.04 डेस्कटॉप स्थापित करें

दिनों की कोशिश के बाद, अब मेरे पास एक काम करने की प्रणाली है! संक्षेप में, समाधान में निम्नलिखित चरण शामिल थे:

  1. उबंटू लाइव सीडी / यूएसबी का उपयोग कर बूट करें।
  2. आवश्यकतानुसार एसएसडी का विभाजन।
  3. अनुपलब्ध पैकेज (mdadm और grub-efi) स्थापित करें।
  4. RAID विभाजन बनाएँ।
  5. यूबीइक्विटी इंस्टॉलर चलाएं (लेकिन नए सिस्टम में बूट न ​​करें)।
  6. एक RAID रूट से बूट को सक्षम करने के लिए स्थापित सिस्टम (initramfs) को पैच करें।
  7. GRUB के साथ पहले SSD के EFI विभाजन को पॉप्युलेट करें और इसे EFI बूट श्रृंखला में स्थापित करें।
  8. EFI विभाजन को अन्य SSD पर क्लोन करें और इसे बूट श्रृंखला में स्थापित करें।
  9. किया हुआ! आपके सिस्टम में अब RAID 1 अतिरेक होगा। ध्यान दें कि UEFI विभाजन के अछूते रहने के बाद कुछ खास करने की जरूरत नहीं है, जैसे कि कर्नेल अपडेट।

समाधान के चरण 6 का एक प्रमुख घटक बूट अनुक्रम में एक विलंब था जो अन्यथा मुझे GRUB को GRUB (कीबोर्ड के बिना!) में डंप कर देता था यदि एसएसडी में से कोई भी गायब था।

विस्तृत HOWTO

1. बूट

USB स्टिक से EFI का उपयोग कर बूट करें। सटीक रूप से आपके सिस्टम के अनुसार कैसे भिन्न होगा। स्थापित किए बिना ubuntu का चयन करें

एक टर्मिनल एमुलेटर शुरू करें, जैसे xtermनीचे कमांड चलाने के लिए।

1.1 दूसरे कंप्यूटर से लॉगिन करें

इसे आज़माते हुए, मुझे अक्सर दूसरे से लॉगिन करना आसान लगता था, पहले से ही पूरी तरह से कॉन्फ़िगर किया गया कंप्यूटर। यह सरलीकृत कट-एंड-कमांड का पेस्ट, आदि। यदि आप ऐसा ही करना चाहते हैं, तो आप निम्न कार्य करके ssh के माध्यम से लॉगिन कर सकते हैं:

कॉन्फ़िगर किए जाने वाले कंप्यूटर पर, ओपनश सर्वर स्थापित करें:

sudo apt-get install openssh-server

पासवर्ड बदलें। उपयोगकर्ता के लिए डिफ़ॉल्ट पासवर्ड ubuntuरिक्त है। आप शायद एक मध्यम-शक्ति पासवर्ड चुन सकते हैं। जैसे ही आप अपने नए कंप्यूटर को रिबूट करेंगे, यह भूल जाएगा।

passwd

अब आप दूसरे कंप्यूटर से ubuntu लाइव सत्र में लॉग इन कर सकते हैं। नीचे दिए गए निर्देश लिनक्स के लिए हैं:

ssh -l ubuntu <your-new-computer>

यदि आपको एक संदिग्ध व्यक्ति के मध्य-हमले के बारे में चेतावनी मिलती है, तो आपको नए कंप्यूटर की पहचान करने के लिए उपयोग की जाने वाली ssh कुंजियों को साफ़ करना होगा। ऐसा इसलिए है क्योंकि openssh-serverजब भी यह स्थापित होता है तो नई सर्वर कुंजी उत्पन्न करता है। उपयोग करने का आदेश आम तौर पर मुद्रित होता है और इसे देखना चाहिए

ssh-keygen -f <path-to-.ssh/known_hosts> -R <your-new-computer>

उस आदेश को निष्पादित करने के बाद, आपको ubuntu लाइव सत्र में प्रवेश करने में सक्षम होना चाहिए।

2. विभाजन डिस्क

किसी भी पुराने विभाजन और बूट ब्लॉक को साफ़ करें। चेतावनी! यह आपके डिस्क पर डेटा को नष्ट कर देगा!

sudo sgdisk -z /dev/sda
sudo sgdisk -z /dev/sdb

अपने ड्राइव के सबसे छोटे हिस्से पर नए विभाजन बनाएं: ESP के लिए 100M, RAID SWAP के लिए 32G, RAID रूट के लिए आराम करें। यदि आपकी एसडीए ड्राइव सबसे छोटी है, तो धारा 2.1 का पालन करें, अन्यथा धारा 2.2।

2.1 विभाजन तालिकाएँ बनाएँ (/ देव / sda छोटा है)

निम्न चरण करें:

sudo sgdisk -n 1:0:+100M -t 1:ef00 -c 1:"EFI System" /dev/sda
sudo sgdisk -n 2:0:+32G -t 2:fd00 -c 2:"Linux RAID" /dev/sda
sudo sgdisk -n 3:0:0 -t 3:fd00 -c 3:"Linux RAID" /dev/sda

अन्य डिस्क में विभाजन तालिका की प्रतिलिपि बनाएँ और अद्वितीय यूयूआईडी को फिर से बनाएं (वास्तव में यूएआईडी को एसडीए के लिए पुनर्जीवित करें)।

sudo sgdisk /dev/sda -R /dev/sdb -G

2.2 विभाजन तालिकाएँ बनाएँ (/ dev / sdb छोटा है)

निम्न चरण करें:

sudo sgdisk -n 1:0:+100M -t 1:ef00 -c 1:"EFI System" /dev/sdb
sudo sgdisk -n 2:0:+32G -t 2:fd00 -c 2:"Linux RAID" /dev/sdb
sudo sgdisk -n 3:0:0 -t 3:fd00 -c 3:"Linux RAID" /dev/sdb

अन्य डिस्क पर विभाजन तालिका की प्रतिलिपि बनाएँ और अद्वितीय UUIDs को पुन: बनाएँ (वास्तव में sdb के लिए UUIDs पुनर्जीवित करेंगे)।

sudo sgdisk /dev/sdb -R /dev/sda -G

2.3 / देव / एसडीए पर FAT32 फ़ाइल सिस्टम बनाएँ

EFI पार्टीशन के लिए FAT32 फ़ाइल सिस्टम बनाएँ।

sudo mkfs.fat -F 32 /dev/sda1
mkdir /tmp/sda1
sudo mount /dev/sda1 /tmp/sda1
sudo mkdir /tmp/sda1/EFI
sudo umount /dev/sda1

3. लापता पैकेज स्थापित करें

उबंटू लाइव सीडी दो प्रमुख पैकेजों के बिना आती है; ग्रब-एफी और एमडीएमएम। उन्हें स्थापित करें। (मुझे यहां 100% यकीन नहीं है कि ग्रब-एफी की जरूरत है, लेकिन आने वाले इंस्टॉलेशन के साथ समरूपता बनाए रखने के लिए इसे भी साथ में लाएं।)

sudo apt-get update
sudo apt-get -y install grub-efi-amd64 # (or grub-efi-amd64-signed)
sudo apt-get -y install mdadm

यदि आपके पास सुरक्षित बूट सक्षम है grub-efi-amd64-signed, grub-efi-amd64तो आपको इसके बजाय आवश्यकता हो सकती है । (एलेक द्वारा टिप्पणी देखें।)

4. RAID विभाजन बनाएँ

नीचा मोड में RAID डिवाइस बनाएं। उपकरणों को बाद में पूरा किया जाएगा। एक पूर्ण RAID1 बनाने ने कभी-कभी मुझे ubiquityनीचे की स्थापना के दौरान समस्याएं दीं , निश्चित नहीं कि क्यों। (माउंट / अनमाउंट? प्रारूप?)

sudo mdadm --create /dev/md0 --bitmap=internal --level=1 --raid-disks=2 /dev/sda2 missing
sudo mdadm --create /dev/md1 --bitmap=internal --level=1 --raid-disks=2 /dev/sda3 missing

RAID स्थिति सत्यापित करें।

cat /proc/mdstat

Personalities : [raid1] 
md1 : active raid1 sda3[0]
      216269952 blocks super 1.2 [2/1] [U_]
      bitmap: 0/2 pages [0KB], 65536KB chunk

md0 : active raid1 sda2[0]
      33537920 blocks super 1.2 [2/1] [U_]
      bitmap: 0/1 pages [0KB], 65536KB chunk

unused devices: <none>

Md डिवाइसों का विभाजन।

sudo sgdisk -z /dev/md0
sudo sgdisk -z /dev/md1
sudo sgdisk -N 1 -t 1:8200 -c 1:"Linux swap" /dev/md0
sudo sgdisk -N 1 -t 1:8300 -c 1:"Linux filesystem" /dev/md1

5. इंस्टॉलर चलाएं

बूट लोडर को छोड़कर सर्वव्यापी इंस्टॉलर को चलाएं, जो वैसे भी विफल हो जाएगा । ( नोट : यदि आपने ssh के माध्यम से लॉग इन किया है, तो आप संभवतः इसके बजाय नए कंप्यूटर पर इसे निष्पादित करना चाहेंगे।)

sudo ubiquity -b

इंस्टॉलेशन टाइप के रूप में कुछ और चुनें औरmd1p1 टाइप टू ext4मॉडिफाई करें: हाँ, और माउंट पॉइंट /md0p1विभाजन स्वचालित रूप से अदला-बदली के रूप में चयन किया जाएगा।

एक कप कॉफी प्राप्त करें जबकि इंस्टॉलेशन खत्म हो।

महत्वपूर्ण: इंस्टॉलेशन समाप्त होने के बाद, जारी रखें परीक्षण का चयन करें क्योंकि सिस्टम अभी तक बूट तैयार नहीं है।

RAID डिवाइस को पूरा करें

RAID में प्रतीक्षा sdb विभाजन संलग्न करें।

sudo mdadm --add /dev/md0 /dev/sdb2
sudo mdadm --add /dev/md1 /dev/sdb3

सत्यापित करें कि सभी RAID उपकरण ठीक हैं (और वैकल्पिक रूप से सिंकिंग)।

cat /proc/mdstat

Personalities : [raid1] 
md1 : active raid1 sdb3[1] sda3[0]
      216269952 blocks super 1.2 [2/1] [U_]
      [>....................]  recovery =  0.2% (465536/216269952)  finish=17.9min speed=200000K/sec
      bitmap: 2/2 pages [8KB], 65536KB chunk

md0 : active raid1 sdb2[1] sda2[0]
      33537920 blocks super 1.2 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

unused devices: <none>

रिबूट सहित सिंक के दौरान नीचे की प्रक्रिया जारी रह सकती है।

6. स्थापित सिस्टम को कॉन्फ़िगर करें

स्थापित सिस्टम में चिरोट को सक्षम करने के लिए सेट अप करें।

sudo -s
mount /dev/md1p1 /mnt
mount -o bind /dev /mnt/dev
mount -o bind /dev/pts /mnt/dev/pts
mount -o bind /sys /mnt/sys
mount -o bind /proc /mnt/proc
cat /etc/resolv.conf >> /mnt/etc/resolv.conf
chroot /mnt

कॉन्फ़िगर और स्थापित संकुल।

apt-get install -y grub-efi-amd64 # (or grub-efi-amd64-signed; same as in step 3)
apt-get install -y mdadm

यदि आप md डिवाइस अभी भी सिंक कर रहे हैं, तो आप कभी-कभार चेतावनी जैसे देख सकते हैं:

/usr/sbin/grub-probe: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..

यह सामान्य है और इसे नजरअंदाज किया जा सकता है ( इस प्रश्न के नीचे उत्तर देखें )।

nano /etc/grub.d/10_linux
# change quick_boot and quiet_boot to 0

अक्षम करने quick_bootसे बच जाएगा डिस्कफिल्टर लिखते हैं समर्थित बग नहीं हैं । अक्षम quiet_bootकरना केवल व्यक्तिगत प्राथमिकता है।

किसी भी लेबल संदर्भ को हटाने के लिए /etc/mdadm/mdadm.conf संशोधित करें, अर्थात परिवर्तित करें

ARRAY /dev/md/0 metadata=1.2 name=ubuntu:0 UUID=f0e36215:7232c9e1:2800002e:e80a5599
ARRAY /dev/md/1 metadata=1.2 name=ubuntu:1 UUID=4b42f85c:46b93d8e:f7ed9920:42ea4623

सेवा मेरे

ARRAY /dev/md/0 UUID=f0e36215:7232c9e1:2800002e:e80a5599
ARRAY /dev/md/1 UUID=4b42f85c:46b93d8e:f7ed9920:42ea4623

यह चरण अनावश्यक हो सकता है, लेकिन मैंने देखा है कि कुछ पृष्ठ सुझाव देते हैं कि नामकरण की योजनाएं अस्थिर हो सकती हैं (नाम = ubuntu: 0/1) और यह बूट के दौरान कोडिंग से बिल्कुल ठीक RAID डिवाइस को रोक सकता है।

/etc/default/grubपढ़ने के लिए लाइनों को संशोधित करें

#GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

फिर, यह कदम अनावश्यक हो सकता है, लेकिन मैं अपनी आँखों को खोलना पसंद करता हूँ ...

6.1। स्लीप स्क्रिप्ट जोड़ें

(यह समुदाय द्वारा सुझाव दिया गया है कि यह कदम अनावश्यक हो सकता है और इसका उपयोग करके प्रतिस्थापित किया जा सकता GRUB_CMDLINE_LINUX="rootdelay=30"है /etc/default/grub। इस HOWTO के तल पर बताए गए कारणों के लिए, मैं सुझाव देता हूं कि स्लीप स्क्रिप्ट के साथ चिपकना चाहिए , हालांकि यह रूटडेल का उपयोग करने की तुलना में बदसूरत है। हम अपने नियमित कार्यक्रम के साथ जारी ... )

एक स्क्रिप्ट बनाएं जो RAID डिवाइसों के व्यवस्थित होने की प्रतीक्षा करेगा। इस देरी के बिना, RAID असेंबली समय पर समाप्त नहीं होने के कारण रूट की माउंटिंग विफल हो सकती है । मुझे यह कठिन तरीका पता चला - जब तक मैंने डिस्क की विफलता का अनुकरण करने के लिए SSDs में से एक को डिस्कनेक्ट नहीं किया, तब तक समस्या दिखाई नहीं दी! उपलब्ध हार्डवेयर के आधार पर समय को समायोजित करने की आवश्यकता हो सकती है, जैसे धीमी बाहरी USB डिस्क आदि।

निम्न कोड दर्ज करें /usr/share/initramfs-tools/scripts/local-premount/sleepAwhile:

#!/bin/sh
echo
echo "sleeping for 30 seconds while udevd and mdadm settle down"
sleep 5
echo "sleeping for 25 seconds while udevd and mdadm settle down"
sleep 5
echo "sleeping for 20 seconds while udevd and mdadm settle down"
sleep 5
echo "sleeping for 15 seconds while udevd and mdadm settle down"
sleep 5
echo "sleeping for 10 seconds while udevd and mdadm settle down"
sleep 5
echo "sleeping for 5 seconds while udevd and mdadm settle down"
sleep 5
echo "done sleeping"

स्क्रिप्ट को निष्पादन योग्य बनाएं और इसे स्थापित करें।

chmod a+x /usr/share/initramfs-tools/scripts/local-premount/sleepAwhile
update-grub
update-initramfs -u

7. पहले SSD से बूट सक्षम करें

अब प्रणाली लगभग तैयार है, केवल यूईएफआई बूट मापदंडों को स्थापित करने की आवश्यकता है।

mount /dev/sda1 /boot/efi
grub-install --boot-directory=/boot --bootloader-id=Ubuntu --target=x86_64-efi --efi-directory=/boot/efi --recheck
update-grub
umount /dev/sda1

यह बूट लोडर को /boot/efi/EFI/Ubuntu(उर्फ EFI/Ubuntuपर /dev/sda1) स्थापित करेगा और इसे कंप्यूटर पर पहले UEFI बूट श्रृंखला में स्थापित करेगा।

8. दूसरे SSD से बूट सक्षम करें

हम लगभग पूरा कर चुके हैं। इस बिंदु पर, हमें sdaड्राइव पर रीबूट करने में सक्षम होना चाहिए । इसके अलावा, या mdadmतो ड्राइव की विफलता को संभालने में सक्षम होना चाहिए । हालाँकि, EFI RAID नहीं है, इसलिए हमें इसे क्लोन करने की आवश्यकता है ।sdasdb

dd if=/dev/sda1 of=/dev/sdb1

दूसरे ड्राइव पर बूट लोडर को स्थापित करने के अलावा, यह sdb1विभाजन पर FAT32 फ़ाइल सिस्टम का UUID बना देगा (जैसा कि रिपोर्ट किया गया है blkid) से मेल खाता है sda1और /etc/fstab। (नोट हालांकि उस के लिए UUIDs /dev/sda1और /dev/sdb1विभाजन अभी भी अलग होगा - तुलना ls -la /dev/disk/by-partuuid | grep sd[ab]1के साथ blkid /dev/sd[ab]1के बाद खुद के लिए जाँच करने के लिए स्थापित करें।)

अंत में, हमें sdb1विभाजन को बूट क्रम में सम्मिलित करना चाहिए । (नोट: यह कदम अनावश्यक हो सकता है, आपके BIOS पर निर्भर करता है। मुझे रिपोर्ट मिली है कि कुछ BIOS 'स्वचालित रूप से वैध सीपीपी की सूची तैयार करते हैं।)

efibootmgr -c -g -d /dev/sdb -p 1 -L "Ubuntu #2" -l '\EFI\ubuntu\grubx64.efi'

मैंने इसका परीक्षण नहीं किया, लेकिन ESP चालू sdaऔर के बीच अद्वितीय लेबल (-L) होना आवश्यक है sdb

यह वर्तमान बूट ऑर्डर का एक प्रिंटआउट उत्पन्न करेगा, जैसे

Timeout: 0 seconds
BootOrder: 0009,0008,0000,0001,0002,000B,0003,0004,0005,0006,0007
Boot0000  Windows Boot Manager
Boot0001  DTO UEFI USB Floppy/CD
Boot0002  DTO UEFI USB Hard Drive
Boot0003* DTO UEFI ATAPI CD-ROM Drive
Boot0004  CD/DVD Drive 
Boot0005  DTO Legacy USB Floppy/CD
Boot0006* Hard Drive
Boot0007* IBA GE Slot 00C8 v1550
Boot0008* Ubuntu
Boot000B  KingstonDT 101 II PMAP
Boot0009* Ubuntu #2

ध्यान दें कि बूट क्रम में Ubuntu # 2 (sdb) और Ubuntu (sda) पहले हैं।

रीबूट

अब हम रिबूट करने के लिए तैयार हैं।

exit # from chroot
exit # from sudo -s
sudo reboot

सिस्टम को अब उबंटू में रिबूट करना चाहिए (आपको पहले उबंटू लाइव इंस्टॉलेशन मीडिया को हटाना पड़ सकता है।)

बूट के बाद, आप चला सकते हैं

sudo update-grub

विंडोज बूट लोडर को ग्रब बूट चेन से जोड़ने के लिए।

वर्चुअल मशीन गोच

यदि आप पहले एक वर्चुअल मशीन में इसे आज़माना चाहते हैं, तो कुछ चेतावनी हैं: जाहिर है, यूईएफआई जानकारी रखने वाले एनवीआरएएम को रिबूट के बीच याद किया जाता है, लेकिन शटडाउन-रीस्टार्ट साइकिल के बीच नहीं। उस स्थिति में, आप UEFI शैल कंसोल पर समाप्त हो सकते हैं। निम्न कमांड अपने मशीन में आप बूट करना चाहिए से /dev/sda1(उपयोग FS1:के लिए /dev/sdb1):

FS0:
\EFI\ubuntu\grubx64.efi

वर्चुअलबॉक्स में UEFI बूट के शीर्ष उत्तर में पहला समाधान - Ubuntu 12.04 भी मददगार हो सकता है।

डिस्क विफलता का अनुकरण

या तो RAID घटक डिवाइस की विफलता का उपयोग करके नकली किया जा सकता है mdadm। हालाँकि, यह सत्यापित करने के लिए कि बूट सामान एक डिस्क की विफलता से बचेगा, मुझे कंप्यूटर बंद करना होगा और डिस्क से बिजली काटनी होगी। यदि आप ऐसा करते हैं, तो पहले सुनिश्चित करें कि md डिवाइस सिंक'एड हैं

cat /proc/mdstat 

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md1 : active raid1 sdb3[2] sda3[0]
      216269952 blocks super 1.2 [2/2] [UU]
      bitmap: 2/2 pages [8KB], 65536KB chunk

md0 : active raid1 sda2[0] sdb2[2]
      33537920 blocks super 1.2 [2/2] [UU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

unused devices: <none>

नीचे दिए गए निर्देशों में, sdX विफल डिवाइस है (X = a या b) और sdY ठीक उपकरण है।

एक ड्राइव डिस्कनेक्ट करें

कम्प्यूटर बंद कीजिए। एक ड्राइव डिस्कनेक्ट करें। पुनः आरंभ करें। उबंटू को अब नीचा मोड में RAID ड्राइव के साथ बूट होना चाहिए। (सेलिब्रेट! यह वही है जिसे आप प्राप्त करने की कोशिश कर रहे थे!)

cat /proc/mdstat 

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md1 : active raid1 sda3[0]
      216269952 blocks super 1.2 [2/1] [U_]
      bitmap: 2/2 pages [8KB], 65536KB chunk

md0 : active raid1 sda2[0]
      33537920 blocks super 1.2 [2/1] [U_]
      bitmap: 0/1 pages [0KB], 65536KB chunk

unused devices: <none>

विफल डिस्क से पुनर्प्राप्त करें

यदि आप एक दोषपूर्ण डिस्क को बदलने के लिए आवश्यक हैं, तो यह प्रक्रिया है। यदि आप एक प्रतिस्थापन का अनुकरण करना चाहते हैं, तो आप उबंटू लाइव सत्र में बूट कर सकते हैं और उपयोग कर सकते हैं

dd if=/dev/zero of=/dev/sdX

वास्तविक सिस्टम में फिर से रिबूट करने से पहले डिस्क को साफ करने के लिए। यदि आपने उपरोक्त अनुभाग में सिर्फ बूट / RAID अतिरेक का परीक्षण किया है, तो आप इस चरण को छोड़ सकते हैं। हालाँकि, आपको अपने सिस्टम के लिए पूर्ण बूट / RAID अतिरेक को पुनर्प्राप्त करने के लिए कम से कम चरण 2 और 4 का प्रदर्शन करना होगा।

डिस्क प्रतिस्थापन के बाद RAID + बूट सिस्टम को पुनर्स्थापित करना निम्नलिखित चरणों की आवश्यकता है:

  1. नई ड्राइव विभाजन।
  2. Md उपकरणों में विभाजन जोड़ें।
  3. बूट विभाजन को क्लोन करें।
  4. क्लोन के लिए एक EFI रिकॉर्ड जोड़ें।

1. नई ड्राइव विभाजन

स्वस्थ ड्राइव से विभाजन तालिका की प्रतिलिपि बनाएँ:

sudo sgdisk /dev/sdY -R /dev/sdX

नई ड्राइव पर UUIDs को फिर से यादृच्छिक करें।

sudo sgdisk /dev/sdX -G

2. md उपकरणों में जोड़ें

sudo mdadm --add /dev/md0 /dev/sdX2
sudo mdadm --add /dev/md1 /dev/sdX3

3. बूट पार्टीशन को क्लोन करें

स्वस्थ ड्राइव से ईएसपी को क्लोन करें। (सावधान, शायद वसूली शुरू करने के लिए दोनों ईएसपी की डंप-टू-फ़ाइल करें यदि आप वास्तव में इसे पेंच करते हैं)।

sudo dd if=/dev/sdY1 of=/dev/sdX1

4. नए पुनर्जीवित डिस्क को बूट क्रम में डालें

क्लोन के लिए एक EFI रिकॉर्ड जोड़ें। आवश्यकतानुसार -L लेबल को संशोधित करें।

sudo efibootmgr -c -g -d /dev/sdX -p 1 -L "Ubuntu #2" -l '\EFI\ubuntu\grubx64.efi'

अब, सिस्टम को रिबूट करने के लिए इसे वापस सामान्य होना चाहिए (RAID डिवाइस अभी भी सिंक हो सकते हैं)!

स्लीप स्क्रिप्ट क्यों?

समुदाय द्वारा यह सुझाव दिया गया है कि स्लीप स्क्रिप्ट को जोड़ना अनावश्यक हो सकता है और इसके बाद उपयोग GRUB_CMDLINE_LINUX="rootdelay=30"में लाया जा सकता /etc/default/grubहै sudo update-grub। यह सुझाव निश्चित रूप से क्लीनर है और डिस्क विफलता / प्रतिस्थापित परिदृश्य में काम करता है। हालांकि, वहाँ एक चेतावनी है ...

मैंने अपने दूसरे SSD को डिस्कनेक्ट कर दिया और पाया कि rootdelay=30नींद की स्क्रिप्ट के बजाय आदि के साथ :
1) सिस्टम "विफल" ड्राइव के बिना अपमानित मोड में बूट करता है।
2) गैर-अपमानित बूट (दोनों ड्राइव मौजूद) में, बूट समय कम हो जाता है। देरी केवल दूसरी ड्राइव के गुम होने की संभावना है।

1) और 2) जब तक मैंने अपना दूसरा ड्राइव दोबारा नहीं जोड़ा तब तक बहुत अच्छा लग रहा था। बूट करने पर, RAID सरणी इकट्ठा करने में विफल रही और मुझे initramfsतुरंत पता चला कि मुझे क्या करना है। यह संभव है कि उबंटू लाइव यूएसबी स्टिक से बूटिंग करके) स्थिति को उबारना संभव हो, ख) स्थापित करना mdadmऔर ग) मैन्युअल रूप से सरणी को फिर से इकट्ठा करना ... लेकिन मैंने कहीं गड़बड़ कर दी। इसके बजाय, जब मैंने इस परीक्षण को स्लीप स्क्रिप्ट के साथ फिर से चलाया , (हाँ, मैंने nth समय के लिए ऊपर से HOWTO शुरू किया ...), सिस्टम ने बूट किया। सरणियाँ अपमानित मोड में थीं और मैं /dev/sdb[23]बिना किसी अतिरिक्त यूएसबी स्टिक के विभाजन को मैन्युअल रूप से जोड़ सकता था । मुझे नहीं पता कि नींद की स्क्रिप्ट काम क्यों rootdelayनहीं करती है। शायद mdadmदो से भ्रमित हो जाता है, थोड़ा आउट-ऑफ-सिंक घटक डिवाइस, लेकिन मैंने सोचाmdadmकि संभाल करने के लिए डिजाइन किया गया था। वैसे भी, जब से स्लीप स्क्रिप्ट काम करती है, मैं उससे चिपका रहता हूं।

यह तर्क दिया जा सकता है कि पूरी तरह से स्वस्थ RAID घटक डिवाइस को हटाने, RAID को अपमानित मोड में फिर से बूट करना और फिर घटक डिवाइस को फिर से जोड़ना एक अवास्तविक परिदृश्य है: यथार्थवादी परिदृश्य यह है कि एक उपकरण विफल हो जाता है और एक नए द्वारा प्रतिस्थापित किया जाता है , mdadmभ्रमित होने के लिए कम अवसर छोड़ना । मैं उस तर्क से सहमत हूं। हालाँकि, मुझे नहीं पता कि परीक्षण कैसे करना है कि सिस्टम वास्तव में कुछ हार्डवेयर को अक्षम करने के अलावा एक हार्डवेयर विफलता को कैसे सहन करता है! और परीक्षण के बाद, मैं एक निरर्थक, कार्य प्रणाली में वापस आना चाहता हूं। (ठीक है, मैं कर सकता है एक और मशीन के लिए मेरी दूसरी एसएसडी देते हैं और स्वाइप यह इससे पहले कि मैं इसे पुनः जोड़ देता है, लेकिन यह संभव नहीं है।)

संक्षेप में: मेरे ज्ञान के अनुसार, rootdelayसमाधान साफ-सुथरा है, गैर-अपमानित जूते के लिए स्लीप स्क्रिप्ट की तुलना में तेज है, और वास्तविक ड्राइव विफलता / परिदृश्य को बदलने के लिए काम करना चाहिए। हालाँकि, मुझे इसका परीक्षण करने का कोई व्यावहारिक तरीका नहीं पता है। इसलिए, कुछ समय के लिए, मैं बदसूरत नींद की स्क्रिप्ट से चिपके रहूंगा।


नोट 1: क्या आपको अपनी स्थापना के दौरान गलती से विंडोज में बूट करना चाहिए और जब आप Ubuntu (लाइव या अन्यथा) में फिर से बूट करते हैं तो डीएचसीपी बाद में रहस्यमय तरीके से विफल हो जाता है (मेरे साथ हुआ), कंप्यूटर + राउटर के शटडाउन + रिबूट में मदद मिल सकती है। जाहिर तौर पर कुछ राउटर डीएचसीपी रिक्वेस्ट के बारे में "स्मार्ट" होने की कोशिश करते हैं जो किसी कारणवश उबंटू को प्रभावित करता है लेकिन विंडोज को नहीं ... आह
निकलेस बोरलिन

1
नोट 2: यद्यपि ऊपर दिया गया बूट अनुक्रम बताता है कि sdb पर बूट लोडर का उपयोग किया गया है, आप पा सकते हैं कि / boot / efi अभी भी sda ( mount | grep efi) से आरोहित है । स्पष्ट रूप से लिनक्स पहले विभाजन को मापता है जिसका ब्लकिड मेल खाता है /etc/fstab। यह एक समस्या नहीं होनी चाहिए, हालांकि।
निकल्स बोरलिन

नोट 3: क्या आपको किसी कारण से अपने md डिवाइसों में बूट करने में सक्षम हुए बिना समाप्त होना चाहिए (उदाहरण के लिए, चरण 3 में बूट पार्टीशन रिकवरी को गड़बड़ करके), मैं उबंटू लाइव मीडिया का उपयोग करके बूटिंग द्वारा एक्सेस को पुनर्प्राप्त करने में सक्षम था apt-get install mdadmऔर उसके बाद mdadm -A /dev/md0 mdadm -A /dev/md1
निकलैस बोरलिन

3
हाँ। :) यही कारण है कि मैंने अपने सिस्टम को कॉन्फ़िगर किया है।
निकल्स बोरलिन

1
grub-efi-amd64-signedअगर मुझे सुरक्षित बूट सक्षम किया गया था तो मुझे "अवैध हस्ताक्षर" एफ़आईआई त्रुटि मिल रही थी, अन्यथा मुझे स्थापित करना था।
अलेक्सी

0

मेरा सुझाव डेबियन ओएस के लिए है, लेकिन मुझे लगता है कि यह उबंटू और अन्य लोगों के लिए भी काम करेगा।

एक समस्या को हल करने का एक संभव तरीका जो बहुत सारे मदरबोर्ड के साथ होता है, यूईएफआई प्रविष्टियों को सही ढंग से संभालना नहीं है (डेबियन बूट नहीं करता है भले ही आपने सही प्रविष्टि की हो efibootmgr -c -g -d /dev/sda -p 1 -w -L "debian" -l /EFI/debian/grubx64.efi, यूईएफआई BIOS एक "डेबियन" बूट करने योग्य डिस्क दिखाता है लेकिन यह इससे बूट नहीं होगा। ), सामान्य प्रविष्टि के बजाय उपयोग करना है /boot/efi/EFI/boot/bootx4.efi

उदाहरण के लिए Asus Z87C पसंद नहीं करता है /EFI/debian/grubx64.efi

इसलिए, यदि आपने पथ के लिए efi विभाजन /dev/sda1को माउंट किया /boot/efiहै:

mkdir /boot/efi/EFI/boot
cp /boot/efi/EFI/debian/grubx64.efi /boot/efi/EFI/boot/bootx4.efi

फिर रिबूट करें।

यूईएफआई BIOS एक "यूईएफआई ओएस" जेनेरिक डिस्क, और साथ ही पहले से बनाई गई किसी भी अन्य प्रविष्टि को देखेंगे, जो कि पहले से ही बनाया हुआ है, लेकिन यह बिना किसी परेशानी के "यूईएफआई ओएस" जेनेरिक से बूट होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.