목차
Linux 커널을 컴파일하는 이유는 무엇입니까?
Linux 커널 컴파일‍
운영 및 유지보수 리눅스 운영 및 유지 관리 리눅스는 왜 커널을 컴파일합니까?

리눅스는 왜 커널을 컴파일합니까?

Mar 30, 2023 pm 02:03 PM
linux

이유: 새 커널은 이전 커널의 버그를 수정하고 많은 새로운 기능을 추가했습니다. 사용자가 이러한 새로운 기능을 사용하거나 자신의 시스템에 따라 보다 효율적이고 안정적인 커널을 사용자 정의하려는 경우 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 커널 공식 웹사이트로 이동하여 최신 버전 또는 다른 버전의 커널 코드를 다운로드합니다. 다음은 소스 코드의 압축된 아카이브입니다.

리눅스는 왜 커널을 컴파일합니까?

2. 현재 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
로그인 후 복사

此时就可以看到内核版本已经是我们编译的版本了。

1리눅스는 왜 커널을 컴파일합니까?

结论‍

通过上面几步,我们可以很简单的编译一个内核。如果后面开发内核模块,也是要基于内核代码树的,因此这个是内核开发的基础。

可能遇到的问题‍

编译内核的时候可能会遇到这个问题:

没有规则可制作目标
debian/certs/debian-uefi-certs.pem,由certs/x509_certificate_list需求停止

在要编译的内核目录下编辑一下配置文件即可。简单的方式是执行如下命令

vim .config
로그인 후 복사

然后找到
CONFIG_SYSTEM_TRUSTED_KEYS,将其设置为空,也就是下面这个样子。

CONFIG_SYSTEM_TRUSTED_KEYS=”
로그인 후 복사

相关推荐:《Linux视频教程

위 내용은 리눅스는 왜 커널을 컴파일합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

Centos와 Ubuntu의 차이 Centos와 Ubuntu의 차이 Apr 14, 2025 pm 09:09 PM

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 Centos는 유지 보수를 중지합니다. 2024 Apr 14, 2025 pm 08:39 PM

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

Centos를 설치하는 방법 Centos를 설치하는 방법 Apr 14, 2025 pm 09:03 PM

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

Docker 원리에 대한 자세한 설명 Docker 원리에 대한 자세한 설명 Apr 14, 2025 pm 11:57 PM

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

Docker Desktop을 사용하는 방법 Docker Desktop을 사용하는 방법 Apr 15, 2025 am 11:45 AM

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의 백업 방법은 무엇입니까? Apr 14, 2025 pm 05:33 PM

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

센토에 하드 디스크를 장착하는 방법 센토에 하드 디스크를 장착하는 방법 Apr 14, 2025 pm 08:15 PM

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

Centos 후해야 할 일은 유지 보수를 중단합니다 Centos 후해야 할 일은 유지 보수를 중단합니다 Apr 14, 2025 pm 08:48 PM

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

See all articles