시스템 외부에서 Linux 커널 교체

시스템 외부에서 Linux 커널 교체

하드웨어 컨트롤러와 함께 (SD 카드에서) 작동하는 특정 우분투 이미지가 있습니다. 전체 이미지는 카드 크기에 따라 2GB가 필요합니다. 이미지는 이전 커널을 기반으로 구축되었습니다. 오래된 마더보드는 더 이상 사용할 수 없고 새로운 적절한 마더보드는 오래된 커널과 호환되지 않기 때문에 마더보드를 교체해야 합니다. 그리고 가장 중요한 것은 (개발자를 변경할 때 특정 혼란으로 인해) 이미지의 루트 암호가 취소할 수 없게 손실된다는 것입니다. 즉, 내부에서 문명화된 방식으로 커널을 교체하면 작동하지 않습니다. 질문: 시스템 외부에서 나머지 부분을 변경하지 않고 단순히 랩톱의 기존 이미지로 카드를 다시 작성하여 커널을 변경할 수 있습니까? 그렇지 않은 경우 전체 간소화되고 디버깅된 이미지를 다시 빌드해야 하는데, 저는 이를 피하고 싶습니다.

답변1

첫째, 작업 복사본을 사용하지 말고 백업 복사본을 만들어서 뭔가 잘못될 경우를 대비해 사용하는 것은 아무리 강조해도 지나치지 않습니다.

이것은 작동하지 않을 수도 있지만 최선의 방법입니다.

커널은 시작하기 위해 /boot의 파일에 의존합니다.

System.map-4.19.1-1-default
.vmlinuz-4.19.4-1-default.hmac
config-4.19.4-1-default
initrd-4.19.1-1-default
initrd is symlinked to above
symvers-4.19.1-1-default.gz
sysctl.conf-4.19.1-1-default
vmlinux-4.19.1-1-default.gz
vmlinuz symlink to below
vmlinuz-4.19.4-1-default

새 버전의 이러한 파일이 모두 필요합니다. 분명히 대부분의 파일 이름에는 버전 번호가 포함되어 있으며 사용 중인 커널 버전에 따라 다릅니다.

/lib/modules/ 내부에는 각 커널 버전에 대한 일련의 폴더가 있습니다. 예를 들어:

4.19.4-1-default

이 폴더의 모든 모듈을 복사해야 합니다.

마지막으로 이 새 파일을 가리키도록 grub 또는 grub2 파일을 수정해야 합니다.

  1. SD 카드를 백업하고 백업 복사본을 사용하세요.
  2. 기존 마더보드가 UEFI가 아닌 경우 새 마더보드에서 이를 비활성화합니다. 그렇지 않으면 문제가 발생합니다.
  3. 다른 SD 카드/HDD 구입
  4. 사용하고 있던 배포판의 최신 버전을 설치하십시오.
  5. /boot 및 /lib/modules/를 OS 백업 복사본의 적절한 위치에 복사합니다. 존재하는 경우 /usr/lib/bootloader도 복사해야 합니다.
  6. 부팅하고 무슨 일이 일어나는지 확인하십시오.

아마도 추가적인 호환성 문제가 있을 것입니다. 가장 큰 위험은 훨씬 더 발전하여 initd에서 systemd 또는 기타 주요 변경으로 전환하는 것입니다.

사용하고 있는 배포판의 버전을 확인하고 한 가지 버전만 더 높은 버전으로 시작하는 것이 좋습니다. 설치에 실패하면 한 번에 한 버전씩 앞으로 나아갈 수 있습니다.

부팅 가능한 시스템이 있는 경우 apt-get 등을 사용하여 적절한 매너에서 전체 배포판 업그레이드를 수행하는 것이 좋습니다.

관련 정보