프로젝트를 하다 라즈베리파이 wheezy version중에 3.18.11을 써야 될 일이 생겼다.


github.com/raspberrypi - linux에 들어가본 결과 3.18.11은 없었다. 

홈페이지를 방문하면 최신 커널소스와 3.18의 경우에는 

1.rpi-3.18.y-rebase

2.rpi-3.18.y 

두 개를 받을 수 있는데 rebase의 경우 3.18.9, rpi-3.18.y의 경우에는 3.18.16이다.

실제로 raspbian wheezy이미지를 받으면 3.18.11이지만 해당 커널 소스를 받을 수가 없었다.


그래서 찾아본 결과 branch를 이용한 방법을 알게되었다.


1. branch  받기

$git clone --depth 500 -b rpi-3.18.y https://github.com/raspberrypi/linux linux-3.18

-> 위의 500의 경우 숫자가 크면 클수록 깊어지지만 시간이 오래걸릴 것임

   뒤의 linux-3.18은 생성되는 폴더명이기 때문에 바꿔도 무관



2. commit id 얻기

라즈베리파이의 sd카드를 리눅스 hostpc에 연결한 후 하는 것이 가장 좋다.

$sudo mount /dev/sdb1 mnt/fat32

$sudo mount /dev/sdb2 mnt/ext4

(위의 명령어를 왜 입력하는지 모르는 분들은 http://kkn1220.tistory.com/14 를 보고 오시는 걸 추천드립니다.)


$FIRMWARE_HASH=$(zgrep "* firmware as of" mnt/ext4/usr/share/doc/raspberrypi-bootloader/changelog.Debian.gz | head -1 | awk '{ print $5 }')

  

# get git hash for this kernel

    $KERNEL_HASH=$(wget https://raw.github.com/raspberrypi/firmware/$FIRMWARE_HASH/extra/git_hash -O -)

 

3. checkout

$git checkout $KERNEL_HASH

-> hash값 뜨면서 -b 새로운 브런치 어쩌구 나온다.

$git checkout -b $KERNEL_HASH

-> hash값으로 checkout되었다고 메시지 뜸


4. 소스빌드

$make ARCH=arm CROSS_COMPILE=<tools path>/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf- bcm2709_defconfig


$make ARCH=arm CROSS_COMPILE=<tools path>/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf- zImage modules dtbs


(tools path의 경우 크로스컴파일용 툴체인으로 역시 http://kkn1220.tistory.com/14 참고)


5. 모듈 설치

$sudo make ARCH=arm CROSS_COMPILE=<tools path>/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf- INSTALL_MOD_PATH=mnt/ext4 modules_install


6. 커널이미지 생성

최신 git clone으로 github linux를 받으면 mkknlimg가 있으나 해당 버전에서는 존재하지가 않는다.

https://github.com/raspberrypi/linux/blob/rpi-3.18.y/scripts/mkknlimg에 들어가서 코드를 복사한다.

혹은 밑의 더보기를 눌러 해당 내용을 복사한다.

해당 스크립트를 linux-3.18/scripts 내에 생성한다.

예)vi linux-3.18/scripts/mkknlimg 에서 해당 스크립트 복사

주의* sudo chmod로 실행권한 줘야됨

예)$sudo chmod 755 linux-3.18/scripts/mkknlimg



$sudo scripts/mkknlimg arch/arm/boot/zImage mnt/fat32/kernel7.img 


7. umount

$sudo umount mnt/fat32

$sudo umount mnt/ext4


8. 확인


기존의 4.0.8-v7에서



3.18.11-v7로 바뀐 것을 확인할 수가 있다.




아침부터 라즈베리를 키는데 갑자기 에러가 출력되었다.


fsck: Warning... fsck.vfat for device /dev/mmcblk0p1 exited with signal6.

fsck died with exit satus 8

failed (code 8).

[FAIL] File system check failed. A log is being saved in /var/log/fsck/ckeckfs  ~~




에러 로그 확인




급한마음에 막 unmount하지 않고 sd카드리더기에서 빼고 그랬는데 문제가 생겼나보다..


해결방법

https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=53365 참고


sudo dosfsck -w -r -l -a -v -t /dev/mmcblk0p1

본인의 경우(sudo dosfsck -w -r -l -a -v -t /dev/sdb1)


결과값


dosfsck이란 (MAN 참고)

MS-DOS 파일 시스템을 체크하고 수리하기 위함

Synopsis

dosfsck [-aAflrtvVwy] [-d path -d ...] [-u path -u...] device

Options    



Ⅰ.  라즈베리 기본

라즈베리 기본 설정


§기본 설정

- $ sudo raspi-config      //초기 설치 시 볼 수 있는 화면이지만 이 후에는 해당 명령어를 입력 후 실행 가능



1.Expand_FileSystem(필수)- 처음 부팅하면 SD카드 용량이 2GB기준으로 줄어 있기 때문에 최적화
2.Change User Password- 기본으로 설정된 계정인 pi계정 패스워드 수정(기본 패스워드 raspberry)
3.Enable Boot to Desktop- 부팅하자마자 x-window화면으로 진입 설정
4.Internationalisation Options- 언어설정 및 지역 설정
5.Enable Camera- 라즈베리 카메라 설정
6.Add to Rastack- Rastrack에 라즈베리 등록
7.Overclock- 오버클럭 설정
8.Advanced Options
1)Overscan- 구셩 디스플레이 설정으로 일반적으로 사용하지 않음
2)Hostname- 라즈베리파이의 컴퓨터 호스트이름 설정
3)Memory Split- GPU에 할당할 메모리 용량 설정
4)SSH- SSH 사용 설정, puttyfilezilla 사용 시 필요
5)Update-라즈베리파이 업데이트

