GRUB2 EFI nasıl yeniden kurulur?


56

Biyografilerimi başarılı bir şekilde güncelledikten sonra bir şeyler ters gitti ve siyah ekranın sol üst köşesinde yanıp sönen bir imleç ile sona erdi. Hata yok, hiçbir şey yok. Biyografiler şimdi sadece SATA: <disc name>normal UEFI ubuntuolanı yerine bir önyükleme seçeneği listeledi . GPT bölümleme şeması kullanıyorum.

Sonunda, çalışma çözümünün uygun şekilde yeniden kurulacağını öğrendim grub-efi-amd64. Peki bunu nasıl yaparım?

Not: Aslında, GRUB2 EFI'yi kendi başıma yeniden yüklemeyi başarabildim ve bu konuda tam bir bilgi bulamadığım için cevabımı buraya yazacağım.


Çift önyüklememde sorun yaşadım: Windows 10 / PCLinuxOS dizüstü bilgisayar. Bir şekilde grub2 yükleyicisini ya da işlevselliğini kaybettim. Yukarıdaki çarpıtmaların birçoğunu başarısız bir şekilde denedikten sonra, Grub2 Boot Rescue iso'ya rastladım, bir cd'ye yazdım ve sürücüde bıraktım. Her seferinde boot işleminden geçmek biraz sıkıcıydı ama en azından işe yaradı. Sonra Boot Repair Disk iso'yu buldum ve DVD'ye yazdırdım. Bu noktada benim sürücü çabalarımdan lapa lapa oldu, bu yüzden bu kez her şeyi yeniden biçimlendirip yeniden yükledim, Windows 10 ve Mint Sonya. Sonra Boot Repair Disk'i başlattı ve Grub2 ov'i kurdu
Keith Krehbiel

Yanıtlar:


