나는 "Essential Linux Device Drivers"라는 책을 읽기 시작했습니다. 나는 새로운 커널로 컴파일하고 부팅하는 과정을 따르고 있습니다. 하지만 새로 컴파일된 커널로 부팅할 수 없습니다. grub에서 새 커널을 선택했는데... 아무것도... 화면이 그대로 유지됩니다.
책에 설명된 대로 내가 취하고 있는 단계는 다음과 같습니다(책의 기반이 되는 커널 2.6.24를 사용하고 있습니다).
cd /usr/src/linux-2.6.24 # the base dir of the kernel I downloaded
make clean
cp arch/x86/configs/i386_defconfig .config
make bzImage
cp arch/x86/boot/bzImage /boot/vmlinuz
그 책은 이렇게 말합니다.
새 부팅 이미지가 도착하면 부트 로더에 경고해야 할 수도 있습니다. GRUB 부트 로더를 사용하면 이를 자동으로 파악합니다.
글쎄요, 제 경우에는 GRUB에 이 커널을 선택할 수 있는 옵션이 없었기 때문에 자동으로 계산되지 않았습니다. 그래서 터미널에 update-grub을 입력하여 수동으로 이 작업을 수행했습니다. 이것도 작동하지 않습니다. 그러나 파일 이름을 vmlinuz에서 vmlinuz-2.6.24로 변경하고 update-grub을 입력하면 이를 선택했습니다. 그래서 책 11페이지에는 많은 내용이 생략된 것 같습니다.
책에는 기계를 다시 시작하라고 나와 있습니다.
어쨌든, 이제 GRUB에서 이 커널을 선택할 수 있지만 위에서 말했듯이 제대로 부팅되지 않고 화면이 비어 있고 전혀 바뀌지 않습니다. 그럼 내가 뭔가를 놓치고 있는 걸까? 나는 책에 적힌 대로 정확하게 따랐다. 나는 이 책을 사는데 50유로를 썼는데 지금은 이 문제 때문에 11페이지를 넘길 수 없습니다.
VirtualBox에서 Ubuntu를 사용하는 것이 문제가 아닌 것 같나요? 방금 가상 머신 Ubuntu 부팅 중에 grub을 입력하고 새로 컴파일된 커널을 선택했는데 이것이 어떻게 문제가 될 수 있는지 이해가 되지 않습니다.
답변1
Ubuntu에는 설치를 수행하는 Debian에서 가져온 스크립트가 있습니다. 커널을 컴파일하고 실행하면 sudo make modules_install install
커널이 올바르게 설치됩니다.
나중에 편집:여기Ubuntu와 Debian에서 사용하는 스크립트입니다. 위의 설치 명령을 실행하고 배포판별 설치를 수행하면 커널 Makefile에 의해 자동으로 호출됩니다.
답변2
grub.conf 파일에는 다음과 유사한 항목이 있어야 합니다.
title My Linux Kernel
root (hd0,0)
kernel /boot/gentoo-kernel root=/dev/sda1
귀하의 우분투 커널에는 비슷한 것이 있을 수 있습니다
initrd /boot/initrd.img
하드웨어에서 커널을 컴파일할 때는 필요하지 않습니다. 이로 인해 문제가 발생할 수 있습니다.
grub.conf 파일에 대한 의견을 보내주시면 제가 살펴보겠습니다. 그렇지 않으면 구성이 원인일 수 있습니다.
이전 커널에는 새 하드웨어에 필요한 드라이버가 없을 수도 있습니다.
최신 우분투 시스템은 이전 커널 버전으로 원활하게 되돌릴 수 없습니다.
해당 커널 버전에 가까운 이전 버전의 우분투나 kernel.org의 최신 커널 버전을 실행해 볼 수 있습니다.
답변3
각 Linux 배포판에는 고유한 패키지 배포 메커니즘과 전략이 있습니다. 이는 커널과 동일합니다. 대부분의 배포판은 주로 바이너리 패키지를 제공하는 도구를 사용하여 컴파일 프로세스를 숨깁니다.
특정 Linux 배포판에서 사용자 정의 커널을 컴파일하려면 시스템을 손상시키지 않고 원하는 방식으로 컴파일하는 방법에 대한 이 배포 가이드를 따라야 합니다.
Ubuntu에는 고유한 방식이 있습니다. Achlinux도 동일하고, Redhat도 동일하며, Gentoo도 동일합니다.
Ubuntu의 경우 여기 문서를 따르십시오.https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel