`install-grub` çok parçalı etikete sahip olduğumu ve yerleştirmenin imkansız olduğunu iddia ediyor


19

Önyükleme yapmayan masaüstü bilgisayarımda GRUB yüklü olmaya çalışıyorum, ancak birkaç hatayla karşılaşıyorum. Bu hataları tartışan diğer kaynaklar, onları ilk bölümden önce boş disk alanı eksikliğine (gerekli boş alana sahibim) veya bir soruna /boot/grub/grub.cfg(bu dosyayı doğru bir şekilde yeniden oluşturduktan sonra bile sorun devam ediyor ) atfetti .

Canlı bir USB ile önyükleme yaptım ve GRUB'u aşağıdaki komutları kullanarak yeniden yüklemeye çalıştım, ancak çalışmasını engelleyen bir hatayla karşılaşıyorum:

$ sudo dağı / dev / sda1 / mnt
$ sudo grub-install - kök-dizin = / mnt / dev / sda
İ386-pc platformu için kurulum.
grub-install: uyarı: GRUB'u çoklu bölüm etiketli bir diske kurmaya çalışıyor. Bu henüz desteklenmiyor.
grub-install: uyarı: Yerleştirme mümkün değildir. GRUB bu kurulumda yalnızca blok listeleri kullanılarak kurulabilir. Bununla birlikte, blok listeleri GÜVENİLİR ve kullanımları önerilmez.
grub-install: hata: blok listelerine devam edilmez.

Ancak /dev/sdagrub kurulumu için doğru biçimlendirilmiş gibi görünüyor:

$ sudo fdisk -l / dev / sda

Disk / dev / sda: 111.8 GiB, 120034123776 bayt, 234441648 sektörleri
Birimler: 1 * 512 = 512 baytlık sektörler
Sektör boyutu (mantıksal / fiziksel): 512 bayt / 512 bayt
G / Ç boyutu (minimum / optimum): 512 bayt / 512 bayt
Disklabel tipi: dos
Disk tanımlayıcı: 0x8d91017b

Aygıt Önyükleme Başlangıç ​​Bitiş Sektörleri Boyut Kimlik Türü
/ dev / sda1 * 2048 234440703 234438656 111.8G 83 Linux

$ blkid / dev / sda1
/ dev / sda1: UUID = "84e9ff65-c4ba-42eb-8a6d-ebc703fae1f7" TÜR = "ext4" PARTUUID = "8d91017b-01"

Başlangıçta standart 1 MiB boş alana sahiptir ve /dev/sda1doğru biçimlendirilmiştir. grub-mkconfigYapılandırma dosyasını yeniden oluşturmak için kullanmayı denedim :

proc sys dev dev / pts içindeki $ f; sudo mount yap - bağlama / $ f / mnt / $ f; tamam
$ sudo chroot / mnt
# grub-mkconfig -o /boot/grub/grub.cfg
Grub yapılandırma dosyası oluşturuluyor ...
Bulunan linux resmi: /boot/vmlinuz-3.19.0-26-generic
İnitrd resmi bulundu: /boot/initrd.img-3.19.0-26-generik
Bulunan linux resmi: /boot/vmlinuz-3.19.0-23-generic
İnitrd resmi bulundu: /boot/initrd.img-3.19.0-23-generik
EFI ürün yazılımı yapılandırması için önyükleme menüsü girişi ekleme
tamam

Ancak, ortam grub-installiçinde veya dışında çalışırken aynı hata iletisini alıyorum chroot.

Canlı USB'yi eski modda önyüklerken aynı hatayı alıyorum; Tek fark çalıştırmanın sonucunda ise grub-mkconfigde chrootçevre:

