Raspberry pi에 Ubuntu 설치 및 기본 설정하기 (Wi-Fi, 시간대 등)
컴퓨터/Linux

Raspberry pi에 Ubuntu 설치 및 기본 설정하기 (Wi-Fi, 시간대 등)

라즈베리 파이 에서 라즈비안(Raspbian)이 아닌 우분투를 설치하여 네트워크 설정, 시간대 설정, 시스템 업데이트를 하는 방법 정리

- 제가 사용하는 Raspberry Pi 4 에 맞춰 작성했습니다.

아래 방법으로 진행하여도 Wi-Fi 연결이 되지 않는다면 아래 글을 참조하세요.

2020/03/23 - [컴퓨터/Embedded] - Raspberry Pi, Ubuntu 환경에서 Wi-Fi 연결이 되지 않는 경우

 

Raspberry Pi, Ubuntu 환경에서 Wi-Fi 연결이 되지 않는 경우

이전에 라즈베리 파이에 네트워크 설정하는 방법을 정리했습니다 (아래 링크 참조). 2020/03/23 - [컴퓨터/Embedded] - Raspberry pi에 Ubuntu 설치 및 Wi-Fi 설정하기 Raspberry pi에 Ubuntu 설치 및 Wi-Fi 설정..

vanilet.tistory.com

 


1. 우분투 이미지 다운받기 및 라즈베리 파이 부팅하기

1-1. https://ubuntu.com/download/raspberry-pi 에 접속하기

 

Install Ubuntu Server on a Raspberry Pi 2, 3 or 4 | Ubuntu

Ubuntu is an open-source operating system for cross platform development, there’s no better place to get started than with Ubuntu on a Raspberry Pi.

ubuntu.com

1-2. Raspberry Pi용 LTS 버전 선택하기 (2020-03-23 현재 18.04.4 LTS)

- 자신의 Raspberry pi에 맞는 OS를 선택합니다.

- 저는 Raspberry Pi 4이므로 아래와 같이 선택했습니다.

 

1-3. 다운로드 후 바이너리 기록이 가능한 소프트웨어(Win32DiskImager, Balena Etcher 등)를 사용하여 MicroSD에 우분투 이미지를 기록하기

 - Balena etcher: https://www.balena.io/etcher/

 

balena - The complete IoT fleet management platform

Infrastructure and tools to develop, deploy, and manage connected devices at scale. Your first ten devices are always free.

www.balena.io

1-4. Raspberry Pi에 MicroSD카드를 삽입하고 전원 케이블을 꽂아 부팅하기

1-5. 기본계정 설정하기 (기본 아이디 비밀번호: ubuntu/ubuntu)

 - 처음 ubuntu/ubuntu를 입력하여 로그인 시, 비밀번호를 변경해야 함.


2. 네트워크 설정 (Wi-Fi 및 이더넷)하기

2-1. Root로 사용자 전환하기

ubuntu@ubuntu:~$ sudo su

2-2. /etc/netplan으로 이동 및 설정파일 확인하기 (*.yaml 파일 확인)

root@ubuntu:/home/ubuntu# cd /etc/netplan/
root@ubuntu:/etc/netplan# ls -l
total 4
-rw-r--r-- 1 root root 593 Mar 23 07:51 50-cloud-init.yaml

2-3-1. 확인된 yaml파일 편집하기 (50-cloud-init.yaml)

root@ubuntu:/etc/netplan# vim 50-cloud-init.yaml

2-3-2. yaml파일 생성하기 (10-network-init.yaml)

 - 2-3-1 단계에서 yaml파일이 존재하지 않는 경우 수행

root@ubuntu:/etc/netplan# vim 10-network-init.yaml

2-4. 이더넷 및 Wi-Fi 설정하기

 - (가장 첫줄 및 마지막 줄의 ...은 아래 설정 내용의 앞뒤에 어떤 내용이 있을 수 있다는 의미)

 - (만약 아래와 동일한 설정항목이 존재할 경우, 아래 항목을 사용)

 - 띄어쓰기를 꼭 지켜야 함. (탭 키를 누르는 것이 아니라 스페이스 4칸 사용)

 - wlan0의 access-point의 하위에 "SSID"에는 와이파이 이름 (예시: KT-WiFi), "PASSWORD"에는 와이파이 비밀번호 입력

...
network:
    ethernets:
        eth0:
            dhcp4: true
            optional: true
    wifis:
        wlan0:
            dhcp4: true
            optional: true
            access-points:
                "SSID":
                    password: "PASSWORD"
    version: 2
