본문 바로가기

RaspberryPi

라즈베리파이에 64비트 아치리눅스 설치하기

앞으로 티스토리 대신 blog.stackframe.dev에서 블로깅을 합니다. 이 블로그는 남겨 둘 예정입니다.

2016년 초에 ARMv8 명령어셋을 지원하는 Cortex-A53 CPU를 장착한 라즈베리파이 3B가 출시되었습니다. 하지만 여러 해가 지나도록 어떤 배포판도 64비트를 제대로 지원하지 않았습니다. 그나마 아치리눅스는 3B에서 64비트로 동작하는 버전을 내놓긴 했지만 3B+는 지원하지 않는다는 문구가 있었습니다. 그러던 중 최근에 ArchlinuxARM에 들어가보니 해당 문구가 사라졌습니다! 그래서 저의 라즈베리파이 3B+에 64비트 아치리눅스를 설치해볼 예정입니다.


먼저 준비물은 라즈베리파이 3 이상 버전과 마이크로 SD 컨버터와 리눅스로 돌아가는 컴퓨터가 필요합니다. 라즈비안이 아닌 아치리눅스를 설치하려 하는 사람이라면 적어도 리눅스가 돌아가는 컴퓨터 정도는 가지고 있다고 믿고있습니다! 만약 리눅스를 한번도 만져보지 못하신 분은 일단 라즈비안을 먼저 설치해 보는 것을 추천드립니다.


1. 파티션 나누기

먼저 마이크로 SD의 파티션을 분할해야 합니다. 라즈베리파이는 맨 첫 번째 파티션에서 부팅에 관련된 펌웨어와 커널을 로드합니다. 이 파티션은 FAT32로 포맷이 되어야합니다. 제가 현재 사용중인 라즈베리파이 2B에서 아치리눅스를 깔았을 때 부트 파티션에 128MB를 줬지만 실제로는 25MB 밖에 사용하지 않더군요. 그래도 혹시나 모르니 첫 번째 파티션에는 100MB 가량 할당하는 것이 좋을 것 같습니다. 그리고 가장 기본이 되는 루트 파티션을 만들어야 하는데, 이 파티션은 그냥 남은 크기 전체로 하여 만드시면 됩니다. 이 파티션은 리눅스의 기본 파티션 시스템인 ext4로 생성합니다. 파티션 나누는 방법은 그냥 간단하게 gparted 명령어를 사용하시면 됩니다.


저는 이렇게 128MB의 부트 파티션과 59GB 가량의 루트 파티션으로 분할했습니다.


2. 이미지 파일 다운로드

라즈베리파이에서는 다행히도 데스크탑 버전의 아치리눅스보다 쉽게 설치가 가능합니다. (물론 라즈비안보다 복잡하다라는 것은 함정입니다...) 단순히 압축된 이미지 파일을 다운받고 해당 파일을 적절히 압축해제하여 잘 저장하면 됩니다?!


먼저 이미지 파일은 http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-3-latest.tar.gz 에서 최신 버전으로 다운받을 수 있습니다.


3. 파티션 마운트

이미지 파일을 다운로드 받으면서 저희는 미리 1번에서 만들어 둔 파티션을 마운트 해 둡니다. 저는 /opt 에 부트 파티션을, /mnt에 루트 파티션을 마운트 할 예정입니다. 혹시 마운트 할 때 장치명을 모르신다면 lsblk 라는 명령어로 확인할 수 있습니다.

$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 238.5G  0 disk 
├─sda1   8:1    0   512M  0 part /boot
└─sda2   8:2    0   238G  0 part /
sdb      8:16   0 465.8G  0 disk 
├─sdb1   8:17   0   499M  0 part 
├─sdb2   8:18   0   100M  0 part 
├─sdb3   8:19   0    16M  0 part 
├─sdb4   8:20   0 243.6G  0 part 
├─sdb5   8:21   0  62.5G  0 part 
└─sdb6   8:22   0 159.1G  0 part 
sde      8:64   1  59.5G  0 disk 
├─sde1   8:65   1   128M  0 part 
└─sde2   8:66   1  59.4G  0 part