# grub-mkconfig -o /boot/grub/grub.cfg
Grub yapılandırma dosyası oluşturuluyor ...
Bulunan linux resmi: /boot/vmlinuz-3.19.0-26-generic
İnitrd resmi bulundu: /boot/initrd.img-3.19.0-26-generik
Bulunan linux resmi: /boot/vmlinuz-3.19.0-23-generic
İnitrd resmi bulundu: /boot/initrd.img-3.19.0-23-generik
Bulunan memtest86 + image: /boot/memtest86+.elf
Bulunan memtest86 + image: /boot/memtest86+.bin
/ Dev / sdc1 üzerinde Windows 7 (yükleyici) bulundu
tamam

Grub'u doğru şekilde nasıl kurabilirim?

Yanıtlar:


25

Önyükleme sektörü ve ilk bölüm arasındaki boşluğu doldurun.

# dd if=/dev/zero of=/dev/sdX seek=1 count=2047

Bunun nedeni ilk bölümün 2048 sektöründe başlamasıdır. Bazıları daha önce başlar, özellikle Windows tarafından bölümlenen sürücülerde. Emin olmak için çalıştırın

# fdisk -l /dev/sdX

başlamadan önce ve ilk bölümün nerede başladığını kontrol edin. Kullanım count=S-1, burada S ilk bölümün başlangıcıdır.


Bu benim için çalıştı. Ayrı bir ext4 / önyükleme bölümü boyunca BTRFS kullanmaya çalışıyorum. Teşekkürler.
Thales Ceolin

Bunun bir GPT düzenini çöpe atacağını unutmayın. Yine de yedeklemesinden kurtarmak mümkündür.
CR.

GPT kullanıyorsanız, BIOS BOOT PARTITION'ı silmeniz gerekir. Bu, diskinizi nasıl yerleştirdiğinize bağlıdır. İlk "gerçek" bölümün 2048 bloğunda başladığını varsayarak, GPT'den sonra, blok 34 ve 2047 arasında benimkini koydum. Verilen komut satırını kullanmak seek=34 count=2014benim için çalışıyor.
starfry

Mükemmel çalışıyor!!!! grub olsa otomatik olarak yapmalı
brauliobo

1
Evet, öyle düşünürsün, @brauliobo, ama GRUB tamamen çöp. Artık kullanmıyorum bile. Bugünlerde mbr için syslinux ve gpt için systemd-boot kullanıyorum.
enigmaticPhysicist

3

GPT kaydının bulunduğu yerde yeni bir bölüm oluşturulabilir ve ardından silinebilir dd. Bu şekilde, yalnızca MBR kaydı kalır.

Sorunlu cihazın /dev/sda:

İlk 1 MiB'de yeni bir bölüm oluşturun

$ parted /dev/sda
$ mkpart primary ext4 0MiB 1MiB
$ quit

Ardından, yeni oluşturulan bölümü sıfırlayın

$ dd if=/dev/zero of=/dev/sda2

Ardından bölümü silin

$ parted /dev/sda
$ rm 2
$ quit

grub-install şimdi beklendiği gibi çalışmalıdır.


Lütfen bu kodun ne yaptığını ve bunun neden bir çözüm olduğuna inandığınızı doğrulamak için cevabınızı düzenleyin .
Martin Thornton

Benim için çalıştı. Açıklık için
Nitz

3

Ben durum böyle olmadığından eminim rağmen, çoklu bölüm etiketleri ile benzer bir sorun vardı.

sudo grub-install target=i386-pc /dev/sda --force

bununla uğraşırdım. Üzerinde bir --force"önerilen" çözüm değil, ama şimdiye kadar hiçbir sorun yoktu = P


1

İşte onu tekrar çalıştıran yaptım:

Kullanılan gdiskboş uzaya bir bölüm ekleme, GPT'ye (tip EF02 "BIOS Önyükleme bölümü") MBR bölümü dönüştürmek için, orijinal bölüm ile giriş aktarılmamıştır ve eski BIOS önyüklenebilir'olarak bunu işaretlemiş.

Sonra koştu

$ sudo dağı / dev / sda1 / mnt
$ sudo grub-install - kök-dizin = / mnt / dev / sda

Daha sonra başarıyla yüklendi ve ana sürücüme önyükleme yapabildim.

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.