해당 질문: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
필요한 설정/실행 파일이 없습니다./mnt
chroot
위의 "수정" 후에는 실행에서 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 ext2
grub이 ext2(또는 ext4) 파일 시스템을 읽을 수 있도록 허용합니다.
set root=
grub에게 /boot/vmlinuz-5.10.78을 검색해야 하는 파티션을 지시하고(실제 이름을 확인하세요. 다를 수 있음), linux
부팅해야 할 커널을 지정하고, root=/dev/sda2
향후 루트 디렉터리를 지정하세요.
정말로 더 작은 대체 시스템을 원한다면 Gentoo가 더 나은 방법일 수도 있지만 저는 이름만 알고 있습니다. 로 시작해야 합니다 debootstrap
.