포고플러그 V4 Debian Jessie - 커널 업데이트

SBC 2017. 7. 27. 01:25 Posted by juvenile

두잔 포럼 보드히(Doozan, bodhi)님이 만든 커스텀 커널 업데이트 방법이다.


커널 다운로드는 여기에서 Linux Kernel 4.12.1 Kirkwood package and Debian rootfs
몇년 째 한 쓰레드 유지하면서 계속 커널과 rootfs를 유지해주는데, 정말 대단한 것 같다.


커널 패키지를 포고플러그에 다운받은 후 시작하자. 그리고 모든 명령은 root 권한으로 실행한다.


1. 기존 커널 백업

우선 /boot 디렉토리를 통채로 백업

# cp -R /boot /boot_4.11.3

백업하고자 하는 파일은 아래와 같은데, 그냥 boot 디렉토리를 통으로 해버렸다.

uInitrd
uImage
initrd.img-xx.xx.xx-kirkwood-xxx
System.map-xx.xx.xx-kirkwood-xxx
vmlinuz-xx.xx.xx-kirkwood-xxx
config-xx.xx.xx-kirkwood-xxx
dts/


2. 커널 설치

/boot 디렉토리 내에 다운받은 압축 파일을 풀어준다.
새 커널을 풀기 전에 uEnv.txt 를 제외한 모든 파일과 디렉토리를 지워도 된다만.. 혹시 실수 했을 때 복구하기 편하려고 남겨두었다.

# cd /boot

# tar -xvjf /다운로드/받은/위치/linux-4.12.1-kirkwood-tld-1-bodhi.tar.bz2

아래 여섯 파일이 /boot 디렉토리에 풀렸는지 확인한다.

linux-image-4.12.1-kirkwood-tld-1_1.0_armel.deb
linux-headers-4.12.1-kirkwood-tld-1_1.0_armel.deb
config-4.12.1-kirkwood-tld-1
zImage-4.12.1-kirkwood-tld-1
linux-dtb-4.12.1-kirkwood-tld-1.tar
linux-4.12.1-kirkwood-tld-1.patch

이 중에서 linux-dtb는 /boot/dts 디렉토리의 내용물로써, tar 파일을 한번 더 풀어줘야 한다.

# tar -xvf linux-dtb-4.12.1-kirkwood-tld-1.tar

# rm linux-dtb-4.12.1-kirkwood-tld-1.tar


이제 dpkg 명령으로 linux-image를 설치하는데, 그 전에 flash-kernel 패키지를 삭제하라고 한다.

# apt-get remove flash-kernel 

# dpkg -i linux-image-4.12.1-kirkwood-tld-1_1.0_armel.deb


부트 이미지를 수동으로 생성한다.
단, 이 방법은 uboot이 booting device의 /boot/dts에서 dtb file로 부팅하도록 설정된 경우에만 해당한다. 2015년 모 시점 이후의 uboot 기본설정인데, uboot이 그 이전 버전이거나 잘 모르겠으면 다른 방법으로 부팅 이미지를 만들기 보다는 uboot을 업그레이드 하자.

# cd /boot

# mkimage -A arm -O linux -T kernel -C none -a 0x00008000 -e 0x00008000 -n Linux-4.12.1-kirkwood-tld-1 -d vmlinuz-4.12.1-kirkwood-tld-1 uImage 

# mkimage -A arm -O linux -T ramdisk -C gzip -a 0x00000000 -e 0x00000000 -n initramfs-4.12.1-kirkwood-tld-1 -d initrd.img-4.12.1-kirkwood-tld-1 uInitrd

버전에 맞추어 명령어 옵션의 숫자/파일명을 적절히 바꾸는 것을 잊지 말 것


부트 디스크에 image 파일이 완전히 기록되도록 기다린 후에 재부팅 한다.

# sync
# sync
# sync
# shutdown -r now


재부팅 후 커널 버전 확인

# uname -a
Linux pv4a-sd 4.12.1-kirkwood-tld-1 #1 PREEMPT Sat Jul 15 21:40:50 PDT 2017 armv5tel GNU/Linux


구 커널 삭제

# rm config-4.11.3-kirkwood-tld-2
# rm initrd.img-4.11.3-kirkwood-tld-2
# rm linux-4.11.3-kirkwood-tld-2.patch
# rm System.map-4.11.3-kirkwood-tld-2
# rm vmlinuz-4.11.3-kirkwood-tld-2
# rm zImage-4.11.3-kirkwood-tld-2