Insyde H2O EFI bios özellikli Sony VAIO, GRUB EFI'ye önyükleme yapmıyor


12

Yeni bir Sony Vaio S serisi dizüstü bilgisayar satın aldım. Insyde H2O BIOS EFI kullanıyor ve üzerine Linux yüklemeye çalışmak beni deli ediyor.

root@kubuntu:~# parted /dev/sda print
Model: ATA Hitachi HTS72756 (scsi)
Disk /dev/sda: 640GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start  End    Size    File system  Name                          Flags
 1      1049kB  274MB  273MB  fat32        EFI system partition          hidden
 2      274MB  20.8GB  20.6GB  ntfs        Basic data partition          hidden, diag
 3      20.8GB  21.1GB  273MB  fat32        EFI system partition          boot
 4      21.1GB  21.3GB  134MB                Microsoft reserved partition  msftres
 5      21.3GB  342GB  320GB  ntfs        Basic data partition
 6      342GB  358GB  16.1GB  ext4        Basic data partition
 7      358GB  374GB  16.1GB  ntfs        Basic data partition
 8      374GB  640GB  266GB  ntfs        Basic data partition

Şaşırtıcı olan şey, diskte 2 EFI sistem bölümünün olmasıdır. Sda2 bölümü, pencereleri temel bir kurtarma arabirimiyle yükleyen 20GB'lık bir kurtarma bölümüdür. Bu, normal güç düğmesinin aksine "ASSIST" düğmesine basılarak erişilebilir. Sda1 EFI Sistem Bölümü'nün (ESP) bu kurtarmaya yüklendiğini varsayıyorum.

Sda3 ESP, aslında Windows 7'ye giren (Windows'ta bcdedit.exe tarafından onaylandığı gibi) Microsoft Windows için daha fazla girişe sahiptir. Ubuntu sda6 üzerine kurulur ve kurulum sırasında sda3'ü önyükleme bölümüm olarak seçtim. Yükleyici doğru bir sda3 / EFI / ubuntu / grubx64.efi uygulaması oluşturdu.

Asıl sorun: benim hayatım için, varsayılan olarak ayarlayamıyorum! Grubx64.efi adlı bir sda3 / startup.nsh oluşturmayı denedim, ancak yardımcı olmadı - yeniden başlatma sırasında sistem hala pencerelere önyükleme yapıyor. Efibootmgr kullanmayı denedim ve işe yaradığını gösteriyor:

root@kubuntu:~# efibootmgr 
BootCurrent: 0000
BootOrder: 0000,0001
Boot0000* EFI USB Device
Boot0001* Windows Boot Manager
root@kubuntu:~# efibootmgr --create --gpt --disk /dev/sda --part 3 --write-signature --label "GRUB2" --loader "\\EFI\\ubuntu\\grubx64.efi" 
BootCurrent: 0000
BootOrder: 0002,0000,0001
Boot0000* EFI USB Device
Boot0001* Windows Boot Manager
Boot0002* GRUB2
root@kubuntu:~# efibootmgr
BootCurrent: 0000
BootOrder: 0002,0000,0001
Boot0000* EFI USB Device
Boot0001* Windows Boot Manager
Boot0002* GRUB2

Ancak, yeniden başlattığınızda, tahmin ettiğiniz gibi, makine doğrudan Windows'a yeniden başlatıldı.

Aklıma gelen tek şey:

  1. Sda1 bölümü bir şekilde kullanılıyor
  2. Grubx64.efi ile /EFI/Boot/bootx64.efi ve /EFI/Microsoft/Boot/bootmgfw.efi üzerine [ama bu gerçekten radikal görünüyor].

Biri lütfen bana yardım edebilir mi? Teşekkürler - bu sorun beni deli ediyor gibi herhangi bir yardım büyük beğeni topluyor!


Sony Vaio S'de aynı yaklaşımı izledim - MS .efi dosyasını GRUB ile değiştirerek, MS .efi'nin bir kopyasını farklı bir dizinde tutarak ve ardından Windows'u önyüklemek için kopyaya zincirle yükleme. Bu genellikle çalışır, ancak kötü bir yan etkisi, Windows hazırda bekleme modundan devam edemez - onun bootloader hataları ve temiz bir yeniden başlatma gerektirir.

