Alpine Linux: virt 커널을 설치한 후 커널 부팅 순서를 안전하게 변경하는 가장 좋은 방법은 무엇입니까?

Alpine Linux: virt 커널을 설치한 후 커널 부팅 순서를 안전하게 변경하는 가장 좋은 방법은 무엇입니까?

-vanilla 커널을 제거하는 것이 더 낫습니까, 아니면 부팅 설정을 보존하고 수정하는 것이 더 낫습니까? 그렇다면 OS가 파일을 업데이트할 때 파일을 잃지 않는 가장 좋은 방법은 무엇입니까 extlinux.cfg?

얼마 전 저는 개인 용도로 Wireguard 서버를 호스팅하기 위해 Alpine 3.12 Edge VM을 배포했습니다. 최근에 패키지 업데이트(정기 보안 패치 등)를 했는데 apk최신 버전의 linux-vanilla가 설치되어 Wireguard 지원이 중단되었습니다. RTNETLINK 오류가 많습니다. modprobewireguard가 만족스럽지 않으며 패키지 설치에서 기존 wireguard 모듈을 로드할 수 없습니다. 매우 지저분합니다.

따라서 나는 Wireguard 지원이 포함된 버전 5.4를 얻기 위해 linux-virt 커널로 측면 업그레이드하기로 결정했습니다. apk add linux-virt5.4.38-0-virt(2020년 5월 4일 빌드)를 설치하는 Ran 은 정말 훌륭합니다. 그런데 시작 기본값을 변경하는 방법은...?

커널을 업데이트하고 Wireguard가 작동하도록 했을 때 콘솔을 통해 수동으로 재정의했습니다. 그리고 오늘 오전에 VM을 다시 시작할 때까지 부팅 순서 문제를 해결하지 못했다는 사실을 잊어버렸습니다. 여전히 최선의 해결책을 찾을 수 없습니다.

  • 기본 부팅을 무시하고 -virt를 지정하면 커널이 제대로 작동합니다. 그러나 어떤 이유로 VM을 재부팅하면 extlinux는 기본적으로 -vanilla 커널로 설정됩니다. 이는 작동하지 않습니다.
  • 분해에도 불구하고 수정된 cfg는 Alpine 프로그램에 의해 자동으로 업데이트될 /boot/extlinux.cfg수 있으므로 수동으로 수정하고 싶지 않습니다 .update-extlinux
  • extlinux.cfg의 기본 옵션은 menu.c32.cfg에 포함된 메뉴를 렌더링하는 syslinux 모듈을 가리킵니다. GUI 부팅 선택 메뉴를 잃고 싶지 않지만 구성 파일의 순서를 수동으로 수정하지 않고(향후 OS가 파일을 업데이트할 때마다 순서를 잃지 않고) 기본 커널을 업데이트하는 방법을 모르겠습니다.

저는 이 Alpine VM을 배포 사양에 최대한 가깝게 유지하고 싶습니다. 거의 건드리지 않기 때문에 사용할 때마다 다시 배워야 합니다. 꼭 필요한 경우가 아니면 extlinux를 변경하지 않는 편이 낫겠지만, extlinux가 내가 원하는 것을 제공합니까?

또한 설치된 패키지를 정리하는 동안 apk del linux-vanilla이것을 실행했는데 87개의 펌웨어 패키지도 제거되었습니다. 다시 설치하기로 결정하고 무엇을 해야할지 결정했습니다 ...

이것은 가상 머신이기 때문에 이것이 필요하지 않을 것으로 예상하지만 설치에 해를 끼치지 않고 실제로 -vanilla 커널과 관련 펌웨어 패키지를 제거할 수 있는지 혼란스럽습니다.

추가 펌웨어 패키지를 위해 설치된 일반 커널을 유지하고 부팅 시 -virt 커널을 덮어써야 합니까? 아니면 apk del linux-vanilla펌웨어 패키지를 설치하지 않음으로 인한 다른 부작용 없이 linux-virt 5.4 LTS 커널이 무기한 작동하도록 하는 것이 가능할까요 ? 목록을 스캔한 후 내 인스턴스는 삭제하려는 항목을 사용하지 않는 것으로 보이지만 삭제하면 어떤 의도하지 않은 결과가 발생할 수 있는지 잘 모르겠습니다.

