커널 소스 코드는 어떻게 얻습니까?


25

일부 장치 드라이버를 작성할 계획이며 Linux 커널 소스를 가져와야합니다. 내 Linux 커널 버전은 3.2.0-23-generic-pae이며 여기에서 이미지를 다운로드 했습니다 . 내가 읽은 많은 기사에서 새 모듈 삽입을 시작하려면 전체 커널 트리가 필요하다는 것을 알려줍니다.

이 이미지를 다운로드하여 usr/src/폴더에 붙여 넣거나 다른 작업을 수행 하면 충분 합니까?


1
내 컴퓨터 중 하나에 대한 사용자 정의 컴파일을 할 때 일반적으로 시냅틱에서 'linux-source'패키지를 설치하지만 개발을 할 때 최신 버전이 필요할 수 있습니다. 이 링크는 당신에게 유용 할 것입니다 : help.ubuntu.com/community/Kernel/Compile
— Mark Paskal

답변:


27

이것은 주식 커널의 소스를 얻을 것입니다 :

apt-get source linux-source

다음과 같이 실행중인 커널 버전을 확인할 수 있습니다.

uname -r

다음과 같이 인쇄됩니다.

3.13.0-46-generic

다음을 통해 시스템에서 사용 가능한 현재 소스 패키지 버전 목록을 찾을 수 있습니다.

apt-cache search linux-source

커널의 업스트림 버전을 얻으려면 :

git clone git://kernel.ubuntu.com/ubuntu/ubuntu-trusty.git

위의 링크에서 'trusty'는 Ubuntu 버전의 코드 이름입니다. 다음을 통해 설치 한 Ubuntu 버전의 코드 이름을 찾을 수 있습니다.

cat /etc/lsb-release

git을 사용하여 복제하면 버전을 어떻게 지정합니까? 또한 복제하는 경우 usr / src 폴더에 페이트를 복사하면 충분합니다
— Sab

그 자식 저장소는 구체적으로 3.2.0으로 유지됩니다. Ubuntu Precise (12.04)의 내용을 따릅니다. 다른 버전을 원한다면 ubuntu-precise.git을 ubuntu-quantal.git 또는 다른 것으로 변경하십시오. usr / src로 복사하는 것이 좋습니다.
— 브라이스

알았어. 고마워.하지만 어떻게 그 자식 링크를 찾았 어?
— Sab


그리고 설치할 때 소스 트리를 어디서 찾을 수 있어야합니까 ... 젠장, 더 잘 읽어야합니다. 대답은 apt-get source그렇지 않다고 말합니다 apt-get install. 소스 트리보다 현재 경로에있게 됩니다.
— Pro Backup

8
apt-get source linux

가장 쉬운 방법입니다. 리포지토리에서 소스를 다운로드하며 실행중인 버전과 동일합니다 (아직 사용자 정의하지 않은 경우).

그러나 소스가 유지 관리되는 위치를 찾으려면 다음을 실행할 수 있습니다.

apt-cache showsrc linux

'Vcs-'속성 (버전 제어 시스템)을 찾으십시오. 일반적으로 git (Vcs-Git) 또는 수은 저장소입니다.

주 –이 명령은 모든 패키지에서 작동합니다. 관심있는 패키지로 'linux'를 대신 사용하십시오. 또한 'apt-get source'는 sudo 액세스가 필요하지 않으며 현재 디렉토리에 소스를 덤프합니다.


다운로드하려는 머신이 대상 머신과 일치해야합니다. 네트워크가있는 경우에만 작동합니다. 이 페이지에 방문하는 대부분의 독자에게는 네트워크가 없기 때문에 갑자기 소스가 필요합니다. 나는 엄지 드라이브에 타르볼로 필요하며 작업중 인 아파트가 없습니다.
— mckenzm

이것은 단지에 리눅스 헤더 다운로드 /usr/src- 하지 우분투 16.04에 - 전체 커널 소스
— Pierz

4

런치 패드에서 직접 소스 다운로드

이상하게도 모든 사람들 apt-get source 이 특정 커널 버전을 찾고 있다면 대부분 작동하지 않는 것이 좋습니다 .

3.19.0-58에 대한 커널 소스가 필요하다고 가정하십시오
apt-get source linux-image-3.19.0-58-generic.이 경우 시리즈의 최신 커널에 대한 소스를 얻습니다.이 경우 3.19.0-80은 요청한 것이 아닙니다.

따라서 두 가지 옵션이 있습니다.

1) 포기하고 커널 3.19.0-80을 설치하고 사용하십시오. apt-get source

2) 런치 패드에서 직접 소스를 가져 오십시오.

모래밭

  • 그것들을 새로운 디렉토리에 넣고 dpkg-source -x *.dsc

노트:

  • 더 좋은 방법이 있어야합니다.
  • git에서 원하는 버전을 얻을 수 있지만 큰 다운로드가 필요합니다. Ubuntu Wiki Kernel Source Code의 "git을 사용하여 Ubuntu 릴리스의 커널 소스 얻기"를 참조하십시오 .

이것을 명확하게 설명해 주셔서 감사합니다. 그러나 여전히 linux-image-4.15.0-39-generic의 소스를 찾을 수 없습니다. 이 과정은 불필요하게 복잡합니다. 인터넷 검색을 시도했지만 몇 킬로바이트에 불과한 패키지를 계속 찾습니다. 팁이 있습니까?
— forgetso

3

다음 중 하나를 선택하십시오.

sudo apt install linux-source  # downloads into system directory
sudo apt source linux-source  # downloads into working directory

에 일부 '소스'URL을 제공하라는 메시지가 표시되면 파일을 sources.list편집 /etc/apt/sources.list하고 원하는 deb-src줄을 주석 해제하십시오 (예 : Xenial을 실행중인 경우).

deb http://fr.archive.ubuntu.com/ubuntu/ xenial main restricted
# deb-src http://fr.archive.ubuntu.com/ubuntu/ xenial main restricted

#이 마지막 행을 제거하면 커널 소스를 포함하여 소스 리포지토리를 다운로드 할 수 있습니다.

비고 :

  • 최신 도구를 사용하십시오. 피하십시오 apt-get.
  • 이 명령은 현재 커널 의 소스 코드를 다운로드합니다 ( 4.4.0-75-generic예를 들어 제 경우 ).
  • 시스템 디렉토리로 다운로드하면 파일이 /usr/src/linux-source-4.4.0/(예를 들어) 저장됩니다 .

나를 위해 작동하지 않습니다 (그러나 apt-get 버전은 아닙니다). Ubuntu 16.04.4, 커널 4.4.0-98-generic을 실행 중입니다. "sources.list에 일부 'source'URI를 넣어야합니다." 나는 그것을하는 방법을 모른다.
— Andrew Bainbridge

@AndrewBainbridge 그것에 관한 정보를 추가했습니다. 지금은 괜찮습니까?
— Tim

네 고마워요 그것은 저의 어리석은 의견이었습니다. 나는 오류 메시지를 구글에만 필요했다. 어쨌든 노력에 대한 공감대를 가지십시오.
— Andrew Bainbridge
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.