87
  • Bilgisayarınızı UEFI modunda bir canlı USB / CD ile başlatın . İki önyükleme seçeneğim vardı <flash_drive>ve UEFI: <flash_drive>ikincisinin efi değişkenlerini ortaya çıkarması gerekiyor, /sys/firmware/efi/böylece efibootmgrdaha sonra başarısız olmuyordu . İlk seçenekle önyükleme bana şu hatayı veriyor:

    Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
    Try 'modprobe efivars' as root.
    

    modprobe efivars benim için işe yaramadı.

  • kırık sisteme chroot ( ubuntu grub2 yardımına benzer fakat efi özelliklerinde):

    sudo mount /dev/sda2 /mnt #sda2 is the root partition
    sudo mount /dev/sda1 /mnt/boot/efi #sda1 is the efi partition
    for i in /dev /dev/pts /proc /sys; do sudo mount -B $i /mnt$i; done
    sudo cp /etc/resolv.conf /mnt/etc/ #makes the network available after chrooting
    modprobe efivars # make sure this is loaded
    sudo chroot /mnt
    
  • Linux dağıtımınıza bağlı olarak, şimdi farklı şeyler yapıyorsunuz.

    • İçin Ubuntu / Debian :

      apt-get install --reinstall grub-efi-amd64
      

      Veya alternatif olarak:

      apt-get install --reinstall grub-efi
      update-grub
      

      Yukarıdakiler size bir tuzak verirse,

    • For Fedora (16'ya kadar, başkaları için çalışabilir):

      yum reinstall grub-efi
      

      Aşağıdaki komutta, sdX'i, önyüklemek istediğiniz EFI bölümüne sahip olan cihazla değiştirmeniz gerekir. Gelen --part YEğer değiştirmek zorunda Y (olduğu gibi EFI bölümü sayısı ile /dev/sdXY).

      efibootmgr -c --disk /dev/sdX --part Y
      efibootmgr -v # verify a new record called Linux is there
      
  • Şimdi chroot'tan çıkmak, her şeyin bağlantısını kesmek ve yeniden başlatmak için Ctrl + D tuşlarına basın:

    for i in /sys /proc /dev/pts /dev; do sudo umount /mnt$i; done
    sudo umount /mnt/boot/efi #please do this. Corrupted efi partitions are not nice
    sudo umount /mnt
    sudo reboot
    

Bunu gereksinimlerinize uyarlamanız gerekebilir (farklı bölüm tablosu, ayrı / önyükleme bölümü vb.) Ve tek seçenek olmayabilir ama bu benim için işe yaradı.

Bir şeyleri düzeltmek için uygun bir canlı sistem grml'dir . Mac bölümünün aslında en yararlı olduğu bir önyüklenebilir USB aygıtının nasıl kurulacağına dair kapsamlı bir kılavuz da var (sadece bir FAT32 bölümü oluşturun, dosyaları kopyalayın, yeniden başlatın, tamamlandı).


4
Kanka! Çok çok teşekkürler! Bu, Lenovo X220 cihazım sıfırlama işleminden sonra önyükleme yapmak istemedikten sonra beni kurtardı; bu da, en son paket güncellemelerini etkinleştirdi ve aynı zamanda, 3G kartıyla olan bağlantı sorunlarını düzelttiği için bir BIOS sıfırlaması yaptığımı da gördü. Bundan sonra her ne sebeple olursa olsun önyükleme imkansız hale geldi. Rehberini kullanana kadar. BTW, bu kısımda, copyv.conf dosyasının kopyalanmadığı benim için işe yaramadı, çünkü /run/resolvconf...(Ubuntu 12.04'te) bir bağlantı oldu , bunun yerine mount --bind /run /mnt/runtüm /rundizini chroot ortamına yerleştirmek için kullandım.
nem75

Cevabı Fedora 16'daki deneyimlerim ve grml referansımla genişlettim. Düzenlemeyi inceleyip kabul edebilseydiniz mutlu olurdum.
Jonas Schäfer

1
Ubuntu'da (en az 12.04 için) update-gruben son grub2 görüntüsünü EFI bölümünüze kopyalamaz, yalnızca grub.cfg dosyasını günceller. Bu yüzden yapmanın daha iyi yolu apt-get install --reinstall grub-efi(veya grub-efi-amd64) bunun sonunda güncelleme grubunu da çağırmaktır.
sayı 5

3
Medya oynatıcımı dün kurtardım. 300 internet size işaret ediyor.
Stefano Borini 12:13

2
Çalıştırdıktan sonra update-grubbenim /boot/efiklasörü (Bu yeni bölümü yaratmıştı) hala boş. Sadece orada çalıştıktan sonra grub-installgerçek dosyalar yazılmıştır. Bu kılavuz (Almanca) bana yardımcı: wiki.ubuntuusers.de/EFI_Problembehebung
Philippe Gerber

8

İlk yöntemin potansiyel bir basitleştirilmesi olarak, sadece canlı CD'nin grubunu kullanarak, doğrudan sabit diskteki sisteme önyükleme yapmak mümkündür. Xubuntu 13.10'da, xubuntu 13.10 canlı CD ile test edilmiştir.

BIOS'unuzda Güvenli Önyükleme'nin devre dışı olduğundan emin olun. Canlı CD'yi yerleştirin ve UEFI ile önyükleyin. CD’nin GRUB menüsü görünecektir. Komut satırına ulaşmak için "c" ye basın.

configfile (hd0,gpt1)/EFI/ubuntu/grub.cfg

Farklı bir EFI sistem bölümünüz varsa yukarıdaki grub komutunu uyarlayın.

Sisteminiz sabit diskten önyükleme yaptıktan sonra, grubun EFI sistem bölümüne yeniden kurulması ve grubun kurulumu ile onu bellenime kaydetmesi yeterli olacaktır.

sudo grub-install

Çalışmıyor configfile (hd0,gpt1)/EFI/ubuntu/grub.cfghiç birşey yapmıyor. Bu komutu verdikten sonra nasıl önyüklenirim?
Autodidact

3
Vay. O kadar kolay olmasını beklemiyordum! Bu bir cevap cehennemdir! sudo grub-install --target=x86_64-efi --efi-directory=/boot/efiYukarıda önerilen komut yerine koştum (ama yukarıdakilerden biri de işe yarayabilir - bilmiyorum). Bundan sonra linux işletim sisteminize tekrar erişebilirsiniz. O zaman sadece koş sudo update-grubve her şey önyüklenebilir olmalı.
Zorawar

@SandeepDatta: efi dizininiz muhtemelen farklı bir diskte / bölümde. Mayın / dev / sdb1 üzerinde olduğunu, bu yüzden kaçtım: configfile (hd1,gpt1)/EFI/ubuntu/grub.cfg. Bir LiveCD önyükleme yapın ve sudo gpartedefi bölümünüzü bulmak için çalıştırın .
Zorawar

5

Maxine'de olduğu gibi, BIOS'ta UEFI ayarlarımı zarar görmeye başladım ve makinem önyükleme yapmadı.

Benim durumumda, Linux Mint Debian ile Lenovo ThinkServer RD430 ve o gibiydi bir şey ben update-grub veya sunucu herhangi sabit diskler değişen o değil çizme neden olur hakkında yapardım. Benim durumumdaki işletim sistemi USB üzerinden kurulmuş linuxmint-201403-mate-dvd-64bit. (UEFI'nin çalışmamasına neden olacak olayların tam bir açıklaması için aşağıya bakın)

Bir ThinkServer TS140'ta aynı adımları takip etmek UEFI'nin bir kez bile fikrini kaybetmesine neden olmadı. RD430 sürücü sayfasına baktım ve benim bios iki sürüm eski. Daha önce bir anakartta bios güncelleme yapmak zorunda kalmamıştım, bu yüzden yeni sürümler olduğunda otomatik olarak güncelleme yapacak biri değilim. Biyografileri güncelledikten sonra, Maxine'in yukarıdaki cevabı çalıştı, sadece bir bükülme ile ...

# efibootmgr -c --disk /dev/sdX --part Y
# efibootmgr -v
BootCurrent: 0004
Timeout: 1 seconds
BootOrder: 0002,0000,0003,0001,0004
Boot0000* linuxmint HD(1,800,1f4000,829f6cc9-5b17-479c-b3ea-61e43faecbf7)File(\EFI\linuxmint\grubx64.efi)
Boot0001* LMDE Linux Mint Debian    HD(1,800,15d505800,934c598c-fe3c-fd43-84a1-fa38e4f72552)File(\EFI\linuxmint\grubx64.efi)
Boot0002* Linux HD(1,800,1f4000,829f6cc9-5b17-479c-b3ea-61e43faecbf7)File(\elilo.efi)
Boot0003* UEFI: Built-in EFI Shell  Vendor(5023b95c-db26-429b-a648-bd47664c8012,)AMBO
Boot0004* UEFI: VerbatimSTORE N GO 1.00 ACPI(a0341d0,0)PCI(1a,0)USB(1,0)USB(4,0)HD(1,80,1d70780,00000000)AMBO
mint / # 

efibootmgr -cKomut iki kayıt eklendi 0000ve 0002! Önyükleme sırasında ilk giriş doğru değil . Giriş doğrudur.
Boot0002* Linux HD
0000

Bunu test etmek için, 0002giriş olan herhangi bir kesinti olmadan önyüklemeyi denedim . Beklendiği gibi işe yaramadı. Ben de sunucuyu yeniden başlattım, F12'ye bastım ve onu seçtim linuxmint. Umduğum gibi, benim LMDE kurulumumu başlattı.

İstenmeyen girdileri efibootmgr üzerinden silmenin yolu şudur:

# efibootmgr -b 2 -B

Bu komutu girişleri kaldırmak için kullandım 0001ve 0002. Seçenek 0001, işletim sistemini kurtarma girişimlerimin sonuncusuydu.


UEFI notları

Bunu okuyorsanız ve benim olduğum gibi UEFI ile hayal kırıklığına uğratıyorsanız, işte bazı notlar ve kaynaklar:
»UEFI Kabuğuna önyükleme işlemi bir DOS kabuğu kullanmaya benzer.
»Intel, efi kabuk komutları için bir PDF referans kılavuzu hazırladı .
»Lenovo'nun UEFI_on_TS430 belgesi , efi kabuğunun kullanımını açıklayan tek kaynak.
» Başka UEFI kabuk referansı gelen nPartition Yönetici Kılavuzu'nda .
»Yükleyiciye gidip uygulayarak efi kabuğundan bir bölüme önyüklemeyi deneyebilirsiniz.
»UEFI, diskin bir msp bölüm tablosu yerine GPT bölüm tablosu olmasını istiyor.
»UEFI, diskinizdeki ilk bölümün fat32 veya vfat şeklinde biçimlendirilmesini istiyor.
»" Genel "bir önyükleme /EFI/bootiçin kök içinde bootx64.efiiçinde bir dizin olmalı .
»Bazı insanlar grubx64.efikurulduğu yerden kopyalar /EFI/boot/bootx64.efive bu kopya onlar için işe yarar.
» efibootmgr -vGrubunuzda değişiklik yaptığınızda, yeniden başlatmanızın tamamlandığından emin olmak için önce ve sonra kullanın.


RD430 deneyimim

Geçtiğimiz hafta işletim sistemini 10+ kez yeniden kurdum ve bunu düzeltmeye ve sunucuyu kurmaya çalışıyorum. Yapılandırmam, üzerinde LMDE yüklü olan PCIe 2.0 yuvasındaki bu RAID denetleyicisindeki bir SSD'dir. AOC-S3008L-L8i RAID denetleyicisi ( BT moduna yeniden bağlandı ), 6x 3 TB sürücülü 2. PCIe 3.0 yuvasında. RAM: 12 GB ECC (3x 4 GB).

İşte sistemimin ön yüklenmemesine neden olacak değişiklikler:
»S3008L-L8i pci yuvalarını değiştirin (SSD + kartını yalnız bırakın).
» Yerleşik kontrolör için LSi yazılımı baskın bios istemini devre dışı bırakın .
»Eski HighPoint RocketRaid kartımı açık bir PCIe yuvasına ekleyin.
»Değişiklik /etc/default/grubyapıp çalıştırın update-grub.
( belki grub-installde çalıştırılması gerekiyor? )


UEFi ile çok sinirliyim. BIOS'u Linux ile kurdum ama UEFi ile çalışıp hatırlatması çok zor
Suici Doga

3

Bu kadar oy kullanırdım, ama görünüşe göre SuperUser'da yeterince uzmanım yok. İşe yarayan ama işe yaramayacak klon savaş günlerinden sonra nihayet bir cevap bulduğuma sevindim. Her şeyin UEFI ve bir tür "güvenli önyükleme" mekanizmasıyla ya da bir şeyle ilgili olduğunu düşünüyorum.

Çevrimdışı çalışıyorum, apt-get bir seçenek değildi. Yaptığım şey Ubuntu Masaüstü'nü bir USB çubuğuna koymak, grub-efive grub-efi-amd64USB çubuğunun kök dizinine paketleri koymak (grub-efi_1.99 ~ rc1-13ubuntu3_amd64.deb ve grub-efi-amd64_1.99 ~ rc1-13ubuntu3_amd64.deb) Ubuntu 11.04 - dağıtım ve mimariye uygun şekilde değiştirin) ve aşağıdakileri USB çubuğundaki bir betiğe de koyun:

#! /bin/bash
sudo mount /dev/sda2 /mnt
sudo mount /dev/sda1 /mnt/boot/efi
dir=`dirname $0`
sudo cp $dir/grub-efi*.deb /mnt/tmp
for i in /dev /dev/pts /proc /sys; do sudo mount -B $i /mnt$i; done
sudo chroot /mnt /bin/sh -c "dpkg -i /tmp/grub-efi*.deb"
sudo shutdown -r now

Canlı USB çubuğu açın, bir terminal açın, komutu çalıştırın ve iş iyi. Ara sıra tek sorun UEFI'nin bazen HDD'nin altındaki önyükleme önceliği sırasını aşağıya çekmesidir; bu noktada BIOS'a girmeniz ve denemeyi durdurmak (ve başarısız olmak) için önyükleme sırasını değiştirmeniz gerekir SATA: drive.

Bunun dpkg-reconfigureyerine kullanabilirsiniz dpkg -i, ancak bu birkaç önyükleyici yükleyicisi sorusunu sorar.

[değiştir] Ayrıca yorum yapmak için yeterli cevabım yok, bu yüzden bir cevabın bir yorum olduğunu düşündüğüm bir cevabı ortaya çıkıyor.


Gemiye hoşgeldiniz! Aslında oy vermek için 15 puana, yorum yapmak için 50 puana ihtiyacınız var (bkz. Superuser.com/privileges ), sadece cevap verebileceğiniz kolay soruları araştırın ve gidebilecekleriniz iyi, işte şunu söylemenin sakıncası: :) kapatmadan önce hiçbir şeyi çıkarmayın. Yardım etmesine sevindim.
Maxime R.

Karışıklık daha fazla oldu, çünkü diğer ilgili sitelerdeki suçlamaları aldım. Unutma, bu tarafta yeniydim. Linux normalde kapatma işlemini keser ve bittikten sonra bir komutla chroot döner, bu yüzden bir soruna neden olması gerektiğini düşünmüyorum. UEFI'yi canlı dağıtımı önyüklemediyseniz iptal edilmeyeceğini öğrendim, ancak doğru davranıp davranmadığını test etmek bir öncelik değildi sudo chroot /mnt /bin/sh -c "dpkg -i /tmp/grub-efi*.deb" && sudo shutdown -r now.
IBBoard

1

Lenovo Yoga 2 Pro'daki 32 bit Ubuntu 14.10'umda şu şekilde UEFI önyüklemesine geçtim:

  • klasör oluşturun

    sudo su
    mkdir /boot/efi
    
  • "EFI System" bölümünü bağla /etc/fstab

    fdisk -l|grep EFI
    

    bu gösterdi: /dev/sda2 2050048 2582527 532480 260M EFI System

    echo "/dev/sda2 /boot/efi   vfat    defaults,sync   0   0">>/etc/fstab
    

    bu bölümü bağla

    mount /boot/efi
    
  • kur grub-efi-amd64-binve kaldırgrub-efi-ia32-bin

    aptitude install grub-efi-amd64-bin grub-efi-ia32-bin_
    
    grub-install --target=x86_64-efi
    
  • efi modunda Ubuntu'yu yeniden başlat

    update-grub
    
  • ince çizme testi, sonra ben yüklü grub-efi-amd64ve kaldırıldı grub-pc grub-gfxpayload-listsile

    aptitude install grub-efi-amd64 grub-pc_ grub-gfxpayload-lists_
    

Sorulduğunda / boot'i kaldırmamayı seçiyorum.


Belki de karmaşık hale getirdim ve bu sadece işe yarayacaktı:

apt-get install --reinstall grub-efi
update-grub

0

Bu giriş, bilgisayarınızı efi girişlerini yeniden yüklemeye hazırlama hatları boyunca daha fazladır. Aynı zamanda, dahili medyaya (SSD, HDD) sistem kurulumunu takiben bir kurtarma diski oluşturmanın etkili ve basit bir yolu olduğunu düşünebilirsiniz.

Linux Mint Tara (Ubuntu Bionic Beaver ile yakından ilişkili bir Linux çeşidi) ile, yöntem hem kurulumumu etkiledi hem de daha sonra kurtarmayı mümkün kıldı. Kalıcılığa sahip canlı bir USB isteğimden ortaya çıktı ve kalıcı bir kurulum için Unetbootin gibi bir yardımcı program kurma zamanı yeni bir kurulumla aynı olduğundan, USB kurulumunu yapmak için aynı canlı dağıtımı kullandım. OS'yi dahili SSD'ye kurmak için kullanıldı.

Elbette, bunların hiçbiri RAID veya başka herhangi bir özel kurulum değil, ancak USB sürücüde hazır bir cilt bölümü ve bu sürücünün mevcut yöntemi kullanarak USB üzerinden yapılan bir kurulum gerektirdi ve dahili sürücüyü tek bir kurulum için çevreledi. bölümün kök (/) dağı.

Burası, yeni grubun kurulumunun dahili sürücü ile dolaştığı yerdir. USB’yi yeniden başlattığımda, dahili UEFI grub girişleri kaybolmuş gibiydi, BIOS menüsündeki girişleri kullanarak sürücüyü seçmeye çalışırken yalnızca grub menüsünden ayrıldı.

Bunun yerine, USB'den önyükleme yapmak, distro yönteminin / boot / efi mount'u içeren bölüm / dev / sda2 için bir listeyle hazır bir grub menüsü ürettiğini gösterdi. Çoğu birincil dahili sürücüde bölmenin grub ismi hd0, gpt1'dir.

'İleri' olarak, birden fazla çekirdek kurtarma mevcuttu. Oradan grub grubunu çalıştırın ve normal şekilde önyükleyin.

Bu noktadan sonra, işletim sistemini eskiden erişilemez olan dahili sürücüde çalıştırarak USB'yi çıkarın, sonra çalıştırın sudo grub-install.

USB olmadan yeniden başlattığınızda, geri dönmeniz gerekir. Bu noktada USB, dahili sürücüyü normal veya kurtarma moduna sokacak şekilde yapılandırılmıştır ve sürücünün kendi menüsü vardır.

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.