9.About raspi-config- 설정 툴에 관한 정보

§기본 명령어
-$ startx  //GUI모드 (x-window) 실행
-$ sudo apt-get update  //프로그램 패키지 목록 업데이트
-$ sudo apt-get upgrade  //설치된 프로그램 중 버전 업 된 프로그램 업데이트
-$ sudo reboot  or $ sudo shutdown –r now  //프로그램 재 부팅
-$ sudo shutdown –h now  //프로그램 종료
-$ sudo passwd pi   //기본 계정인 pi 패스워드 변경(default pw: raspberry)
-$ sudo passwd root  //관리자 권한 root 패스워드 변경  

§설치 문제
-HDMI가 안나오는 경우
-SD card의 /boot/config.txt를 수정

-> #hdmi_force_hotplug=1 부분 주석 삭제

-오디오가 안나오는 경우

-> #hdmi_drive=2 부분 주석 삭제

-키보드 문제
-기본적으로 라즈비안 설치 후 키보드 설정이 gb로 되어 있다.
-sudo vi /etc/default.keyboard

-> XKBLAYOUT=“gb“ 에서 gb를 us로 변경 후 재 부팅





Ⅰ.  라즈베리 기본

라즈베리 OS 설치


§Rasbian(Raspberry PI + Debian Linux)
-패키지 지원 및 관련 라이브러리들이 풍부
-Raspberry PI OS 중 가장 많이 활용

-https://www.raspberrypi.org/downloads/ 에서 다운로드 가능 


§설치 방식은 세 가지로 나뉨 (페이지 편집이 어려워 작성한 ppt에서 사진으로 첨부한 점 죄송합니다..)



- NOOBS 설치

- SD card에 전체 폴더가 아닌 Noobs 폴더 안에 있는 하위 폴더 및 파일 이동



- Raspian 이미지로 설치

- Win32DiskImager 사용(윈도우에 해당)

http://sourceforge.net/projects/win32diskimager/에서 다운로드 가능












Ⅰ.  라즈베리 기본

라즈베리 파이 모델 2 분석


전체 OS
Arch Linux ARM
데비안 6.0 (Squeeze)
Gentoo Linux[
Puppy Linux
Raspberry Pi Fedora Remix
Raspbian (Wheezy port with faster FP support)
RiscOS
Slackware ARM (formally ARMedslack)
FreeBSD 10 ARM (RPI-B)
QtonPi (임베디드 리눅스)
Redsleeve (ARMRedHat 기반)
Ubuntu (라즈베리 파이 2)
윈도 10(라즈베리 파이2)
가벼운 다목적 배포판
Squeezed Arm Puppy for ARMv6 (sap6)
특정 목적의 가벼운 배포판
IPFire
OpenELEC
Raspbmc

XBMC



+ Recent posts