먼저 부트 파티션을 마운트합니다. 왜 /opt에 하냐고 물으신다면 솔직히 디렉토리 따로 만들기 귀찮기도 하고 저 디렉토리를 활용하는 사람을 거의 본 적도 없어서 그렇습니다.

$ sudo mount /dev/sde1 /opt

이제 루트 파티션을 마운트합니다.

$ sudo mount /dev/sde2 /mnt

4. 설치

드디어 본격적인 설치입니다. 이미지 파일은 tar.gz로 압축되어 있으므로 tar 명령어를 통해 압축해제 합니다. tar 파일에는 권한 정보까지 모두 저장되어 있기 때문에 권한이 바뀌지 않도록 주의해야 합니다. (그렇기 때문에 GUI로 압축해제하여 복사하기는 곤란합니다.)
$ sudo tar xzvf ArchLinuxARM-rpi-3-latest.tar.gz -C /mnt

-C 옵션은 디렉토리를 바꾸는 옵션으로 파일들을 /mnt에 풀겠다는 의미입니다. 위 명령을 실행하시면 tar: Ignoring unknown extended header keyword 'SCHILY.fflags' 같은 글자들이 마구 나올 것입니다만 무시하시면 됩니다.


이제 모든 데이터들은 /mnt 에 저장되어 있습니다. 그럼 이제 부트 파티션에 펌웨어와 커널들을 넣어줘야 합니다. 이 펌웨어들은 이미 /mnt/boot 디렉토리 안에 들어있습니다.

$ sudo mv /mnt/boot/* /opt

이제 설치는 완료되었으니 이 파티션들을 마운트 해제합니다.

$ sudo umount /mnt
$ sudo umount /opt

주의할 점은 여기서 umount가 오래 걸린다고 강제로 종료하거나 SD카드를 뽑으시면 절대 안됩니다! umount가 오래 걸리는 이유는 아직 모든 데이터가 완전히 기록되지 않았기 때문입니다. 여기서 강제로 뽑으신다면 4번을 다시 수행하셔야 합니다. 제가 여기서 아무 생각없이 뽑았더니 부팅은 되었지만 설치가 제대로 되지 않은 관계로 로그인에서 PAM에러가 계속 난 적이 있습니다. 이런 경우는 어디서 잘못되었는지 알아내는데 상당히 애를 먹습니다.

5. 부팅

설치가 완료되었으니 마이크로 SD를 라즈베리파이에 삽입하고 부팅합니다. 아치리눅스는 기본적으로 ssh가 활성화 되어 있으므로 모니터가 없어도 충분히 작업이 가능합니다. 다만 설치 중에 무언가 실수를 하여 부팅을 성공하지 못하였을 때는 모니터가 없다면 어느 부분에서 문제가 생긴건지 파악하기 힘들기도 합니다.

유선으로 공유기에 연결하거나 컴퓨터와 다이렉트 연결을 통해 IP를 알아내어 SSH 연결을 할 수 있습니다. 여기서도 다른 포스트에서 말한 것처럼 수단과 방법을 가리지 말고 SSH로 접속하시면 됩니다. 일단 아치리눅스의 기본 사용자 계정은 alarm이고 비밀번호도 alarm입니다. 이걸 통하여 SSH 연결을 한 뒤, su 명령어를 사용하여 root권한을 얻을 수 있습니다. root 계정의 비밀번호도 root입니다. 



이걸로 라즈베리파이에 아치리눅스를 설치가 완료되었습니다. 옛날에는 하나 설치하는데도 매번 어딘가에서 실수를하여 몇 번을 반복하였는데 이제는 손쉽게 설치를 할 수 있는걸 보니 반복 학습이란게 참 대단하다고 생각됩니다. 그런데도 아직 젠투 리눅스는 전혀 손을 대지 못하겠습니다... 언젠가 사용하게될 날이 올지 궁금합니다.