편집/편집 기본적으로 "grub에서 보는 것은 가짜입니다"라는 긴 재생을 받은 후 문제를 포기했습니다. 대부분의 Ubuntu 항목을 삭제해야 할 것 같으며 컴퓨터 아직 실행할 수 있습니다.
나는 이 질문에 대한 답을 얻고 싶습니다. (전달될 수도 있음)
내 가짜 "grub"은 Ubuntu 5.15.0.50 GENERIC이 설치되어 있다고 알려줍니다. 운영 체제 옵션이나 "고급 옵션" 모두 해당 범용 옵션을 시작할 수 있음을 나타내지 않습니다. 현재 "절뚝거리고 있는" 22.04.1 일반 버전은 5.13.0.46이고 서서히 악화되고 있으므로 적어도 5.15.0.50을 사용해 보고 싶었습니다.
합리적인 해결책이 있습니까? (5.15.0.50 실행) - ISO에서 클린 로드하는 것은 무리입니다. 저는 작동하는 OS보다 C++ 코드를 더 중요하게 생각합니다. 어떤 도움이라도 주시면 감사하겠습니다.
"이달의 Linux 버전으로 전환"하지 마십시오.
건배.
여러 질문이 있는 게시물입니다.
- 내 멀티부팅 시스템(모두 Ubuntu, Windows 없음)은 에서 로드(및 "df"를 사용하여 실행)
/dev/sde14
하지만 "grub" 메뉴에는 실제로 에서 로드되고 있음이 표시됩니다/dev/sdd3
. 어떻게 이럴 수있어? - 나는 사용하지 않거나 로드할 수 없는 OS 파티션을 정리하는 것을 좋아합니다. "grub" 메뉴에는 이 표시되지만
dev/sde31
"gparted"에는 그러한 파티션이 표시되지 않습니다. "grub" 메뉴에서 이를 수동으로 제거하려면 어떤 파일을 편집할 수 있나요?
q5@q5-desktop:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 5.2M 1 loop /snap/bluez/334
loop1 7:1 0 4K 1 loop /snap/bare/5
loop2 7:2 0 5.2M 1 loop /snap/bluez/302
loop3 7:3 0 114.9M 1 loop /snap/core/13741
loop4 7:4 0 115M 1 loop /snap/core/13886
loop5 7:5 0 55.6M 1 loop /snap/core18/2560
loop6 7:6 0 55.6M 1 loop /snap/core18/2566
loop7 7:7 0 62M 1 loop /snap/core20/1611
loop8 7:8 0 63.2M 1 loop /snap/core20/1623
loop9 7:9 0 86.8M 1 loop /snap/crossover/16
loop10 7:10 0 238.1M 1 loop /snap/firefox/1918
loop11 7:11 0 236.8M 1 loop /snap/firefox/1943
loop12 7:12 0 346.3M 1 loop /snap/gnome-3-38-2004/115
loop13 7:13 0 164.8M 1 loop /snap/gnome-3-28-1804/161
loop14 7:14 0 346.3M 1 loop /snap/gnome-3-38-2004/119
loop15 7:15 0 91.7M 1 loop /snap/gtk-common-themes/1535
loop16 7:16 0 81.3M 1 loop /snap/gtk-common-themes/1534
loop17 7:17 0 107.5M 1 loop /snap/logs/13
loop18 7:18 0 45.9M 1 loop /snap/snap-store/592
loop19 7:19 0 45.9M 1 loop /snap/snap-store/599
sda 8:0 1 465.8G 0 disk
└─sda1 8:1 1 465.8G 0 part
sdb 8:16 0 1.8T 0 disk
├─sdb1 8:17 0 512M 0 part
├─sdb2 8:18 0 17G 0 part
├─sdb3 8:19 0 41.9G 0 part
├─sdb4 8:20 0 195.3G 0 part
│ └─md127
│ 9:127 0 390.4G 0 raid5 /mnt/md127
│ /mnt/MDI_RAID_5
├─sdb6 8:22 0 41.3G 0 part
├─sdb7 8:23 0 97.7G 0 part
├─sdb8 8:24 0 97.7G 0 part
├─sdb9 8:25 0 977M 0 part
├─sdb10 8:26 0 98G 0 part
├─sdb12 8:28 0 147.2G 0 part
├─sdb14 8:30 0 38.1G 0 part
├─sdb15 8:31 0 97.7G 0 part
├─sdb16 259:2 0 61.7G 0 part
├─sdb17 259:3 0 195.3G 0 part
│ └─md127
│ 9:127 0 390.4G 0 raid5 /mnt/md127
│ /mnt/MDI_RAID_5
├─sdb18 259:4 0 146.5G 0 part
├─sdb26 259:5 0 9.9G 0 part
└─sdb30 259:6 0 96.8G 0 part
sdc 8:32 0 298.1G 0 disk
├─sdc1 8:33 0 512M 0 part
├─sdc3 8:35 0 19.5G 0 part
├─sdc5 8:37 0 4G 0 part
├─sdc6 8:38 0 7G 0 part
├─sdc7 8:39 0 24.9G 0 part
├─sdc8 8:40 0 35G 0 part
├─sdc16 259:0 0 7G 0 part
└─sdc17 259:1 0 79.6G 0 part
sdd 8:48 0 931.5G 0 disk
├─sdd1 8:49 0 147.2G 0 part
├─sdd4 8:52 0 147.2G 0 part
├─sdd5 8:53 0 147.2G 0 part
├─sdd6 8:54 0 147.2G 0 part
└─sdd7 8:55 0 146.7G 0 part
sde 8:64 0 2.7T 0 disk
├─sde1 8:65 0 512M 0 part /boot/efi
├─sde2 8:66 0 301.6G 0 part /media/q5/7309e060-4c31-462d-89e2-e2a2d9d051571
├─sde3 8:67 0 96.8G 0 part /media/q5/eaf6611c-a53c-4b45-9c2c-7bb0f57d1b956
├─sde4 8:68 0 5G 0 part /media/q5/eaf6611c-a53c-4b45-9c2c-7bb0f57d1b955
├─sde5 8:69 0 188.6G 0 part /media/q5/eaf6611c-a53c-4b45-9c2c-7bb0f57d1b954
├─sde7 8:71 0 212.3G 0 part /media/q5/TEMP+PHOTOS1
├─sde8 8:72 0 1M 0 part
├─sde9 8:73 0 96.8G 0 part /media/q5/272a5fa3-385b-46c5-9107-109ea3b7fd0c1
├─sde10 8:74 0 33.6G 0 part /media/q5/0d1ba4f5-9db9-491b-a83e-03670b2913c6
├─sde11 8:75 0 7G 0 part /media/q5/07fb0647-7d13-44da-bf01-6f4a48f2c8a61
├─sde14 8:78 0 324.2G 0 part /var/snap/firefox/common/host-hunspell
│ /
├─sde16 259:7 0 147.2G 0 part /media/q5/1T_NEW_COPY
├─sde17 259:8 0 114.5G 0 part
├─sde18 259:9 0 195.3G 0 part
│ └─md127
│ 9:127 0 390.4G 0 raid5 /mnt/md127
│ /mnt/MDI_RAID_5
├─sde19 259:10 0 116.6G 0 part /media/q5/07fb0647-7d13-44da-bf01-6f4a48f2c8a6
├─sde20 259:11 0 96.8G 0 part /media/q5/eaf6611c-a53c-4b45-9c2c-7bb0f57d1b957
├─sde21 259:12 0 224.9G 0 part /media/q5/04ab946c-a6e6-4e56-b952-bbd652caf6111
└─sde22 259:13 0 14G 0 part /media/q5/0537ec3b-5c68-4951-90a5-536ad44f2cbd1
sdf 8:80 1 0B 0 disk
sdg 8:96 1 0B 0 disk
sdh 8:112 1 0B 0 disk
sdi 8:128 1 0B 0 disk
sdj 8:144 1 14.4G 0 disk
├─sdj1 8:145 1 512M 0 part
└─sdj2 8:146 1 13.9G 0 part /media/q5/4835fa9c-77a4-490a-94bf-80f40b432366
sdk 8:160 0 149.1G 0 disk
└─sdk1 8:161 0 149G 0 part /media/q5/MDI
q5@q5-desktop:~$
요청 시 게시
q5@q5-desktop:~$ sudo efibootmgr -v
[sudo] password for q5:
BootCurrent: 0005
Timeout: 1 seconds
BootOrder: 0005,0000,0006,0009,000C,000D,000E,000F,000B,0002
Boot0000* ubuntu HD(1,GPT,2051a2c4-274c-4564-8d21-f272138c9284,0x800,0x100000)/File(\EFI\ubuntu\shimx64.efi)
Boot0002 USB BBS(USB,,0x0)..GO..NO........].e.M. .B.a.y. .R.e.a.d.e.r. .1...0.0....................A...................................$..Gd-.;.A..MQ..L.9.2.0.3.1.1.1........BO..NO........e.e.M. .B.a.y. .R.e.a.d.e.r. .1...0.1....................A...........................................$..Gd-.;.A..MQ..L.9.2.0.3.1.1.1........BO..NO........e.e.M. .B.a.y. .R.e.a.d.e.r. .1...0.2....................A...........................................$..Gd-.;.A..MQ..L.9.2.0.3.1.1.1........BO..NO{.......Y.S.e.a.g.a.t.e....................A.............................&..Gd-.;.A..MQ..L.N.A.8.3.3.B.D.C........BO..NO.........K.i.n.g.s.t.o.n.D.a.t.a.T.r.a.v.e.l.e.r. .3...0.P.M.A.P....................A...................................F..Gd-.;.A..MQ..L.6.C.6.2.6.D.7.C.2.7.E.6.B.1.2.1.6.9.2.4.0.0.6.E........BO..NO........g.W.D.C. .W.D.1.6.0.0.A.B.-.2.2.D.Y.A.0....................A......................................Gd-.;.A..MQ..L.7.D.1.6.0.0.A.B.5.2.2.D........BO..NO........e.e.M. .B.a.y. .R.e.a.d.e.r. .1...0.3....................A...........................................$..Gd-.;.A..MQ..L.9.2.0.3.1.1.1........BO..NO........o.S.e.a.g.a.t.e. .B.U.P. .U.l.t.r.a. .T.o.u.c.h. .0.0.0.4....................A...................................6..Gd-.;.A..MQ..L.0.0.0.0.0.0.0.0.N.A.B.1.3.3.H.H........BO
Boot0005* ubuntu HD(1,GPT,0621e243-4a24-4e6d-bdbb-cd02425977f8,0x800,0x100000)/File(\EFI\ubuntu\grubx64.efi)..BO
Boot0006* Hard Drive BBS(HD,,0x0)..GO..NO........u.S.T.3.3.2.0.4.1.8.A.S....................A.................................>..Gd-.;.A..MQ..L. . . . . . . . . . . . .V.6.P.M.D.L.P.Z........BO..NO........u.H.i.t.a.c.h.i. .H.D.S.7.2.1.0.1.0.C.L.A.3.3.2....................A.................................>..Gd-.;.A..MQ..L. . . . . . .P.J.9.6.0.4.D.H.T.2.G.1.F.P........BO..NO........o.W.D.C. .W.D.5.0.0.0.A.A.K.S.-.7.5.V.0.A.0....................A...........................>..Gd-.;.A..MQ..L. . . . .W. .-.D.C.W.W.A.8.F.5.3.6.8.8.8........BO..NO........o.W.D.C. .W.D.2.0.E.Z.A.Z.-.0.0.G.G.J.B.0....................A...........................>..Gd-.;.A..MQ..L. . . . .W. .-.D.X.W.2.K.9.A.1.0.4.L.P.H........BO
Boot0009* UEFI: Seagate PciRoot(0x0)/Pci(0x1d,0x0)/USB(1,0)/USB(3,0)/HD(1,GPT,bdea077f-9c43-4715-93c9-25136563c691,0x800,0x100000)..BO
Boot000B ubuntu HD(1,GPT,6854ec75-d77f-4e3e-b98c-fd028c46e45b,0x800,0x100000)/File(\EFI\ubuntu\grubx64.efi)..BO
Boot000C* UEFI: KingstonDataTraveler 3.0PMAP PciRoot(0x0)/Pci(0x1d,0x0)/USB(1,0)/USB(4,0)/USB(5,0)/HD(1,GPT,2051a2c4-274c-4564-8d21-f272138c9284,0x800,0x100000)..BO
Boot000D* UEFI: Seagate BUP Ultra Touch 0004 PciRoot(0x0)/Pci(0x1d,0x0)/USB(1,0)/USB(1,0)/USB(4,0)/HD(1,GPT,7149cebc-a872-4fa7-bf45-e75ea1672895,0xffff,0xefff1)..BO
Boot000E* UEFI: Seagate BUP Ultra Touch 0004 PciRoot(0x0)/Pci(0x1d,0x0)/USB(1,0)/USB(1,0)/USB(4,0)/HD(10,GPT,66537b42-4255-4eef-886f-7f0d54024f1f,0x803c8000,0x39fbc000)..BO
Boot000F* UEFI: Seagate BUP Ultra Touch 0004 PciRoot(0x0)/Pci(0x1d,0x0)/USB(1,0)/USB(1,0)/USB(4,0)/HD(12,GPT,eaa6938b-2fda-41b8-a307-6eaa95e594e4,0xba384000,0x3a98000)..BO
q5@q5-desktop:~$
답변1
1. 이것이 어떻게 가능합니까?
GRUB 부팅 메뉴 항목의 모든 텍스트는 텍스트일 뿐입니다. 이는 Linux 장치와 직접적인 관련이 없습니다. GRUB가 실행 중일 때 Linux 장치는아직 존재하지 않습니다. 디스크/파티션/부팅 가능한 OS 목록을 펌웨어/부트로더에서 커널로 전달하는 것이 반드시 도움이 되는 것은 아닙니다.Linux 커널이 펌웨어와 동일한 순서로 디스크를 감지한다는 일반적인 보장은 없습니다.
귀하와 같은 UEFI 시스템(파일 시스템으로 인해 /boot/efi
)에서 펌웨어는 UEFI NVRAM 변수의 정보를 기반으로 부트로더를 로드합니다. 를 사용하여 볼 수 있습니다 sudo efibootmgr -v
. 이러한 변수는 부팅을 위해 EFI 시스템 파티션(줄여서 ESP)과 그 안에 있는 파일을 식별하는 데 여러 가지 방법으로 사용될 수 있지만 아마도 가장 일반적인 방법은 PARTUUID 및 Windows 스타일 경로 이름을 사용하는 것입니다.
펌웨어가 부트로더를 로드하면 부트로더는 기본적으로 원하는 모든 작업을 수행할 수 있습니다. 일반적으로 GRUB는 수행할 작업과 표시할 메뉴를 알려주는 구성 파일을 읽습니다. 구성 파일의 위치는 a) 파일에 포함되거나 b) grubx64.efi
파일과 동일한 디렉터리에 있는 미니 파일에 의해 간접적으로 지정될 수 있습니다.grub.cfg
grubx64.efi
내부적으로 GRUB는 디스크 및 파티션 식별자(예: )를 사용합니다 (hd0,gpt1)
. 이에 대한 참조는 /dev/sd*
부팅 시 GRUB에 의미가 없습니다. 부팅 메뉴 항목에 Linux 장치 이름이 포함되어 있는 경우역사정보기껏해야 그리고바로 추측최악의 시나리오. GRUB에는 Linux 커널 및 initramfs 기능의 작은 하위 집합만 있으므로 GRUB 구성이 생성될 때 Linux 장치 이름이 어떻게 존재했는지 기록하는 것 외에는 아무것도 기록하지 않습니다.
Boot_repair에서 권장하는 복구를 수행한 경우 Boot_repair에서 생성된 구성 파일을 사용하여 Boot_repair에서 설치된 GRUB 버전을 호출하는 새 UEFI 부팅 변수가 추가되었을 수 있습니다. 이는 GRUB 인스턴스의 모든 배포를 효과적으로 다루기 때문에 시스템을 다시 부팅해야 할 때 도움이 될 수 있습니다... 하지만 Boot_repair에 의해 생성된 메뉴는 설치된 OS가 커널 업데이트를 받을 때 반드시 변경되지는 않습니다. 생성된 GRUB 구성과 같은 업데이트 Boot_repair를 통한 해결은 영구적인 해결 방법이 아니라 오히려임시 해결 방법메인 부트 로더를 관리해야 하는 멀티부팅 운영 체제와 다른 운영 체제/부트 로더를 메인 부트 로더에 연결하는 방법을 결정할 수 있습니다.
" grub
한 파티션에서 로드하고 OS가 실제로 다른 파티션에서 실행 중"은 실제로는 완전히 정상적인 상황일 수 있습니다.
- UEFI 시스템에서 펌웨어(또는 보안 부팅 심)는 ESP(Debian/Ubuntu에서는 일반적으로 다음 위치
/boot/efi
에 설치된 별도의 파일 시스템)에서 GRUB를 로드합니다. - GRUB는 하나 이상의 파일 시스템 위치에서 구성을 읽습니다. (일반적으로
/boot/grub
이는 Linux 루트 파일 시스템 또는 별도의/boot
파일 시스템의 일부일 수 있지만 물론 더 난해한 구성도 가능합니다.) - GRUB 구성은 GRUB에 커널 및 initramfs 파일을 읽을 위치와 커널에 제공하는 커널 부팅 매개변수를 지시합니다. 일반적으로 커널 및 initramfs 파일은 위치
/boot
하지만 사용자 정의 GRUB 구성을 사용하면 GRUB에서 지원하는 모든 파일 시스템에 위치할 수 있습니다. ) GRUB 및/또는 시스템 펌웨어). - 궁극적으로 initramfs의 내용에 따라 Linux 루트 파일 시스템으로 마운트되는 파일 시스템이 결정됩니다(대부분의 배포판의 initramfs 구현은 커널 부팅 옵션을 존중
root=
하지만 이를 완전히 무시하고 initramfs가 수행하도록 구성된 모든 작업을 수행할 수 있습니다).
2. "grub" 메뉴에서 이 항목을 수동으로 제거하려면 어떤 파일을 편집할 수 있습니까?
귀하가 이 문제를 파악하는 데 필요한 정보를 제공하지 않았기 때문에 우리는 이를 알 수 없습니다. 하지만 이 문제를 직접 해결하는 방법에 대한 몇 가지 조언을 드릴 수 있습니다.
첫째, 분명히 UEFI 시스템이 있으므로 운이 좋습니다. BIOS 부팅 시스템에서는 이것이 더 까다로울 수 있습니다.
로 시작하세요 sudo efibootmgr -v
. 이 줄은 시스템이 현재 상태에 도달하는 데 사용한 적절한 부팅 변수를 BootCurrent: NNNN
식별합니다 . BootNNNN
이 BootNNNN
줄은 다양한 형식을 취할 수 있지만 부트로더 파일을 로드한 ESP의 PARTUUID와 Microsoft 스타일의 부트로더 파일 경로 이름(ESP 파일 시스템의 루트에 상대적)이 포함될 수 있습니다. 를 사용하여 파티션의 PARTUUID를 볼 수 있습니다 . lsblk -o +partuuid
필요하지 않습니다 .sudo
부트로더 파일이 이면 shim과 동일한 디렉터리에서 로드됩니다 shimx64.efi
. grubx64.efi
부트로더 파일이 이면 grubx64.efi
보안 부팅 심 없이 직접 로드됩니다. grub.cfg
ESP와 동일한 디렉토리에 파일이 있으면 읽어보십시오. 대부분의 경우 실제 GRUB 구성이거나 GRUB에 실제 구성 파일이 있는 위치를 알려주는 미니 구성(아마도 파일 시스템 UUID를 사용함)일 것입니다 . 그리고 경로명. 파일 시스템을 보는 데 사용되는 파일 시스템 UUID입니다 lsblk -o +uuid
.
그러나 GRUB는 구성 파일 경로 이름을 grubx64.efi
바이너리에 포함하고 일부 모호한 위치를 가리킬 수 있습니다. 이 경우 strings grubx64.efi | grep -B 1 '^sbat,1,SBAT Version' | head -1
단서를 제공할 수는 있지만 GRUB 바이너리에서 초기 구성 파일 경로를 안정적으로 찾으려면 바이너리 데이터 구조를 구문 분석해야 하므로 이것이 작동한다고 보장할 수는 없습니다.
3. efibootmgr -v
출력 관점 에서
출력 에 따르면 efibootmgr -v
시스템에는 현재 3개의 개별 GRUB 인스턴스가 있을 수 있습니다(또는 있었을 수도 있습니다). 모두 ubuntu
BIOS 부팅 순서 메뉴에서 구별되지 않도록 이름이 지정되어 있습니다.
BootCurrent: 0005
시스템이 현재 Boot0005
다음 항목으로 시작되고 있음 을 나타냅니다 .
Boot0005* ubuntu HD(1,GPT,0621e243-4a24-4e6d-bdbb-cd02425977f8,0x800,0x100000)/File(\EFI\ubuntu\grubx64.efi)..BO
0621e243-4a24-4e6d-bdbb-cd02425977f8
여기에서 고유한 PARTUUID가 부트로더를 포함하는 EFI 시스템 파티션 이며 아마도 디스크의 첫 번째 파티션(GPT 파티션)일 것임을 알 수 있습니다 HD(1,GPT...
. 실행 lsblk -o +partuuid | grep -i 0621e243-4a24-4e6d-bdbb-cd02425977f8
하면 활성 부트로더가 포함된 디스크를 식별할 수 있습니다.
그렇다면아니요현재 실행 중인 Ubuntu 인스턴스에 디스크가 마운트되어 /boot/efi
있으면 내 이론이 맞습니다. 현재 sudo update-grub
마지막 실행에서 생성된 GRUB 구성 파일을 사용하여 다른 Ubuntu 인스턴스에서 GRUB로 부팅하고 있습니다.저것운영 체제 인스턴스. 해당 OS 인스턴스로 부팅하고 sudo update-grub
거기에서 실행한 다음 현재 OS로 다시 부팅하면 os-prober
현재 실행 중인 Ubuntu 인스턴스에 이제 5.15.0-50 커널이 있고 그에 따라 부팅 메뉴가 업데이트되었음을 인식하게 될 가능성이 높습니다.
그러나 현재 실행 중인 Ubuntu 인스턴스가 "기본" 인스턴스인 경우 해당 부트로더를 기본 인스턴스로 만들 수 있습니다. 이렇게 하려면 /boot/efi
현재 파일 시스템의 PARTUUID를 확인해야 합니다.
lsblk -o +partuuid |grep /boot/efi
BootNNNN
출력 에서 sudo efibootmgr -v
이 PARTUUID가 포함된 행을 찾습니다 . 그런 다음 sudo efibootmgr --bootorder NNNN,0005,0000,006,0009,000C,000D,000E,000F,000B,0002
NNNN에 BootNNNN
현재 /boot/efi
.
이는 일회성 작업이며, 성공하면 sudo update-grub
활성 부트 로더가 이 Ubuntu 인스턴스에서 정상적으로 업데이트되어야 하며 모든 커널 업데이트가 자동으로 GRUB 부팅 메뉴에 다시 표시되어야 합니다. 하지만, 그다른Ubuntu 인스턴스는 "부팅 메뉴의 기본 관리자" 역할과 커널 업데이트를 잃게 됩니다.저것sudo update-grub
Ubuntu 인스턴스는 실행될 때까지 시작할 수 없습니다.현재의우분투 인스턴스.
이렇게 변경한 후에는 GRUB 부팅 메뉴가 다른 부팅 가능한 운영 체제 인스턴스 목록을 다시 작성하기 위해 sudo update-grub
실행 되므로 크게 다르게 보일 수 있습니다 . os-prober
이렇게 하면 GRUB 메뉴에 존재하지 않는 파티션이 표시되는 문제가 해결될 수 있습니다. 그러나 "고스트" 인스턴스가 여전히 존재하는 경우 /boot/grub/grub.cfg
현재 Ubuntu 인스턴스에서 찾을 수 있으며 이를 사용자 정의하거나 스크립트를 선택하여 /etc/grub.d/30_os-prober
줄일 수 있습니다. 나열된 운영 체제 인스턴스 수입니다.
기본 운영 체제와 일치하는 GRUB 인스턴스를 기본 부트 로더로 성공적으로 생성한 후(위 지침 사용)만족스러울 정도로 그 효과를 테스트했습니다.BootNNNN
그런 다음 펌웨어 부팅 변수에서 추가 항목을 제거하는 데 사용하는 것을 고려할 수 있습니다 sudo efibootmgr --delete-bootnum -b NNNN
. 이는 최소한 펌웨어 부팅 순서 메뉴("BIOS 설정")의 혼란을 최소화합니다.