리눅스는 왜 커널을 컴파일합니까?
이유: 새 커널은 이전 커널의 버그를 수정하고 많은 새로운 기능을 추가했습니다. 사용자가 이러한 새로운 기능을 사용하거나 자신의 시스템에 따라 보다 효율적이고 안정적인 커널을 사용자 정의하려는 경우 Linux 커널을 사용하면 됩니다. 다시 컴파일해야 합니다. 일반적으로 최신 커널은 더 많은 하드웨어를 지원하고, 더 나은 프로세스 관리 기능을 갖추고, 더 빠르고 안정적으로 실행되며, 일반적으로 이전 버전에서 발견된 많은 취약점을 수정합니다. 이는 Linux 사용자에게 필요한 작업 내용입니다. .
이 튜토리얼의 운영 환경: Ubuntu 18.04 시스템, Dell G3 컴퓨터.
Linux 커널을 컴파일하는 이유는 무엇입니까?
새 커널은 이전 커널의 버그를 수정하고 많은 새로운 기능을 추가합니다. 사용자가 이러한 새로운 기능을 사용하거나 보다 효율적이고 안정적인 커널을 자신의 시스템에 맞게 조정하려면 Linux 커널을 다시 컴파일해야 합니다.
일반적으로 업데이트된 커널은 더 많은 하드웨어를 지원하고, 더 나은 프로세스 관리 기능을 갖추고, 더 빠르고 안정적으로 실행되며, 일반적으로 이전 버전에서 발견된 많은 취약점을 수정하므로 최신 커널로 자주 업그레이드하도록 선택하세요. Linux 사용자에게 필요한 운영 콘텐츠.
커널 컴파일 구성 옵션을 정확하고 합리적으로 설정하여 시스템에 필요한 기능에 대한 코드만 컴파일하려면 일반적으로 다음 네 가지 고려 사항이 있습니다.
(1) 사용자 정의된 컴파일된 커널이 실행됩니다. 더 빠릅니다(코드가 적음)
(2) 시스템에 더 많은 메모리가 있습니다(커널 부분은 가상 메모리로 교체되지 않습니다)
(3) 커널에 컴파일된 불필요한 기능은 시스템 위험을 증가시킬 수 있습니다 공격자가 악용하는 취약점
(4) 특정 기능을 모듈로 컴파일하는 것은 커널로 컴파일하는 것보다 느립니다.
이러한 유형의 컴파일 목적은 주로 컴파일 프로세스를 통해 Linux 커널 컴파일을 이해하는 것입니다. , 커널 작동 방식을 숙지하고 몇 가지 수정을 시도해 보세요.
컴파일은 소스 코드를 프로그램으로 컴파일하는 것뿐입니다. 현재 시스템을 대체하거나 현재 시스템의 작동에 영향을 미치지 않습니다.
커널 컴파일은 커널 크기 요구 사항 및 커널의 일부 사용되지 않는 부분 제거와 같은 특정 요구 사항으로 인해 발생할 수 있습니다. 이 시나리오는 임베디드 시스템에서 발생하는 경우가 많습니다.
또는 커널 코드의 일부를 직접 수정했으며 컴파일 후 기능을 확인해야 합니다.
모듈을 컴파일할 때 일부 기능 모듈은 .ko로 컴파일됩니다. insmod xxx.ko를 사용하면 커널을 다시 컴파일하지 않고도 시스템에서 작성된 코드 기능을 사용할 수 있습니다.
커널을 컴파일하면 현재 커널이 대체되지 않습니다. 컴파일된 새 커널은 대개 아래와 비슷한 디렉터리에 있으며 이름은 대부분 bzImage
/usr/src/kernels/3.xx.x-.x86_64/arch/x86/boot/
그런 다음 시스템의 grub 목록을 편집하여 사용할 최신 커널을 추가할 수 있습니다. it
새 커널이 통합되었습니다. Intel 코어 그래픽과 같은 새 드라이버: /lib/modules/`uname -r`/kernel/drivers/gpu/drm/i915/i915.ko
시스템은 여러 커널을 설치할 수 있습니다. 시작 파일과 같은 새 커널은 이전 커널을 덮어쓰지 않습니다:
/boot/vmlinuz-VERSION /boot/initrd.img-VERSION
새 커널을 설치하는 동안 VirtualBox와 같은 일부 커널 모듈을 다시 컴파일해야 합니다:
/lib/modules/`uname -r`/updates/dkms/vboxdrv.ko
새 커널이 제대로 실행되지 않는 경우, GRUB 부팅에서 시작할 이전 커널을 선택할 수 있습니다.
다음과 같이 원래 커널로 다시 변경할 수도 있습니다.
ln -sf /boot/vmlinuz-VERSION /vmlinuz ln -sf /boot/initrd.img-VERSION /initrd.img
여기서 VERSION은 원래 커널 버전입니다.
Linux 커널 컴파일
전체 커널 컴파일 프로세스는 매우 간단하지만 커널 컴파일에는 시간이 오래 걸립니다. 이는 주로 커널에 많은 코드가 있기 때문입니다. 물론 컴퓨터가 강력하다면 시간은 훨씬 단축될 것입니다. 또 한 가지 주의할 점은 시스템 문제를 일으킬 수 있는 오류를 방지하기 위해 가상머신 환경에서 컴파일하는 것을 권장한다는 점이다. 가상 머신에서 테스트하는 경우 시스템 파티션과 커널 소스 코드 파티션의 크기가 20GB보다 큰 것이 좋습니다.
1단계: 소스 코드 다운로드
1. Linux 커널 공식 웹사이트로 이동하여 최신 버전 또는 다른 버전의 커널 코드를 다운로드합니다. 다음은 소스 코드의 압축된 아카이브입니다.wget 链接(由于链接会被认为是广告,本文省略链接,请自行复制)
2단계: 소스 코드 압축 풀기
압축된 패키지를 다운로드한 후 tar 명령을 통해 압축을 풀 수 있습니다.tar xvf linux-5.9.6.tar.xz
在解压的时候可以看到文件列表,这个会很多,可能需要等一会儿。

