Ubuntu'nun (şu anda 16.04) ve Windows 7'nin Ubuntu'nun GRUB'u önyükleme yükleyicisi olarak çift önyüklemesinde kullanılan bir makinem var.
Şimdi, resmi kurulum talimatlarını izleyerek Arch Linux'u üçüncü işletim sistemi olarak ekledim. Ubuntu tarafından kontrol edileni kullanmak istediğim için Arch'dan GRUB yüklemedim. Talimatlar mkinitcpio -p linux
muhtemelen açıklandığı gibi çalıştırdığım bazı önyükleme dosyaları üreten bir komut içeriyordu .
Şimdi Ubuntu'yu varsayılan girişiyle GRUB'dan önyüklemeye çalıştığımda, bu hoş olmayan hatayı alıyorum (ekran fotoğrafı için özür dilerim):
Şovların çıktısı olarak uname -a
, Arch çekirdeğini önyüklemeye çalışıyor, ancak /dev/sda6
Ubuntu kök bölümüdür.
Ubuntu'yu yüklemek Advanced options for Ubuntu
için Ubuntu, with Linux 4.4.0-*
girişlerden birine gitmem ve seçmem gerekiyor, Arch'ı doğru bir şekilde yükleyecek bir giriş bulamadım.
sudo update-grub
Ubuntu'dan çalıştırmak ( " grub2 yapılandırma dosyası oluşturmak update-grub
için çalışan grub-mkconfig -o /boot/grub/grub.cfg
bir saplamadır." ) Hiçbir şeyi değiştirmez. grub-customizer
Aracı da şimdiye kadar bu sabitleme faydasız oldu.
GRUB'un bu karışıklığına neden olan şey nedir ve her Linux sürümünün doğru çekirdekle ve doğru bölümle önyüklenmesi için nasıl düzeltebilirim?
Görünüşe göre Arch'ı Ubuntu'nun / önyüklemesine takılı olarak aptalca kurdum, bu yüzden muhtemelen önyükleme dosyalarını oraya yerleştirdi.
Ubuntu'nun önyükleme yükleyicisini tekrar düz bir şekilde almak ve daha sonra Arch'ın temiz bir kurulumunu yapmak için Arch ile ilgili tüm şeyleri silmekle iyiyim.
Güncellemeler (Ask Ubuntu sohbetindeki desteği için @terdon'a teşekkürler):
İşte benim /boot/grub/grub.cfg
.
Tüm Linux girişleri Ubuntu'nun kökü olan / dev / sda6 bölümümü gösteriyor gibi görünüyor:
$ grep ' linux /' /boot/grub/grub.cfg
linux /vmlinuz-linux root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro
linux /vmlinuz-linux root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro
linux /vmlinuz-linux root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro
linux /vmlinuz-linux root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro init=/sbin/upstart
linux /vmlinuz-linux root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro recovery nomodeset
linux /vmlinuz-4.4.0-21-generic root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro
linux /vmlinuz-4.4.0-21-generic root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro init=/sbin/upstart
linux /vmlinuz-4.4.0-21-generic root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro recovery nomodeset
linux /vmlinuz-4.2.0-35-generic root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro
linux /vmlinuz-4.2.0-35-generic root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro init=/sbin/upstart
linux /vmlinuz-4.2.0-35-generic root=UUID=eee18451-b607-4875-8a88-c9cb6c6544c8 ro recovery nomodeset
Ubuntu'dan GRUB yapılandırmasını güncellemeye çalıştım:
$ sudo grub-mkconfig -o /boot/grub/grub.cfg
Generating grub configuration file ...
dpkg: warning: version 'linux' has bad syntax: version number does not start with a digit
Found linux image: /boot/vmlinuz-linux
Found initrd image: /boot/initramfs-linux.img
Found linux image: /boot/vmlinuz-4.4.0-21-generic
Found initrd image: /boot/initrd.img-4.4.0-21-generic
Found linux image: /boot/vmlinuz-4.2.0-35-generic
Found initrd image: /boot/initrd.img-4.2.0-35-generic
Found memtest86+ image: /memtest86+.elf
Found memtest86+ image: /memtest86+.bin
Found Windows 7 (loader) on /dev/sda1
Found Arch on /dev/sda8
done
Ubuntu'dan MBR'ye GRUB'u yeniden yüklemeye çalıştım:
$ sudo grub-install /dev/sda
Installing for i386-pc platform.
Installation finished. No error reported.
$ sudo grub-install --recheck /dev/sda
Installing for i386-pc platform.
Installation finished. No error reported.
Bu arada yüklü Ubuntu çekirdek paketleri dpkg-reconfigure
, hepsini denedim , ancak sorun üzerinde herhangi bir etkisi olmadan:
$ dpkg -l linux-image* | grep ^ii
ii linux-image-4.2.0-35-generic 4.2.0-35.40 amd64 Linux kernel image for version 4.2.0 on 64 bit x86 SMP
ii linux-image-4.4.0-21-generic 4.4.0-21.37 amd64 Linux kernel image for version 4.4.0 on 64 bit x86 SMP
ii linux-image-extra-4.2.0-35-generic 4.2.0-35.40 amd64 Linux kernel extra modules for version 4.2.0 on 64 bit x86 SMP
ii linux-image-extra-4.4.0-21-generic 4.4.0-21.37 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
Ayrıca Ubuntu initramflarını yeniden oluşturmaya çalıştım:
$ sudo update-initramfs -u -k all
update-initramfs: Generating /boot/initrd.img-4.4.0-21-generic
update-initramfs: Generating /boot/initrd.img-4.2.0-35-generic
Bölüm düzenim:
Ubuntu sisteminden kontrol edildi. Etiketler kendilerini açıklamalıdır.
$ lsblk -f /dev/sda
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 ntfs win7-boot 90DCF3A5DCF3842E /win/boot
├─sda2 ntfs windows7 482C7A572C7A3FCC /win/c
├─sda3 ext4 grub-boot 6dbb8633-dadd-4b5e-8d85-b0895fde9dfb /boot
├─sda5 ext4 images 81dc42c4-a161-4ccd-b704-6e5c09298943 /images
├─sda6 ext4 ubuntu-1604 eee18451-b607-4875-8a88-c9cb6c6544c8 /
├─sda7 ext4 ubuntu-home 485b3ef1-7216-4053-b25c-f656d529e8e6 /home
├─sda8 ext4 arch-root 8d281a0c-969c-44cf-ba6a-1d3c7b4be7ec
├─sda9 ext4 arch-home 32522902-a53d-44c8-90f2-6bbf14c40f1f
└─sda10 swap linux-swap 8b05bd9b-bc42-46f6-8c18-50711a3c48b9 [SWAP]
GRUB menü yapım:
Ubuntu için gelişmiş seçenekler:
Arch için gelişmiş seçenekler:
Benim /boot
dizini:
$ ls -la /boot
total 118480
drwxr-xr-x 4 root root 4096 Apr 24 20:50 .
drwxr-xr-x 28 root root 4096 Apr 24 19:44 ..
-rw-r--r-- 1 root root 1313029 Mär 16 01:45 abi-4.2.0-35-generic
-rw-r--r-- 1 root root 1239577 Apr 19 00:21 abi-4.4.0-21-generic
-rw-r--r-- 1 root root 184888 Mär 16 01:45 config-4.2.0-35-generic
-rw-r--r-- 1 root root 189412 Apr 19 00:21 config-4.4.0-21-generic
drwxr-xr-x 6 root root 4096 Apr 26 19:58 grub
-rw-r--r-- 1 root root 18598360 Apr 24 20:59 initramfs-linux-fallback.img
-rw-r--r-- 1 root root 3516429 Apr 24 20:59 initramfs-linux.img
-rw-r--r-- 1 root root 33642388 Apr 24 18:31 initrd.img-4.2.0-35-generic
-rw-r--r-- 1 root root 36143341 Apr 24 19:51 initrd.img-4.4.0-21-generic
drwx------ 2 root root 16384 Okt 28 17:43 lost+found
-rw-r--r-- 1 root root 182704 Jan 28 13:44 memtest86+.bin
-rw-r--r-- 1 root root 184380 Jan 28 13:44 memtest86+.elf
-rw-r--r-- 1 root root 184840 Jan 28 13:44 memtest86+_multiboot.bin
-rw------- 1 root root 3745312 Mär 16 01:45 System.map-4.2.0-35-generic
-rw------- 1 root root 3853719 Apr 19 00:21 System.map-4.4.0-21-generic
-rw------- 1 root root 6829104 Mär 16 01:45 vmlinuz-4.2.0-35-generic
-rw------- 1 root root 7013968 Apr 19 00:21 vmlinuz-4.4.0-21-generic
-rw-r--r-- 1 root root 4435552 Apr 14 19:20 vmlinuz-linux
4.4.0 ve 4.2.0 çekirdekleri Ubuntu, Arch'ın 4.5.0 çekirdeği olmalıdır. Ancak, adında çekirdek sürümü olmayan hangi dosyanın neye ait olduğunu nasıl öğrenebilirim?
Ubuntu kök dizinim (dizinler hariç):
$ ls -la / | grep ^[^d]
total 124
lrwxrwxrwx 1 root root 32 Apr 24 19:44 initrd.img -> boot/initrd.img-4.4.0-21-generic
lrwxrwxrwx 1 root root 32 Apr 5 17:45 initrd.img.old -> boot/initrd.img-4.2.0-35-generic
lrwxrwxrwx 1 root root 29 Apr 24 19:44 vmlinuz -> boot/vmlinuz-4.4.0-21-generic
lrwxrwxrwx 1 root root 29 Apr 5 17:45 vmlinuz.old -> boot/vmlinuz-4.2.0-35-generic
Benim Arch kök dizini herhangi bir dosya veya bağlantılar içermez.
Root device mounted successfully, but /sbin/init does not exists
. Bunu araştırdın mı? Mı init
gerçekten kayıp mı? Öyleyse, kesinlikle yüklemelisiniz, eğer varsa, neden bulunamadığına dair bir fikir var mı?
os-prober
. daha sonra bu çalıştırmaksudo mkinitcpio -p linux
sonrasudo grub-mkconfig -o /boot/grub/grub.cfg
son olaraksudo grub-install /dev/sda