우분투 (현재 16.04)와 우분투의 GRUB을 부팅 로더로 사용하는 Windows 7을 이중 부팅하는 데 사용되는 시스템이 있습니다.
이제 공식 설치 지침에 따라 아치 리눅스를 세 번째 OS로 추가했습니다. 우분투가 제어하는 것을 사용하고 싶었 기 때문에 아치에서 GRUB을 설치하지 않았습니다. 이 지침에는 mkinitcpio -p linux
설명 된대로 실행 된 부팅 파일을 생성 하는 명령 이 포함 되어 있습니다.
이제 GRUB에서 기본 항목을 통해 Ubuntu를 부팅하려고하면이 불쾌한 오류가 발생합니다 (화면 사진이 유감입니다).
show의 결과로 uname -a
아치 커널을 부팅하려고하지만 /dev/sda6
우분투 루트 파티션입니다.
우분투를로드 할 수 Advanced options for Ubuntu
있는 Ubuntu, with Linux 4.4.0-*
항목 중 하나 를 탐색 하고 선택 해야하지만 아치를 올바르게로드하는 항목을 찾을 수 없습니다.
sudo update-grub
Ubuntu에서 실행 ( " grub2 구성 파일을 생성하기 update-grub
위해 실행하는 스텁입니다 grub-mkconfig -o /boot/grub/grub.cfg
." )은 아무 것도 변경하지 않습니다. 이 grub-customizer
도구는 지금까지 이것을 고치는 데 쓸모가 없었습니다.
GRUB의 혼동을 일으키는 원인은 무엇이며 각 Linux 버전이 올바른 커널과 올바른 파티션으로 부팅되도록 어떻게 수정합니까?
우분투의 / boot가 마운트 된 아치를 어리석게 설치 한 것처럼 보이므로 아마도 부트 파일을 거기에 넣었을 것입니다.
나는 아치와 관련된 모든 것을 지우고 우분투의 부트 로더를 똑바로 다시 가져 와서 나중에 아치를 새로 설치하는 것이 좋습니다.
업데이트 (Ask Ubuntu 채팅에서 자신의 지원을받은 @terdon 덕분에) :
여기 내 /boot/grub/grub.cfg
입니다.
모든 Linux 항목은 내 / dev / sda6 파티션 (Ubuntu의 루트)을 가리키는 것 같습니다.
$ 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
우분투에서 GRUB 구성을 업데이트하려고했습니다.
$ 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에서 GRUB을 MBR에 다시 설치하려고했습니다.
$ 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.
그것들은 설치되어있는 우분투 커널 패키지입니다. dpkg-reconfigure
모든 문제를 시도 했지만 문제에는 영향을 미치지 않습니다.
$ 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
또한 우분투 initramfs를 재생성하려고 시도했습니다.
$ 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
내 파티션 레이아웃 :
우분투 시스템에서 확인했습니다. 라벨 자체를 설명해야합니다.
$ 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 메뉴 구조 :
내 /boot
디렉토리 :
$ 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 및 4.2.0 커널은 Ubuntu 여야하고 Arch는 4.5.0 커널이어야합니다. 그러나 커널 버전이없는 파일 이름을 어떻게 찾을 수 있습니까?
내 우분투 루트 디렉토리 (디렉토리 제외) :
$ 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
내 아치 루트 디렉토리에 파일이나 링크가 없습니다.
Root device mounted successfully, but /sbin/init does not exists
.. 이것을 조사 했습니까? 되어 init
정말 실종? 그렇다면, 반드시 설치해야합니다. 대신 존재한다면 왜 찾을 수 없는지 아십니까?
os-prober
. 이들를 실행sudo mkinitcpio -p linux
한 후sudo grub-mkconfig -o /boot/grub/grub.cfg
마지막으로sudo grub-install /dev/sda