GRUB 명령줄. 수동으로 시작해야 합니다.

GRUB 명령줄. 수동으로 시작해야 합니다.

내 Pop!_OS 시스템을 업데이트하는 동안 내 그럽이 손상되었습니다. 파티션을 다시 작성하고, grub 설치, 부팅 복구 등 모든 것을 시도했습니다.

음, 다음 줄을 입력하여 시작할 수 있습니다.

set prefix=(hd1,gpt3)/boot/grub
set root=(hd1,gpt3)
insmod normal
normal

하지만 GRUB이 이 작업을 자동으로 수행하도록 할 수는 없습니다. "그렇게 나쁘다"는 것은 아니지만 시작할 때마다 이런 것들을 입력해야 한다는 것은 확실히 짜증나는 일입니다.

이 항목을 다시 "자동화"하는 데 사용할 수 있는 구성 파일이 있습니까? 귀하의 조언에 감사드립니다!

**

편집: update-grub, grub-install을 시도했습니다. 다양한 방법이 있지만 이해가 되지 않습니다.

**

다음은 몇 가지 기본 정보입니다.

커널: 5.19.0-76051900-일반

분할:

/dev/md0p3       /
/dev/md0p4       /home
/dev/md0p1       /boot/efi

이것은 내 /boot 디렉토리의 트리입니다:

.
├── config-5.18.10-76051810-generic
├── config-5.19.0-76051900-generic
├── efi
│   ├── EFI
│   │   ├── BOOT
│   │   │   ├── bkpbootx64.efi
│   │   │   └── bootx64.efi
│   │   ├── pop
│   │   │   ├── grub.cfg
│   │   │   └── grubx64.efi
│   │   ├── pop_os
│   │   │   ├── grub.cfg
│   │   │   └── grubx64.efi
│   │   └── Pop_OS-f8340379-32a0-45b0-82fa-f157f426bd50
│   │       ├── cmdline
│   │       ├── initrd.img
│   │       ├── initrd.img-previous
│   │       ├── vmlinuz.efi
│   │       └── vmlinuz-previous.efi
│   └── loader
│       ├── entries
│       │   ├── Pop_OS-current.conf
│       │   └── Pop_OS-oldkern.conf
│       └── loader.conf
├── grub
│   ├── fonts
│   │   └── unicode.pf2
│   ├── grub.cfg
│   ├── grubenv
│   ├── locale
        # Tons of locale-files
│   │   └── zh_TW.mo
│   ├── unicode.pf2
│   └── x86_64-efi
│       #Tons of .mod files
│       ├── xzio.mod
│       ├── zfscrypt.mod
│       ├── zfsinfo.mod
│       ├── zfs.mod
│       └── zstd.mod
├── grub.bak
│   ├── grub.cfg
│   └── grubenv
├── initrd.img -> initrd.img-5.19.0-76051900-generic
├── initrd.img-5.17.5-76051705-generic-nouveau
├── initrd.img-5.18.10-76051810-generic
├── initrd.img-5.19.0-76051900-generic
├── initrd.img.old -> initrd.img-5.18.10-76051810-generic
├── System.map-5.18.10-76051810-generic
├── System.map-5.19.0-76051900-generic
├── vmlinuz -> vmlinuz-5.19.0-76051900-generic
├── vmlinuz-5.18.10-76051810-generic
├── vmlinuz-5.19.0-76051900-generic
└── vmlinuz.old -> vmlinuz-5.18.10-76051810-generic

답변1

먼저 다음을 입력하여 루트로 새 grub cfg 파일을 생성하는 것이 좋습니다.

grub2-mkconfig –o /boot/grub2/grub.cfg

그런 다음 다시 루트 사용자로

update-grub2

참고: update-grub2존재하지 않는 경우 사용update-grub

답변2

새로 설치된 커널에 대한 새 부팅 옵션을 정의하려면 루트 액세스 권한이 있는 (/boot/loader/entries) 디렉터리로 이동하여 .conf 확장자를 가진 새 파일을 만들고 파일 이름을 커널과 동일한 이름의 A 파일로 지정합니다. . 새로 설치된 커널(예: ef8547eded9a4d-5.19.0-76051900-generic.conf)

그런 다음 원하는 설정을 파일에 기록합니다.

다음은 설정 예시입니다.

title PopOs(Workstation)

version 5.19.0-76051900-generic

linux /vmlinuz-5.19.0-76051900-generic

initrd /initrd.img-5.19.0-76051900-generic

options root=UUID=52d3d64b-5de1-4483-9fd9-e171b7acdbe9 ro 

resume=UUID=0cb3dec1-cce5-46d6-89b6>

grub_users $grub_users

grub_arg --unrestricted

답변3

USB 디스크에 Xubuntu 배포판을 만들려고 할 때 이런 일이 발생했습니다. 위에 제공된 옵션을 시도했지만 sudo update-grub작동하지 않습니다. 해결 방법은 제안한 명령을 사용하여 Linux를 부팅하는 것이었지만 루트 파티션은 (hd2,gpt2)였고 그런 다음 grub 부트로더를 다시 설치해야 했습니다. 나는 lsblk내 부팅 장치의 이름을 찾은 /dev/nvme1n1다음 설치 명령을 사용했습니다.

sudo grub-install --boot-directory=/boot /dev/nvme1n1

grub 명령줄에서 Linux를 부팅하는 데 어려움이 있는 경우 이 모든 작업을 라이브 Ubuntu USB 디스크에서도 수행할 수 있기를 바랍니다(디스크가 많으면 올바른 디스크를 찾는 것이 까다로울 수 있음). 하드 디스크를 마운트하고 시작 디렉토리의 마운트 위치를 가리키도록 명령을 변경할 수 있습니다.

관련 정보