Yanıtlar:


11

Sonunda bunu çözebildim. EFI / Microsoft / boot / bootmgfw.efi'yi grub64.efi ile değiştirdim. Eski bootmgfw.efi.old olarak yeniden adlandırdı ve içine chainload için bir menü seçeneği eklemek için grub kullandım.

Bu, bellenimin microsoft windows bootloader'ı aramak için sabit kodlanmış olduğunu ve efibootmgr ayarlarına veya startup.nsh'ye uymadığı anlamına gelir. Bu gerçekten korkunç.

Sony EFI önyükleme işleminin nasıl çalıştığını öğrendim:

  1. /EFI/Microsoft/Boot/fwbootmgr.efi; Varsa, önyükleyin.
  2. Grubx64.efi için / EFI / 'nin tüm alt dizinlerine bakın. Varsa, önyükleyin.
  3. Önyükleme /EFI/Boot/bootx64.efi
  4. "İşletim Sistemi bulunamadı" gibi bir hata mesajı görüntüleyin.

Linux altında, efibootmgr aracı çalışır, ancak kullandığınız son USB sürücü de dahil olmak üzere çok sayıda otomatik olarak oluşturulan saçmalık görüntüler.

Tüm bunları şu şekilde öğrendim:

  1. Linux ve Mac'i yan yana kurmak için yeni makinemi açtım ve Windows bölümünü daralttım.
  2. Ubuntu 12.10'u yükledim ve yükleyici eski Windows önyükleyiciyi yedekleyerek fwbootmgr.efi'nin üzerine yazdı.
  3. Eski Windows önyükleyiciyi geri yükledim, ancak Windows dışında hiçbir şey önyükleyemedim.
  4. Windows bootloader'ı sahte bir şey olarak yeniden adlandırdım ve sonra Grub BL devraldı.
  5. Ubuntu dizinini başka bir şeye yeniden adlandırdım ve rEFInd'i yüklememe rağmen Grub hala yüklü.
  6. REFInd almak istediğim tek yolu bu oldu:

  7. Fwbootmgr.efi dosyasını üst dizinine taşıyın; rEFInd yine de bulacaktır ve Windows yeniden adlandırdığınızdan şikayet etmeyecektir.

  8. Grubx64.efi'yi rfgrubx64.efi veya başka bir şey olarak yeniden adlandırın.
  9. REFInd / / EFI / refind / EFI / boot olarak kopyalayın, /EFI/refind_x64.efi dosyasını * .bak olarak yeniden adlandırın ve son olarak /Boot/refind_x64.efi dosyasını bootx64.efi olarak yeniden adlandırın. Artık Windows BL veya GRUB'u rEFInd'den önyükleyebilmeniz gerekir. MacOS kurulumumu Clover'a yükseltmeyi ve Clover'ı rEFInd'den de yüklemeyi planlıyorum.

(Belki de tüm bunları yapmak için Windows Önyükleme Yöneticisi'ni kullanmak mümkündür, ancak EeasyBCD'nin EFI desteği hala deneyimimde bir karışıklıktır. Bir süre daha dokunmayı reddediyorum.)


Ayrıca, Windows önyükleme yöneticisinin gruba ayarlanması için Windows'dan BCD [bcdedit.exe kullanarak) ayarlarını değiştirmeyi denediğimi ve hala işe yaramadığını unutmayın. Aslında .efi dosyasını grub'un .efi ile değiştirmek zorunda kaldım .
Rohan Dhruva

5

İlk olarak, iki ESP'niz yok. ESP, C12A7328-F81F-11D2-BA4B-00A0C93EC93B'nin bölüm türü koduna sahip olan ve "önyükleme bayrağı" kümesiyle bir bölüm olarak tanımlanan bir bölümdür. Çıktınız yalnızca / dev / sda3'ün "önyükleme bayrağı" ayarlanmış olduğunu gösterir, bu nedenle yalnızca bir ESP - / dev / sda3'ünüz olur. GPT altında bölümlerin adları olabilir ve "EFI sistem bölümü" adında iki bölümünüz vardır, ancak bu adlar yalnızca insan tanımlama amacıyla kullanılır. Böylece, benim (veya bazı otomatik yardımcı program) bir ESP yapmak amacıyla bir / dev / sda1 oluşturduğunuzu, ancak ya bölüm türü kodunu ayarlarken bir hata oluştu ya da başka bir yardımcı program tür kodunu yanlış değiştirdi. C12A7328-F81F-11D2-BA4B-00A0C93EC93B başka bir şeye.

