kernel.org 커널을 컴파일하고 디스크의 사용자 정의 볼륨에 설치합니다.

kernel.org 커널을 컴파일하고 디스크의 사용자 정의 볼륨에 설치합니다.

/dev/sda5kernel.org 커널을 현재 Ubuntu 디렉토리와 병합하는 대신 사용자 정의 HDD 볼륨에 컴파일하고 설치하고 싶습니다 .

웹 전체에서 구성 및 컴파일 프로세스에 대한 정보를 찾을 수 있지만 커널을 사용자 정의 볼륨(컴파일할 때 사용한 부팅 배포판과 다름)에 배치하는 방법에 대한 추적은 없습니다. 내가 묻는 것은 1개의 HDD에 있는 2개의 다른 볼륨에 2개의 다른 배포판을 설치하고 이제 내 사용자 정의 커널을 다른 배포판으로 처리하는 방법입니다.

답변1

홈 디렉터리를 포함하여 원하는 곳 어디에서나 커널을 컴파일할 수 있습니다. 빌드 트리 외부의 디렉토리가 수정되는 유일한 시간은 대상 중 하나를 생성할 때입니다 install*. 따라서 커널을 설치하려면 다음과 같은 분명한 작업을 수행해야 합니다.

cd $SOME_DIRECTORY
tar -xjvf linux-$VERSION.tar.bz2
cd linux-$VERSION
make mrproper menuconfig
# Configure the kernel here.
# Now build it using all your CPU threads in parallel.
make -j$(grep -c processor /proc/cpuinfo) bzImage modules

커널을 구성한 후 빌드됩니다. 이 시점에서 Arch/$YOUR_ARCHITECTURE/boot/bzImage 아래에 커널 바이너리(vmlinux)와 부팅 가능한 커널 이미지가 생성됩니다.

모놀리식 커널을 구축했다면 완료된 것입니다. 압축되지 않은 파일( vmlinux) 또는 압축 파일( bzImage)을 원하는 볼륨에 복사하고 필요에 따라 부팅 관리자를 구성하면 됩니다.

모듈을 설치해야 하고 대상 볼륨이 /mnt에 마운트되어 있다고 가정하면 다음과 같이 말할 수 있습니다.

INSTALL_MOD_PATH=/mnt \
INSTALL_PATH=/mnt/boot \
make modules_install

그러면 커널 이미지가 에 /mnt/boot, 모듈이 에 복사됩니다 /mnt/lib/modules/$VERSION.

지나치게 단순화했다는 점에 유의하시기 바랍니다. 커널을 수동으로 구축하는 데 도움이 필요하면 커널 소스 트리 하위 디렉터리에 있는 일부 문서를 읽어야 합니다 Documentation/. 파일 README에는 빌드 및 설치 방법도 자세히 설명되어 있습니다.

하지만 커널을 부팅하는 것은 또 다른 이야기입니다. 대부분의 최신 배포판은 나머지 커널(블록 장치, 파일 시스템, 네트워크 등)을 부팅하는 데 필요한 하드웨어 드라이버 호스트가 포함된 초기 RAMdisk 이미지를 사용합니다. 이 프로세스에서는 이 이미지가 생성되지 않습니다. 무엇을 해야 하는지에 따라 다릅니다(무엇을하다뭘하길 원해? ), 기존 도구 체인을 사용하거나 배포 도구 체인을 사용하여 새 도구 체인을 만들 수 있습니다. 에 대한 설명서를 확인해야 합니다 update-initramfs.

그러나 다른 문제도 있습니다. 표준 툴체인을 사용하면 다른 아키텍처나 하위 아키텍처용 커널을 컴파일할 수 없습니다. 어떤 경우에는 특정 유형의 x86 시스템에서 컴파일된 커널이라도 다른 유형의 x86 시스템에서는 실행되지 않을 수 있습니다. 이는 모두 하위 아키텍처와 커널 구성의 조합에 따라 달라집니다. 적절한 크로스 컴파일 툴체인이 설치되어 있지 않으면 크로스 아키텍처 컴파일(예: x86 시스템에 ARM 코어 구축)이 완전히 불가능합니다.

그러나 다른 설치나 시스템을 복구하려는 경우 이와 같은 사용자 정의 커널을 구축하는 것보다 복구 디스크가 더 편리할 수 있습니다.

한 가지 더: 컴파일 중인 컴퓨터와 동일한 아키텍처를 갖고 Debian 또는 Debian 계열 OS(Ubuntu도 포함)를 실행하는 다른 부팅 컴퓨터용 커널을 빌드하려는 경우 installPackage kernel-package( sudo aptitude install kernel-package)를 사용할 수 있습니다. 그런 다음 cd소스 트리의 루트에 커널의 압축을 풀고 다음과 같이 말합니다.

CONCURRENCY_LEVEL=$(grep -c processor /proc/cpuinfo) \
sudo make-kpkg --initrd binary-arch

그러면 필요한 패치가 적용되고, 커널이 구성되고, 빌드되어 .deb 패키지(실제로는 여러 패키지)로 패키징됩니다. 당신이 해야 할 일은 대상 시스템에 설치하는 것뿐입니다. 그러면 작업이 완료됩니다.

관련 정보