Raspberry Pi OS 그리고 USB 부팅

1.
둘째가 카톡을 보냈습니다. 데스크탑에서 리눅스로 부팅하려고 하는데 되지 않는다는 이야기입니다. 혹시나 해서 리눅스를 설치하여 듀얼부팅을 가능하도록 했는데 문제가 생긴 모양입니다. 둘째는 식물병리학을 전공하는데 머신런닝을 이용하여 병충해를 조기에 발견하는 연구를 하고 있습니다. 그래서 만날 때마다 “파이썬 공부해라”, “리눅스 공부해라”라고 잔소리했는데 리눅스를 배우려는 듯 합니다.

지난 주 금토요일 대전을 찍고 고창을 다녀왔습니다. 석사를 마친 둘째가 박사과정에 합격했다고 하니까 과천에서 축하만 할 수 없었습니다. 영상기반 식물병리학을 전공할 듯 하네요. 석사부터 해왔지만 병리학을 본격적으로 한다고… 아빠보다 가방끈이 엄청 길어지고 있습니다.(^^)

고창은 아는 분이 소개한 집을 보기 위함입니다. 몇 년안에 시골로 내려갈 계획이라 이곳저곳 살펴보는 중입니다. 어떤 분들은 땅도 사고 집도 짓지만 저는 값 싼 지상권주택이면 만족합니다. 집이야 고치면 되고 땅에 투자할 생각은 없습니다. 필요하면 소작합니다.오랜만에 높은 빌딩이 없는 곳을 다니니까 가슴이 탁 트입니다. 도로를 달려도 옛날 신작로라는 단어가 주는 느낌이 떠오릅니다. 북적인 곳이니까 먹을 것이 많지만 먹기 위해 해야 하는 경쟁이 결국 지치게 합니다. 내가 누린 것중 어느 정도 줄이려고 합니다. 고생이겠지만 익숙해지지 않을까 합니다. 이곳저곳을 다니다 보면 동네의 역사를 듣는 재미도 있겠죠. 지난 주말도 그런 경우였습니다. 몇 년 집을 보러다닐 예정입니다. 혹 쓸만한 곳 추천도 환영합니다.

그래서 아예 작은 리눅스박스를 주기로 하였습니다. 몇 년전 USB부팅하는 라즈베리파이 서버 만들기에서 소개하였던 라즈베리파이 시스템입니다. 여분으로 가지고 있던 박스를 이용하여 최신의 Raspberry Pi OS를 설치할 계획입니다.

관련한 문서를 보니까 이전에 했던 것에 비하여 무척 단순해졌습니다. 달라진 점은 OS입니다. Raspberry Pi가 자체적으로 OS를 내놓았고 이를 위한 부팅디스크 프로그램도 내놓았기때문입니다. Imager라는 프로그램을 이용하여 별도로 OS 이미지를 다운받지 않고 부팅디스크를 만들 수 있습니다. 아래가 처음 실행하고 OS를 선택하는 화면입니다.



기본적인 선택을 하면 끝이 아니라 추가로 설정을 할 수 있습니다. Customizing입니다. 예전에는 이런저런 작업을 해야 했는데 부팅이미지를 만들 때 기본적인 설정이 가능하도록 바뀌었습니다.



이상을 한 후 마이크로SD를 넣고 부팅을 하면 아래와 같은 모습입니다.

2.
이제 한걸음 나아갈 때입니다. 마이크로SD가 아니라 USB에 연결된 대용량 저장장치(HDD 혹은 SSD)를 이용하여 부팅이 가능하도록 하는 작업을 해야 합니다. 예전에는 이 부분이 복잡했는데 지금은 간단합니다. vcgencmd는 VideoCore GPU를 이용하여 Raspberry Pi의 다양한 정보를 얻을 수 있는 명령어입니다.

그중 Boot Mode Register와 관련한 부분이 17인데 결과예입니다.

17 – 부트모드 레지스터

Bit 1: sets the oscillator frequency to 19.2MHz
Bit 3: enables pull ups on the SDIO pins
Bit 19: enables GPIO bootmode
Bit 20: sets the bank to check for GPIO bootmode
Bit 21: enables booting from SD card
Bit 22: sets the bank to boot from
Bit 28: enables USB device booting
Bit 29: enables USB host booting (ethernet and mass storage)
18 – copy of bootmode register

vcgencmd 명령어를 입력한 후 17:1020000a이 나오면 USB부팅이 불가능한 상태입니다.

이를 가능하도록 하는 상태로 바꾸어줍니다. config.txt파일 맨 마지막에 program_usb_boot_mode=1 을 추가합니다. 그런데 config.txt를 찾으면 /boot에 있는 파일이 아닙니다. /boot/firmware에 있는 파일을 수정하라고 합니다.

echo program_usb_boot_mode=1 | sudo tee -a /boot/firmware/config.txt

config.txt를 수정하고 다시 부팅을 합니다. 앞서와 같은 명령어를 입력합니다.그러면 결과가 다릅니다.

3.
이제 SSD 혹은 HDD로 부팅하기 위하여 OS를 설치하는 작업을 하여야 합니다. 앞서 MicroSD를 이용할 때처럼 Imager를 이용하면 간단합니다.

여기서 제가 실수 혹은 착각한 부분이 있습니다. 이전에 작업할 때는 USB부팅으로 설정하는 명령어가 없었습니다. 대신 config.txt, cmdline.txt를 수정하여 microSD를 읽은 후 cmdline에 정의한 디스크에서 부팅을 진행하도록 하였습니다. 처음에 저는 USB부팅을 가능하도록 한다는 의미를 microSD를 읽은 이후 과정을 자동으로 하는 줄로 착각하였습니다. 이전과 같은 방식으로 하니까 계속 오류가 발생합니다. 다시금 문서를 읽었습니다.

USB부팅의 의미는 microSD를 사용하지 않고 USB에 연결된 Disk만을 이용하여 부팅하는 것으로 의미하였습니다. 앞서 MicroSD부팅은 USB부팅을 가능하도록 하는 절차으로만 의미가 있습니다.

이제 USB로 부팅하였습니다. 다음 절차는 OS를 현재화합니다.

Leave a Comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.