답변:
GRUB이 커널로의 부팅을 건네면 커널은 커널이 무엇을 시작했는지 알지 /boot
못하며 GRUB이 사용한 것이 아닐 수도 있습니다. boot/grub/grub.cfg
각 파티션 의 액세스 시간을 확인하여 가장 최근에 액세스 한 파티션을 확인할 수 있습니다. 어떤 파티션의 구성 파일 GRUB이 사용되었는지 알 수 있습니다.
stat -c %x /boot/grub/grub.cfg
액세스 시간이 업데이트되지 않으면 다양한 GRUB 구성 파일에서 사용하는 커널 매개 변수의 차이점을 찾아야합니다. 예를 들어, 각각에서 add foo=1
, foo=2
등을 변경하고 GRUB_CMDLINE_LINUX
실행할 sudo update-grub2
수 /proc/cmdline
있는 경우 이러한 값 중 어떤 값이 사용 되었는지 확인할 수 있습니다 .
/boot
grub을 사용하지 않았을 수도 /
있으며 Katu가 마운트 된 파티션을 찾았 지만 Ravexina가 지적한 것처럼 아마도 더 적은 연결
/
. 부팅하는 동안 사용 된 파티션의 GRUB 구성을 찾으십니까? 나는 그것이 어떻게 관련되어 있는지 알지 못한다.
당신이 찾고있는 파일은 /boot
실행중인 시스템의 디렉토리에 있습니다. 중 /boot
별도의 파티션 또는 그렇지 않아; 당신 /boot
이 별도의 파티션 이라면 당신 은 그것을 찾아야합니다 :
$ lsblk -r | grep '/boot'
sda2 8:1 0 400M 0 part /boot
수단 grub.cfg
에 위치해 있습니다 사용하는을 sda2
.
그렇지 않으면 다음을 찾아야합니다 root
.
$ lsblk -r | grep '/$'
sda1 8:1 0 121.2G 0 part /
이번에는에 sda1
있습니다.
또는 재미 를 위해 부팅 시간 매개 변수를 확인할 수 있습니다.
$ cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-3.16.0-4-686-pae root=UUID=938495-1fe2-3302 ro quiet
그런 다음 UUID
어떤 파티션이 루트인지 확인하십시오.
$ sudo blkid | grep 938495-1fe2-3302
/dev/sda1: UUID="938495-1fe2-3302"
의 의미입니다 sda1
.
부팅 매개 변수를 확인하여 grub.cfg
파일 중 하나에 파일이 들어 있는지 확인할 수 있습니다. 부팅 매개 변수가 grub.cfg
서로 다른 경우에만 작동합니다 .
readlink -f /dev/disk/by-uuid/<UUID>
.
현재 마운트 된 루트 파일 시스템을 보유한 장치를 표시하려면 다음을 수행하십시오.
awk '$2=="/"{print $1}' /proc/mounts
현재 실행중인 Ubuntu 릴리스 버전을 표시하려면
lsb_release -rs
lsb_release -rs
매번 사용할 동일한 버전 번호를 가지지 않을 것 입니다. KISS
각 OS에 간단한 사용자 정의 메뉴 항목을 추가 할 수 있으며, Grub 메뉴에서 OS Grub이 구성 파일을로드 한 것을 볼 수 있습니다.
예:
16.04로 부팅하고 파일 /etc/grub.d/40_custom
을 편집하여 메뉴 항목을 추가합니다.
#! / bin / sh exec tail -n +3 $ 0 #이 파일은 사용자 정의 메뉴 항목을 추가하는 쉬운 방법을 제공합니다. 간단히 이 주석 다음에 추가하려는 # 메뉴 항목. 변경하지 않도록주의하십시오 # 위의 'exec tail'줄. # menuentry 'grub.conf가 16.04에서로드되었습니다.'{ 재부팅 }
파일이 실행 가능한지 확인하고 실행하십시오 sudo update-grub
.
그리고 우리는 우리가 변화에 ig 다른 OS의에서 동일하게 변경, 우리는 단지의 menuentry에 대해 다른 이름을 사용 할 16.04
에 15.04
등등.
부팅하는 동안 Grub-menu에서이 메뉴 항목을 선택하면 시스템이 재부팅되고 OS를 부팅하지 않고 실제로로드하는 데 사용되는 OS를 확인하기 위해 생성했습니다 grub.conf
.
추가 정보
우리가 모두 Grub을 사용하는 여러 OS를 설치할 때 이러한 종류의 혼란이 나타나고 OS를 설치하는 동안 동일한 부트 로더 위치를 선택합니다. 우리는 Grub을 설치하는 OS가 하나만 필요합니다. Grub은 모든 Linux 배포판으로 부팅 할 수 있습니다. 따라서 Grub을 포함한 배포판이 설치되어 있으면 Grub을 설치하지 않고도 추가 OS를 설치할 수 있습니다.
레거시 설치에서는 파티션 부트 레코드를 위치로 선택할 수 있기 때문에 부트 로더 설치 위치를 처리하는 것이 매우 쉽지만 올바른 파티션을 선택해야합니다. 따라서 하나의 OS는 부트 로더를 MBR에 설치하고 추가 OS는 부트 로더를 OS 파티션의 PBR에 설치합니다. 이 가능성은 Something else
설치 중에 -option 을 사용할 때만 가능 합니다.
UEFI 설치에서는 좀 더 이상합니다. 부트 로더는 EFI 시스템 파티션 (ESP)의 폴더에 설치되며 여러 부트 로더가 쉽게 공존 할 수 있습니다. 여기서 문제는 모든 우분투 풍미와 다른 리눅스 배포판이 Grub을 ESP의 동일한 폴더에 설치할 것이며 선택의 여지가 없다는 것입니다. 따라서 추가 Linux 배포판을 설치하면 기존의 부트 로더를 덮어 씁니다. 내가 이것을 피하는 유일한 방법은 라이브 세션으로 부팅하고로 설치 프로그램을 시작하는 것입니다 sudo ubiquity -b
.
또 다른 간단한 솔루션
우리가 파티션에 설치된 세 개의 리눅스 배포판을 가지고 있다고 가정하자 sda1
, sda2
하고 sda3
. 이제 Grub의 부팅 메뉴 항목을 살펴 보겠습니다. 부팅하는 동안 다음과 같은 내용이 표시됩니다.
1 우분투 우분투 2 고급 옵션 3 메모리 테스트 (memtest86 +) 4 메모리 테스트 (memtest86 +, 시리얼 콘솔 115200) 5 우분투 (/ dev / sda2) 6 우분투 고급 옵션 (/ dev / sda2) 7 우분투 17.04 (/ dev / sda3에서) Ubuntu의 고급 옵션 (/ dev / sda3에서)
처음 두 항목은 grub.conf
실제로 사용 하는 -file 을 생성 한 OS 항목입니다 . 항목 # 3과 # 4는 현재 흥미롭지 않습니다. 항목 # 5, # 6, # 7 및 # 8은 OS-prober로 생성 된 항목이며 이러한 항목에 대한 OS가있는 파티션을 볼 수 있습니다. 그래서이 작은 예제의 경우에 우리가 있다는 결론을 내릴 수있다 grub.config
-file 우리가 실제로 사용의 OS에 속하지 않는 sda2
또는 sda3
만에 OS에 sda1
. 하나 이상의 OS가 별도의 /boot
파티션으로 설치된 경우 어떤- /boot
파티션이 어떤 OS에 속 하는지 확인해야 하지만 findmnt
각 OS 에서 -command를 실행하면 쉽게 수행 할 수 있습니다 .
lsblk
그리고 어떤 디스크가 마운트되어 있는지 확인하십시오 /
. 당신이 /boot
당신의 마운트 포인트에있는 경우 아래의 의견이나 Ravexina의 답변을 읽으십시오 .
확실하지 않은 경우 UUID를 확인하십시오.
lsblk -o UUID,NAME,SIZE,MOUNTPOINT
/boot
. 별도의 파티션 인 경우 어떻게해야 합니까? 그런 다음 파티션에 /boot/grub/grub.cfg
없습니다 /
.
/boot
먼저 별도의 검사를하는 것이 좋습니다 .
사용자가 부팅 한 파티션 을 확인하려면 설치된 시스템을 부팅 하기 전에 부팅 로더 메뉴 를 확인 하십시오. 부트 로더 메뉴를 보지 않으면 말하기 어렵습니다.
볼 곳
다음의 결합 된 스크린 샷에서 사용자가 부팅 한 파티션에서 알 수있는 힌트 3 개를 표시했습니다.
레이블 (1) : 첫 번째 항목 아래의 GNU GRUB 메뉴 항목
레이블 (2) : 부트 로더 메뉴 상단의 GNU GRUB 버전
레이블 (3) : GNU GRUB 배경 이미지 (수동 설정 필요)
가장 명백한 힌트는 부트 로더 메뉴를 제어하는 시스템에서 GNU GRUB 배경 이미지를 변경하는 레이블 (3)입니다. 사용자가 미리 설정 한 경우 가장 쉬운 방법입니다.
라벨 (1) 설명
첫 번째 항목 아래의 메뉴 항목에 나열 되지 않은 파티션을 찾으십시오 . 스크린 샷에는 "Ubuntu"및 "Ubuntu 14.04.5 LTS"와 같은 두 운영 체제 만 설치되어 있습니다.
Ubuntu
Advanced options for Ubuntu
Memory test (memtest86+)
Memory test (memtest86+, serial console 115200)
Ubuntu 14.04.5 LTS (14.04) (on /dev/sda3)
Advanced options for Ubuntu 14.04.5 LTS (14.04) (on /dev/sda3)
후자가 언급 (on /dev/sda3)
했는데, 이는 전자가 /dev/sda2
또는 에있을 수 있음을 의미합니다 /dev/sda1
. 확실히, "Ubuntu"시스템을 부팅 한 후 관련 명령을 실행하여 사용 가능한 파티션을 나열하십시오 ( lsblk
가장 간단한 것 같습니다).
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 13G 0 disk
├─sda1 8:1 0 976M 0 part [SWAP]
├─sda2 8:2 0 6G 0 part /
└─sda3 8:3 0 6G 0 part
sr0 11:0 1 55.7M 0 rom
만의 출력과 비교 한 후 lsblk
, 우리는 시스템 즉, "우분투는"에서 발견되는 것을 알고있다 /dev/sda2
(한 없는 메뉴 항목에 표시) 부트 로더 메뉴가 관리되는.
라벨 (2) 설명
부트 로더 메뉴 상단에 인쇄 된 GRUB 버전을 찾으십시오. 부팅 된 시스템에있는 GRUB 버전 (예 : "Ubuntu")과 버전을 비교하십시오.
스크린 샷 (하반부)에서 : GNU GRUB version 2.02~beta2-9
"Ubuntu"와 같이 시스템을 부팅 한 후 관련 명령을 실행하여 GRUB 패키지의 버전을 확인하십시오 ( grub-install --version
관련성이 높고 가장 간단 함).
$ grub-install --version
grub-install (GRUB) 2.02~beta2-9
이것은 어떻게 관련이 있습니까? 때문에 grub-install
와 update-grub
명령은 모두 동일한 패키지에 의해 제공됩니다 grub2-common
. 부트 로더 메뉴가 동일한 패키지의 도구를 사용하여 생성 및 업데이트되는 경우, 부트 로더 메뉴 상단의 인쇄 버전은 동일합니다.
라벨 (3) 설명
부트 로더 메뉴의 기본 배경 이미지가 없음 (단순한 검정색)이므로이 힌트를 수동으로 설정해야합니다. 배경 이미지는 8 비트 깊이 여야합니다.
desktop-base
패키지가 시스템에 설치되어있는 경우 GRUB 용으로 특별히 만들어진 이러한 배경 이미지 *grub.png
는 대상 디렉토리에서 파일 이름 접미사 로 쉽게 찾을 수 있습니다.
$ ls /usr/share/images/desktop-base/*grub.png
/usr/share/images/desktop-base/desktop-grub.png
/usr/share/images/desktop-base/joy-grub.png
/usr/share/images/desktop-base/moreblue-orbit-grub.png
/usr/share/images/desktop-base/spacefun-grub.png
배경 이미지를 설정하려면
열기 /etc/default/grub
파일은 수퍼 유저로, 다음 줄을 추가 GRUB_BACKGROUND=
선택과 인용의 이미지에 대한 전체 경로.
$ sudo nano /etc/default/grub
...
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
# Show background in GRUB boot menu
GRUB_BACKGROUND="/usr/share/images/desktop-base/spacefun-grub.png"
...
그런 다음 부팅 로더 메뉴가 포함 된 sudo update-grub
업데이트 /boot/grub/grub.cfg
를 실행 하십시오. 다음과 유사한 결과가 표시됩니다.
$ sudo update-grub
Generating grub configuration file ...
Found background: /usr/share/images/desktop-base/spacefun-grub.png
Found background image: /usr/share/images/desktop-base/spacefun-grub.png
Found linux image: /boot/vmlinuz-3.13.0-24-generic
Found initrd image: /boot/initrd.img-3.13.0-24-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
Found Ubuntu 14.04.5 LTS (14.04) on /dev/sda3
done
머신을 재부팅하고 부트 로더 메뉴에 시스템의 update 명령으로 변경된 내용이 있는지 확인하십시오.
그렇지 않으면 다른 시스템에 대해 한 번에 하나씩 단계를 반복하십시오. 어떤 시스템이 부트 로더 메뉴를 제어했는지 알고 있다면 반복 된 단계는 불필요했을 것입니다 (다시 설치 방법에 따라 다름).
기권
이 답변은 GNU GRUB PC / BIOS 버전을 사용하는 멀티 부팅 설정이있는 BIOS 시스템에 대한 검증되고 잘 테스트 된 기준에 대해 설명합니다. 다음과 같은 예외가 적용됩니다.
GNU GRUB EFI 버전을 사용하는 UEFI 시스템 대응, 그것은되어 있지 보장 또는 하지 의 기준은 상기 한 바와 같이 동일하게 나타나는 경우 알려져 있습니다.
체인 로딩의 작동 방식을 보여주기보다는 부트 로더 메뉴 의 모양 (스크린 샷의 상반부가 다르게 나타나는 방법)에 중점을 둡니다 . 따라서 "스크린 샷에 표시된대로 다중 부팅을 설정 한 방법"에 대해서는 이 답변에서 설명 하지 않습니다 .
멀티 부팅 설정이 Ubuntu 14.04, Kubuntu 14.04, Xubuntu 14.04 등의 유사한 운영 체제와 동일한 복사본으로 만들어진 경우 사용자가 부팅 한 파티션을 알 수있는 유일한 확실한 방법은 레이블 (3)입니다.
레이블 (3)은 "부팅 메뉴는 / dev / sda1에서 관리됩니다"라는 부트 된 이미지를 명시 적으로 쓰는 사용자 정의 배경 이미지를 사용하면 더 잘 작동 할 수 있습니다. 마찬가지로 "GRUB에 대한 사용자 정의 배경 이미지를 만드는 방법"에 대해서는 이 답변에서 설명 하지 않습니다 .
TL; DR 설치된 시스템을 부팅 하기 전에 부트 로더 메뉴 를 보십시오 . 가장 쉽고 신뢰할 수있는 방법은 GRUB 배경 이미지를 수동으로 설정하는 레이블 (3)입니다.
/boot/grub/grub.cfg
부팅에 사용 된 파일이 삭제되었거나 해당 파티션이 파티션 테이블에서 삭제되었거나 해당 디스크가 시스템에서 물리적으로 제거되었을 수 있습니다.