[홈랩 구축기] 2️⃣ - Software편

developowl·2026년 1월 5일

Homelab

목록 보기
2/4
post-thumbnail

지난 홈랩 구축기 1️⃣ - Hardware편 에 이어 이번에는 물리적으로 결합만 시킨 라즈베리파이에 소프트웨어를 설치하는 작업을 해보려고 합니다.
Hardware 편에서 짧게 얘기했듯이
초기 라즈베리파이(출고 직후)는 OS가 없는 상태입니다. (본체에 내장 하드 또한 없는 상태구요.) 그렇기 때문에 첫 부팅을 위해 OS Image 가 구워진 micro SD 혹은 USB를 꽂아주어야 합니다.
위와 같은 상황이기에 OS Image를 다운로드 받는 것부터 시작하려고 합니다.

순서

  1. Raspberry Pi OS Image 굽기(Imager 활용)
  2. 1차 부팅 및 시스템 최신화
  3. NVMe SSD 인식을 위한 펌웨어(EEPROM) 설정
  4. SD 카드의 데이터를 SSD로 복사(SD Card Copier)

1. Raspberry Pi OS Image 굽기

Raspberry Pi Imager 설치

  • 라즈베리파이 전용 OS를 다운받기 위해서는 Imager 라는 공식 애플리케이션을 사용해야 합니다. mac 기준 다운로드를 받으면 아래와 같은 애플리케이션이 설치 됩니다.

  • (Raspberry Pi Imager App)
  • 당연한 얘기지만 Imager를 통해 OS를 다운받을 SD카드 혹은 SSD, USB 등의 저장장치가 필요합니다.

Setup Steps - Device

  • 애플리케이션을 실행시키면 가장 먼저 Device 를 선택하는 화면이 나옵니다.
  • 저는 라즈베리파이 5 전용 OS가 필요하기 때문에 상단에 있는 Raspberry Pi 5를 선택했습니다.

Setup Steps - OS

  • 장치(Device)를 선택했다면 다음으로 OS를 선택하는 화면이 나옵니다.
  • 첫 사진 상단에 있는 Raspberry Pi OS (64-bit)을 설치해도 되지만, 저는 리소스 1MB라도 아껴야하기 때문에 Raspberry Pi OS(other) -> Raspberry Pi OS Lite (64-bit) 를 선택해주었습니다.
  • Raspberry Pi OS Lite (64-bit): GUI가 없고, CLI 환경에서만 작업이 가능한 Lite 버전 OS 입니다.
  • 1호기는 문제 없었지만, 2호기부터 문제가 발생하여 좀 더 안정적인 Legacy 버전을 선택했습니다.(위에서 선택한 OS보다 조금 더 아래에 있습니다.)

Setup Steps - Storage

  • 다음으로 OS를 저장할 저장소(Storage)를 선택하는 화면입니다.(사용 중이던 캠코더에 있는 SD카드를 사용했기에 이름이 CAM으로 뜨네요.ㅎㅎ)

Setup Steps - Customisation

이 단계에서는 OS를 커스텀하는 단계들이 연달아 나옵니다.

Hostname

  • 설치할 PC(라즈베리파이)의 hostname을 설정하는 화면이 나옵니다.
  • 우선 1호기에 설치할 OS였기에 node01이라고 hostname을 지었습니다.

Localisation

  • Localisation을 선택하는 화면입니다.
  • 한국 사람이니까 지역과 타임존 모두 한국에 맞추어 설정했습니다.
  • CLI 상에서 한글을 칠 일은 없을 것 같고, 나중에 어떤 문제가 생길지 가늠이 안 되어서 Keyboard layout은 us로 했습니다.

User

  • Username은 admin으로 했지만, 요즘 보안 이슈가 많기 때문에 비밀번호는 admin123이 아닌 굉장히 복잡한 비밀번호로 설정했습니다.

Wi-Fi

  • 초기에 wifi는 사용하지 않을 예정이기에 그냥 넘어가줍니다.

Remote access

  • SSH authentication에 관한 설정을 하는 화면입니다. 퍼블릭 키는 AWS에서 발급되는걸 그대로 사용하기만 해봤어서, 좀 더 공부한 다음에 설정하기 위해 password로 지정했습니다.
  • (초기 설정 단계이기 때문에 가급적이면 password 방식을 선택하시고 추후에 public key를 도입하시는걸 추천합니다.)

