이번에는 취미로 구매한 라즈베리파이 제로를 사용하기 위한 가장 기초적인 headless setup을 진행한다.
필자는 일반 버전과 w 버전 둘다 시도해보았으며 작업 환경은 windows 11 이다.
라즈베리파이 일반 버전 (Without wireless) 일반 버전은 추가적인 장비 없이 터미널을 여는 가장 쉬운 방법은 usb로 접근하는 방법이며 여기서는 usb로 ssh에 접근하는 방법에 대해서 다룬다.
Raspberry Pi OS Imager를 다운로드하고 설치 후 Raspbian Lite 버전으로 부팅 카드를 만들고 그림 1 과 같이 생성된 디렉토리 내부에 ssh 이름으로 빈 파일을 만들고 config.txt와 cmdline.txt 파일을 각각 그림 2 와 그림 3과 같이 수정한다.
usb를 통한 네트워크 통신을 하기 위해 RNDIS 드라이버를 다운로드 하고 호스트네임으로 쉽게 라즈베리파이제로에 접근하기 위해 Bonjour를 설치한다.
Bonjour 설치가 끝났다면 이제 라즈베리파이제로에 부팅 카드를 삽입하고 usb로 컴퓨터랑 연결한다. (이때 그림 4 처럼 PWR 포트가 아니라 USB 포트로 연결해야 한다.)
그림 5 와 같이 인식하는 usb 포트번호를 확인하고 그림 6 과 같이 해당 포트의 드라이버를 다운로드한 RNDIS 드라이버로 업데이트한다. 그러면 그림 7 과 같이 네트워크 어댑터가 생성됨을 확인할 수 있다.
마지막으로 그림 8과 같이 pi@raspberrypi.local 로 접속해 본다. (비밀번호는 raspberry 이다.)
드라이버를 설치했지만 접속이 안되는 경우는 Bonjour 설치 확인 또는 라즈베리파이제로를 컴퓨터에서 분리하고 다시 연결해본다.
라즈베리파이 w 버전 (With wireless) w 버전은 와이파이를 지원하기 때문에 이를 이용하면 쉽게 ssh 접근이 가능하며 여기서는 wifi로 ssh에 접근하는 방법에 대해서 다룬다.
Raspberry Pi OS Imager를 다운로드하고 설치 후 Raspbian Lite 버전으로 부팅 카드를 만들고 해당 디렉토리의 내부에 그림 9 와 같이 비어있는 ssh 와 wpa_supplicant.conf 파일을 만들어준다.
위 설정은 WPA2-PSK 알고리즘과 AES 암호 알고리즘을 사용하는 공유기를 위한 설정이다. 기본적으로 대부분 이렇게 설정이 되어있을 것 같지만 아닌경우 각자 자신에게 맞는 설정을 해야할 필요성이 있다. 좀더 자세한 설명과 예제는 wpa_supplicant.conf 에서 확인할 수 있다.
다음 cmdline.txt 파일을 그림 10 과 같이 수정해서 이더넷 모듈을 활성화 한다.
전원을 인가한 후 2 분 정도 기다리면 그림 11 과 같이 공유기 웹 페이지에서 raspberrypi라는 호스트 정보가 나온다.
마지막으로 그림 12 와 같이 확인한 ip 정보를 이용해 ssh 접속을 시도한다. (비밀번호는 raspberry 이다.)
Windows 라이센스는 인증 채널은 종류가 여러가지 있다. 하지만 이 중에서 일반 사용자가 접할 수 있는 라이센스 인증 채널은 아마 Retail과 OEM 그리고 Volume 채널이라고 생각한다.
Retail 채널은 정식적으로 Windows 구매를 하고 인증이 된 컴퓨터에서 확인할 수 있으며 자유롭게 다른 컴퓨터로 인증 이동이 가능하다.
OEM 채널은 컴퓨터 제조업체에서 구매한 컴퓨터에서 확인할 수 있으며 한 컴퓨터에만 인증이 고정된다.
Volume 채널은 비즈니스, 교육용이면 확인이 가능하지만, 전자상거래에서 단돈 몇천원에 판매하는 라이센스에서도 발견된다. 만약 싸게 구매한 라이센스라면 비즈니스 또는 교육용 라이센스가 유출된 라이센스를 구매한 경우이며 이는 불법이고 종류에 따라서 인증이 쉽게 풀리는 경우도 발생한다. 물론 다른 컴퓨터로 인증 이동이 불가능하다.
채널 종류는 (Win 키 + R -> cmd -> slmgr -dli 입력) 을 순서대로 진행하면 그림 1과 같이 메세지창에서 확인이 가능하다.
*시작하기에 앞서 본 글의 목적은 WSL에서 CUDA를 설치하는 게 목표이다. 하지만 이 과정에서 Windows 11로 업그레이드가 진행되기 때문에 업그레이드를 원하지 않는 유저는 다른 방법을 찾아봐야 한다. 그리고 단순히 Windows 11로 업그레이드가 하고 싶은 유저는 Windows 11 설치단계까지만 진행하면 된다.
Windows Insider Program 등록 없이 바로 WSL를 설치할 수 있지만, 본인이 직접 진행해 본 결과 CUDA를 사용할 수 없었다. 아쉽지만 문서에서 요구하는 대로 설치를 진행할 수밖에 없다. (OS build 20262 or higher)
등록 방법은 쉽다. Settings에 들어가서 왼쪽 메뉴에서 Windows Insider Program을 클릭하고 Microsoft 계정으로 로그인해서 등록하면 끝이다. 그리고 그림 1과 같이 Insider Channel을 Dev Channel로 변경하고 Windows Update 메뉴로 들어가 업데이트를 확인해주면 자동으로 Windows 11을 다운로드하고 설치를 진행한다.
이 경우에는 레지스트리를 바꿔서 채널을 바꿀 수 있다. 레지스트리 편집기를 열고(Win + R) 아래 경로로 순차적으로 접근하여 레지스트리를 수정한다.
1. Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsSelfHost\UI\Selection 경로에서 UIBranch의 값을 Dev로 변겅
2. Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsSelfHost\Applicability 경로에서 BranchName을 Dev로 변경
이 과정을 모두 끝내면 Insider Channel이 Dev로 바뀌어 있음을 확인할 수 있다.
Issue 2.그림 2와 같이 The PC must support TPM 2.0 에러가 발생하는 경우
이는 메인보드에서 TPM 기능을 활성화하지 않아서 발생하는 에러로 그림 3과 같이 BIOS에서 활성화가 가능하다. 모든 메인보드가 본인이 사용하는 메인보드와 같지 않기 때문에 그림 3은 참고용으로만 확인하고 TPM 기능 활성화 옵션은 자신의 메인보드 메뉴얼을 직접 검색해서 찾아야 한다.
Issue 3.그림 2와 같이 The PC must support Secure Boot 에러가 발생하는 경우
이는 메인보드에서 Secure Boot 기능을 활성화 하지 않아서 발생하는 에러로 마찬가지로 BISO에서 설정이 가능하지만 이를 위해서 부팅모드를 기존 Legacy에서 UEFI로 전환해야 한다. 그리고 이 과정에서 UEFI는 GPT 파티션 스타일만 지원하기 때문에 기존 MBR에서 GPT로 파티션 스타일을 전환하는 과정도 거처야 한다.
다음은 WSL 설치 단계로 Control Panel에서 Programs and Features 메뉴에 진입하고 Turn Windows Features On or Off를 클릭해서 그림 7과 같이 Virtual Machine Platform 과 Windows Subsystem for Linux 옵션을 켜준다.
컴퓨터를 재부팅 한 후 그림 7과 같이 Microsoft Store App을 실행하고 우분투를 설치한다.
Relevance Feedback(RF)란 보다 더 나은 검색 결과를 얻기 위해서 초기에 얻은 검색 결과에서 연관된 결과를 다시 새롭게 입력으로 넣는 방법들을 의미하며 크게 Explicit Relevance Feedback(ERF), Implicit Relevance Feedback(IRF), Pseudo Relevance Feedback(PRF)이 있으며 PRF는 Blind Relevance Feedback(BRF)이라고도 한다 [1].
RF는 검색엔진이 내놓은 결과에서 관련성이 있는 결과를 피드백 해주어야 하는데 PRF는 RF와 다르게 유저와 추가적인 상호작용 없이 효과적인 검색결과를 얻는 방법을 의미한다 [2, 3].
이러한 PRF는 유저의 추가적인 개입이 필요가 없기 때문에 검색관련 논문들에서 많이 사용된다. PRF는 아래와 같은 과정을 거친다 [4].
1. 유저가 쿼리를 보낸다.
2. 검색엔진이 유저가 보낸 쿼리에 맞는 초기 검색 결과를 내놓는다.
3. 검색결과의 top-k는 연관성이 있는 결과로 간주하고 나머지는 관련성이 없다고 간주한다.
4. 이렇게 나온 top-k의 결과를 다시 유저 쿼리로 간주하여(Query Expansion) 다시 검색엔진에 넣고 새로운 검색 결과를 가져온다.
참고로 이러한 기법들은 반드시 문서(text, document)에만 적용된다는 법은 없다.(쉽지는 않지만 상상을 펼치면 곧 논문이 된다 ㅇㅅㅇ;)
나의 경우에는 리눅스를 ssh로만 접속해서 사용한다. 그런데 당연하지만 ssh로 웹서핑이 안되기에 데이터를 가져오는 다른 방법을 사용해야한다. 드롭박스와 구글드라이브는 많은 서드파티 유틸도 존재해서 그걸 사용해도 되지만 난 간편하게 사용할 수 있는 방법을 선호하는 편이라서 이번에 wget만을 사용해서 각 스토레지 클라우드로부터 데이터를 가져오는 방법에 대해서 서술하려고 한다.
1. google drive[1]
google drive를 위한 wget 명령어는 아래와 같고 결과는 그림 3 과 같다.(공유파일의 고유 아이디는 공유링크에서 확인 가능하다.)
$ wget --no-check-certificate "https://docs.google.com/uc?export=download&id=<공유파일의 고유 아이디>" -O "README.txt"
2. dropbox[2]
dropbox를 위한 wget 명령어는 아래와 같고 결과는 그림 6 과 같다.(복사한 공유링크 맨 뒷부분 ?dl=0 부분만 제거한다.)
$ sudo vi /etc/apache2/sites-available/owncloud.conf
> Alias /owncloud "/var/www/owncloud/"
>
> <Directory /var/www/owncloud/>
> Options +FollowSymlinks
> AllowOverride All
>
> <IfModule mod_dav.c>
> Dav off
> </IfModule>
>
> SetEnv HOME /var/www/owncloud
> SetEnv HTTP_HOME /var/www/owncloud
> </Directory>
$ sudo a2ensite owncloud.conf
$ sudo systemctl reload apache2
7. 데이터베이스 생성 및 유저권한을 설정한다. (유저 및 패스워드는 직접 정해도 된다, 다만 잊어버리지 말것)
$ sudo mysql
MariaDB [(none)]> CREATE DATABASE IF NOT EXISTS owncloud;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON owncloud.* TO owncloud@localhost IDENTIFIED BY 'password';
$ sudo mysql
MariaDB [(none)]> use owncloud;
MariaDB [(none)]> UPDATE oc_storages SET id='local::/RAID5/data/' WHERE id='local::/var/www/owncloud/data/';
MariaDB [(none)]> UPDATE oc_accounts SET home='/RAID5/data/admin' WHERE id=1;
5.2 ownCloud 설정수정
$ sudo -u www-data php /var/www/owncloud/occ config:app:set --value /RAID5/data fictitious datadir
$ sudo vi /var/www/owncloud/config/config.php
> 'datadirectory' => '/var/www/owncloud/data', 를 'datadirectory' => '/RAID5/data', 로 수정