FWIW, 원래 Wireguard 문제를 해결하는 과정에서 시스템이 설치/업그레이드되었습니다.

  • linux-vanilla-4.19.118-r0
  • linux-virt-4.19.118-r0
  • linux-vanilla-dev-4.19.118-r0
  • linux-virt-5.4.38-r0(현재 실행 중)

수정하는 가장 좋은 방법에 대해 상대적으로 초보자인 질문을 양해해 주시기 바랍니다. 인터넷을 검색했지만 update-extlinux특히 호환 가능한 방식으로 extlinux 부팅 화면을 수정하는 데 대한 문서가 부족한 것 같습니다. 아니면 내 Google Fu가 나를 버렸을 수도 있습니다…

답변1

최선의 접근 방식은 귀하의 요구 사항에 달려 있다고 생각합니다. 저는 Alpine 사용자가 아니기 때문에 완전한 답변을 드릴 수 없습니다. 하지만 비슷한 문제를 해결한 방법은 다음과 같습니다.

실시간 커널로 데비안을 실행하는 임베디드 시스템이 있습니다. 일반 커널은 버전 번호가 약간 더 높은 경향이 있으므로 추가 작업 없이 부팅할 기본 커널이 됩니다. 내 임베디드 컴퓨터에서 일반 커널을 부팅하면 산업 환경에서 보호 메커니즘으로 인해 시설이 종료될 수 있는 미묘한 타이밍 문제가 발생할 수 있습니다. 누군가 자신의 실수를 인지하지 못한 채 잘못된 커널을 부팅할 수 있는 상당한 위험이 있습니다. 그래서 이 경우에는 이 컴퓨터에서 모든 일반 커널 패키지를 제거하기로 결정했습니다. 일반적으로 나는 메인 커널을 업그레이드한 후 문제가 발생할 경우를 대비해 두 번째 커널을 백업용으로 갖고 싶지만 이 경우에는 엉망인 시스템을 몇 분 안에 자동으로 다시 설치할 수도 있었습니다. 따라서 이러한 시스템에 일반 커널을 설치하는 데 따른 위험이 이점보다 더 크다고 생각합니다.

저는 부트로더 구성이 간단하고 안정적이기를 원하기 때문에 이를 망치지 않기로 결정했습니다. 그리고 구성 관리 시스템이 부트로더 구성을 수정하도록 허용하는 것은 그 자체의 위험을 수반합니다.

가상 환경에서는 정기적으로 백업을 생성할 수 있으므로 사용하지 않을 커널을 간단히 제거하고 싶을 수도 있습니다. 데비안은 항상 최신 실시간 커널(예: linux-image-4.19.0-8-rt-amd64)에 의존하는 linux-image-rt-amd64라는 가상 패키지를 제공합니다. 이 더미 패키지를 설치하고 linux-image-amd64("rt" 제외)를 제거하겠습니다. 이는 자동화/문서화하기 쉽습니다. 알파인에 wireguard-virt의존하는 것 같지만 linux-virt의존하지 않습니다 linux-vanilla. 따라서 apk del linux-vanilla펌웨어 패키지가 함께 삭제되는 것에 대해 너무 걱정하지 않는 것이 좋습니다(만일의 경우를 대비해 VM의 스냅샷을 반드시 생성하세요).

답변2

나는 이것이 오래된 질문이라는 것을 알고 있지만 아직 답변을 받지 못했습니다. 나 역시 이 문제를 겪었고 마침내 해결했습니다.

/etc/update-extlinux.conf, 줄 을 바꾸세요

default=<...>

원하는 기본값이 무엇이든 제 경우에는 변경해야 했습니다.

default=virt

도착하다

default=edge

그런 다음 update-extlinux.

관련 정보