웹사이트 검색

커널 3.16 출시 - Debian GNU/Linux에서 컴파일 및 설치


커널은 모든 운영 체제의 핵심입니다. 커널의 주요 기능은 애플리케이션 – CPU, 애플리케이션 – 메모리 및 애플리케이션 – 장치(I/O) 사이에서 중재자 역할을 하는 것입니다. 메모리 관리자, 장치 관리자 역할을 하며 다른 작업을 수행하는 것 외에도 시스템 호출에 참석합니다.

Linux의 경우 커널이 핵심입니다. Linux 커널은 GNU General Public License에 따라 출시됩니다. Linus Torvalds는 1991년에 Linux 커널을 개발했으며 초기 커널 릴리스 버전 0.01을 출시했습니다. 2014년 8월 3일(올해) Kernel 3.16이 출시되었습니다. 지난 22년 동안 Linux 커널은 많은 발전을 이루었습니다. 이제 수천 개의 회사와 수백만 명의 독립 개발자가 Linux 커널에 기여하고 있습니다.

Linux 재단, Linux 커널 개발 보고서에 따라 1,700만 줄의 코드가 있을 것으로 예상되는 현재 Linux 커널에 대한 대형 브랜드와 그들의 기여도를 대략적으로 추정합니다.

  1. 레드햇 - 10.2%
  2. 인텔 – 8.8%
  3. 텍사스 인스트루먼트 – 4.1%
  4. 리나로 – 4.1%
  5. 수세 – 3.5%
  6. IBM – 3.1%
  7. 삼성 - 2.6%
  8. 구글 – 2.4%
  9. 비전 조각 시스템 – 2.3%
  10. 울프슨 마이크로일렉트로닉스 – 1.6%
  11. 오라클 – 1.3%
  12. 브로드컴 – 1.3%
  13. 엔비디아 - 1.3%
  14. 프리스케일 – 1.2%
  15. 잉직스 테크놀로지 – 1.2%
  16. 시스코 – 0.9%
  17. 리눅스 재단 – 0.9%
  18. AMD - 0.9%
  19. 학자 – 0.9%
  20. 넷앱 – 0.8%
  21. 후지쯔 – 0.7%
  22. 평행선 – 0.7%
  23. ARM - 0.7%

커널 개발의 70%는 기업에서 일하고 그에 대한 대가를 받는 개발자에 의해 수행됩니다. 재미있을 것 같습니까?

Linux Kernel 3.16은 프로덕션 환경의 개인 및 회사를 위해 출시되었으며, 여러 가지 이유로 커널을 업데이트할 예정입니다. 그 중 몇 가지는 다음과 같습니다.

  1. 보안 패치
  2. 안정성 강화
  3. 업데이트된 드라이버 – 더 나은 장치 지원
  4. 처리 속도 개선
  5. 최신 기능 등

이 글은 데비안 방식으로 데비안 커널을 업데이트하는 것을 목표로 합니다. 이는 수동 작업을 줄이고 위험을 줄이면서도 완벽함을 의미합니다. 또한 이 기사의 후반부에서 Ubuntu 커널을 업데이트할 예정입니다.

1단계: 커널 3.16 다운로드

계속하기 전에 현재 설치된 커널에 대해 알아야 합니다.

avi@tecmint:~$ uname -mrns 

Linux tecmint 3.14-1-amd64 x86_64

옵션 정보:

  1. -s : 인쇄 운영 체제('Linux', 여기).
  2. -n : 시스템 호스트 이름을 인쇄합니다('tecmint', 여기에서는).
  3. -r : 커널 버전을 인쇄합니다('tecmint 3.14-1-amd64', 여기).
  4. -m : 하드웨어 명령어 세트를 인쇄합니다('x86_64', 여기).

아래 링크에서 안정적인 최신 커널을 다운로드하세요. 거기에 있는 패치 다운로드 링크로 혼동하지 마세요. “LATEST STABLE KERNEL”이라고 명확하게 표시된 파일을 다운로드하세요.

  1. https://www.kernel.org/

또는 wget을 사용하여 더 편리한 커널을 다운로드할 수 있습니다.

avi@tecmint:~/Downloads$ wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.16.tar.xz

2단계: 커널 3.16 서명 확인

다운로드가 완료된 후 계속 진행하기 전에 커널 서명을 확인하는 것이 좋습니다.

avi@tecmint:~/Downloads$ wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.16.tar.sign

