반응형

Device: Raspberry Pi 5
OS: 12 (bookworm, 2023-12-05)

 

라즈베리파이 OS가 점점 쓰기 편해지면서 VNC 설정도 굳이 x11vnc를 별도로 추가설치 할 필요 없이, 설정에서 잡아 주면 바로 접근이 가능하다.

[GUI] Raspberry Pi Configuration 창에서 설정

1. 라즈베리파이 버튼(시작 버튼?) > Preferences > Raspberry Pi Configuration 실행

2. Interfaces 탭에서 VNC 설정을 enable로 변경

3. VNC Viewer에 표시하는 화면 크기는 Display 탭 > Headless Resolution 에서 변경 가능

Raspberry Pi Configuration 내 VNC 설정

[Terminal] raspi-config 실행

1. raspi-config 실행

sudo raspi-config

 

2. 3번 Interface Options 선택

 

3. I2 VNC 선택 후, VNC Server를 enable할지 묻는 질문에 Yes 선택

 

4. VNC Viewer에서 보이는 화면 크기는, 설정 첫 화면(메인 메뉴)에서 2번 Display Options에서 설정할 수 있다.

 

 

반응형
블로그 이미지

Bryan_

,
반응형

Date: 2023.12.23
Target: Raspberry Pi 3B+
OS: Raspberry Pi OS (legacy) with Desktop (bullseye)

거의 5년 만에 라즈베리파이3를 다시 부활시키려고, SD 카드에 이미지 넣는 방법을 찾아보니, Raspberry Pi Imager 프로그램을 공식 제공한다는 것을 알게 되었다. 원래 Raspbian OS 시절에 Etcher라는 별도의 프로그램을 사용했었는데 점점 OS 설치하기 편해지는 것 같다.

