커널을 업그레이드할 때 GRUB/GRUB2 메뉴에 N개의 최신 커널 버전을 자동으로 포함합니다.

커널을 업그레이드할 때 GRUB/GRUB2 메뉴에 N개의 최신 커널 버전을 자동으로 포함합니다.

Ubuntu에서 제가 좋아하는 한 가지 점은 GRUB 메뉴를 사용하면 부팅 시 항상 최신(기본값) 또는 두 번째 최신(등) 커널 버전을 선택할 수 있다는 것입니다.

Arch Linux에서는 기본적으로 이 작업을 수행할 수 없습니다. 유일한 옵션은 스톡 이미지와 대체 이미지이며 둘 다 최신 커널을 부팅합니다. Arch에서 Ubuntu와 같은 동작을 달성하는 방법은 무엇입니까? 저는 Grub과 Grub2를 사용하지만 부트로더를 너무 많이 구성할 필요는 없을 것 같습니다. /boot메뉴에 있는 이미지가 자동으로 포함될 수 있습니다 . 그러나 나는 틀릴 수 있습니다.

따라서 가장 중요한 것부터 가장 덜 중요한 것까지 나에게 필요한 것은 다음과 같습니다.

  1. 업그레이드 중에 생성된 새 커널 이미지는 mkinitcpio이전 커널 이미지를 덮어쓰지 않습니다.
  2. 최신 커널은 부트로더 메뉴의 기본 옵션으로 나타납니다.
  3. 아주 오래된 버전은 메뉴에서 제외되거나 "이전 버전" 메뉴 항목에 숨겨집니다.(그다지 중요하지 않음).

사람들은 무엇을 할 것인가? 구성을 살펴봐야 할까요 ? mkinitcpio아니면 pacman구성을 살펴봐야 할까요? 실제로 두 가지 모두에 대한 구성 파일을 살펴보았지만 지금까지는 전혀 모릅니다.

답변1

다음 오류가 표시되었습니다. https://bugs.archlinux.org/task/16702#comment80122

그리고 이 블로그 게시물은 다음과 같습니다. http://losing Generation.homelinux.org/2009/10/16/why-arch-linuxs-kernel-upgrades-suck/

지금까지 좋은 해결책을 찾지 못했지만 찾으면 업데이트하겠습니다.

grub, 커널, initrd 외에 기억해야 할 한 가지는 /usr/lib/modules/입니다. Linux 패키지가 업데이트되면 이전 패키지는 /usr/lib/modules/의 폴더를 제거하고 새 커널은 새 모듈을 추가합니다. 두 코어가 모두 작동하려면 두 모듈 세트가 모두 필요합니다. /usr/src/에는 커널 헤더 파일(Nvidia 드라이버와 같은 새 모듈을 빌드하는 데 필요함)이 포함되어 있으므로 해당 파일도 유지하는 것이 좋습니다.

제가 추측하는 단계는 다음과 같습니다.
1. Linux 소프트웨어 패키지가 곧 업그레이드될 것임을 감지합니다.
2. 제거 중에 삭제할 콘텐츠를 백업합니다(/usr/src/$(uname -r), /usr/lib/modules/$(uname -r), /boot/{vmlinuz-linux,initramfs-linux. img, initramfs-linux-fallback.img})
3. pacman이 업그레이드를 수행하도록 합니다
. 4. 2에서 모든 것을 복원합니다(/boot에 새 이름을 지정할 수도 있습니다
. 5. grub 등을 편집합니다.

대체 단계(별로 좋지 않음)
1. pacman을 업데이트하도록 합니다.
2. 커널이 업데이트되었는지 확인합니다
. 3. /var/cache/packman/pkg/linux-${previous_version}-pkg.tar에서 /usr/src/를 추출합니다. xz, /usr/lib/{modules,extramodules} 및 /boot/vmlinuz(분명히 /boot의 이름이 변경됨)
4. -k 옵션과 함께 mkinitcpio를 실행하여 이전 init를 빌드합니다.
5. grub 등을 편집합니다.

이 대안에서는 타사 모듈(VM, ATI/Nvidia 등)이 손실되지만 cron에서 실행하고 발생한 커널 업데이트를 자동으로 감지할 수 있습니다.

답변2

내가 기억하는 한 최신 커널은 항상 /boot/grub/grub.conf 파일의 첫 번째 커널입니다. 첫 번째 항목을 자동 로드하려면 grub.conf 상단에 다음 두 줄을 입력해야 합니다.

default         0
timeout         1

그럽 로더 대기 timeout시간(초)입니다. default커널 목록의 x 커널 입니다 .

About mkinitcpio: 쉬운 방법은 없는 것 같아요. 하지만 마지막 커널은 부팅 시 항상 사용할 수 있고 최신 커널은 항상 grub.conf의 위치 0에 있다고 생각합니다.

관련 정보