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


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.