압축되지 않은 파일에 대해 서명 확인을 수행해야 합니다. 이는 다양한 압축 형식(예: .gz, .bz2, .xz)에 대해 하나의 서명이 필요합니다.

다음으로 Linux 커널 이미지의 압축을 해제합니다.

avi@tecmint:~/Downloads$ unxz linux-3.16.tar.xz

서명과 대조하여 확인하십시오.

avi@tecmint:~/Downloads$ gpg --verify linux-3.16.tar.sign

참고: 위 명령에서 gpg: Can't check signed: public key notfound 오류가 발생하는 경우. 이는 PGP 서버에서 공개 키를 수동으로 다운로드해야 함을 의미합니다.

avi@tecmint:~/Downloads$ gpg --recv-keys  00411886

키를 다운로드한 후 키를 다시 확인하세요.

avi@tecmint:~/Downloads$ gpg --verify linux-3.16.tar.sign

GPG 키 확인에 관해 두 가지 사실을 알아차리셨나요?

  1. gpg: 'Linus Torvalds <[email >'의 좋은 서명입니다.
  2. 기본 키 지문: ABAF 11C6 5A29 70B1 30AB E3C4 79BE 3E43 0041 1886 .

키 지문에 대해 걱정할 필요가 없습니다. 이제 아카이브가 정상이고 서명되었음을 확신합니다. 앞으로 나아가자!

3단계: 필수 패키지 설치

커널 빌드를 시작하기 전에 커널 빌드 및 설치 프로세스를 쉽게 하고 위험 없는 데비안 방식으로 수행하기 위해 특정 패키지를 설치해야 합니다.

libcurse5-dev, fakeroot 및 kernel-package를 설치하십시오.

avi@tecmint:~/Downloads$ sudo apt-get install libncurses5-dev
avi@tecmint:~/Downloads$ sudo apt-get install fakeroot
avi@tecmint:~/Downloads$ sudo apt-get install kernel-package

4단계: 커널 3.16 구축

위 패키지를 성공적으로 설치한 후 커널을 빌드할 준비가 되었습니다. 추출된 Linux 커널 이미지(위에서 서명을 확인하면서 추출했습니다)로 이동합니다.

avi@tecmint:~/Downloads$ cd linux-3.16/

이제 현재 커널 구성을 복사하여 작업 디렉터리를 루트 사용자로 표시하는 것이 중요합니다.

cp /boot/config-'uname -r' .config

현재 작업 디렉토리 “/home/avi/Downloads/linux-3.16”에 /boot/config-'uname -r'을 복사하고 '.config'.

여기서 'uname -r'은 현재 설치된 커널 버전으로 자동으로 대체되고 처리됩니다.

도트 파일은 일반적인 방법으로 볼 수 없으므로 현재 작업 디렉토리에서 이를 보려면 ls와 함께 '-a' 옵션을 사용해야 합니다.

ls -al

Linux 커널을 구축하는 방법에는 세 가지가 있습니다.

  1. make oldconfig : 커널이 지원해야 할 것과 지원하지 말아야 할 것을 하나씩 질문하는 대화형 방식입니다. 이는 매우 시간이 많이 소요되는 프로세스입니다.
  2. make menuconfig : 사용자가 옵션을 활성화 및 비활성화할 수 있는 명령줄 메뉴 기반 시스템입니다. ncurses 라이브러리가 필요하므로 위에서 해당 라이브러리를 적용했습니다.
  3. make qconfig/xconfig/gconfig : 사용자가 옵션을 활성화 및 비활성화할 수 있는 그래픽 메뉴 기반 시스템입니다. QT 라이브러리가 필요합니다.

분명히 우리는 'make menuconfig'를 사용할 것입니다.

커널 구축이 두렵습니까? 당신은 그렇게해서는 안됩니다. 재미있습니다. 배울 점이 많습니다. 다음 사항을 명심해야 합니다.

  1. 귀하의 하드웨어 요구 사항과 적절한 드라이버.
  2. 커널을 직접 구축하는 동안 높은 메모리 지원과 같은 새로운 기능을 선택하십시오.
  3. 커널 최적화 – 필요한 드라이버만 선택하세요. 부팅 프로세스 속도가 빨라집니다. 드라이버에 대해 확실하지 않은 경우 해당 드라이버를 포함하는 것이 좋습니다.

이제 'make menuconfig' 명령을 실행하세요.

make menuconfig

중요: "선택 – 로드 가능한 모듈 지원 활성화"를 선택해야 합니다. 이 작업을 잊어버리면 어려움을 겪게 될 것입니다. .