Step 3: 安装需要的软件包
安装编译工具以及其它一下依赖的软件包,在Ubuntu 18.04环境下执行如下命令。
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison
如果一切顺利,大概安装输出信息如下所示。

Step 4: 配置内核代码
在编译内核之前,我们可以对内核源代码进行配置。配置的目的主要是确定哪些模块会编译到内核当中。
1. 进入源代码目录
cd linux-5.9.6
2. 从当前机器的启动目录拷贝配置信息到源代码目录。这步操作的意思是我们编译内核的配置采用用当前环境一致的配置。
cp -v /boot/config-$(uname -r) .config

3. 可以通过如下命令启动配置界面
make menuconfig
该命令会运行一些脚本,然后打开一个配置界面

4. 下面是打开的配置界面。可以看出里面包含所有的内核组件,包括文件系统,网络,IO栈,虚拟化和设备驱动等等。如果你不熟悉,可以不做任何修改。

Step 5: 编译内核
1. 通过如下命令就可以编译内核了
make -j 10
上面参数是并发数量,通常可以是CPU的2倍。

2. 安装模块
sudo make modules_install

3. 安装内核
sudo make install
安装完成后会有如下提示信息。

Step 6: 重启,验证版本
当上述步骤都没有出错的情况下,我们重启一下计算机,然后运行如下命令。
uname -mrs
此时就可以看到内核版本已经是我们编译的版本了。

结论
通过上面几步,我们可以很简单的编译一个内核。如果后面开发内核模块,也是要基于内核代码树的,因此这个是内核开发的基础。
可能遇到的问题
编译内核的时候可能会遇到这个问题:
没有规则可制作目标
debian/certs/debian-uefi-certs.pem,由certs/x509_certificate_list需求停止
在要编译的内核目录下编辑一下配置文件即可。简单的方式是执行如下命令
vim .config
然后找到
CONFIG_SYSTEM_TRUSTED_KEYS,将其设置为空,也就是下面这个样子。
CONFIG_SYSTEM_TRUSTED_KEYS=”
相关推荐:《Linux视频教程》
위 내용은 리눅스는 왜 커널을 컴파일합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Centos와 Ubuntu의 주요 차이점은 다음과 같습니다. Origin (Centos는 Red Hat, Enterprise의 경우, Ubuntu는 Debian에서 시작하여 개인의 경우), 패키지 관리 (Centos는 안정성에 중점을 둡니다. Ubuntu는 APT를 사용하여 APT를 사용합니다), 지원주기 (Ubuntu는 5 년 동안 LTS 지원을 제공합니다), 커뮤니티에 중점을 둔다 (Centos Conciors on ubuntu). 튜토리얼 및 문서), 사용 (Centos는 서버에 편향되어 있으며 Ubuntu는 서버 및 데스크탑에 적합), 다른 차이점에는 설치 단순성 (Centos는 얇음)이 포함됩니다.