Raspberry Pi Connect

  • 라즈베리파이 재단에서 제공하는 웹 브라우저 기반 원격 접속 서비스입니다.
  • 저는 Lite OS(GUI 없음)를 선택했기도 하고, 터미널창이 더 편하니 굳이 선택하지 않았습니다.
  • 그 외에도 1MB의 리소스조차 아껴야 하는 입장이기에 굳이 Connect 관련 프로세스가 필요하진 않는 것 같습니다.

Write image

  • 이제 설치할 준비가 다 끝났습니다. WRITE 버튼을 누르면 SD카드에 OS를 굽기 시작합니다.

  • 친절하게도 현재 연결된 스토리지 내용이 전부 날아가기 때문에 재차 확인을 받습니다.
  • 미리 백업을 해두고 OS를 굽기 위한 스토리지는 싹 밀어버린다고 생각하는 것이 좋습니다.

  • 다운받고 유효성 검사까지 하기 때문에 시간이 5~10분 정도 걸렸던 것 같습니다.

2. 1차 부팅 및 시스템 최신화

  • OS Image 굽기를 완료하였다면, 이제 라즈베리파이에 SD카드(혹은 USB)를 꽂고 1차 부팅을 할 차례입니다.
  • 순서는 (SD카드 삽입, LAN선 삽입) 후 전원 연결입니다.

1차 부팅

  • 사진에 담진 못하였지만, 초록색 불이 불규칙하게 깜빡거린다면 현재 OS를 부팅(Initializing) 중입니다.(성공인거죠.)
  • 이것도 짧게는 몇초에서 길게는 몇분 정도 걸렸습니다.
  • OS가 정상적으로 설치가 되었다면, LAN 포트에 초록불과 주황불이 들어옵니다.(만약 여기서 LAN 포트에 불이 안 들어온다면, OS를 다운받던 중 혹은 하드웨어상 문제가 생긴 것일 수도 있습니다. 조금 기다려본 뒤 앞선 과정들(OS Image 굽기부터)을 다시 반복해보면 됩니다.)

시스템 최신화

(SSH 접속이 성공했다는 가정 하에 진행합니다. SSH 접속 중 제가 겪은 트러블슈팅은 다음 포스트에 공유하겠습니다!)

  • SSH 접속에 성공했다면, 가장 먼저 수행해야 할 작업은 OS를 최신 상태로 만드는 것입니다.
# 1. 패키지 리스트 업데이트

sudo apt update


# 2. 실제 패키지 업그레이드
# 의존성 관계가 바뀐 중요한 시스템 패키지까지 안전하게 처리해주기 때문에 `upgrade` 보다 `full-upgrade`를 권장.

sudo apt full-upgrade -y


# 3. 재부팅
sudo reboot

3. NVMe SSD 인식을 위한 펌웨어(EEPROM) 설정

  • 라즈베리파이5는 기본적으로 SD 카드 부팅을 먼저 시도하도록 설정되어 있습니다.
  • 또한, NVMe SSD를 사용하기 위한 PCIe 포트 설정도 확인해야 합니다.

3-1) 부팅 순서 변경(raspi-config)

sudo raspi-config
  • 입력 시 아래와 같은 화면이 나타납니다.
  • Advanced Options 을 선택합니다.

  • Boot Order 를 선택합니다.

  • NVMe/USB Boot 를 선택합니다. (이 설정을 해야 SD카드가 없을 때 파이가 SSD를 찾아 부팅합니다.)

**raspi-config 내에서 넘버링(A3, B2 등)은 자료마다 조금씩 차이가 있는 것 같습니다. 넘버링을 보고 선택하기보다 직접 옵션들을 읽고 선택하는 것이 좋을 것 같습니다.

3-2) PCIe 속도 업그레이드 (Gen 3 활성화)

  • 라즈베리파이의 기본 설정은 Gen 2로 되어 있어 SSD의 속도를 100% 쓰지 못합니다.
sudo nano /boot/firmware/config.txt

명령어로 설정 파일을 열고, 맨 아래에

# Enable PCIe Gen 3 speed
dtparam=pciex1_gen=3

를 추가하고 저장합니다. (입력 후 Ctrl + O -> Enter -> Ctrl + X 순으로 커맨드를 입력해야 저장 후 나오기가 됩니다. / mac 기준)

sudo reboot
  • 재부팅을 하여 Gen3가 잘 반영되도록 해줍니다.

❗️당연히 잘 적용되었는지 확인을 해봐야 합니다.