Bunu düzeltmenin birkaç yolu vardır. En basit olanı, karışıklığı önlemek için / dev / sda1 adını değiştirmektir. / Dev / sda1'in bir amaca hizmet etmediğini düşünüyorsanız, yedekleyebilir ve silebilirsiniz. Bu, yoldan çıkacak ve karışıklığı önleyecektir, ancak elbette 273 MB kullanılmayan disk alanına sahip olacaksınız. Alternatif olarak, karışıklığı önlemek için gerekirse adı ve tür kodunu değiştirerek alanı başka bir amaca ayırabilirsiniz. EFI açıkça birden fazla ESP'ye izin verir, böylece tür kodunu değiştirebilir (örneğin, "önyükleme bayrağını" ayrıştırılmış olarak kullanarak) ve her iki ESP'yi de kullanabilirsiniz; ama bu kafa karıştırıcı olabilir.

Muhtemelen, tüm ilgili dosyalar / dev / sda3 üzerindeymiş gibi göründüğünden, bu sorunun Linux'u önyükleme yeteneğinizle ilgisi yoktur. Bu sorunun bana birkaç olası nedeni var:

  • Efibootmgr komutunuzda bir şey yanlış yazmış olabilirsiniz. Açık bir yazım hatası görmüyorum, ancak GRUB ikili dosyası belirttiğiniz yerde bulunmuyorsa, komut çalışmaz. "--Gpt" ve "--write-signature" seçenekleri neredeyse kesinlikle gereksizdir ve muhtemelen sorunlara neden olabilir, ancak büyük olasılıkla değildir.
  • Ürün yazılımınızda efibootmgr komutunun etkilerinin geçici olmasına neden olan bir hata olabilir. Yeniden başlatmayı deneyin ve sonra oluşturduğunuz girişin yeniden başlatılıp başlatılmadığını görmek için "sudo efibootmgr -v" yazın.
  • Ürün yazılımınızda, önyükleme sırası değişkeninin yok sayılmasına neden olan bir hata olabilir. Böyle bir anakartım var; BootOrder değişkeni tarafından belirtildikleri sıra yerine önyükleme girişlerinin oluşturulduğu sırayla önyüklenir. Bu hatayı gidermek için, tüm girdileri silmeniz ve kullanmak istediğiniz önyükleme sırasında yeniden oluşturmanız gerekir.
  • Grubx64.efi ikili dosyanız, ürün yazılımı başlatmayı reddedecek şekilde zarar görebilir ve bu nedenle önyükleme sırasındaki bir sonraki öğeye geçer.

Efibootmgr komutunuzu ayarlamayı deneyebilir, yeni bir ikili dosya bulabilir veya bu olasılıkları sınamaya çalışabilirsiniz. Her şey başarısız olursa, aşağıdakileri yapmanızı öneririz:

  1. Efibootmgr veya ürün yazılımınızı kullanarak tüm önyükleme girdilerini silin (eğer bunu yapmak için bir arayüz sağlıyorsa).
  2. Grubx64.efi dosyasını ESP'deki EFI / Boot / bootx64.efi dosyasına kopyalayın.
  3. Yeniden başlattığınızda yine de Windows alıyorsanız, EFI / Microsoft / Boot / bootmgfw.efi'yi EFI / Microsoft / bootmgfw.efi olarak yeniden adlandırın.

Bu, önyükleme yükleyicisi (EFI / Boot / bootx64.efi) için varsayılan adı kullanarak GRUB önyüklemesi yapmalıdır. Bununla ilgili bir sorun, GRUB'un Windows için çalışan bir girişi olmayabilir. Muhtemelen elle bir tane oluşturabilirsiniz; böyle bir girişin çalışması gerekir:

menuentry "Windows 7" {
    set root='(hd0,gpt3)'
    chainloader /EFI/Microsoft/bootmgfw.efi
}

