1. 준비물

- 라즈베리파이 5

- Micro SD (32G 이상 권장)

 

2. 라즈베리파이 Imager 설치

https://www.raspberrypi.com/software/

 

Raspberry Pi software – Raspberry Pi

From our operating system to our GitHub repos, explore the software that powers our technology

www.raspberrypi.com

Download for Windows -> 작성 시점 기준 버전 v2.0.0 

 

3. 이미지 굽기

3.1. Device 선택

 

3.2. OS 선택

Ubuntu 설치 예정으로 Choose operation system 목록에서 Other general-purpose OS > Ubuntu -> Ubuntu Server 24.04.3 LTS (64bit) 선택 

(최초 Ubuntu Server 최신 버전으로 설치 했으나 지원기간 문제로 LTS 버전으로 변경, 이후 캡쳐에 나오는 25.10 버전은 참고만 하세요)

3.3. 저장 장치 선택

 

3.4. 맞춤 설정 (Customisation)

3.4.1. Customisation: Choose hostname

쿠버네티스 워커노드로 사용 할 것이라 node1 로 입력함

 

3.4.2. Customisation: Localisation

Capital city: Seoul (South Korea)

Time zone: Asia/Seoul

키보드 레이아웃: kr

 

3.4.3. Customisation: Chose username

여기서 입력한 사용자(그룹명 동일) gid: 1000, uid: 1000  으로 생성된다.

 

3.4.4. Customisation: Choose Wi-Fi

사용할 Wi-Fi 지정

 

3.4.5. Customisation: SSH suthentication

설치 후 SSH로 접근 할 예정이므로 SSH 사용을 활성화 한다.

(비밀번호 인증 사용 선택)

 

3.5. Write image

선택한 저장장치에 모든 내용이 지워진 다는 경고

저장 장치의 내용을 확인하고 문제 없으면 [I UNDERSTAND, EARASE AND WRITE] 클릭

 

저장장치에 리눅스용 파티션을 하므로 윈도우에서 아래와 같은 경고창이 나옵니다.

취소 클릭

 

확인 클릭

 

3.6. 완료

FINISH 클릭 후 메모리 제거 해서 라즈베리파이 5에 장착 후 부팅

 

4. 라즈베리파이 부팅 

4.1. 모니터, 키보드가 연결 된 경우

아래와 같은 화면이 표시 됩니다.

 

최초 부팅이 완료 되고 나서도 이런 저런 설정 및 업데이트가 필요 하므로 여러 메시지가 덮어써질 수 있습니다. 최대 10분 이상 대기후 엔터를 치면 아래와 같은 로그인 화면이 나옵니다.

 

이미지 만들 때 입력한 사용자 명과 비밀번호를 입력 후 로그인

 

$ ip address 명령으로 DHCP로 할당된 IP를 확인 하실 수 있습니다.

 

4.2. 모니터, 키보드가 없는 경우

4.2.1. hostname 으로 ping이 되는경우

대부분 별도의 모니터 키보드가 연결 되지 않은 경우가 많습니다.

같은 네트워크에 있는 경우 mDNS 프로토콜을 이용해 앞서 입력한 hostname 으로 연결이 가능합니다.

윈도우 PowerShell 실행

ping {hostname} 명령 실행

 

ssh {username}@{hostname} 으로 ssh 접속

 

최초 접속 하는 경우 공개 인증키 지문을 저장하라고 나옵니다. (yes 입력)

앞서 지정한 비밀번호를 입력 하면 로그인 프롬 프트가 떨어집니다.

 

$ ip address 명령으로 현재 할당된 IP 주소가 표시 됩니다.

 

4.2.2. mDNS 프로토콜이 제대로 되지 않는 경우

hostname 으로 ping 응답이 없을 수 있습니다.

Advenced IP Scanner 같은 어플리케이션을 다운 받아서 현재 네트워크에 물려있는 디바이스의 IP를 확인하는 방법으로 라즈베리파이의 IP를 확인해야 합니다.

https://www.advanced-ip-scanner.com/kr/

 

Advanced IP Scanner - 무료 네트워크 스캐너를 다운로드하십시오

