
두 개의 해당 Grub이 있는 두 개의 하드 드라이브가 있습니다. 하나는 Arch Linux에서, 다른 하나는 Ubuntu에서 왔습니다. Arch의 grub을 사용하면 두 배포판 중 하나로 부팅할 수 있습니다. 그러나 Ubuntu의 grub을 사용하면 Arch와 Ubuntu를 모두 볼 수 있지만 Arch로 부팅할 수는 없습니다. 오류가 발생합니다.
Kernel offset
End kernel panic. Not syncing: VFS.
Unable to mount root fs on unknown-block.
grub.cfg
두 분포를 모두 비교했습니다 . Ubuntu의 grub에서 다음 줄이 포함된 Arch 항목을 볼 수 있습니다.
initrd /boot/intel-ucode.img
나는 그것을 Arch의 것을 따르도록 변경했습니다 grub.cfg
.
initrd /boot/intel-ucode.img /boot/initramfs-linux.img
이제 Ubuntu의 grub에서 Arch로 부팅할 수 있습니다. Ubuntu는 기본적으로 이 필수 옵션을 추가하지 않는 것 같습니다. Ubuntu가 자동으로 올바른 항목을 생성하도록 하려면 어떻게 해야 합니까?
편집하다
Arch의 grub을 grub-mkconfig -o /boot/grub/grub.cfg
. 우분투에서는 update-grub
위의 원시 명령(별칭)을 모두 시도했습니다 .
편집 2
주석 처리되지 않은 행/etc/default/grub
GRUB_DEFAULT="saved"
GRUB_SAVEDEFAULT="true"
GRUB_HIDDEN_TIMEOUT_QUIET="true"
GRUB_TIMEOUT="3"
GRUB_DISTRIBUTOR="`lsb_release -i -s 2> /dev/null || echo Debian`"
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=""
답변1
실제로 이 문제를 해결하려면 수정해야 할 파일이 두 개 있습니다. 저는 이것을 Lubuntu 16.04.1과 Manjaro Linux에서 테스트했습니다.
우분투에서는:
1) 파일/usr/lib/linux-boot-probes/mounted/40grub2 모든 initrd 매개변수를 처리하지 않는 pars_grub_menu 함수가 있습니다. '를 수정해야 합니다.... initrd의 "$1" 경우)':
a) 할당 제거
initrd="$(echo "$2" ...)"
b) 제거된 줄 대신 두 줄을 추가합니다.
shift 1
initrd="$(echo "$@" | sed 's/(.*)//')"
2) 파일/etc/grub.d/30_os-prober for 루프 내에서 LINITRD 할당을 수정합니다.
for LINUX in ${LINUXPROBED}; do
...
LINITRD="`echo ${LINUX} | cut -d ':' -f 5 | tr '^' ' '`"
첫 번째 수정에서는 Manjaro에 사용 가능한 모든 initrd 정보를 고려합니다. 두 번째 수정 사항은 일부 '^' 문자를 공백으로 변경하여 생성된 initrd 줄을 정리합니다.
답변2
나는 Manjaro와 Arch를 실행하고 있지만 아이러니하게도 Manjaro는 Ubuntu와 비슷한 실수를 할 것입니다. 따라서 아마도 30_os_prober의 다음 패치가 여전히 누군가에게 도움이 될 수 있습니다.
후에:
LINITRD="`echo ${LINUX} | cut -d ':' -f 5 | tr '^' ' '`"
추가하다:
if [ "${OS}" = "Arch Linux" ] ; then
LINITRD="/boot/intel-ucode.img ${LINITRD}"
fi
답변3
파일 을 편집하고 실행한 후에 작동했습니다 grub.cfg
.
sudo update-grub
sudo grub.mkconfig