Alternatif olarak, EFI / Boot / bootx64.efi olarak rEFIt veya rEFInd kurabilirsiniz. Sitesinde bulunan rEFIt ikili dosyalarının UEFI tabanlı bilgisayarlarda çalışmadığını unutmayın; Ubuntu depolarındaki sürümü kullanmanız gerekir. rEFInd, daha iyi UEFI desteği de dahil olmak üzere çok sayıda hata düzeltmesi ve güncellemesine sahip bir rEFIt çatalıdır. (rEFIt yaklaşık iki yıl önce terk edilmiş gibi görünüyor.) Bu nedenle, rEFIt yerine rEFInd kullanmanızı öneririm - ama rEFInd'ın koruyucusuyum, bu yüzden bu skorda bağımsız bir gözlemci değilim. Ne yazık ki, AFAIK rEFInd (henüz) Ubuntu depolarına dahil edilmediğinden, manuel olarak indirip yüklemeniz gerekecek.


Çok teşekkür ederim Rod! Bununla birlikte, sda1 kendi başına ve kurtarma bölümüne (20Gb SONSYS) önyükleme yapmak için kullanılan bir ESP'dir (varsayılan olarak önyüklenebilir olmayabilir). Garip bir kurulum olduğunu biliyorum, ancak Sony bunu bir nedenden dolayı yapmayı seçti. Güç düğmesinin aksine "ASSIST" düğmesine basmak o önyükleyiciyi çağırır.
Rohan Dhruva

Bilgi Çubuğu için teşekkürler, ben aynı sorunu vardı ve adımlarınızı takip kısmen düzeltmek. GRUB iyi çalıştı ve sonra Win7 için giriş eklemeye çalıştım ve şimdi GRUB göstermiyor, sadece doğrudan Ubuntu'ya önyükleme yapıyor. Neden ve nasıl düzeltilir? Ayrıca EFI bölümüm sda1 ve Win sda3 olmalı bu satırda "set root = '(hd0, gptX)'" 1 veya 3 eşit mi? İkisini de denedim!
barro32

@ Çubuk, Menü girişini nereye eklemeliyim (Windows 7)? \ etc \ default \ grub?
alekhine

4

Yeni bir sony vaio e serisinde aynı başlangıç ​​pozisyonu. Cevabınız için teşekkürler Rod.

Birisinin bir izlenim yoluna ihtiyacı olması durumunda, bu benim için işe yaradı:

Win7 ile birlikte ubuntu 12.04 USB'den kuruldu.

live-session'dan / dev / sda3 montajı

  • EFI / ubuntu / grubx64.efi dosyasını EFI / Boot /
  • EFI / Boot / bootx64.efi dosyasını bootx64.efi.old olarak yeniden adlandırın
  • EFI / Boot / grubx64.efi dosyasını bootx64.efi olarak yeniden adlandırın

şimdi doğrudan grub2'ye önyüklendi, ancak win7 girişi olmadan

ubuntu yükledikten sonra ben düzenledim

/etc/grub.d/40_custom

ekleme

menuentry "Windows 7" {
    set root='(hd0,gpt3)'
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

ve sonra

sudo update-grub

her şey iyi çalışıyor


1

İki farklı alternatif öneriyorum:

  1. Windows mbr üzerine yazma, ancak grub başlatmak için kullanın

  2. Önyükleme seçeneklerindeki bios ayarlarını ( f2veya f3başlangıçta) UEFI'den LEGACY'ye değiştirin, normalde her zamanki gibi en son yüklenen sistemi başlatır


MBR, EFI bilgisayarları için geçerli değildir
Ben Voigt

0
  1. Canlı CD / liveUSB'den Boot-Repair uygulamasını çalıştırın
  2. Düğmesini Recommended Repairtıklayın. (bu, gerekirse SecureBoot parametreleri dahil olmak üzere grub-efi için otomatik olarak doğru parametreleri yükler ve UEFI ürün yazılımının Windows dosyalarına kilitlenmesi durumunda EFI dosyalarını yeniden adlandırır). Herhangi bir sorun olduğunda görünecek URL'yi belirtin.

Önyükleme-Onarım

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.