Advanced IP Scanner LAN을 분석할 수 있는 믿을 수 있는 무료 네트워크 스캐너. 이 프로그램은 모든 네트워크 장치를 보여주고, 공유 폴더에 대한 액세스를 허용하고, 컴퓨터의 원격 제어를 제공하고(R

www.advanced-ip-scanner.com

 

다운 받은 후 실행하면 아래와 같은 화면이 나옵니다.

본인이 사용하는 네트워크에 맞는 C클래스 범위가 자동으로 선택 됩니다. 

IP 범위 확인 후 [▶스캔] 버튼 클릭

 

한참 기다리면 로컬 네트워크에 연결된 디바이스 목록들이 나옵니다.

저는 워커노드로 3개를 설치해서 192.168.2.13 / 192.168.2.14 / 192.168.2.15 3개가 표시 됩니다.

 

ssh {username}@{ipadress} 로 접속

 

본인의 경우 이전에 사용하던 IP의 SSH 키가 저장되어 있고, 라즈베리파이를 새로 설치하면서 SSH Key 값이 변경되어서 오류가 발생했습니다.

위 경로( C:\Users\user\.ssh\known_hosts)의 파일을 열어 보면 192.168.2.14 IP에 대한 키 값들이 저장되어 있습니다.

OS를 새로 설치해서 이미 변경되었으므로 해당 라인을 삭제 후 저장 합니다.

 

다시 PowerShell 에서 ssh {username}@{ipaddress} 로 접속하면

최초 SSH 카를 저장 할 것 인지 물어봅니다. (yes 입력)

비밀번호 입력 하면 접속이 됩니다.

 

5. 패키지 업데이트 및 추가 어플리케이션 설치

OS 설치후 최신 패키지로 업데이트 합니다.

$ sudo apt update -y

basscraft@node1:~$ sudo apt update -y
[sudo: authenticate] Password:
Hit:1 http://ports.ubuntu.com/ubuntu-ports questing InRelease
Hit:2 http://ports.ubuntu.com/ubuntu-ports questing-updates InRelease
Hit:3 http://ports.ubuntu.com/ubuntu-ports questing-backports InRelease
Hit:4 http://ports.ubuntu.com/ubuntu-ports questing-security InRelease
38 packages can be upgraded. Run 'apt list --upgradable' to see them.
basscraft@node1:~$

 

$ sudo apt upgrade -y

basscraft@node1:~$ sudo apt upgrade -y
Upgrading:
  apparmor                   initramfs-tools-bin   libdrm2                 packagekit
  dpkg                       initramfs-tools-core  libnetplan1             packagekit-tools
  flash-kernel               iproute2              libpackagekit-glib2-18  python3-netplan
  flash-kernel-piboot        libapparmor1          linux-firmware-raspi    snapd
  gir1.2-packagekitglib-1.0  libdrm-amdgpu1        netplan-generator       ubuntu-pro-client
  initramfs-tools            libdrm-common         netplan.io              ubuntu-pro-client-l10n

Not upgrading yet due to phasing:
  bsdextrautils  eject  libblkid1  liblastlog2-2  libsmartcols1  login  util-linux
  bsdutils       fdisk  libfdisk1  libmount1      libuuid1       mount  uuid-runtime

Summary:
  Upgrading: 24, Installing: 0, Removing: 0, Not Upgrading: 14
  Download size: 46.8 MB
  Space needed: 469 kB / 116 GB available

Get:1 http://ports.ubuntu.com/ubuntu-ports questing-updates/main arm64 dpkg arm64 1.22.21ubuntu3.1 [1275 kB]
Get:2 http://ports.ubuntu.com/ubuntu-ports questing-updates/main arm64 iproute2 arm64 6.16.0-1ubuntu2.1 [1149 kB]
Get:3 http://ports.ubuntu.com/ubuntu-ports questing-updates/main arm64 libapparmor1 arm64 5.0.0~alpha1-0ubuntu8.3 [57.8 kB]
Get:4 http://ports.ubuntu.com/ubuntu-ports questing-updates/main arm64 python3-netplan arm64 1.1.2-8ubuntu1~25.10.1 [23.0 kB]
... 생략 ...
Copying kernel assets to /boot/firmware/new/
Copying boot firmware to /boot/firmware/new/
Copying device trees to /boot/firmware/new/
Copying device tree overlays to /boot/firmware/new/overlays/
Please be aware next reboot will boot twice
Scanning processes...
Scanning candidates...
Scanning processor microcode...
Scanning linux images...

Pending kernel upgrade!
Running kernel version:
  6.17.0-1003-raspi
Diagnostics:
  The currently running kernel version is not the expected kernel version 6.17.0-1006-raspi.

Restarting the system to load the new kernel will not be handled automatically, so you should consider rebooting.

Failed to check for processor microcode upgrades.

Restarting services...
 /etc/needrestart/restart.d/systemd-manager
 /etc/needrestart/restart.d/systemd-user

Service restarts being deferred:
 /etc/needrestart/restart.d/dbus.service
 systemctl restart networkd-dispatcher.service
 systemctl restart unattended-upgrades.service

No containers need to be restarted.

User sessions running outdated binaries:
 basscraft @ user manager: (sd-pam)[1538]

No VM guests are running outdated hypervisor (qemu) binaries on this host.
basscraft@node1:~$

 

메시지 중 "Please be aware next reboot will boot twice" 다음 재부팅 시에 두번 재부팅이 될 수 있다고 하네요.

 

net-tools 설치 (선택)

net-tools 패키지는 리눅스에서 네트워크 관련 설정, 확인, 관리하는 여러가지 명령어를 포함하고 있습니다.

필요에 따라 설치.

basscraft@node1:~$ sudo apt install net-tools -y

 

vi 에디터 설치 (이미 설치 되어 있으므로 스킵)

 

6. IP 고정

기본 설치하는 경우 DHCP로 자동으로 IP를 할당 받습니다.

이경우 여러가지 이유로 부팅시 IP가 변경 될 수 있습니다.

쿠버네티스의 워커노드로 이용하기 때문에 IP를 고정 할 필요가 있습니다.

ubuntu 의 경우 /etc/netplan/ 디렉토리 아래에 설정파일이 존재 합니다.

basscraft@node1:~$ ls -al /etc/netplan
total 12
drwxr-xr-x   2 root root 4096 Oct  7 18:51 .
drwxr-xr-x 109 root root 4096 Dec 18 17:07 ..
-rw-------   1 root root  306 Oct  7 18:51 50-cloud-init.yaml
basscraft@node1:~$

50-cloud-init.yaml 파일을 수정 합니다.

 

기존 파일의 내용입니다.

basscraft@node1:~$ sudo cat /etc/netplan/50-cloud-init.yaml
network:
  version: 2
  wifis:
    wlan0:
      optional: true
      dhcp4: true
      regulatory-domain: "KR"
      access-points:
        "zerowin-gacha-subnet-5G":
          auth:
            key-management: "psk"
            password: "f18934876885221f1b09c47109bf992763e2471673d81ffd67ab7dce70be194c"
basscraft@node1:~$

 

수정된 파일내용 입니다.

ymal 파일은 들여쓰기에 따라 의미가 달라지고 레이블 명과 값의 구분자 ':' 등 민감 합니다. 내용을 잘 보시고 수정해야 합니다.

network:
  version: 2
  renderer: networkd
  wifis:
    wlan0:
      optional: true
      dhcp4: no
      addresses:
        - 192.168.2.101/24
      routes:
        - to: default
          via: 192.168.2.1
      nameservers:
        addresses:
          - 8.8.8.8
          - 8.8.4.4
      regulatory-domain: "KR"
      access-points:
        "zerowin-gacha-subnet-5G":
          auth:
            key-management: "psk"
            password: "보안삭제"

수정한 내용은 wlan0 인터페이스(기본 Wi-Fi)에 대해 

  • DHCP: 사용 안함
  • IP: 192.168.2.101/24 지정
  • GW : 192.168.2.1 지정
  • 네임서버 : 8.8.8.8 (구글 1차), 8.8.4.4 (구글 2차) 지정

입니다.

설정이 제대로 되었는지 먼저 확인해봐야 합니다.

SSH 로 접속 된경우 연결이 끊어 지므로 주의 해야 합니다.

 

basscraft@node1:~$ sudo netplan try
client_loop: send disconnect: Connection reset
PS C:\Users\user>

변경한 IP 로 정상 접속 되는지 확인합니다.

PS C:\Users\user> ssh basscraft@192.168.2.101

yaml 파일의 내용이 정상적인 경우 새로운 IP에 대한 SSH 키 저장 메시지가 나오고 정상 접속이 됩니다.

netplan try 명령의 경우 잠시후 원래의 IP로 복구 되는 점 유의 하시기 바랍니다.

잠시후 다시 원래의 IP 192.168.2.13 으로 접속해서 설정을 영구히 적용합니다.

basscraft@node1:~$ sudo netplan apply
client_loop: send disconnect: Connection reset
PS C:\Users\user>

 

이제 수정된 IP로 접속해서 IP가 정상적으로 바뀌었는지 확인 합니다.

PS C:\Users\user> ssh basscraft@192.168.101
... 생략...

basscraft@node1:~$ ifconfig
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 277  bytes 22020 (22.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 277  bytes 22020 (22.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.2.101  netmask 255.255.255.0  broadcast 192.168.2.255
        inet6 fe80::2ecf:67ff:fe9b:afaa  prefixlen 64  scopeid 0x20<link>
        ether 2c:cf:67:9b:af:aa  txqueuelen 1000  (Ethernet)
        RX packets 11147  bytes 1251907 (1.2 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 9419  bytes 989104 (989.1 KB)
        TX errors 0  dropped 3 overruns 0  carrier 0  collisions 0

basscraft@node1:~$

6. 재부팅

$ sudo reboot

basscraft@node1:~$ sudo reboot
basscraft@node1:~$ client_loop: send disconnect: Connection reset
PS C:\Users\user>

 

재부팅 하고 반드시 ip addr 또는 ifconfig 등의 명력으로 ip 가 변경되었는지 확인하여야 합니다.

basscraft@node1:~$ ifconfig
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 270  bytes 21224 (21.2 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 270  bytes 21224 (21.2 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.2.101  netmask 255.255.255.0  broadcast 192.168.2.255
        inet6 fe80::2ecf:67ff:fe9b:afaa  prefixlen 64  scopeid 0x20<link>
        ether 2c:cf:67:9b:af:aa  txqueuelen 1000  (Ethernet)
        RX packets 587  bytes 129373 (129.3 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 249  bytes 36785 (36.7 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

basscraft@node1:~$

 

끝.

+ Recent posts