Centos는 2024 년에 상류 분포 인 RHEL 8이 종료 되었기 때문에 폐쇄 될 것입니다. 이 종료는 CentOS 8 시스템에 영향을 미쳐 업데이트를 계속받지 못하게합니다. 사용자는 마이그레이션을 계획해야하며 시스템을 안전하고 안정적으로 유지하기 위해 Centos Stream, Almalinux 및 Rocky Linux가 포함됩니다.

CentOS 설치 단계 : ISO 이미지를 다운로드하고 부팅 가능한 미디어를 실행하십시오. 부팅하고 설치 소스를 선택하십시오. 언어 및 키보드 레이아웃을 선택하십시오. 네트워크 구성; 하드 디스크를 분할; 시스템 시계를 설정하십시오. 루트 사용자를 만듭니다. 소프트웨어 패키지를 선택하십시오. 설치를 시작하십시오. 설치가 완료된 후 하드 디스크에서 다시 시작하고 부팅하십시오.

Docker는 Linux 커널 기능을 사용하여 효율적이고 고립 된 응용 프로그램 실행 환경을 제공합니다. 작동 원리는 다음과 같습니다. 1. 거울은 읽기 전용 템플릿으로 사용되며, 여기에는 응용 프로그램을 실행하는 데 필요한 모든 것을 포함합니다. 2. Union 파일 시스템 (Unionfs)은 여러 파일 시스템을 스택하고 차이점 만 저장하고 공간을 절약하고 속도를 높입니다. 3. 데몬은 거울과 컨테이너를 관리하고 클라이언트는 상호 작용을 위해 사용합니다. 4. 네임 스페이스 및 CGroup은 컨테이너 격리 및 자원 제한을 구현합니다. 5. 다중 네트워크 모드는 컨테이너 상호 연결을 지원합니다. 이러한 핵심 개념을 이해 함으로써만 Docker를 더 잘 활용할 수 있습니다.

Docker Desktop을 사용하는 방법? Docker Desktop은 로컬 머신에서 Docker 컨테이너를 실행하는 도구입니다. 사용 단계는 다음과 같습니다. 1. Docker Desktop 설치; 2. Docker Desktop을 시작하십시오. 3. Docker 이미지를 만듭니다 (Dockerfile 사용); 4. Docker Image 빌드 (Docker 빌드 사용); 5. 도커 컨테이너를 실행하십시오 (Docker Run 사용).

CentOS 시스템 하에서 Gitlab의 백업 및 복구 정책 데이터 보안 및 복구 가능성을 보장하기 위해 CentOS의 Gitlab은 다양한 백업 방법을 제공합니다. 이 기사는 완전한 GITLAB 백업 및 복구 전략을 설정하는 데 도움이되는 몇 가지 일반적인 백업 방법, 구성 매개 변수 및 복구 프로세스를 자세히 소개합니다. 1. 수동 백업 gitlab-rakegitlab : 백업 : 명령을 작성하여 수동 백업을 실행하십시오. 이 명령은 gitlab 저장소, 데이터베이스, 사용자, 사용자 그룹, 키 및 권한과 같은 주요 정보를 백업합니다. 기본 백업 파일은/var/opt/gitlab/backups 디렉토리에 저장됩니다. /etc /gitlab을 수정할 수 있습니다

Centos Hard Disk Mount는 다음 단계로 나뉩니다. 하드 디스크 장치 이름 (/dev/sdx)을 결정하십시오. 마운트 포인트를 만듭니다 ( /mnt /newdisk를 사용하는 것이 좋습니다); 마운트 명령을 실행합니다 (mount /dev /sdx1 /mnt /newdisk); 영구 마운트 구성을 추가하려면 /etc /fstab 파일을 편집하십시오. Umount 명령을 사용하여 장치를 제거하여 프로세스가 장치를 사용하지 않도록하십시오.

Centos가 중단 된 후 사용자는 다음과 같은 조치를 취할 수 있습니다. Almalinux, Rocky Linux 및 Centos 스트림과 같은 호환되는 분포를 선택하십시오. Red Hat Enterprise Linux, Oracle Linux와 같은 상업 분포로 마이그레이션합니다. Centos 9 Stream : 롤링 분포로 업그레이드하여 최신 기술을 제공합니다. Ubuntu, Debian과 같은 다른 Linux 배포판을 선택하십시오. 컨테이너, 가상 머신 또는 클라우드 플랫폼과 같은 다른 옵션을 평가하십시오.