# PCIe 링크 상태 확인
dmesg | grep pcie

  • 로그에 link up, 8.0 GT/s 라는 문구가 보인다면 성공입니다.(5.0 GT/s 는 Gen 2의 속도입니다. 8.0이 Gen3의 속도이므로 이를 참고하시어 로그를 보시면 좋습니다.)
  • 실제로 로그를 확인해보면 Gen 3 설정이 성공적으로 되었음을 확인할 수 있습니다.

❗️ 하지만, 로그를 자세히 보면 하단에 5.0 GT/s PCIe 또한 찍혀 있는 것을 볼 수 있습니다.
로그를 조금 더 자세히 분석해보겠습니다. 우선 두 개의 링크가 뜨는 것을 확인할 수 있습니다. 이는 라즈베리파이5 내부에 서로 다른 두 개의 PCIe 통로가 존재하기 때문입니다.

  • 1000110000.pcie (8.0 GT/s): 우리가 장착한 NVMe SSD가 연결된 외부 PCIe 포트입니다. 설정 후에 8.0 GT/s (Gen 3)로 잘 올라간 것을 확인하였으니 성공입니다.
  • 1000120000.pcie (5.0 GT/s): 라즈베리파이5 내부에 있는 RP1이라는 칩셋을 연결하는 통로입니다. 이 칩셋은 USB, 이더넷(LAN) 등을 제어하는데, 내부적으로 5.0 GT/s (Gen 2) 속도로 고정되어 작동합니다.

-> 고로 1000110000.pcie: link up, 8.0 GT/s PCIe x1 (!SSC) 가 로그에 잘 찍혀있다면, 우리가 시도한 Gen3 설정이 잘 되었음을 확인할 수 있습니다.

4. SD 카드의 데이터를 SSD로 복사(SD Card Copier)

이제 하드웨어와 OS 최적화(Gen 3)까지 완벽하게 끝났으니, SD 카드의 데이터를 SSD로 복사하는 과정이 남아 있습니다.

# rpi-clone 도구 다운로드 및 설치
git clone https://github.com/billw2/rpi-clone.git
cd rpi-clone
sudo cp rpi-clone rpi-clone-setup /usr/local/sbin


# SD 카드의 OS와 설정값들을 NVMe SSD(nvme0n1)로 통째로 복사합니다.
sudo rpi-clone nvme0n1
  • 위 커맨드 실행 후 Destination disk partition... 이라는 질문들이 나오는데 yes를 입력하며 진행하면 됩니다.
  • 복사가 완료되었다면 전원을 끄고 SD 카드를 라즈베리파이에서 제거한 뒤, 다시 전원을 켭니다.(이때 정상적으로 부팅이 되었다면 1차적으로 OS가 SSD에 잘 복사되었구나 라고 생각해도 좋습니다.)

❗️ 이번에도 설정들이 잘 적용되었는지 확인이 필요합니다.

# 시스템에 연결된 모든 블록 장치(저장 매체)의 정보를 확인하는 명령어
# List Block Devices
lsblk

  • nvme0n1: 장치 목록에 SSD가 표시되었습니다.(성공입니다.)
  • MOUNTPOINTS: 루트 경로(/)가 nvme0n1p2에 연결되어 있다면, 이제 OS는 SD 카드가 아닌 SSD에서 구동 중임을 의미합니다.(성공입니다.)
  • 용량 확인: 256GB SSD의 실제 사용 가능한 용량(약 238G)이 정상적으로 표시되는지 확인합니다.(성공입니다.)

마무리

하드웨어 설정에서 복잡한 작업이 다 끝났다고 생각했는데, 소프트웨어단에서의 작업은 다른 느낌으로 몹시 어려웠던 것 같습니다. 이렇게 초기 작업을 처음해보는터라 트러블슈팅하고 찾아보고, 시행착오를 겪으며 며칠이 걸린 것 같습니다. 실제 겪었던 자잘한 트러블슈팅을 한 번에 다루면 좋겠다고 생각하여 이번 포스트에서는 성공한 케이스만 기록했습니다. 한 번에 안 된다고 좌절하지 마세요... 끝까지 포기하지 않고 시도해보면 언젠가 되는 것 같습니다...ㅎㅎ

다음번 포스팅에서는 OS 설치를 하며 겪은 여러 이슈들과 고정 IP 할당에 대해서 다루어보겠습니다. 조금만 더 하면 온전한 홈서버를 구축하게 되네요. 긴 글 읽어주셔서 감사합니다. :)

profile
Don’t get mad at the computer.

0개의 댓글