...

2-5. 설정 한 yaml파일을 적용하기

root@ubuntu:/etc/netplan# netplan generate
root@ubuntu:/etc/netplan# netplan apply

2-6. 설정이 잘 적용되었는지 확인하기 (인터넷에 연결되어있는지 확인하기)

root@ubuntu:/etc/netplan# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.36  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::dea6:32ff:fe70:f9dc  prefixlen 64  scopeid 0x20<link>
        ether dc:a6:32:70:f9:dc  txqueuelen 1000  (Ethernet)
        RX packets 966  bytes 337442 (337.4 KB)
        RX errors 0  dropped 3  overruns 0  frame 0
        TX packets 509  bytes 62686 (62.6 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

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 116  bytes 8988 (8.9 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 116  bytes 8988 (8.9 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether dc:a6:32:70:f9:dd  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

root@ubuntu:/etc/netplan# 

3. 시간대 (Timezone) 변경하기

- 라즈베리 파이에 설치된 Ubuntu의 기본 시간대는 UTC+0 입니다.

- 우리나라 시간대는 Korea Standard Time (KST)로 UTC+9 입니다.

- 시간대를 알맞게 설정하지 않은 경우, 부팅 로그나 커널 로그 및 기타 로그를 확인할 때 번거로움이 생깁니다.

3-1. dpkg-reconfigure tzdata 명령어 실행 (root 권한)

ubuntu@ubuntu:~$ sudo dpkg-reconfigure tzdata

3-2. 키보드 화살표 키로 Asia를 선택한 후 엔터를 입력합니다.

3-3. Seoul을 찾아서 엔터를 입력합니다.

- 키보드 화살표 키로 찾는 방법도 있지만, 편리하게 s를 입력하면 S로 시작하는 가장 첫번째 도시가 선택됩니다.

- 이후 Seoul을 찾으면 됩니다.

3-4. 변경된 시간을 확인합니다.

ubuntu@ubuntu:~$ sudo dpkg-reconfigure tzdata

Current default time zone: 'Asia/Seoul'
Local time is now:      Thu Mar 26 16:02:27 KST 2020.
Universal Time is now:  Thu Mar 26 07:02:27 UTC 2020.

ubuntu@ubuntu:~$ 

4. 리눅스 시스템 및 사용자 패키지 업데이트

- Windows에는 Windows Update가 있는것 처럼 Ubuntu에는 apt가 존재합니다.

- Windows는 주기적으로 업데이트를 확인하지만, 리눅스는 사용자가 직접 확인을 하고 설치를 해야합니다.

- 업데이트는 리눅스 커널 업데이트, 하드웨어 펌웨어 등의 성능 향상, 기능 추가, 버그 수정, 보안 향상 등이 있으므로 자주 해주는 것이 좋습니다.

4-1. apt update 명령어 실행 (root 권한)

- apt는 로컬(라즈베리 파이)에 카탈로그(시스템  패키지, 펌웨어, 사용자 패키지)를 캐싱해서 사용합니다.

- apt update는 로컬 카탈로그를 최신으로 업데이트 하는 명령어입니다. (실제 패키지 업데이트는 이루어지지 않음)

ubuntu@ubuntu:~$ sudo apt update
Hit:1 http://ports.ubuntu.com/ubuntu-ports bionic InRelease
Get:2 http://ports.ubuntu.com/ubuntu-ports bionic-updates InRelease [88.7 kB]
Get:3 http://ports.ubuntu.com/ubuntu-ports bionic-backports InRelease [74.6 kB]
Get:4 http://ports.ubuntu.com/ubuntu-ports bionic-security InRelease [88.7 kB]
Get:5 http://ports.ubuntu.com/ubuntu-ports bionic-updates/main arm64 Packages [641 kB]
Get:6 http://ports.ubuntu.com/ubuntu-ports bionic-updates/main Translation-en [309 kB]
Get:7 http://ports.ubuntu.com/ubuntu-ports bionic-updates/restricted Translation-en [9208 B]
Get:8 http://ports.ubuntu.com/ubuntu-ports bionic-updates/universe arm64 Packages [946 kB]
Get:9 http://ports.ubuntu.com/ubuntu-ports bionic-updates/universe Translation-en [328 kB]
Get:10 http://ports.ubuntu.com/ubuntu-ports bionic-updates/multiverse Translation-en [4664 B]
Get:11 http://ports.ubuntu.com/ubuntu-ports bionic-backports/main arm64 Packages [2512 B]
Get:12 http://ports.ubuntu.com/ubuntu-ports bionic-backports/main Translation-en [1644 B]
Get:13 http://ports.ubuntu.com/ubuntu-ports bionic-backports/universe arm64 Packages [4012 B]
Get:14 http://ports.ubuntu.com/ubuntu-ports bionic-backports/universe Translation-en [1900 B]
Get:15 http://ports.ubuntu.com/ubuntu-ports bionic-security/main arm64 Packages [436 kB]
Get:16 http://ports.ubuntu.com/ubuntu-ports bionic-security/main Translation-en [216 kB]
Get:17 http://ports.ubuntu.com/ubuntu-ports bionic-security/restricted Translation-en [7260 B]
Get:18 http://ports.ubuntu.com/ubuntu-ports bionic-security/universe arm64 Packages [580 kB]
Get:19 http://ports.ubuntu.com/ubuntu-ports bionic-security/universe Translation-en [216 kB]
Get:20 http://ports.ubuntu.com/ubuntu-ports bionic-security/multiverse Translation-en [2732 B]
Fetched 3958 kB in 5s (867 kB/s)                                 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
47 packages can be upgraded. Run 'apt list --upgradable' to see them.
ubuntu@ubuntu:~$ 

4-2. apt list --upgradable을 입력하여 업데이트 될 패키지 확인하기 (옵션)

- 이 부분은 옵션이며 건너뛰어도 됩니다.

- 어떤 패키지가 업데이트 되는지 확인할 수 있습니다.

ubuntu@ubuntu:~$ sudo apt list --upgradable
Listing... Done
apport/bionic-updates,bionic-security 2.20.9-0ubuntu7.12 all [upgradable from: 2.20.9-0ubuntu7.9]
bsdutils/bionic-updates 1:2.31.1-0.4ubuntu3.6 arm64 [upgradable from: 1:2.31.1-0.4ubuntu3.5]
dmidecode/bionic-updates 3.1-1ubuntu0.1 arm64 [upgradable from: 3.1-1]
fdisk/bionic-updates 2.31.1-0.4ubuntu3.6 arm64 [upgradable from: 2.31.1-0.4ubuntu3.5]
gcc-8-base/bionic-updates,bionic-security 8.3.0-26ubuntu1~18.04 arm64 [upgradable from: 8.3.0-6ubuntu1~18.04.1]
landscape-common/bionic-updates 18.01-0ubuntu3.5 arm64 [upgradable from: 18.01-0ubuntu3.4]
libblkid1/bionic-updates 2.31.1-0.4ubuntu3.6 arm64 [upgradable from: 2.31.1-0.4ubuntu3.5]
libdrm-common/bionic-updates,bionic-security 2.4.99-1ubuntu1~18.04.2 all [upgradable from: 2.4.99-1ubuntu1~18.04.1]
libdrm2/bionic-updates,bionic-security 2.4.99-1ubuntu1~18.04.2 arm64 [upgradable from: 2.4.99-1ubuntu1~18.04.1]
libfdisk1/bionic-updates 2.31.1-0.4ubuntu3.6 arm64 [upgradable from: 2.31.1-0.4ubuntu3.5]
libgcc1/bionic-updates,bionic-security 1:8.3.0-26ubuntu1~18.04 arm64 [upgradable from: 1:8.3.0-6ubuntu1~18.04.1]
libglib2.0-0/bionic-updates,bionic-security 2.56.4-0ubuntu0.18.04.6 arm64 [upgradable from: 2.56.4-0ubuntu0.18.04.4]
libglib2.0-data/bionic-updates,bionic-security 2.56.4-0ubuntu0.18.04.6 all [upgradable from: 2.56.4-0ubuntu0.18.04.4]
libicu60/bionic-updates,bionic-security 60.2-3ubuntu3.1 arm64 [upgradable from: 60.2-3ubuntu3]
libmount1/bionic-updates 2.31.1-0.4ubuntu3.6 arm64 [upgradable from: 2.31.1-0.4ubuntu3.5]
libnss-systemd/bionic-updates 237-3ubuntu10.39 arm64 [upgradable from: 237-3ubuntu10.33]
libpam-systemd/bionic-updates 237-3ubuntu10.39 arm64 [upgradable from: 237-3ubuntu10.33]
libsmartcols1/bionic-updates 2.31.1-0.4ubuntu3.6 arm64 [upgradable from: 2.31.1-0.4ubuntu3.5]
libsqlite3-0/bionic-updates,bionic-security 3.22.0-1ubuntu0.3 arm64 [upgradable from: 3.22.0-1ubuntu0.2]
libstdc++6/bionic-updates,bionic-security 8.3.0-26ubuntu1~18.04 arm64 [upgradable from: 8.3.0-6ubuntu1~18.04.1]
libsystemd0/bionic-updates 237-3ubuntu10.39 arm64 [upgradable from: 237-3ubuntu10.33]
libudev1/bionic-updates 237-3ubuntu10.39 arm64 [upgradable from: 237-3ubuntu10.33]
libuuid1/bionic-updates 2.31.1-0.4ubuntu3.6 arm64 [upgradable from: 2.31.1-0.4ubuntu3.5]
libxml2/bionic-updates,bionic-security 2.9.4+dfsg1-6.1ubuntu1.3 arm64 [upgradable from: 2.9.4+dfsg1-6.1ubuntu1.2]
linux-base/bionic-updates,bionic-security 4.5ubuntu1.1 all [upgradable from: 4.5ubuntu1]
linux-firmware/bionic-updates 1.173.16 all [upgradable from: 1.173.14]
linux-headers-raspi2-hwe-18.04/bionic-updates,bionic-security 5.3.0.1019.8 arm64 [upgradable from: 5.3.0.1017.6]
linux-image-raspi2-hwe-18.04/bionic-updates,bionic-security 5.3.0.1019.8 arm64 [upgradable from: 5.3.0.1017.6]
linux-raspi2-hwe-18.04/bionic-updates,bionic-security 5.3.0.1019.8 arm64 [upgradable from: 5.3.0.1017.6]
mount/bionic-updates 2.31.1-0.4ubuntu3.6 arm64 [upgradable from: 2.31.1-0.4ubuntu3.5]
python3-apport/bionic-updates,bionic-security 2.20.9-0ubuntu7.12 all [upgradable from: 2.20.9-0ubuntu7.9]
python3-problem-report/bionic-updates,bionic-security 2.20.9-0ubuntu7.12 all [upgradable from: 2.20.9-0ubuntu7.9]
python3-twisted/bionic-updates,bionic-security 17.9.0-2ubuntu0.1 all [upgradable from: 17.9.0-2]
python3-twisted-bin/bionic-updates,bionic-security 17.9.0-2ubuntu0.1 arm64 [upgradable from: 17.9.0-2]
rsync/bionic-updates,bionic-security 3.1.2-2.1ubuntu1.1 arm64 [upgradable from: 3.1.2-2.1ubuntu1]
sosreport/bionic-updates 3.9-1ubuntu0.18.04.1 arm64 [upgradable from: 3.6-1ubuntu0.18.04.4]
systemd/bionic-updates 237-3ubuntu10.39 arm64 [upgradable from: 237-3ubuntu10.33]
systemd-sysv/bionic-updates 237-3ubuntu10.39 arm64 [upgradable from: 237-3ubuntu10.33]
udev/bionic-updates 237-3ubuntu10.39 arm64 [upgradable from: 237-3ubuntu10.33]
unattended-upgrades/bionic-updates 1.1ubuntu1.18.04.14 all [upgradable from: 1.1ubuntu1.18.04.13]
util-linux/bionic-updates 2.31.1-0.4ubuntu3.6 arm64 [upgradable from: 2.31.1-0.4ubuntu3.5]
uuid-runtime/bionic-updates 2.31.1-0.4ubuntu3.6 arm64 [upgradable from: 2.31.1-0.4ubuntu3.5]
vim/bionic-updates,bionic-security 2:8.0.1453-1ubuntu1.3 arm64 [upgradable from: 2:8.0.1453-1ubuntu1.1]
vim-common/bionic-updates,bionic-security 2:8.0.1453-1ubuntu1.3 all [upgradable from: 2:8.0.1453-1ubuntu1.1]
vim-runtime/bionic-updates,bionic-security 2:8.0.1453-1ubuntu1.3 all [upgradable from: 2:8.0.1453-1ubuntu1.1]
vim-tiny/bionic-updates,bionic-security 2:8.0.1453-1ubuntu1.3 arm64 [upgradable from: 2:8.0.1453-1ubuntu1.1]
xxd/bionic-updates,bionic-security 2:8.0.1453-1ubuntu1.3 arm64 [upgradable from: 2:8.0.1453-1ubuntu1.1]
ubuntu@ubuntu:~$ 

4-3-1. apt upgrade를 입력하여 실제 패키지 업데이트 수행

- 4-2에서 확인된, 업데이트 될 패키지를 실제로 업데이트 합니다.

ubuntu@ubuntu:~$ sudo apt upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following NEW packages will be installed:
  linux-headers-5.3.0-1019-raspi2 linux-image-5.3.0-1019-raspi2 linux-modules-5.3.0-1019-raspi2
  linux-raspi2-5.3-headers-5.3.0-1019
The following packages will be upgraded:
  apport bsdutils dmidecode fdisk gcc-8-base landscape-common libblkid1 libdrm-common libdrm2 libfdisk1 libgcc1
  libglib2.0-0 libglib2.0-data libicu60 libmount1 libnss-systemd libpam-systemd libsmartcols1 libsqlite3-0 libstdc++6
  libsystemd0 libudev1 libuuid1 libxml2 linux-base linux-firmware linux-headers-raspi2-hwe-18.04
  linux-image-raspi2-hwe-18.04 linux-raspi2-hwe-18.04 mount python3-apport python3-problem-report python3-twisted
  python3-twisted-bin rsync sosreport systemd systemd-sysv udev unattended-upgrades util-linux uuid-runtime vim
  vim-common vim-runtime vim-tiny xxd
47 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
Need to get 148 MB of archives.
After this operation, 285 MB of additional disk space will be used.
Do you want to continue? [Y/n]

4-3-2. y를 눌려 업데이트 실행

- 4-3-1에서 업데이트 될 패키지를 보여주며, 실제 업데이트를 수행할 것인지 마지막으로 물어봅니다.

- y를 입력하고 엔터를 눌려 진행하며, Progress가 100%가 될 때 까지 기다립니다.

The following NEW packages will be installed:
  linux-headers-5.3.0-1019-raspi2 linux-image-5.3.0-1019-raspi2 linux-modules-5.3.0-1019-raspi2
  linux-raspi2-5.3-headers-5.3.0-1019
The following packages will be upgraded:
  apport bsdutils dmidecode fdisk gcc-8-base landscape-common libblkid1 libdrm-common libdrm2 libfdisk1 libgcc1
  libglib2.0-0 libglib2.0-data libicu60 libmount1 libnss-systemd libpam-systemd libsmartcols1 libsqlite3-0 libstdc++6
  libsystemd0 libudev1 libuuid1 libxml2 linux-base linux-firmware linux-headers-raspi2-hwe-18.04
  linux-image-raspi2-hwe-18.04 linux-raspi2-hwe-18.04 mount python3-apport python3-problem-report python3-twisted
  python3-twisted-bin rsync sosreport systemd systemd-sysv udev unattended-upgrades util-linux uuid-runtime vim
  vim-common vim-runtime vim-tiny xxd
47 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
Need to get 148 MB of archives.
After this operation, 285 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://ports.ubuntu.com/ubuntu-ports bionic-updates/main arm64 bsdutils arm64 1:2.31.1-0.4ubuntu3.6 [54.6 kB]
Get:2 http://ports.ubuntu.com/ubuntu-ports bionic-updates/main arm64 libuuid1 arm64 2.31.1-0.4ubuntu3.6 [18.5 kB]
Get:3 http://ports.ubuntu.com/ubuntu-ports bionic-updates/main arm64 libblkid1 arm64 2.31.1-0.4ubuntu3.6 [105 kB]
Get:4 http://ports.ubuntu.com/ubuntu-ports bionic-updates/main arm64 libfdisk1 arm64 2.31.1-0.4ubuntu3.6 [138 kB]
...
Preparing to unpack .../23-linux-headers-5.3.0-1019-raspi2_5.3.0-1019.21~18.04.1_arm64.deb ...
Unpacking linux-headers-5.3.0-1019-raspi2 (5.3.0-1019.21~18.04.1) ...
Selecting previously unselected package linux-modules-5.3.0-1019-raspi2.
Preparing to unpack .../24-linux-modules-5.3.0-1019-raspi2_5.3.0-1019.21~18.04.1_arm64.deb ...
Unpacking linux-modules-5.3.0-1019-raspi2 (5.3.0-1019.21~18.04.1) ...

Progress: [ 62%] [##############################################################.......................................] 

4-4. apt autoremove를 이용하여 더 이상 필요하지 않은 패키지 삭제하기

- 시스템 공간을 확보하기 위해, 더 이상 사용하지 않은 패키지를 삭제하는 것이 좋습니다.

- 삭제 할 패키지가 존재하는 경우, 실제 삭제를 할 것인가 물어보는 메시지가 나오면 y를 누르고 엔터를 입력합니다.

ubuntu@ubuntu:~$ sudo apt autoremove
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
ubuntu@ubuntu:~$