참고: 열린 구성 창에서 네트워크 카드, 블루투스, 터치패드, 그래픽 카드, NTFS와 같은 파일 시스템 지원 및 기타 여러 옵션에 대한 다양한 옵션을 구성할 수 있습니다.

무엇을 선택해야 하고 무엇을 선택하지 말아야 하는지 안내하는 튜토리얼은 없습니다. 당신은 연구하고, 웹을 통해 내용을 공부하고, tecmint 튜토리얼을 통해 배우고, 기타 가능한 모든 방법을 통해서만 이것을 알게 됩니다.

커널 해킹 옵션이 있는 것을 볼 수 있습니다. 해킹? 예! 여기서는 탐색을 의미합니다. 커널해킹에 다양한 옵션을 추가하여 다양한 기능을 활용할 수 있습니다.

다음으로 일반 드라이버 옵션을 선택하세요.

네트워크 장치 지원.

입력 장치 지원.

/boot/config-`uname –r`.config에 저장한 구성 파일(.config)을 로드합니다.

확인을 클릭하고 저장하고 종료합니다. 이제 소스 트리를 정리하고 커널 패키지 매개변수를 재설정하세요.

make-kpkg clean

5단계: 커널 3.16 컴파일

커널 컴파일을 시작하기 전에 CONCURRENCY_LEVEL을 내보내야 합니다. 동시성 수준은 커널 코어에 숫자 1을 추가하는 규칙이 있습니다. 코어가 2개 있는 경우 CONCURRENCY_LEVEL=3을 내보냅니다. 코어가 4개 있는 경우 CONCURRENCY_LEVEL=5를 내보냅니다.

프로세서의 코어를 확인하려면 아래와 같이 cat 명령을 사용할 수 있습니다.

cat /proc/cpuinfo
샘플 출력
Sample Output
processor	: 0 
vendor_id	: GenuineIntel 
cpu family	: 6 
model		: 69 
model name	: Intel(R) Core(TM) i3-4005U CPU @ 1.70GHz 
stepping	: 1 
microcode	: 0x17 
cpu MHz		: 799.996 
cache size	: 3072 KB 
physical id	: 0 
siblings	: 4 
core id		: 0 
cpu cores	: 2 
apicid		: 0 
initial apicid	: 0 
fpu		: yes 
fpu_exception	: yes 
cpuid level	: 13 
wp		: yes

위 출력을 보면 코어가 2개이므로 아래와 같이 코어 3개를 내보냅니다.

export CONCURRENCY_LEVEL=3

올바른 CONCURRENCY_LEVEL을 설정하면 커널 컴파일 시간이 단축됩니다.

fakeroot make-kpkg --append-to-version "-tecmintkernel" --revision "1" --initrd kernel_image kernel_headers

여기서 'tecminkernel'은 커널 빌드 이름이며 이름, 호스트 이름, 애완동물 이름 등 무엇이든 될 수 있습니다.

커널 컴파일은 컴파일되는 모듈과 머신의 처리 능력에 따라 많은 시간이 걸립니다. 컴파일이 완료될 때까지 커널 컴파일에 관한 FAQ 중 일부를 살펴보세요.

자주 묻는 질문

Q1. 내 커널이 오랫동안 컴파일되고 있습니다. 정상인가요?
Q2. 컴파일하는 동안 커널을 중단하면 처음부터 다시 시작해야 합니까?
Q3. 컴파일된 파일을 다른 시스템에서 사용하여 커널을 업데이트할 수 있습니까?
Q4. 컴파일된 파일을 호스팅할 예정입니까?
Q5. 내 저장소에 fakeroot 및 ncurses5-dev와 같은 패키지가 있습니까?
Q6. 최신 커널을 설치한 후 마지막 커널로 부팅할 수 있습니까?
Q7. 커널 업데이트에 문제가 있습니다. 나를 도와주실 건가요? 유료인가요?
Q8. 회사에서 커널을 업데이트하는 데 문제가 있습니다. 당신의 팀이 우리를 도와줄 것인가? 유료인가요?

이것이 FAQ의 끝입니다. 컴파일 프로세스로 넘어가겠습니다. 커널을 성공적으로 컴파일한 후 현재 작업 디렉터리 '위'에 하나의 디렉터리인 두 개의 파일(Debian 패키지)을 생성합니다.

현재 작업 디렉토리는 다음과 같습니다.

/home/avi/Downloads/linux-3.16/