아무튼 Raspberry Pi Imager를 써서 라즈베리파이5는 무사히 설치하고 부팅도 잘 시켰는데, 5년 묵은 라즈베리파이3는 부팅도 잘 안되고, SD 카드에 이미지를 복사하고 보니 마지막에 해시 값이 맞지 않는다는 오류(Verification hash doesn't match download)도 뜨는 것이 영 시원찮다.

Raspberry Pi Imager 프로그램에서 보면 이미 한번 OS 설치를 하면 PC에 캐시 데이터가 남는데, 이 캐시를 프로그램 상에서 지우는 방법은 아직 없는 것 같다. 참고로 캐시 파일 위치는 C:\Users\<사용자 이름>\AppData\Local\Raspberry Pi\Imager\cache 폴더에 있는 lastdownload.cache 파일이다.

캐시를 지우기 전에, 이미 공식 홈페이지(https://www.raspberrypi.com/software/operating-systems/#raspberry-pi-os-legacy )에서 직접 다운로드 받아 둔 이미지 파일도 있어서 이것을 바로 써 보기로 했다.

1. Raspberry Pi Imager 프로그램에서 일단 디바이스부터 선택하고,

2. 운영체제를 고르는 창에서 맨 아래로 스크롤해서 "Use custom"을 선택하면, PC에 다운받아 둔 로컬 이미지 파일을 고를 수 있다.

 

이번에는 정상적으로 SD카드에 기록되었다.

 

 

반응형
블로그 이미지

Bryan_

,
반응형

OS: Raspbian Jessie

Kernel version: 4.1.7-v7+

Device: Raspberry Pi 2 Model B



라즈베리 파이에서 리눅스 커널 헤더를 apt-get 으로 설치하면, 현재 OS가 실행 중인 것보다 낮은 버전이 설치된다. 실제 사용중인 버전의 커널 헤더를 설치하려면, 홈페이지에 가서 직접 다운로드받아서 설치해야 한다. (이전 포스팅의 1.2 Raspbian용 linux headers 다운로드/설치 항목 참조)


제는 이렇게 sudo dpkg -i로 헤더를 설치하면, 루트 권한으로 설치되면서 소스코드 파일의 퍼미션이 모두 루트만 읽고 쓸 수 있게 되어서 (아마도 600, -rw-------) 일반 유저 프로세스에서 접근할 수 없게 되는 것이다. 


이로 인해 아래와 같은 작업이 모두 루트 권한 없이는 불가능해진다:

  • 커널 모듈을 비롯해서 리눅스 헤더를 참조해서 빌드하는 경우 (make를 sudo make로 해야 되는 상황... 따라서 생성되는 파일이 모두 owner가 root가 되어버린다)
  • ctags 같은 vim 플러그인에서 리눅스 헤더 소스에 접근하지 못하게 됨 (permission denied 처리되면서 소스코드를 로딩하지 못함.)


일단 설치 자체가 루트 권한 없이 불가능하므로, 설치를 다 하고 나서 수동으로 퍼미션을 조정하기로 했다. 일단 리눅스 헤더 최상위 디렉토리 위치에서, 하위 디렉토리에 있는 모든 소스 파일에 644 퍼미션을 줘서 root가 아니어도 read-only 접근이 되도록 했다.


$ cd /usr/src/linux-headers-$(uname -r)

$ sudo chmod -R 644 ./*



이렇게 했더니 하위 디렉토리에 접근 자체가 안된다. 

생각해 보니 디렉토리는 755 퍼미션(drwxr-xr-x)을 줘야 한다. ㅡㅡ;

다행히, 현재 위치에서 하위에 있는 모든 디렉토리의 퍼미션을 755로 변경하는 방법도 있다. [1]


$ cd /usr/src/linux-headers-$(uname -r)

$ sudo chmod 755 $(sudo find ./ -type d)



<추가사항>

여기까지 하면 ctag 같은 작업에는 문제가 없지만, make는 여전히 안될 때가 있다.

가끔 make가 scripts 디렉토리에 있는 실행 파일을 써야 할 때가 있어서 그렇다.

scripts 디렉토리에 있는 실행 파일들도 디렉토리와 마찬가지로 755 퍼미션을 걸어 줘야 한다.

$ cd /usr/src/linux-headers-$(uname -r)/scripts

$ sudo chmod -R 755 ./*

$ sudo chmod -R 644 ./*.[ch]


scripts 디렉토리 안에 실행파일이 아닌 소스 파일들도 있어서 소스 파일은 그냥 실행 옵션을 뺐다.


이제 sudo 없이 make도 잘 되고, ctags도 잘 작동한다. ^^




<참고자료>

[1] "How to chmod all directories except files (recursively)?", http://superuser.com/questions/91935/how-to-chmod-all-directories-except-files-recursively/91966




반응형
블로그 이미지

Bryan_

,
반응형

Model: Raspberry Pi 2 Model B

OS: Raspbian Jessie (2015.09.24)

Kernel: 4.1.7-v7+

gcc: 4.7.3

WLAN device: Netis WF2190 (RTL8812au)


라즈베리파이에 RTL8812au를 소스코드에서 빌드하는 순서는 PC에서 하는 것과 같고, 다만 Makefile 내용만 약간 수정하면 된다. [1]



<선행 요구사항>

*리눅스 헤더 소스가 설치되어 있어야 한다.

*그외 빌드에 필요한 패키지들이 필요할 수 있다. Make 과정에서 빌드 에러가 나는 경우 해당 에러를 없애줄 관련 소스코드를 설치하는 식으로 해야 할 듯.

*라즈베리파이가 인터넷에 연결되어 있어야 한다.



<참고: 라즈베리파이 리눅스 헤더 설치>

사실 커널 버전 4.1.7-v7+ 를 apt-get install에서 설치할 수 없다. 그래서 직접 리눅스 헤더 소스를 받아서 수동 설치해야 하고, 수동으로 설치하려면 특정 버전의 gcc와 dkms가 필요하다. 현재는 gcc-4.7을 필요로 하고 이것은 apt-get install로 되길래 설치했다.


$ sudo apt-get install gcc-4.7

$ sudo apt-get install dkms

(참고로 둘다 수십 MB의 저장 공간을 필요로 한다.)


헤더 소스 설치파일은 deb 파일로 되어 있어서 dpkg로 설치한다.


$ sudo dpkg -i linux-headers-4.1.7-v7+_4.1.7-v7+-2_armhf.deb




<RTL8812AU 드라이버 설치>


PC용 설치와 마찬가지로 git에서 드라이버 소스코드를 받는다.


$ git clone https://github.com/gnab/rtl8812au.git

$ cd rtl8812au



Makefile을 열고 아래와 같이 일부분을 수정한다.


...(생략)...


CONFIG_MP_INCLUDED = n

CONFIG_POWER_SAVING = n

CONFIG_USB_AUTOSUSPEND = n

CONFIG_HW_PWRP_DETECTION = n

CONFIG_WIFI_TEST = n

CONFIG_BT_COEXIST = n

CONFIG_RTL8192CU_REDEFINE_1X1 = n

CONFIG_INTEL_WIDI = n

CONFIG_WAPI_SUPPORT = n

CONFIG_EFUSE_CONFIG_FILE = n

CONFIG_EXT_CLK = n

CONFIG_FTP_PROTECT = n

CONFIG_WOWLAN = n


...(중략)...


CONFIG_PLATFORM_I386_PC = n

CONFIG_PLATFORM_ANDROID_X86 = n

CONFIG_PLATFORM_JB_X86 = n

CONFIG_PLATFORM_ARM_S3C2K4 = n

CONFIG_PLATFORM_ARM_PXA2XX = n

CONFIG_PLATFORM_ARM_S3C6K4 = n

CONFIG_PLATFORM_ARM_RPI = y

CONFIG_PLATFORM_MIPS_RMI = n


...(생략)...


이어서 빌드 및 설치 과정을 진행하면 된다.

$ make
$ sudo make install
$ sudo mobprobe 8812au





<참고자료>

[1] https://www.raspberrypi.org/forums/viewtopic.php?p=706261



반응형
블로그 이미지

Bryan_

,
반응형

Model: Raspberry Pi 2 Model B V1.1

USB WLAN: TP-LINK TL-WN722N (Atheros ath9k_htc)


라즈베리파이를 무선 메쉬 네트워크의 메쉬 라우터로 만드는 과정에서, USB 무선랜카드 2개를 꽂으면 하나가 매우 자주 연결이 끊어지는 현상이 발생했고, 자세히 확인해 보니 아예 device driver가 죽었다가 다시 살아나기를 반복하고 있었다. 그 현상은 아래와 같이 demsg 화면에서 확인할 수 있다. 그림 속 빨간 색 글씨와 같은 에러가 대략 10여 초를 주기로 계속 발생한다. 즉, 겉으로 보면 USB 무선랜카드의 전원 LED가 10초를 주기로 꺼졌다가 켜지기를 반복한다. 당연히 네트워킹은 안 된다.


(2개 이상의 ath9k_htc 계열 USB 무선랜카드를 연결했을 때 자주 보게 되는 에러 메시지. 

저런 식으로 인터페이스 이름이 지속적으로 커져서 phy30이 넘은 적도 있었다... -_-)


5V/2A의 저전력에 의지하는 라즈베리파이 입장에서 USB 무선랜카드 2개를 동시에 쓰면 1개만 쓸 때에 비해서 아무래도 전력이 부족할 가능성이 높다. 게다가 알고 보니 내가 실험에 사용하는 TL-WN722N 모델이 USB 포트를 통한 전력 공급에 문제가 있는 것 같았다. 한 마디로 설상가상이다. ㅜㅜ 

어디선가 영어로 된 페이지에서 알려진 이슈로 위와 같은 현상이 언급되어 있었던 기억이 난다. 지금으로써는 비교할 만한 다른 ath9k_htc 계열 무선랜카드가 없어서 이것이 결함인지 아닌지 알 길이 없다. (그래도 어느정도 결함 수준으로 봐야 할 정도다.)


더 큰 문제는, 안그래도 전력을 많이 쓰는 녀석이 몸집마저 커서 Raspberry Pi 2 Model B에서는 두 개를 동시에 USB 포트에 직접 꽂을 수도 없다는 사실이다. 이것은 사실 라즈베리파이 2 모델의 디자인으로 인해서 생기는 문제이기도 한데, USB 포트 4개가 한 곳에 몰려 있기 때문에 연결되는 USB 객체가 조금이라도 크기가 커지면 연속으로 (심지어 대각선으로도) 꽂을 수가 없다.


그래서 아래 사진과 같이 하나는 USB 포트에 직접 꽂고, 다른 하나는 USB 확장 케이블을 통해서 연결해야만 했다.



그리고 예상대로, USB 확장 케이블(대략 1~1.5m 쯤 되는 듯)을 통해서 연결된 무선랜카드에서만 위의 dmesg 화면과 같이 디바이스 라이버가 재시작하는 문제가 지속적으로 봘생했다. 어쩌다 한 번씩 멀쩡하게 작동하는 듯 했지만, 하루가 지나고 보면 어김없이 하나는 꺼져 있었다.


결국, 매번 재부팅시키고 아슬아슬하게 살아 있기를 바라기만 해서는 정상적인 실험이 불가능하다고 판단하고, 가장 무식하지만 가장 확실한(...) 물리적인 해결책을 사용했다. 그 무식한 방법은 그냥 뚱뚱한 껍데기를 뜯어내는 것 -_-;;

나사가 하나도 없기 때문에 가장자리에서부터 힘으로 열려고 노력하면 생각 외로 잘 뜯어진다(...).  


그 결과...



이제 동시에 무선랜카드 2개를 USB 포트에 직접 꽂을 수 있게 되었고, 신기하게도 디바이스 드라이버가 재시작하는 현상이 말끔히 사라졌다.


...다음부터는 Atheros 계열 무선랜카드를 살 때, 알려진 문제점이 없는지 좀더 검색해 보고 사는 것이 좋겠다. ㅜㅜ



반응형
블로그 이미지

Bryan_

,