"-K"는 제목 글자 수 제한 때문(본디 kernel이다.)



현재 커널을 본다.

eddie@ubuntu:~/Downloads/linux-4.17.10$ uname -a

Linux ubuntu 4.15.0-20-generic #21-Ubuntu SMP Tue Apr 24 06:16:15 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux


http://kernel.org 의 최신 커널 버전이 자신의 커널 버전보다 높다면,...

에서 바닐라 커널을 받는다.


압축을 풀어 준다.

tar xvf linux-4.17.10.tar.xz


현재 커널 설정을 복사한다.

eddie@ubuntu:~/Downloads/linux-4.17.10$ cp /boot/config-4.15.0-20-generic ./.config


빌드 패키지를 설치한다.

sudo apt-get install build-essential libncurses-dev flex libssl-dev libelf-dev -y


빌드한다

make -j5

커널 업이 되면서 생긴 신규 옵션에 대해서 물어본다. 디폴트 설정이 되도록  엔터친다.

make -j5 modules


모듈을 설치한다.

sudo make modules_install

확인

eddie@ubuntu:~/Downloads/linux-4.17.10$ ls /lib/modules/

4.15.0-20-generic  4.15.0-23-generic  4.15.0-29-generic  4.17.10


커널 설치

make install



Found linux image: /boot/vmlinuz-4.17.10

Found initrd image: /boot/initrd.img-4.17.10

.

.

.

Found memtest86+ image: /boot/memtest86+.elf

Found memtest86+ image: /boot/memtest86+.bin

done


reboot


eddie@ubuntu:~$ uname -a

Linux ubuntu 4.17.10 #1 SMP Fri Jul 27 08:49:56 PDT 2018 x86_64 x86_64 x86_64 GNU/Linux



리눅스 옵션을 잘 알려면

x86_64용으로 configration인 make defconfig로 기본 설정 후 비교하는 것 부터 시작하는 것이 좋다.

리눅스 커널 컴파일 옵션은 9000개며, 각 옵션 간의 의존성은 커널 컴파일하면서 배우는 수밖에 없다. 커널 패키징 하는데 8000번의 커널 컴파일이 요구된다. 청춘은 멍들고...


zImage는 1메가 한계로 요샌 bzImage만 쓴다. bzImage만 만들려면 Rygen 1700 + 8GB 램(가상)에서 

time sh -c 'make clean && make bzImage && make modules'

로 실행,


real159m12.270s

user139m15.018s

sys20m49.665s

시간이 소요되었다.



커널을 apt를 이용해 받으려면, 

/etc/source.list 에서 deb-src 의 주석 3개를 풀어준다.

apt-get update


이후 

sudo apt source linux-image-`uname -r`

오랜 리눅서는 소스 컴파일이 좋을 듯. 예전엔 패키지 관리자도 없어서 소스 컴파일이 기본이었기 때문.


그리고 기본기를 익히려면 결국 C와 Makefile로 돌아간다.

'!A. Basics' 카테고리의 다른 글

브런치에서 이동  (0) 2019.04.01
브런치에서 이동  (0) 2019.04.01
iOS, Changing the tab bar selected image  (0) 2019.03.27
checking logs on iphone without Xcode  (0) 2019.03.27
swift generic struct  (0) 2019.02.03

+ Recent posts