데비안 패키지는 다음 위치에 생성됩니다.

/home/avi/Downloads

이를 확인하려면 다음 명령을 실행하십시오.

cd ..
ls -l linux-*.deb

다음으로 생성된 Linux 이미지 파일을 실행합니다.

dpkg -i linux-image-3.16.0-tecmintkernel_1_amd64.deb

생성된 Linux 헤더 파일을 실행합니다.

dpkg -i linux-headers-3.16.0-tecmintkernel_1_amd64.deb

모두 완료되었습니다! 우리는 다른 모든 종속성과 함께 Debian에서 최신 Linux 커널 3.16을 성공적으로 빌드, 컴파일 및 설치했습니다. 게다가 데비안 패키지는 부트로더(GRUB/LILO)를 자동으로 업데이트했습니다. 이제 재부팅하고 최신 커널을 테스트할 시간입니다.

부팅하는 동안 나타날 수 있는 오류 메시지를 확인하십시오. 오류가 있는 경우 이를 해결하려면 해당 오류를 이해하는 것이 중요합니다.

reboot

데비안이 다시 시작되자마자 '고급 옵션'을 클릭하여 사용 가능하고 설치된 커널 목록을 확인하세요.

설치된 커널 목록을 확인하세요.

부팅하려면 최신 컴파일된 커널(예: 3.16)을 선택하세요.

커널 버전을 확인하세요.

uname -mrns

지금 설치된 최신 버전은 자동으로 부팅되도록 설정되어 있으므로 고급 부팅 옵션에서 매번 선택할 필요가 없습니다.

6단계: 사전 컴파일된 커널 3.16 설치

데비안(x86_64)에서 자체 커널을 컴파일하고 싶지 않고 이 튜토리얼에서 빌드한 사전 컴파일된 커널을 사용하려는 사람들은 아래 링크에서 다운로드할 수 있습니다. 이 커널은 귀하가 사용하고 있는 일부 하드웨어에서는 작동하지 않을 수 있습니다.

  1. linux-image-3.16.0-linux-console.net_kernel_1_amd64.deb
  2. linux-headers-3.16.0-linux-console.net_kernel_1_amd64.deb

다음으로, 다음 명령을 사용하여 사전 컴파일된 커널을 설치합니다.

dpkg -i linux-image-3.16.0-linux-console.net_kernel_amd64.deb
dpkg -i linux-headers-3.16.0-linux-console.net_kernel_amd64.deb

사용하지 않는 커널은 명령을 사용하여 시스템에서 제거할 수 있습니다.

apt-get remove linux-image-(unused_version_number)

주의: 최신 커널을 철저히 테스트한 후 이전 커널을 제거해야 합니다. 서둘러 결정을 내리지 마십시오. 현재 수행 중인 작업을 알고 있는 경우에만 진행해야 합니다.

원하는 커널을 제거하는 데 뭔가 잘못했거나 원하지 않는 커널을 제거한 경우 시스템은 작업할 수 없는 단계에 있게 됩니다.

사용하지 않는 커널을 제거한 후 다음과 같은 메시지가 나타날 수 있습니다.

  1. /vmlinuz 링크는 손상된 링크입니다.
  2. 심볼릭 링크 vmlinuz를 제거합니다.
  3. 부트로더[grub]를 다시 실행해야 할 수도 있습니다.
  4. /initrd.img 링크는 손상된 링크입니다.
  5. 심볼릭 링크 initrd.img 제거.
  6. 부트로더[grub]를 다시 실행해야 할 수도 있습니다.

이는 정상적인 현상이므로 걱정할 필요가 없습니다. 다음 명령을 사용하여 GRUB를 업데이트하세요.

/usr/sbin/update-grub

이러한 메시지를 비활성화하려면 /etc/kernel-img.conf 파일을 업데이트하고 'do_symlinks'를 비활성화해야 할 수도 있습니다. 재부팅 후 다시 로그인이 가능하다면 문제가 없습니다.

지금은 여기까지입니다. 저는 또 다른 흥미로운 기사로 다시 찾아오겠습니다. 그때까지 계속 지켜봐주시고 Tecmint에 연결해 주세요. 아래 댓글 섹션에 귀중한 피드백을 제공하는 것을 잊지 마세요. 또한 커널 컴파일 및 설치를 접했을 때의 경험을 알려주십시오.

다음 항목도 읽어보세요:

  1. 우분투에 커널 3.16 설치
  2. Debian Linux에서 커널 3.12 컴파일 및 설치