kernel.org 커널을 별도의 파티션에 컴파일 및 설치한 후 듀얼 부팅을 설정하는 방법

kernel.org 커널을 별도의 파티션에 컴파일 및 설치한 후 듀얼 부팅을 설정하는 방법

해당 질문:kernel.org 커널을 컴파일하고 디스크의 사용자 정의 볼륨에 설치합니다.내 질문에 부분적으로 답변하지만 완전히는 아닙니다!

30GB 용량의 디스크가 있습니다. 2개의 파티션이 있습니다

  • 2GB 파티션( /dev/sda1)에 Debian이 포함되어 있습니다.
  • 28GB 파티션( /dev/sda2)이 완전히 비어 있습니다(포맷됨, 파일 시스템은 ext4).

kernel.org 커널(https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.10.78.tar.xz) /dev/sda2그리고 내 데비안과 새 커널 사이에 이중 부팅을 설정합니다.

지금까지:

두 번째 파티션을 (예:)에 마운트 하고 /mnt그 안에 mount /dev/sda2 /mnt디렉터리를 만들었습니다 (즉, 해당 디렉터리가 있습니다)./src/mnt/src

언제 /mnt/src,

커널을 다운로드하고 압축을 풀었습니다.

wget --no-check-certificate https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.10.78.tar.xz
unxz -v linux-5.10.78.tar.xz
tar xvf linux-5.10.78.tar

또한 커널을 컴파일하고 설치하는 데 필요한 도구도 설치했습니다.

apt-get update
apt-get install build-essential libncurses-dev bison flex libssl-dev libelf-dev

당자이/mnt/src/linux-5.10.78

기존 데비안 커널 구성을 현재 디렉터리(예: cp -v /boot/config-$(uname -r) .config)에 복사하고 실행했습니다 make olddefconfig(기존 구성을 사용하고 다른 모든 항목에는 기본값을 제공하는 것이 아이디어였습니다). . 도중에 클릭했기 Avoid speculative indirect branches in kernel때문에 해당 옵션 도 선택 취소했습니다 .You are building kernel with non-retpoline compiler, please update your compiler.. Stop.make

그런 다음 make -j 4다시 달려가서 끝날 때까지 기다렸습니다.

그 후, INSTALL_MOD_PATH=/mnt INSTALL_PATH=/mnt/boot make modules_install위에 링크된 질문에 제안된 대로 필요한 모듈 설치를 실행했습니다.

내 문제는 이제 실행하면 폴더를 update-initramfs찾을 수 없기 때문에 실패한다는 것입니다 . /lib/modules/5.10.78분명히 이것은 사실입니다 /mnt/lib/modules/5.10.78. 옵션을 사용하여 다른 루트 경로를 제공하려고 시도했지만 -b작동하지 않았습니다. 나는 또한 그것을 시도했지만 실제로 chroot필요한 설정/실행 파일이 없습니다./mntchroot

위의 "수정" 후에는 실행에서 update-grub커널 이미지, 부팅할 루트 파일 시스템 및 구성 파일을 검색하고 재부팅 후 두 가지 부팅 옵션(Debian 및 새 커널)을 갖도록 모든 것을 설정할 수 있기를 원합니다. ) .

이 두 가지 모두에 대한 도움과 나중에 실제 grub 구성에 대한 도움을 주시면 update-initramfs감사하겠습니다! 여기저기서 링크를 찾았지만 항상 프로세스에 대한 높은 수준의 개요입니다.

답변1

최소한의 데비안 시스템을 설치하는 가장 쉬운 방법 중 하나는 debootstrap bullseye /mnt찾고 있는 버전과 /mnt설치하려는 경로를 확인하는 것입니다.

코어가 필요하며 프로세스가 올바른 것 같습니다. 복잡한 부팅 시퀀스에만 Initramfs 또는 initrd가 필요합니다. 일반적으로 RAID 배열의 루트 디렉터리입니다. 내 서버에는 아무 것도 없고 잘 작동합니다. (루트 파일 시스템 유형은 모듈로 컴파일되지 않고 커널에 내장되어야 합니다.)

또한 일반적으로 다음을 포함해야 합니다 /boot/grub/grub.cfg.


menuentry "Alternate Debian , kernel 5.10.78" {
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos2'
        linux   /boot/vmlinuz-5.10.78 root=/dev/sda2 ro  
}

insmod part_msdos이전 파티션 구성표가 있는 경우 필요합니다. UEFI 시스템에서는 이어야 하는데 잘 insmod part_gpt모르겠습니다. insmod ext2grub이 ext2(또는 ext4) 파일 시스템을 읽을 수 있도록 허용합니다. set root=grub에게 /boot/vmlinuz-5.10.78을 검색해야 하는 파티션을 지시하고(실제 이름을 확인하세요. 다를 수 있음), linux부팅해야 할 커널을 지정하고, root=/dev/sda2향후 루트 디렉터리를 지정하세요.

정말로 더 작은 대체 시스템을 원한다면 Gentoo가 더 나은 방법일 수도 있지만 저는 이름만 알고 있습니다. 로 시작해야 합니다 debootstrap.

관련 정보