Linux를 부팅하는 데 문제가 있습니다. 시도해 보았는데 드라이브와 ESP가 하나만 있으면 성공적으로 부팅됩니다. 하지만 내 목표는 자체 ESP를 갖춘 두 개의 서로 다른 드라이브를 갖는 것입니다. 첫 번째 드라이브는 자체 ESP가 포함된 Windows용이고, 두 번째 드라이브는 자체 ESP가 포함된 Linux용입니다.
다른 드라이브 없이도 이러한 드라이브가 독립적으로 부팅될 수 있도록 이렇게 합니다.
내가 한 일은 Windows가 포함된 첫 번째 드라이브를 삭제하고 두 번째 드라이브에 Linux를 설치하는 것뿐이었습니다. 첫 번째 드라이브가 연결되지 않으면 Linux는 완벽하게 부팅됩니다.
이제 내 문제는 Linux로 부팅할 때 두 드라이브가 모두 연결되어 있는지 알려주지 no init found try init=bootargs
만 Windows 드라이브는 완벽하게 부팅된다는 것입니다.
답변1
이 no init found
메시지는 Linux 커널이 시작되었지만 /sbin/init
루트 파일 시스템에서 찾을 수 없다는 것을 알려줍니다. 아마도 잘못된 위치를 찾고 있기 때문일 것입니다.
Linux 부트 로더 설정이 루트 파일 시스템을 인식하는 방법을 알아보세요. 일반적으로 이는 root=
Linux 커널의 옵션입니다.
루트 파일 시스템이 /dev/sdaN
(여기서 N은 숫자)로 식별되면 initramfs/initrd 파일에 포함된 드라이버가 처음 감지한 디스크의 N번째 파티션을 지정합니다. Linux 드라이브만 연결하면 이 가정이 정확하고 시스템이 정상적으로 부팅됩니다. 그러나 두 디스크가 모두 연결되면 Windows 디스크가 먼저 감지되고 root=/dev/sdaN
옵션은 실제로 잘못된 디스크를 가리킵니다.
이 문제를 해결하는 가장 좋은 방법은 디스크 감지 순서에 의존하지 않는 방식으로 루트 파일 시스템을 지정하는 것입니다.
Linux에서는 blkid
루트로 실행합니다. 모든 식별자와 함께 볼 수 있는 모든 디스크 파티션이 나열됩니다. 루트 파일 시스템을 포함하는 파티션과 일치하는 행을 찾으십시오. UUID=<a long hexadecimal string>
값이 나열되어야 합니다. 있을 수도 있고 없을 수도 있습니다 LABEL=<a short name>
. 하나가 더 있고 PARTUUID
하나는 PARTLABEL
나열될 수 있습니다.
대부분의 Linux 배포판에서는 root=/dev/sdaN
이 옵션을 form 으로 변경할 수 있습니다 root=UUID=<the long hexadecimal string form blkid>
. 이렇게 하면 루트 파일 시스템이 검색된 순서가 아닌 고유한 파일 시스템 UUID로 명확하게 식별됩니다.
Linux 배포판의 이름과 버전을 지정하지 않으셨기 때문에 부트로더 구성의 위치가 Linux 배포판마다 다르기 때문에 정확히 어디에서 수정해야 하는지 말씀드릴 수 없습니다. 그러나 최신 배포판에서는 /etc/default/grub
아마도 좋은 추측일 것입니다. 수정 후에는 /etc/default/grub
일반적으로 실제 부트로더를 업데이트하기 위해 몇 가지 명령을 실행해야 합니다. 이는 update-grub
또는 grub-mkconfig
이와 유사한 것일 수 있습니다.