아치 리눅스 설치 가이드

Last Modified: 21.09.14, 10:30 am

Update Log
21.09.07내용 점검, ibus-hangul 변경 사항 적용, GUI 인스톨러 관련 사항 추가
21.07.20재정비, 간소화
21.07.05공백, 취소선 등으로 난잡한 부분 삭제/수정, 양식 개선
21.06.23양식 변경 등 가독성 증대 및 전체 내용 점검
21.03.21 ‘부록A – 댓글 건의 추가 정보’란 신설
21.02.19 전면 업데이트(댓글 수정 요청 반영/커맨드 리스트 최신화)
20.03.13커맨드 리스트 모음 수정(최신버전 본문과 동기화는 아님)
20.02.26총 수정 및 ‘whjeon.com’ 이전 작업
5.1.1-191019 아치리눅스 측 ‘pacstrap’ 변경으로 인한 수정
5.1.0-190806ftp 미러 수정, 오타/오류 바뀐 명령어 수정
5.0.0-190329 워드프레스 블럭 에디터 업데이트로 전면 수정(모든 하이퍼링크 수정)
4.0.1-181106 웹사이트 리뉴얼으로 인한 버전 스킴(version scheme) 변경
V.04.180725 pacman 5.1.0 업데이트 관련 이슈
V.04.180105 신년 맞이 오타, 구성 수정
V.04.171205 xf86-video-intel 삭제(modesetting관련)
V.04.171117 오타 수정, 가독성 향상
V.04.171115직접 재설치 후 수정
V.04.171114설치 전 주의사항 수정, 업데이트 버전 생성
V.04.171113 부록B-각종 설정 변경 추가, 부록C-커맨드 리스트, useradd 관련 수정
V.03.171112 부팅 가능 USB 제작 방법, GDM 관련 수정, gst-libav 추가, 서문 수정
V.02.171111 ccache, makepkg.conf 수정 추가
V.01.171108 문서 이동, 수정
V.01.171107 구성 수정, 오타 수정, 이미지 추가
V.01.171107 초판 작성

서문

새 도메인으로 오게 되면서 댓글 창은 닫았습니다.
제안하실 아이디어나 의견, 피드백은 메일로 보내주시면 감사하겠습니다.

필자는 글을 쓰는 직업을 가지고 있거나, 취미로 글을 즐겨 쓰는 사람이 아닙니다. 그러다보니, 아래에서 적어 내려갈 내용들이 가독성이 떨어지거나, 혹은 비문일 수도 있습니다. 실력이 부족한 줄을 잘 알면서도 세상에 글을 내놓으려니 많이 부담스럽습니다. 다만, 이런 장문의 글을 쓰게 된 계기를 많은 분들이 이해해 주시면 감사하겠습니다.

온라인 상에서 아치 리눅스는 어렵고, 특히 설치하기가 번거럽고, 그런 단점들에도 불구하고 써야 하는 이유가 무엇인지에 대한 질문이 등록되는 것을 자주 목격합니다. 저도 객관적으로 똑부러지게 ‘이런 점이 장점이고 이런 점은 약점이지만 이런 점에서 매력을 느낀다’라고 설명하지 못합니다 (물론, 제가 느끼는 강점과 매력은 분명하지만 매우 주관적이기 때문에). 하지만, 제가 명확히 알고 있고 여러분들께 소개해 드릴 수 있는 것은 ‘아치 리눅스의 설치 과정이 그렇게 당혹스러우리만큼 어렵지는 않다‘라는 것입니다.

일반적으로 윈도우 혹은 맥 진영에서 리눅스를 경험해 보고 싶은 신규 유저들에게 쉬운 배포판으로 우분투를 소개합니다. 충분히 이해할 수 있습니다. 설치 과정은 GUI로 표현되기 때문에 매우 편합니다. 하지만 그 과정들이 어떤 작업인지 이해하지 못하고 ‘Next’ 만을 클릭하는 것을 ‘쉽다’고 표현하는게 올바른가에 대해서는 고민이 됩니다. 아치 리눅스는 설치 과정이 커맨드 라인 기반(CLI)입니다. 모든 것을 키보드를 이용해 명령하여 설치해야 합니다. 하지만 그 과정 덕분에 리눅스가 어떻게 빌드되는지에 대해서 정확히 이해할 수 있고, 내 시스템이 어떻게 구성되어 있는지를 파악하기 유리합니다 (더 깊은 이해는 Gentoo, CRUX 혹은 LFS를 통해 경험할 수 있습니다).

제가 처음 아치 리눅스에 관심을 가지게 되었을 때에도 설치 과정이 불편했습니다. 여기서, ‘불편했다’라는 것은 번역되어 있는 자료의 부재가 크게 작용했습니다. 영어를 읽어 가면서 설치해야 한다는 점이 힘들었습니다. 설치할 당시에도 ‘한글로 된 양질의 자료가 필요하다’라고 절감했습니다. 한글 아치 리눅스 위키 페이지의 설치 가이드를 추천하실지 모르겠습니다. 매우 훌륭하게 정리되어있고, 아래에서 소개할 설치 과정도 그 페이지를 기반으로 합니다. 다만, 초급 사용자가 사용하는 데에 있어서도 그 페이지로 충분하다는 데에는 동의할 수가 없었습니다. 저는 아치 리눅스가 한국에서 더욱 확산되고, 특히 ‘초보 사용자의 설치 환경에 큰 도움을 주고 싶다‘라는 데에 방점을 찍었습니다.

Keep It Simple, Stupid!

KISS, 즉, Keep it Simple, Stupid! 이것은 유닉스 계열의 정통 철학일 뿐만 아니라 아치 리눅스 진영에서도 핵심적으로 추구하는 철학입니다. 아치 리눅스는 단순함을 추구합니다. 흥미로운 점은 그 단순함을 위해서 얼마나 많은 복잡함을 응축해야 하는가 입니다. 우측의 스크롤 바를 보시면 당황스러우실 수 있습니다. ‘초보자를 위해 글을 작성했다고 제창하면서 얼마나 자세히 적어두고 있는거냐’라고 반문하실 수도 있습니다. 반전은 이 스크롤 바를 읽어 내려가면서 직접 설치해야 하는 패키지의 수는 오히려 6개로 단순화했다는 점입니다. 물론 이는 수동으로 입력하여 설치하는 패키지를 뜻합니다. 그 6가지는 base, xorg-server, gnome, google-chrome, ttf-nanum, ibus-hangul 입니다. 보신 바와 같이 사실은 그 6개의 패키지 중에서도 2개는 실제 사용에는 영향이 없지만, 여러분께 아치 리눅스를 사용하는데 필요한 지식(AUR 사용법)까지 전달 드리기 위해 설치하는 것(google-chrome, ttf-nanum)입니다. 이 한 페이지를 통해 독자분들은 기본 시스템 구축과 관련된 분야(파티션, 포맷, 파일시스템 테이블, 부팅 과정과 부트 로더의 역할), 데스크탑 환경의 구축, 웹 브라우저 설치 과정을 통한 AUR 학습 그리고 아치 리눅스에서 한글을 사용하는 것이 얼마나 단순하고 명료한지에 대해서 느껴보실 수 있습니다. 그 단순함을 성취하기 위해 모순적이게도 상당히 많은 내용을 담을 수 밖에 없었습니다.

설치 전 주의 사항

아치 리눅스 진영에서 다시금 GUI 설치 프로그램을 준비중이라는 이슈를 터뜨렸습니다. 그런데 이게 단순히 소문인 줄로만 여겼으나 더 이상 무시할 수 없는 상황으로 보입니다. FAQ에 따르면, 과거에 존재했던 AIF(Arch Installation Framework-TUI, 아치 설치 프레임워크)는 관리자가 떠난 이유로 버려져있었으나, 2021년 4월 1일부로 archinstall 이라는 이름으로써 부활의 신호탄을 알렸습니다. 아직은 실험적이라고 분명히 밝히고 있지만, 이 설치 프로그램의 미래가 어떻게 되는지 유심히 지켜보고 업데이트 하도록 하겠습니다.

공식 아치리눅스 설치 가이드는 단 한 가지 버전만 존재합니다

그 외의 가이드들은 이 페이지를 포함하여 모두 특정 목적(사용자 편의/작성자 편의/강의 목적)을 위해 편집된 내용입니다. 그러므로, 공식 위키의 내용을 이해한 후, 이 가이드를 보면서 입맛에 맞게 수정 적용하시는 것을 권장하는 바입니다.

설치 준비

설치 이미지 파일(iso 파일) 다운로드 방법은 아래와 같습니다.

카이스트 미러 접속 > 목록 중 > archlinux-(날짜)-x86_64.iso를 클릭하여 다운로드

Windows

Rufus를 이용해 제작합니다. 자세한 내용은 생략하겠습니다.

Linux

리눅스 시스템에서 USB 마운트 이후, 관리자 계정으로 변경하거나 혹은 앞에 sudo를 붙인 후, 본인 계정의 비밀번호를 이용하여 아래의 명령을 실행합니다.

$lsblk

lsblk(list block device): 블록 디바이스 목록을 출력합니다. 여기에서는 새로 추가된 디바이스 장치명을 확인합니다. 보통, 용량을 통해서 확인합니다. sda, sdb, sdc 등 사용자에 따라 다른 이름이 표시됩니다.

명령어 설명

아래 명령어를 통해 USB를 포맷하고 새로운 iso를 작성할 준비를 합니다. 주어진 커맨드의 /dev/sdb에서 sdb부분을 본인 환경에 맞게 입력해야 합니다. 위에서 확인한 본인 USB 장치의 이름을 넣어줍니다.

주 의

아래 명령어는 USB 내부의 모든 파일을 삭제합니다.
중요한 파일이나 삭제가 용인되지 않는 파일은 반드시 백업을 하시고 진행하시길 바랍니다.

$wipefs --all /dev/sdb

아래 명령어를 통해 준비된 USB에 iso파일을 구워줍니다.

if 이후에 (iso 파일 다운로드 위치)/archlinux-(날짜)-x86_64.iso를 본인 환경에 맞게 입력합니다. 해당 경로에 아치리눅스 iso파일이 하나밖에 없다고 가정할 경우, ‘archli’와 같이 앞 부분을 입력한 후, TAB키를 이용해 자동 완성이 가능합니다. 다만, ENTER 입력 전에 반드시 자동 완성된 경로/파일이 원하는 결과대로 입력되었는지 확인하시기 바랍니다.

아래 명령어에서 of부분 이후에는 위에서 준비한 ‘USB 경로’를 본인 환경에 맞게 입력합니다.

$dd bs=4M if=~/Downloads/archlinux.iso of=/dev/sdb status=progress && sync

dd: dd 유틸리티를 이용합니다. (과거 UNIX 시절에는 잘못 사용하면 디스크를 사용 불가능하게 만드는 유틸리티라는 의미로 ‘Disk Destroyer’라는 별명이 있었습니다.)
bs(block size): 블락 크기는 4M(생략 가능)
if(input file): 인풋 파일(지금은 아치 리눅스 iso 파일)
of(output file): 작성할 대상인 아웃풋 디바이스의 경로

명령어 설명

이제 재부팅해줍니다. 재부팅 도중에 본인 메인보드에 맞는 바이오스/UEFI진입 키를 이용합니다. 제 경우는 F2입니다. 보통은 F2,F10,F11,DEL 등입니다.

설치 미디어 USB 부팅 자체가 안되는 경우!

설치화면 진입 자체, 혹은 애초에 usb를 인식하지 못하는 등의 문제는 BIOS/UEFI 세팅 문제일 가능성이 큽니다. secure boot가 사용 안함(Disabled)으로 되어있는지 확인하시기 바랍니다.

fast boot, 혹은 CSM모드(혹은 LEGACY/BIOS MODE)에서 발생하는 오류일 수도 있습니다. 추천드리는 것은 모두 사용 안함(Disabled)입니다.

바이오스/UEFI 진입 키를 통해 부팅할 미디어 중, 방금 제작한 USB를 찾아 선택합니다. 이 USB를 통해 정상적으로 부팅이 이루어지면 리눅스 부팅 중과 부팅 후의 선택 화면에서는 일반적으로 디폴트 값으로 가리키고 있는 것을 통해 부팅하시면 됩니다(“Boot Arch Linux” 혹은 x86_64같은 것이 포함되어 있음). 또한 키 맵을 선택하라는 알림이 등장할 수도 있는데 디폴트가 US로 선택되어 있는 경우가 많으므로 그냥 엔터를 입력하시면 됩니다.

베이스 시스템 설치

설치 환경에서의 터미널 프롬프트는 루트 사용자이므로 #입니다. 현재 글 작성 환경의 문제로 #가 주석 처리되어 명확하게 눈에 띄지 않고 있습니다.

따라서, 부득이하게 일반 사용자 프롬프트인 $로 작성한 점 양해부탁드립니다.

UEFI 여부 확인

우선, UEFI로 설치해야 하는지 그리고 UEFI로 설치가 가능한지 확인하도록 하겠습니다. 아래 파티션 계획 파트에서 다시 말씀드리겠지만, 여기서 UEFI로 부팅된 것이 맞고, UEFI로 설치할 생각인 경우의 파티션과 그렇지 않은(BIOS로 부팅된 경우) 파티션이 다릅니다.

BIOS로 부팅된 경우, 디스크 타입이 MBR, 그리고 필요로 하는 파티션이 따로 있습니다.

UEFI로 부팅된 경우, 기본적으로 권장하는 설치 설정은 디스크 타입을 GPT로 그리고 반드시 ESP파티션을 가지고 있을 것을 요구합니다. 따라서, 잘 확인하시고 따라오시길 바랍니다!

확인은 아래 명령어를 통해 할 수 있습니다.

$ls /sys/firmware/efi

ls: list의 줄임. 뒤에 주어지는 경로(/sys/firmware/efi)에 포함된 파일들을 보여줌

명령어 설명

결과에 efivars라는 폴더가 보이면 UEFI로 설치하실 수 있습니다.

인터넷 연결 확인

인터넷 연결 상태를 확인합니다. 유선 연결 환경을 가정합니다. 무선 환경의 경우, 아치 리눅스 설치 프로그램은 iwctl 유틸리티를 동봉합니다. 해당 유틸리티를 활용해 네트워크에 연결하시면 됩니다.

$ping -c 3 www.google.com

ping 명령어를 통해 가장 뒤의 서버에 핑을 보냅니다. 아웃픗 끝에 결과가 요약됩니다. -c 이후의 숫자 3을 다른 숫자로 변경해 사용하셔도 무방합니다.

명령어 설명

파티션 계획

이 과정은 드라이브의 구획을 나누고 계획을 잡아두는 것으로 그 계획에 맞는 실제 환경을 만드는 것은 다음 단계인 포맷에서 진행 됩니다.

파티션은 대용량 저장 장치를 어떤 구획으로 나누어 사용할지에 대해서 정하는 순서입니다. 가장 일반적인 방법으로는 세 파트로 나누게 됩니다. 각각 <부팅을 위한 구획>, <데이터들이 저장될 구획>, 그리고 <리눅스 스왑>으로 쓸 구획입니다. 가장 먼저, 부팅을 위한 파티션 관련해서 UEFI로 부팅했고, 설치하려는 경우 ‘ESP’라고 불리는 EFI System Partition을 계획해야 합니다. ESP를 계획하지 않으면 UEFI 환경에서 부팅을 설정해주는 것이 굉장히 까다로워 집니다. 지금은 이 말이 어렵게 느껴지실지 모르지만, 아래 과정을 진행하다 보면 이해가 되실 겁니다.

ESP는 EFI System Partition으로 타입이 설정된, FAT 파일 시스템으로 포맷된 파티션을 뜻합니다. Boot폴더에 마운트 될 파티션입니다. (더 깊이 관심있으신 분들은, /boot/efi에 마운트 하는 것과 /boot에 마운트하는 것 간에 어떤 차이가 있는지 검색해보시면 좋습니다.)

두번째 구획인 데이터 저장 구획은 단순하게 Linux File System이라는 타입으로 사용할 예정입니다. 이 두번째 파티션은 /, 즉 root 디렉토리에 마운트 되어 모든 데이터가 저장될 구역이라고 생각하시면 됩니다.

마지막 스왑 파티션은 이름처럼 Linux Swap이라는 타입을 붙이면 되겠습니다.

리눅스 스왑이란 램 환경이 모자랄 때 하드디스크의 스왑으로 설정된 부분에 자료를 로드해두고 램처럼 활용하는 것을 의미합니다. 일부 사용자는 “스왑이 사용되는 순간부터 이미 램이 모자란 것과 같은 것이므로 스왑을 쓰기보다는 차라리 하드웨어를 업그레이드 하겠다”라고 하며 스왑을 사용하지 않는 경우도 있습니다(LFS유저들 중 이런 견해가 많이 보입니다. 공식 매뉴얼에서도 이렇게 기재해두었습니다. – LFS 공식 매뉴얼 > 2.4. 절 “Creating a New Partition” > 2.4.1.2. The Swap Partition > 두 번째 문단)

이 문서에서는 스왑을 다루기로 하겠습니다. (4G 넘는 램을 가지나 시스템에서는 실제 램 사이즈와 관계없이 4G 정도의 스왑을 구획하는 경우도 많습니다.) 그러나, hibernation(노트북 등의 장치에서 덮개를 닫아 수면 상태로 보내는 것) 등의 기능을 위해 램 사이즈 만큼의 스왑 파티션을 꼭 챙겨야 한다는 의견도 있습니다.

SWAP? SIZE?

아래 명령어를 통해 내 드라이브로 어떤 것들이 있는지 확인해보겠습니다. 용량을 통해서 부팅에 이용한 usb와 하드드라이브를 분명히 구분해서 기억하셔야 합니다. 적어두시는 방법을 권장합니다.

$lsblk

결과 출력에 sda, hda와 같은 대용량 저장 장치가 보이실 겁니다. hda는 기존의 IDE방식 커넥션으로 연결된 하드디스크일 가능성이 크고, sda는 최근의 SCSI/SATA방식으로 연결된 하드/SSD입니다. 가장 일반적인 sda라고 가정하고 계획을 잡아보겠습니다.

대용량 장치가 여러개일 경우 sda,sdb,sdc순으로 출력됩니다. 부팅을 위해 마운트한 USB가 아닌지 확실히 확인하셔야 합니다. 확인은 보통 용량으로 하면 큰 문제가 없습니다.

이번 설치 과정에서는 sda를 총 세 구획으로 쪼개려고 합니다. 쪼개고 나면 sda1,sda2,sda3으로 나누어집니다. 만약 sdb엿다고 하면 sdb1,sdb2,sdb3이 될 것입니다.

보통 /dev/sda 혹은 /dev/sda1, /dev/sda2등의 경로명을 사용하는데 앞의 dev는 device를 뜻합니다.

아래처럼 계획을 잡아보겠습니다.

계획은 사람마다다를 수 있지만 본인 파티션의 몇 번째가 어떤 것으로 쓰일지 제대로 기억하고 계셔야 합니다. 특히,부팅 파티션/루트 파티션/스왑 파티션으로 정확히 개념을 잡고 그게 각각 1,2,3 중에 어느 것으로 쓸 건지 기억하시고 아래 예제를 따라오셔야 합니다

적용 파티션파일 시스템코드명사용할 용량기타 정보
/dev/sda1EFI System PartitionEF00512MESP
/dev/sda2Linux Swap8200(82)4G스왑파티션
/dev/sda3Linux FileSystem8300(83)나머지 용량루트파티션
예시 파티션 계획

끊임 없는 이메일 항의 관련

자, 이 부분에서 꼭 밝히고 싶은 말씀이 있습니다. ESP, 흔히 말하는 부트 폴더에 마운트 시킬 파티션 용량 그리고 스왑 용량 관련해서 정답도 없고, 추천하는 크기도 다 다르다는 점은 충분히 알고 있습니다. 다만 초보자의 관점에서 혼란스러움 없이 진행하기 위해서 우선은 위와 같이 가장 기본이라고 할 수 있는 용량으로 진행해 보도록 하겠습니다. 설치를 하고 계시는 여러분이 이미 각종 고급 설정에 익숙하시면 충분히 수정해서 설치하셔도 됩니다.

주 의

아래에는 cfdisk를 이용하는 과정과 gdisk를 이용하는 과정을 설명합니다.
둘 중 반드시 하나의 방법만을 사용하시기 바랍니다.

초보 사용자의 경우 cfdisk를 권장합니다.

주 의

아래 명령어들은 하드디스크 내부의 모든 파일을 사용할 수 없게 만듭니다.
중요한 파일이나 삭제가 용인되지 않는 파일은 반드시 백업을 하시고 진행하시길 바랍니다.

cfdisk 이용

아래 명령어에 디스크 경로가 포함되는데 본인 환경에 맞는 것을 입력하시면 됩니다.

$cfdisk /dev/sda

UEFI 설치를 위해서는 라벨이 GPT라고 상단에 표기 있는지 확인합니다. MBR이 아니어야 합니다!

만약 처음에 물어보면 GPT를 선택해주시면 됩니다.

물어보는 경우, Primary로 진행합니다.

표에 기존 파티션이 기록된다면 보이는 기존 파티션을 한 줄씩 내려가면서 DELETE해줍니다. (키보드의 화살표 방향키를 이용합니다.) 그리고 나서 모든 용량이 FREE SPACE가 되고 나서 우리가 계획을 세웠던 걸 다시 보면, 처음 만들 파티션은 /dev/sda1, EFI System Partition, 512mb입니다. 따라서,

NEW선택
용량 크기를 입력 : 512M
(앞으로 생성할 모든 파티션도) Primary로 선택
TYPE으로 커서를 옮긴 후(우측 방향키) Enter
EFI System을 선택.(보통 맨 위에 있습니다)

 두번째 만들 파티션은 /dev/sda2, Linux swap, 4G였습니다. 방향키를 아래로 내려서 free space를 향하게 하면 아래에 NEW 버튼이 다시 생긴 것을 볼 수 있습니다.

NEW
용량 크기를 입력 : 4G
TYPE으로 Linux Swap

이제 /dev/sda3도 만들어보겠습니다.

다시 방향키 내린 후 NEW 선택
용량 크기는 디폴트가 남아있는 최대 크기로 설정 되어있는지 확인해주고 그냥 Enter
TYPE도 아마 자동으로 Linux FileSystem일 텐데 혹시 모르니 다시 표에서 확인해주시면 됩니다.
마지막으로 WRITE를 선택하시면 됩니다.
QUIT 선택해서 나옴.

gdisk 사용

주 의

바로 상단의 cfdisk를 이용하신 분들은 이 파트는 넘어가시면 됩니다.

아래 명령어에 디스크 경로가 포함되는데 본인 환경에 맞는 것을 입력하시면 됩니다.

$gdisk /dev/sda

?를 입력해서 어떤 명령어들이 있는지 봐두시면 좋습니다. 모든 파티션은 Primary로 잡습니다. 이 유틸은 퍼스트 섹터와 라스트 섹터를 물어보는데 퍼스트 섹터에 라스트 섹터 값을 입력을 하지 않도록 주의하시면서 천천히 진행하시기 바랍니다.

o를 입력  —  모두 지우고
(/dev/sda1 생성을 위해)
n 입력 (New)
첫 번째 파티션이므로 Enter
(default가 1로 되어있는지 확인, 아닐 경우 1을 입력)
첫 번째 섹터는 알아서 계산해주므로 Enter
라스트 섹터는 용량으로 입력 가능하므로 +512mb 입력
파일시스템 코드로 EF00 입력
p (Print/출력)를 통해 제대로 나뉘었는지 확인

(표의 형태로 출력됨. /dev/sda1, EF00(혹은 EFI System), 512mb를 확인)

다시 n 입력으로 /dev/sda2 생성 시작
기본 값으로 2가 되있는지 확인 후 Enter
첫 번째 섹터는 기본값대로 Enter
용량으로 입력 +4G
파일 시스템 코드로 8200 입력
p를 통해 재확인후 /dev/sda3 생성을 위해
n
기본 값으로 ‘3’이 되있는지 확인 후 Enter
첫 번째 섹터는 기본값대로 Enter
이번엔 마지막 섹터까지 사용할 예정이므로 -1을 입력
파일 시스템 코드로 8300 입력
마지막으로 w를 입력해서 Write 해줍니다.

포맷

포맷은 위에서 진행한 파티션 각각의 계획에 맞는 파일시스템으로 진행합니다. UEFI환경에서 부팅 파티션은 FAT32 파일시스템을 원합니다. 따라서 아까 EFI시스템으로 파티션을 계획했던 sda1은 fat32로 포맷을 할 것이고, 기본 파일 시스템으로 쓰기로 했던 sda3는 최근 가장 범용으로 쓰이는 ext4파일 시스템으로 포맷하겠습니다. 스왑 파티션은 다음 단계에서 포맷합니다. /dev/sda2를 포맷하지 않도록 주의해주세요!

아래 명령어에 디스크 경로가 포함되는데 본인 환경에 맞는 것을 입력하시면 됩니다. vfat은 512M를 잡았으니 금방 되고, ext4인 sda3는 본인이 부여한 용량에 따라 시간이 잠깐 소요되는 것이 정상입니다.

$mkfs.vfat -F32 /dev/sda1
$mkfs.ext4 -j /dev/sda3

mkfs: MaKe File System

명령어 설명

스왑

스왑드라이브를 만들겠습니다. 스왑드라이브는 위의 포맷과 유사한 명령어를 수행한 이후, 켜주는 과정을 추가로 거칩니다. 아래 명령어에 디스크 경로가 포함되는데 본인 환경에 맞는 것을 입력하시면 됩니다.

$mkswap /dev/sda2
$swapon /dev/sda2

mkswap: MaKe Swap

명령어 설명

마운트

마운트는 리눅스 파일 체계(루트(/)로부터 뻗어나오는 파일 트리)의 각각의 폴더에 어떤 드라이브의 어떤 파티션을 이용하겠다고 연결하는 거구나 생각하시면 편합니다. 지금은 루트 폴더와 루트 아래의 부트 폴더만 마운트하면 됩니다. 파티션 계획 단계에서 생각하신 계획에 따라 홈 폴더등을 따로 하나의 드라이브로 마운트 하는 것도 가능합니다.

설치 프로그램 내부 시스템에서 /mnt가 설치가 완료된 시점에서 /입니다. 즉, /mnt 아래에 새로운 시스템 디렉토리들이 모두 생성되고 잠시 뒤에 해당 시스템 내부로 진입합니다. 다시 말해서, 설치 프로그램이 하는 역할은 라이브 시스템을 통해 /mnt 아래에 새로운 리눅스를 만들 수 있는 도구를 제공하는 것입니다.

우선은 /mnt에 루트 폴더로서 쓸 Linux FileSystem 파티션(/dev/sda3)을 연결해보겠습니다. 아래 명령어에 디스크 경로가 포함되는데 본인 환경에 맞는 것을 입력하시면 됩니다.

$mount /dev/sda3 /mnt

그리고 나서 루트 폴더 아래에 부트 폴더를 만들어 줍니다.

$mkdir /mnt/boot

mkdir: MaKe Directory

명령어 설명

부트 폴더를 마운트하려고 만들었던 /dev/sda1을 마운트해줍니다.

$mount /dev/sda1 /mnt/boot

시간 설정

휴대폰 등의 별도 디바이스를 통해 구글에 ‘current utc time’을 검색해 현재 utc 시간을 확인합니다. 아래 명령어로 utc 시간을 입력합니다. 순서는 ‘월일시분연도’ 입니다. 예를 들어, 2021년 12월 31일 14시 56분은 #date 123114562021로 입력합니다.

위 과정이 너무 귀찮거나 네트워크를 통해 자동으로 시간을 동기화 하는 것에 거리낌이 없으시다면 #ntpd -q -g을 통해서 #date 명령어 부분은 생략 가능합니다. 자동 서버 시간 동기화는 ntp 서버에 내 기기의 IP가 드러난다는 점 등 개인 정보에 예민한 분들은 선호하지 않습니다.

$date 현재의월일시분연도
# 혹은
$ntpd -q -g
$hwclock --systohc --utc

hwclock 띄우고 빼기 두개 systohc 띄우고 빼기 두개 utc입니다. 하드웨어 클락을 시스템 클락과 utc를 기준으로 사용해 동기화함

옵션들 : systohc – 시스템시간(sys)을(to) 하드웨어 시간(hardware clock)으로. UTC는-Coordinated Universal Time이라고 합니다;;그리니치 표준시와 거의 동일한건데 소숫점단위 초 에서 오차가 발생하여 기술적인 분야에서는 UTC를 사용한다고 하네요;; hctosys-하드웨어시간(hc)을(to) 시스템시간(sys)으로 밀어내기도 합니다.

명령어 설명

mirrorlist

미러리스트는 아치에서 패키지 설치를 할 때 기본 데이터 베이스로 활용할 서버를 나열해 놓은 리스트입니다. 미러리스트에 내가 사용할 서버가 가깝거나, 속도가 가장 빠르게 접속되는 것으로 적용되어 있어야 설치/사용 환경에서 유리합니다. 따라서, 수정해 보도록 하겠습니다. nano 에디터를 사용해서 파일을 열겠습니다(vim 에디터를 사용할 줄 아시는 분들은 yp, P, dG 등 편하게 편집하시면 됩니다. 무엇을 왜 편집하는지만 확인하신 후 편한 에디터를 사용하시면 됩니다).

$nano -w /etc/pacman.d/mirrorlist

기존 가이드의 내용대로 진행하셔도 됩니다만, 최근 iso 들은 유선 네트워크가 연결된 상태에서 부팅한 경우, 네트워크 환경을 통해 이미 mirrorlist를 작성한 채로 부팅됩니다. 따라서 제공된대로 그냥 사용하셔도 무방한 것으로 확인됩니다. 다 지우고 적으셔도 되는데 저는 개인적으로 그냥 첫 주석인 ‘## United Kingdom’ 위에 적습니다. 그러면 혹여 아래의 미러가 오류를 뿜더라도 느린 속도로 해외의 미러에서 다운로드, 설치가 가능하기 때문입니다. 다 지우고 적으실 분들은 (nano 에디터 기준) 지우기 시작할 라인으로 커서를 옮기신 이후, ALT + SHIFT + t를 하시면 맨 끝줄까지 삭제됩니다.

우리나라 미러를 다 적어두겠다 하시는 분들은 아래의 목록을 참고하시면 됩니다. 아치 리눅스 미러리스트 페이지에서 생성된 결과입니다. 아래를 적으신 후, Server앞의 #로 된 주석은 제거하셔야 합니다.

## South Korea
##
## Arch Linux repository mirrorlist
## Generated on 2021-09-07
##

## South Korea
#Server = http://mirror.anigil.com/archlinux/$repo/os/$arch
#Server = https://mirror.anigil.com/archlinux/$repo/os/$arch
#Server = http://ftp.harukasan.org/archlinux/$repo/os/$arch
#Server = https://ftp.harukasan.org/archlinux/$repo/os/$arch
#Server = http://ftp.lanet.kr/pub/archlinux/$repo/os/$arch
#Server = https://ftp.lanet.kr/pub/archlinux/$repo/os/$arch
#Server = http://mirror.premi.st/archlinux/$repo/os/$arch
#Server = https://mirror.premi.st/archlinux/$repo/os/$arch

각 줄이 ~(생략)/$repo/os/$arch 로 끝이 나야 합니다.

nano 편집기를 사용하여 편집 후 저장하고 나오는 방법 : ctrl+x, y, Enter
(ctrl+x : 종료 / 그리고 묻는 것: 수정된 사항이 있는데 수정 하십니까? : y / 파일 명은 뭐로 합니까? (디폴트 값은 원래 파일명으로 되어 있으므로) Enter)

vim 편집기를 사용하여 편집 후 저장하고 나오는 방법: esc 이후, :wq
(esc를 이용해 insert 모드에서 normal 모드로 나옵니다. :를 이용하여 명령어를 입력할 준비를 합니다. 화면 하단에 콜론이 입력된 것을 확인하실 수 있습니다. w: write, q: quit)

reflector가 뭔지 알고 어떻게 사용하는지 익숙하신 분들은 지금 단계에서 설치해서 속도와 국가 코드에 따라, 혹은 본인 환경에 맞게 새로 작성하셔도 무방합니다.

pacstrap

기존의 가이드에서 pacstrap 파트에 대한 설명은 한 줄이 전부였습니다. 하지만, 아치 리눅스 측의 논란의 업데이트(19년 10월)로 인해 설명이 늘어났습니다. 지금까지 제공되던 base 패키지가 너무 불필요한 것들까지 포함한다(bloated)며 그런 불필요하고 직접 설치하기를 바라는 패키지를 제거하였습니다. 따라서 이제 기존의 명령어만으로는 매뉴얼 페이지(man-db, man-pages, texinfo), 각종 에디터(nano, vim, vi), 네트워크 패키지(dhcpcd), linux-firmware와 각종 파일시스템 패키지를 설치할 수 없습니다. 따라서, 본인에게 필요한 것들을 아래 명령어에 추가하여 작성하시기 바랍니다.

변경에 맞추어 모두 업데이트 완료하였습니다.

첫 행은 제가 권장하는 기본이고, 둘째 행부터는 골라서 첫 행 뒤에 띄어쓰기 이후 포함하시면 됩니다. 아마 여러분께 가장 필요할 것으로 생각되는 패키지부터 아마도 필요하지 않을 것 같은 패키지 순서로 나열합니다.

DHCPCD? NetworkManager?

권장: networkmanager. 노트북 등에서 유/무선을 모두 쓰시거나, 혹은 데스크탑 환경(그놈/KDE 플라즈마)과 잘 결합해 개발되는 패키지를 사용하고 싶으신 분들은 networkmanager를 선택하시면 됩니다.

네트워크 매니저 용량 크고 불필요한 것으로 보이는 기능까지 포함하는 점 잘 알고 있습니다.
지속적으로 논란이 되는데 이 가이드의 목적과 대상 독자를 생각해주시면 감사하겠습니다.

반드시 입력하여 설치해야 하는 명령어는 다음입니다.

$pacstrap /mnt base linux linux-firmware

그리고 추가적으로 아래 항목들은 위 linux-firmware 뒤에 추가할만한 것들입니다.

nano(vim을 선택하실 분들은 제외)
vim(nano만 쓰실 분들은 제외, 둘다 선택도 가능)
dhcpcd(networkmanager를 선택하실 분들은 제외)
networkmanager(dhcpcd를 선택하신 분들은 제외)
base-devel(대부분의 사용자는 필요할 것으로 예상)
man-db
man-pages
texinfo
dosfstools
e2fsprogs(===여기까지 대부분의 사용자에게 권장===)
mdadm(여기서부터는 무슨 패키지인지 모르시겠다면 불필요하다는 뜻입니다.)
lvm2

base 패키지 목록/ base-devel 패키지 목록은 링크에서 확인하시기 바랍니다.

genfstab

/etc/fstab은 부팅할 때 어느 디렉토리에 어느 드라이브가 마운트 되야 하는지를 시스템이 알게 해주는 파일 시스템 테이블(File System Table) 파일입니다.

아래 작업은 그 파일 시스템 테이블 파일을 자동으로 생성하는 작업입니다. 시스템 사용 중에도 마운트 된 디바이스, UUID를 확인할 때 사용하는 파일입니다. (Gentoo, LFS 등 더 귀찮은 수작업 시스템은 genfstab과 같은 유틸리티를 제공하지 않아 손으로 작성합니다.)

$genfstab -U /mnt >> /mnt/etc/fstab

genfstab : generate File System table
-U : U는 대문자(UUID로 작성하겠다는 의미)
/mnt
>> :저 파일에 추가로 작성(Append)
(부등호를 한개만 사용하면(>) Overwrite명령이 되어 파일이 이미 존재하더라도 지우고 새로 작성됩니다.)
/mnt/etc/fstab: /mnt/etc/fstab이라는 이름으로

명령어 설명

#cat /mnt/etc/fstab 명령어를 통해서 어떤 게 쓰이는 건지 확인해 보실 수도 있습니다. (cat 명령어는 concatenate(연쇄, 연관시키다)의 줄임으로, 해당 파일의 내용을 보이거나, 파이프(|: shift + \)를 활용해 다른 파일에 입력할 때 자주 활용합니다.)

아치 리눅스 진입

루트 진입

$arch-chroot /mnt

arch-change root
/mnt/로 가정하는 환경에 진입합니다.

명령어 설명

시스템 내부로 들어왔습니다! 추가적인 시스템 세팅을 진행하도록 하겠습니다. 여기에서 추후 사용할 소프트웨어를 설치하시면 나중에 재부팅 후에도 설치된 채로 남아있습니다. 즉, 실제 설치될 아치 리눅스 환경을 USB를 통해 부팅된 아치 리눅스 라이브 환경에서 들어온 것입니다. 따라서, vim 에디터를 사용하실 분들은 #pacman -Syu 이후, #pacman -S vim 명령어를 통해 설치하셔도 재부팅 이후, 아치 환경으로 부팅했을 때 해당 패키지가 설치되어 있습니다. 뿐만 아니라, 설치 완료 후에 부팅이 안되는 경우, 위 명령어를 통해 재진입하여 오류를 바로잡을 수도 있습니다.

인터넷 확인

$ping -c 3 www.google.com

비밀번호 설정

$passwd

타이핑하시는 ‘설정할 비밀번호’는 원래 화면에 안보입니다. 놀라지 마세요!!
확인차 총 두 번 입력하는게 맞습니다. 놀라지 마세요!!

언어 생성

$nano -w /etc/locale.gen

파일이 뜨면 화살표 키를 이용해 아래로 내려가 en_US.UTF-8을 찾습니다. 앞의 주석(#)만 제거해주세요. 그리고 ctrl+x, y, Enter 입니다.

/etc/locale.gen은 어떤 언어 시스템을 생성할지 결정합니다. 즉, 여기서 en_US.UTF-8ko_KR.UTF-8을 주석 해제 해 두어야 아래에서 locale.conf에 둘 중 어느 하나를 골라 적더라도 실제로 사용할 수 있습니다. ko_KR.UTF-8을 사용하지 않으실 분들은 en_US.UTF-8만 주석 해제 하시고 생성하시면 됩니다.

설정파일대로 생성을 합니다.

$locale-gen

언어 설정

locale.conf파일은 시스템 전반의 언어를 관리하는 파일입니다. 여기에 지금 en_US.UTF-8을 적어넣을텐데, 한글 디렉토리(폴더)명, 터미널에서의 한글 오류 등을 선호하시는 분들은 ko_KR.UTF-8을 입력해주시면 됩니다.

$echo LANG=en_US.UTF-8 > /etc/locale.conf

echo>LANG=en_US.UTF-8 이라는 문장을 그대로 /etc/locale.conf 파일에 덮어씌우겠다 라는 뜻입니다. 파일이 없을 경우 파일이 생성됩니다. >>를 이용해 기존 내용은 그대로 두고 추가할 수도 있습니다. 따라서 이전 처럼 역시 이부분도 #nano -w /etc/locale.conf혹은 #cat /etc/locale.conf 통해 확인해 보실수 있습니다.

위 명령어와 다르게 #localectl set-locale LANG=en_US.UTF-8 과 같이 적용하는 방법도 있습니다. 이것은 systemd initsystem에서 사용 가능한 방법이므로 다양한 시스템을 활용하시는 분들은 위의 주어진 명령어를 활용하시면 더 유익할 것으로 생각합니다.

명령어 설명
$export LANG=en_US.UTF-8

위의 명령어로 현재 진행하고 있는 쉘 환경(/bin/bash)에서의 언어를 선언합니다! (생략 무방)

호스트네임 설정

아래 명령어 예시에서 archlinux 부분에 원하는 PC이름을 설정하시면 됩니다.

$echo archlinux > /etc/hostname

로컬타임 설정

위의 명령어를 통해 하드웨어 시간을 UTC로 변경했으니 이제 한국 시간으로 맞춥니다.

$ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

link –symbolic –force옵션으로  /usr/share/zoneinfo/Asia/Seoul세팅을 /etc/localtime에 링크하겠다. 리눅스에서의 심볼릭 링크 혹은 소프트 링크는 윈도우즈 환경의 바로가기 생성과 유사하다고 생각하시면 편합니다. 앞으로 /etc/localtime을 참조할 때 실제론  /usr/share/zoneinfo/Asia/Seoul를 향하도록 해주는 작업입니다.

명령어 설명

사용자 추가

아래 명령어의 user 부분에 본인이 사용하실 이름을 입력합니다.

$useradd -m -g users -G wheel -s /bin/bash user

옵션

-m : user라는 이름을 홈 디렉토리에 생성. 유저의 홈이 됨.
-g: 소문자 g는 기본 그룹을 의미(users) 그룹에 포함
-G: 추가적인 그룹 설정(참조: 아치리눅스 그룹리스트), wheel: 관리자 그룹(su 명령 사용 가능 그룹),
-s: default가 아닌 다른 쉘을 사용하기 위한 옵션
/bin/bash: -s로 다른 쉘을 사용하겠다고 했으니 그 다른 쉘로써 bash를 지정

명령어 설명

아래 명령어의 user 부분을 본인이 지정한 유저 이름으로 변경해야 합니다.

$passwd user

sudo

최근 해외 포럼에서 ‘sudo’에 대한 논란이 작게나마 발생합니다. (a)BSD 계열에서 가끔 보이는 ‘doas’를 통해 더 미니멀하게 접근할 수 있다, 혹은 (b)원래 개발된 목적이 다중 사용자 컴퓨터에서 활용하기 위함이었던 것을 감안하여 ‘1인 사용 환경’에서는 ‘sudo’든 ‘doas’든 필요 없이 ‘su -l’ 등을 통해 직접 루트 환경이 되어 작업하는 것이 보안상 적절하다 등이 주요 논지입니다.

판단은 여러분 몫입니다.
일반 초보 사용자용 가이드인 만큼 대부분의 경우에 접하기 쉬운 ‘sudo’를 설치하겠습니다.

sudo? doas? su -l?

sudo가 설치되지 않은 경우, #pacman -S sudo를 통해 설치합니다.

vi/vim 에디터가 익숙하신 분들은 해당 에디터 설치 후, 그냥 #visudo(EDITOR 환경 변수가 vim으로 잡혀 있는 경우) 하시거나 #EDITOR=vim visudo 하셔도 됩니다.

$EDITOR=nano visudo

sudo 명령어 가능자에 본인을 추가하겠습니다. sudoers 파일은 $nano /etc/sudoers 커맨드로도 수정이 가능하지만, 원칙은 visudo를 통해 수정하는게 맞습니다. visudosudoers파일의 문법적 오류 등을 점검하고 잠금하는 기능을 하기 때문에 임의로 $nano /etc/sudoers를 직접 수정하는 것은 권장하지 않습니다.

아래로 화살표키 내리다 보면 문서 거의 끝 부분에서

##
## User privilege specification
##
root ALL=(ALL) ALL

## Uncomment to allow members of group wheel to execute any command
# %wheel ALL= (이렇게 주석처리 되있던 것을)
%wheel ALL= ('#'을 지워서 이렇게되도록 주석 제거 처리 해주면 됩니다.)

## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
(위 설정은, wheel그룹이 '비밀번호도 필요없이' sudo만 붙이면 명령 실행이 가능하도록 합니다. 보안상의 이유로 강하게 비추천합니다. 어떤 변경을 하는 것인지 정확히 알고 계시는 분만 주석 제거하시기 바랍니다.)

부트로더

부트로더 설치를 하겠습니다. 아까 파티션 때와 마찬가지로 2가지를 이용할 수 있습니다.

(1) grub은 대부분 배포판에서 사용하기 때문에 익혀두시면 다른 배포판을 다룰 때에도 익숙할 수 있습니다. 다만 grubefibootmgr과 같은 프로그램을 추가로 설치해서 진행합니다.

(2) systemd-bootsystemd에 내장된 기능을 이용해 부트를 시도합니다. 첫 설치는 조금 더 까다롭다고 느끼실 수 있지만 추가 설치를 최소화하려는 아치 배포판의 철학과 매우 잘 부합한다고 생각합니다.

제 추천을 원하신다면 systemd-boot를 추천합니다만 둘 다 어떤 것인지 처음 들어보셨거나, 들어봤다고 하더라도 다른 부트로더, 예를 들어, lilo, elilo가 뭔지 모르신다면 grub을 사용하시기 바랍니다.

부트로더는 시스템을 부팅시키는게 핵심 역할이기 때문에 다양한 부트로더를 활용해봤거나 수정을 직접 해본 경험이 충분하지 않은 이상 많은 배포판에서 활용하고, 문서나 지원을 검색하기 용이한 패키지를 사용하는 것이 맞다고 봅니다.

추가 설명

grub은 현재 grub2입니다. grub-legacy라고 하여 예전 BIOS환경일 때부터 쓰여온 훌륭한 소프트웨어입니다. 다만, 너무나 많은 기능을 제공하다보니 단지 UEFI 환경의 부트만을 원하는 사용자에게는 의미없는 기능이 추가되어있습니다. 그것은 곧, 소프트웨어에 예기치 못한 충돌이나 문제가 발생할 소지가 많다는 의미이기도 합니다.

systemd-bootbootctl혹은 gummiboot라고도 불리는데 그 이유는 systemd가 흡수를 하기 전 외부에 존재하는 소프트웨어일 때의 이름이기 때문입니다. 이제는 systemd와 완전히 합쳐져서 UEFI 부트만을 보조하는 기능을 수행합니다(물론, BIOS 부트를 설치할 수 있습니다만 추천하지 않습니다). 아치리눅스 설치 과정에서도 이미 default로 설치되는 프로그램이기도 합니다.

더불어, 이 가이드는 일반 사용자 뿐만 아니라 ‘초보 사용자’에게도 초점이 맞추어져 있습니다. GRUB의 단점이나 systemd-boot가 갖는 부팅 속도의 이점을 지적할 것이 아니라, 초보 리눅스 사용자가 쉽게 배우고 새로운 운영 체제로 변경할 수 있는 환경을 조성해주시기를 간곡히 부탁드립니다.

GRUB 사용

설치를 합니다. 설치 전에 레파지토리(아치 리눅스 측 패키지 저장소)로 로컬 레파지토리(설치 중인 컴퓨터가 가진 소프트웨어들의 정보)를 업데이트, 동기화 합니다.

$pacman -Syu

-S: 원격 레파티토리와 동기화
-y(--refresh): -S와 쓰일 수 있는 옵션으로 원격 레파지토리의 패키지 DB를 새로 다운로드
-u(--sysupgrade): -S와 쓰일 수 있는 옵션으로 다운로드한 DB에 맞게 시스템 패키지를 업그레이드

명령어 설명

이제 사용할 패키지들을 가져와서 설치하겠습니다.

$pacman -S grub efibootmgr

grub을 이용해 부트가 가능하도록 grub을 설치하겠습니다. 이 과정을 많은 분들이 혼란스러워 하시는데 이 과정은 ‘grub의 설치’ 입니다. (grub 패키지를 다운로드/설치하는 것이 아님. 패키지는 위의 명령어로 설치하였습니다.)

$grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch --recheck

grub-install, 타겟=x86_64-efi, efi-디렉토리=/boot, 부트로더-이름은 arch로, –recheck

명령어 설명

이제, #nano -w /etc/default/grub을 통해, 부트로드의 기본 설정을 변경할 수 있습니다. 예를 들어, 부팅할 OS선택을 기다릴 시간을 0 또는 1초 처럼 짧게 변경하거나 할 수 있습니다. 여기서는 건드리지 않겠습니다.

설정이 완료된 경우, /etc/default/grub의 설정들을 기반으로 하여 부팅을 위한 ‘파일(/boot/grub/grub.cfg)’을 생성/설치합니다.

$grub-mkconfig -o /boot/grub/grub.cfg

추후에 여러가지 이유로 grub 설정을 변경한 때에도 사용하는 명령어입니다. 특히 커널 변수등을 실험해보거나 할 때 /etc/dafault/grub 파일을 수정한 후에 위 명령어를 통해 업데이트를 합니다.

systemd-boot 사용

주 의

위의 GRUB을 사용하지 않기로 하신 분들의 해당 사항입니다.

$bootctl --path=/boot install

/boot/loader/loader.conf 파일을 수정해야 합니다.

$nano -w /boot/loader/loader.conf

파일에 아래와 같이 작성

default arch
editor 1
timeout 3

디폴트 이후 arch에는 본인이 알아볼 이름을 넣으시면 됩니다. 보통은 arch를 이용합니다. 다만, 주의하실 점은 이 부분에 넣은 이름을 꼭 기억하셨다가 바로 뒤에 따라오는 과정에서 entries/abcd.conf 파일의 abcd에 동일하게 작성해 주셔야 한다는 점입니다. 지금 arch로 작성하시면 나중에 그냥 entries/arch.conf파일을 만드시면 됩니다.

editor 변수: 부팅 중에 e키 등을 이용해 커널 변수 혹은 부팅 환경설정을 조정하는 경우가 있는데 0으로 설정 시에 이것을 방지합니다. 개인적인 권장으로는, 지금은 ‘1’로 설정해 두고 정상 작동한다는 것을 확인한 이후에 수정하는 것을 추천합니다.

timeout 변수: 3 은 부팅 화면 중에 선택을 기다리는 시간입니다. 이것도 마찬가지로 지금은 설정해두되 나중에 0 등으로 수정하셔도 됩니다.

이제 로더 폴더 아래의 엔트리스 폴더에 파일을 생성하고 수정하겠습니다.

$nano -w /boot/loader/entries/arch.conf

아까 위에서 default에 적으셨던 그 이름을 파일명으로 생성하시면 됩니다.

arch.conf파일에 내용을 추가하기 전에, 아래의 [참고]부분을 한번 읽어보시고, [참고]란 끝에 예시 파일을 보여드리겠습니다.

[참고]
#ls /boot 해보시면 /boot 폴더 아래에 loader와 각종 이미지 파일(vmlinuz, initramfs-linux 등)이 있는 것을 확인하실 수 있습니다. 그것들을 위 파일 내용에 포함하는 것입니다.

title에는 알아보기 쉬운 이름을 사용하시면 됩니다. 이 곳에 쓰인 이름은 다른 설정에서 추가로 필요하지 않습니다만, 보통 ArchLinux 등을 사용하는 편입니다.

linux 항목에서 vmlinu”z”에 주의하시기 바랍니다.

title ArchLinux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options root=/dev/sda3 rw

option 항목에서 권장 사항은 물론 PARTUUID를 이용하는 것입니다. 하지만 우선은 루트 파티션 경로를 지정해 주는것으로 대체하도록 하겠습니다.위키에 따르면 리포맷 되거나 경로 매핑이 변경되는 경우에 비해 PARTUUID가 장점을 가진다라고 되어있는데, 일반 사용자, 초보 사용자 기준에 그럴 일이 드물 것으로 가정하고 경로를 지정합니다.

PARTUUID를 사용하고 싶으신 분들은

(1) $blkid를 통해 루트파티션(지금은 sda3)의 PARTUUID를 복사하시거나 적어두신 후 위의 options 항목의 내용을 root=PARTUUID=123efg45–789 rw 로 해주시면 됩니다. 물론 123efg45–789이 부분에 본인의 PARTUUID가 들어갑니다.(원래 PARTUUID가 깁니다. 놀라지 마세요! / “쌍따옴표 같은게 추가되지 않았는지 잘 확인하시기 바랍니다!!)
(2)적어두는 것이 귀찮은 분들은 ‘options’ 줄을 지운채로 저장하신 후
#echo "options root=PARTUUID=$(blkid -s PARTUUID -o value /dev/sda3) rw">> /boot/loader/entries/arch.conf
명령어를 활용하시면 됩니다. 무슨 방법을 사용하시든 반드시 다시 #nano /boot/loader/entries/arch.conf하셔서 추가한 내용들이 적절히 적혀 있는지 확인하시기 바랍니다.

PARTUUID?

exit

오해의 소지가 가장 많은 부분을 다루고 넘어가도록 하겠습니다.

현재 상태로 아래에서 소개하는 #exit을 통해 chroot환경에서 나가고 재부팅을 하면 네트워크 연결이 가능하지 않습니다. 앞에서 설명드린 바와 마찬가지로 우선,
(1) dhcpcd만을 사용하실 분,
(2) 데스크탑 사용자 중에서 Gnome, Plasma 등의 데스크탑 환경을 사용하지 않을 예정이신 분들이나,
(3) 유선 연결만 사용하시는 분들,
(4) networkmanager가 무엇인지 정확이 이해하고 있지만 사용하지 않기로 결정하셨던 분들은

$systemctl enable dhcpcd

위의 명령어를 통해 재부팅 후에도 랜선을 통한 인터넷이 가능하도록 해 줍니다. 부팅시 서비스들을 관리하는 명령어가 systemctl입니다. 현재 부팅된 환경에서 서비스를 시작하려면 start 다음 부트때도 계속 실행하려면 enable 옵션을 사용합니다. 끝에는 그렇게 하려는 서비스의 이름을 적습니다.

그렇지 않고,
(1) 노트북 사용자이거나,
(2) networkmanager의 편리한 기능을 활용하고 싶으신 분들,
(3) Gnome/Plasma처럼 networkmanager와 가깝게 개발되어 있는 데스크탑 환경을 사용하고자 하시는 분들은

$systemctl enable NetworkManager.service

를 진행해주시면 됩니다. (systemctl 라인에서 서비스 이름의 ‘N’과 ‘M’이 대문자임을 주의하시기 바랍니다.) 추가로 노트북 사용자들의 경우 ‘iw’등의 패키지가 필요할 수도 있습니다.

혹시, 이 부분을 놓치고 지나가셔서 네트워크가 안되는 분들은, chroot 방법을 통해 다시 시스템에 진입하셔서 설치가 가능합니다.

$exit

umount

각 디렉터리에 마운트 되어있던 장치들을 제거합니다.

$umount -lR /mnt

reboot

재부팅을 합니다!!!

$reboot

장치가 종료되고 다시 시작되는 시점에 USB를 빼주시면 됩니다.

재부팅이 되면 로그인 하라는 화면이 나올텐데 설치에 성공하신 겁니다! 축하드립니다! 아마 기쁘신 분도 있고, 이게 뭐야 하시는 분도 있을텐데, 이게 뭐야 싶으신 분들은 그래픽 환경에 익숙하셔서 그런거라고 생각합니다. 서버와 같이 헤드리스(headless)로 작업하실 분들을 제외하고 앞으로 이어질 데스크탑 환경을 설치하시면 그래픽 환경에서 아치를 사용하실 수 있습니다.

xorg-logo

그래픽 환경 설치

xorg는 그래픽 환경을 위한 시스템 구축에 필요합니다. xorg가 오래되었다는 이유로 비판을 받기도 합니다. 현재 wayland라는 대체 라이브러리가 상용화를 목전에 두고 있습니다(페도라는 wayland가 디폴트). 하지만 아직도 리눅스 배포판 계에 있어서 그래픽 환경의 대명사는 xorg 환경이라고 해도 과언이 아닙니다. 이 xorg를 이용해 그래픽 환경을 구축해보도록 하겠습니다!

로그인

본인이 설정한 ID/Password로 로그인을 합니다.

인터넷 연결 확인

$ping -c 3 www.google.com

팩맨 설정

이제 설치할 것들이 몇 가지 있으니 pacman을 업데이트하겠습니다.

추가적으로, 일반 사용자로 로그인하였으므로 프롬프트는 ‘$’로 변경됩니다. 시스템 명령어는 ‘sudo’를 활용해 실행합니다.

$sudo pacman -Syu

pacman-optimize는 pacman 5.1.0 update(2018-05-29) 이후 삭제되었습니다.

추가로 /etc/pacman.conf 파일과 /etc/makepkg.conf를 살펴보시는 것도 좋습니다.

기본 정보

xorg는 물론 xterm 등의 소프트웨어를 통해 작동 가능한 데스크탑 환경을 구축할 수 있지만, 대개 이 위에 설치할 다양한 DE(Desktop Environment/데스크탑 환경-종류:Gnome,KDE5/Plasma,XFCE), 혹은 WM(Window Manager/윈도우 매니저-종류:i3wm, awesome, dwm, xmonad 등 다수)를 위한 라이브러리로써만 작동합니다.

본인에게 어떤 DE/WM가 마음에 드는지를 대충 훑어보시고 진행하시길 바랍니다. 가이드는 Gnome을 기준으로 소개합니다.

DE 예시

WM 예시

필수 설치

여기서는, Gnome 데스크탑 환경을 설치하고, 데스크탑 환경을 위해 ‘Xorg-server’를 설치하겠습니다. 이 부분은 설치 과정을 통틀어 가장 긴 시간이 소요됩니다. 설치가 완료되고 나면 디스플레이 매니저를 사용할 수 있게 ‘Systemctl enable’을 진행합니다. ‘xorg-server’ 패키지에는 기본적으로 디스플레이 데스크탑 환경을 쓰는데 필요한 소프트웨어가 포함되어 있습니다. Gnome 패키지에는 ‘gdm’을 포함한 Gnome 데스크탑 환경에서 사용하는 필수 소프트웨어가 포함되어 있습니다. 별도의 소프트웨어를 추가로 설치하고 싶으시다면 ‘gnome-extra’를 설치하시면 됩니다. ‘gdm’ 은 ‘Gnome Display Manager’로써, 데스크탑 환경의 로그인 화면과 ‘Xorg-server’ 등 전반적인 그래픽 환경을 관리하는 프로그램입니다.

$sudo pacman -S xorg-server gnome (gnome-extra)
$sudo systemctl enable gdm

이전에 인터넷 연결을 위해 systemctl start dhcpcd 했던 것을 기억하시나요? 이번엔 gdm서비스를 부팅시마다 사용하기 위해 enable을 사용하였습니다.

다른 데스크탑 환경을 구축 하실 분들은 아래의 ‘데스크탑환경/디스플레이 매니저’를 설치해주시면 됩니다.

KDE5/Plasma: SDDM
XFCE: Slim, 하지만 그냥 ‘xinit’ 등을 설치, ‘startx’ 사용을 권장
LXDE: LXDM
대부분의 경우에 고민없이 설치하기에 좋은 LightDM, SLIM 등도 있습니다.

각종 디스플레이 매니저

reboot

재부팅을 진행합니다.

$sudo reboot

자 어떤가요? 로그인 화면이 그래픽 환경으로 부팅 되셨나요? 이제 사용자 비밀번호를 입력한 후에 아치 리눅스 Gnome 환경에서 즐기실 준비가 모두 완료되었습니다. 아! 하지만 권장사항들이 몇가지 더 있네요~

데스크탑 환경설정

개인적으로 리눅스/데스크탑 환경을 사용하면서 가장 기본으로 생각하는 것이 ‘설정’입니다. 지금 바로 상단의 ‘Activities’의 ‘settings’를 통해 기본 설정을 하는 것을 추천합니다.

초보자의 경우 대부분 그래픽환경 설치를 할텐데, 특히 그놈 등과 관련하여 networkmanager가 가장 친근하게 적용됩니다. 따라서, 애초에 중단하고 다른 것을 켜지 않고 네트워크매니저를 실행하기 위해 부득이 별도의 추가적 명령을 소개하지 않았습니다. Gnome 데스크탑 환경에서 디폴트로 사용하는 네트워크 매니저를 사용할 수 있게 설정하겠습니다. 설치과정에서 dhcpcd를 사용하기로 하신 분들은 읽어보기만 하셔도 될 것 같습니다! 위에서 networkmanager를 설치하신 분들은 이미 진행하였습니다.

$sudo systemctl enable NetworkManager
$sudo systemctl start NetworkManager

enable을 통해 부팅시 시작 설정을 하고, start를 통해 지금 시작해보았습니다.

상단 패널의 Activities>Settings(설정)에 들어가셔서 첫 화면으로 뜨는 Wifi항목을 보시면 연결이 되는 것을 확인할 수 있습니다. 이제 여러분은 원하는 와이파이에 접속하실 수 있습니다. 어때요? 리눅스는 Wifi설정이 어렵다는 것도 사실은 이렇게 간편하답니다!

웹브라우저 설치

파이어폭스

웹 브라우저가 기본 ‘웹’소프트웨어를 이용하도록 되어있네요. 본인이 사용하고 싶은 웹 브라우저가 파이어폭스, 혹은 구글-크롬이라면 어떻게 해야 할까요? 파이어폭스라면 설치해주면 됩니다!

$sudo pacman -S firefox

파이어 폭스 설치가 완료되었습니다!

구글-크롬의 경우에는 조금 복잡합니다. 팩맨을 활용해서 설치할 수 있는 소프트웨어의 경우는 아치의 공식 레파지토리에 올라와 있는 것들입니다. 구글-크롬의 경우에는 공식 레파지토리에는 chromium 이라는 이름의 오픈소스 버전이 올라와 있습니다. 사실 둘의 차이점은 크지 않아요!(chromium 설치 : $sudo pacman -S chromium)

하지만 나는 꼭 구글-크롬 을 사용하고 싶다 하시면 아치의 자랑인 AUR을 사용해 보겠습니다!

구글 크롬

AUR 이란 Arch User Repository로 아치 사용자들이 관리하고 업로드하는 패키지들의 모음입니다. AUR을 이용해 패키지를 빌드하는 방법은 확실히 알아두셔야 합니다. 나중에 부록에서 찾으실 수 있는 AUR-Wrapper(yay 등)를 사용하시더라도 오류는 언제든지 발생할 수 있습니다. 그 때는 부득이하게 수동으로 설치하셔야 합니다. 아치리눅스 위키페이지에 따르더라도, AUR wrapper는 언제나 도움을 주는 소프트웨어일 뿐, 공식적으로 지원을 받는 프로그램이 아닙니다. 기본 개념은 “aur.archlinux.org”에 접속해서 내가 설치하려고 하는 패키지의 “snapshot”을 다운로드 받습니다. 다운로드 받은 스냅샷의 압축을 해제하면 “PKGBUILD”파일이 있는데, “MAKEPKG”라는 명령어를 통해 컴퓨터가 “PKGBUILD”의 내용대로 설치를 하는 것입니다.자세한 내용은 아래를 통해 설명드리겠습니다.

지금은 ‘웹’소프트웨어 밖에 없으니 그것을 이용해서(혹은 파이어폭스를 설치하셨다면 파이어폭스를 이용해서)

aur.archlinux.org를 접속한 후에
우측의 검색 창에 ‘google-chrome’을 입력하시면
구글-크롬에 해당하는 AUR페이지가 뜹니다.
우측의 작은 대화상자(Package Actions)에서
Download Snapshot 을 이용해 Downloads/폴더로 가져옵니다.
터미널 실행 후,
$cd Down(tab)

#(tab)은 키보드의 tab키를 의미합니다. bash 는 키보드의 tab키로 자동 완성 기능을 제공합니다.

$ls

#ls(list)를 통해서 어떤 것들이 들어가 있는지 확인합니다. google-chrome.tar.gz를 확인할 수 있습니다.
name.tar.gz – gzip으로 압축되고 tar로 패키지된 파일 이라는 뜻입니다. 해제는 tar 명령어를 이용하면 됩니다.

$tar -xvzf goog(tab)

tar 는 파일 압축 해제 프로그램이라고 생각하셔도 됩니다. (옵션은 각각 x : extract(압축해제)/v:verbose(과정 출력)/z:gzip 으로 압축된 파일/f:압축 파일을 사용) 탭키를 이용해 나머지 이름은 자동완성해보았습니다.

$ls

#완료되고 나서 다시 ls를 해보면 google-chrome 폴더가 생겼습니다!

$cd goog(tab)
$makepkg -risc

-r: 빌드가 완성된 이후, 빌드 과정에서 필요로 했던 의존성으로 설치된 패키지들을 다시 제거합니다. 이 옵션으로 의존성으로 설치된 패키지를 제거한 경우, AUR 패키지 업그레이드 당시에 아직도 의존하는 패키지라면 해당 업그레이드 버전을 빌드할 때 다시 설치됩니다. 그러나 업그레이드가 자주 있지 않다는 점을 알거나 더 깔끔한 시스템을 원하는 경우, 옵션을 켜서 제거하는 것도 좋은 방법입니다.
-i: 빌드가 완성되면 자동으로 설치를 진행합니다. 이 옵션을 제거하는 경우, 이어지는 명령어로 pacman -U pkgname-pkgver.pkg.tar.zst 를 입력하여 설치해야 합니다. 이런 번거로움을 없애줍니다.
-s: 의존성 중, pacman으로 설치 가능한 공식 레파티토리 패키지들은 자동으로 설치합니다. ( AUR 패키지 중에서, 또 다른 AUR 패키지에 의존하는 경우는 수동으로 먼저 설치해주어야 합니다.)
-c: 설치 이후, 빌드 과정에서 생성된 임시 파일을 삭제합니다.

makepkg 는 pkgbuild라는 파일을 읽고 컴퓨터가 그 파일의 내용대로 빌드하고 팩맨으로 설치합니다. (각각의 옵션은 s:설치할 소프트웨어가 의존하고 있는 다른 소프트웨어를 자동으로 설치합니다. i:빌드가 성공하면 설치하겠다. c:설치 중에 발생한 불필요 파일들은 빌드가 완성된 후 삭제합니다.)

설치 과정에 sudo 비밀번호를 요구하면 계정의 비밀번호를 입력하시면 됩니다.

google-chrome 설치가 완료되었습니다! 상단 패널의 Activities>All을 통해서 확인하실 수 있습니다! (간혹 데스크탑환경에서 로그아웃/로그인을 다시 해줘야 아이콘이 보이는 경우도 있습니다.) Downloads 폴더의 압축파일과 폴더는 삭제하셔도 좋습니다!

한글 폰트

인터넷을 하다 보니 한글이 표시될 곳에 네모난 박스가 표시됩니다!
AUR을 이용해 한글 폰트를 설치해볼까요?

(aur.archlinux.org에 접속/ttf-nanum검색/snapshot 다운로드)
$cd Down(tab)
$tar -xvzf ttf(tab)
$cd ttf(tab)
$makepkg -sic

위의 과정을 통해 한글 폰트 설치가 완료되었습니다. 여기까지 진행하면, 구글 크롬을 통해 유투브/네이버를 이용하더라도 한글 폰트가 깨지지 않고 출력됩니다. 하지만, 한글로 검색을 하고 싶은데 한글 입력이 안됩니다. 어떻게 해야 할까요?

한글 입력

이제 그놈(Gnome)은 언어 입력기로 ‘ibus’를 통합하여 사용합니다. 즉, 설정의 언어&형식 탭에서 선택하여 변경이 가능합니다. 다만, 필요한 패키지는 설치해야할 수도 있습니다. (기본적으로 설치되는 한국어 패키지가 있다고 하더라도 많이 모자랍니다. ibus-hangul을 설치할경우 ‘korean’을 검색해보면 태극기 문양의 hangul이 등장하는데, 이 것이 선택되어야 가장 사용하기 편리합니다.)

$sudo pacman -S ibus ibus-hangul

팩맨을 이용해 ibus 와 ibus-hangul 을 설치합니다.

다른 데스크탑 환경을 사용하시는 분들은 일부 파일을 수정해주어야 합니다. 특히 플라즈마는 ibus와 아직 가깝지 않아 사용이 다소 번거롭습니다.

먼저, /etc/environment 파일에 추가합니다.

GTK_IM_MODULE=ibus
QT_IM_MODULE=ibus
XMODIFIERS=@im=ibus

그리고 ~/.bashrc나 혹은 본인이 다른 쉘을 사용하는 경우 해당 설정 파일을 편집합니다.

ibus-deamon -drxR


설치된 어플리케이션 중에 ‘ibus-preferences’를 선택합니다.

앱의 네가지 탭 중 'input-method’를 클릭합니다.
그리고 ‘ADD’를 클릭 후 ‘others/korean/hangul’을 찾습니다.
(한/영 전환을 ‘Shift+Space’로 변환하겠습니다.)

해당 앱의 상단 탭에서 'General’ 항목으로 이동합니다.
'Keyboard Shortcut/Next Input method’를 찾으라고 장황하게 적었지만
General 항목으로 이동하면 첫 번째로 있습니다;; 

우측의 버튼을 클릭 후 ‘modifier’ 를 ‘shift’로 체크 변경하고 ‘apply’로 적용합니다.
기본 앱인 ‘설정’ 어플리케이션(Settings)을 실행합니다.
'Region & Language’를 눌러보면
'Input Sources’가 있습니다. 이게 입력 수단입니다.
'+’버튼을 클릭해서 ‘others’ 에서 ‘korean’ 중에
'Korean(hangul)-아이콘: 태극기’을 추가합니다.

유투브에서 shift+space를 이용해 한/영 변환을 해봅니다. 작동하는군요!
이제 한글 입력을 할 수 있습니다!

부록A – 독자 건의

###        btrfs & timeshift        ###
### - by. Davido(osh3606@gmail.com) ###

# 파일시스템 포맷하기
$mkfs.btrfs /dev/sda3

# 서브 볼륨 생성
$mount /dev/sda3 /mnt
$cd /mnt
$btrfs subvolume create @
$btrfs subvolume create @home
$cd /
$umount /mnt

# 서브볼륨 마운트
$mount -o rw,noatime,compress=lzo,space_cache=v2,subvol=@ /dev/sda3 /mnt
$mkdir /mnt/home
$mkdir /mnt/boot
$mount -o rw,noatime,compress=lzo,space_cache=v2,subvol=@home /dev/sda3 /mnt/home
$mount /dev/sda1 /boot

# fstab 수정
# 스냅샷 프로그램 사용하기 위해서는 genfstab 이후 fstab에서 subvolid 없애줘야 함. 
# 안없애면 추후에 btrfs 복구시 복구 전 id를 찾으려 하기 때문에 정상적으로 복구 안됨…
$nano /mnt/etc/fstab

# /, /home 마운트 옵션에서 
# subvolid=#### 삭제
# subvol=###/,subvol=### 중 하나 삭제

# timeshift를 이용한 스냅샷/복구
# 설치 종료 후 fresh installed 상태에서 btrfs 스냅샷 만들기(timeshift사용)
$sudo pacman -S git
$git clone https://aur.archlinux.org/timeshift.git
$cd timeshift
$makepkg -si
$sudo timeshift –create –comments “Fresh install”

# 복구시
$sudo timeshift –restore

# 원하는 스냅샷 번호 선택
$sudo reboot

부록B – 권장 사항

지금까지 아치 리눅스를 설치하고 데스크탑 환경을 구축한 후에 웹 브라우저와 한글 입력을 시도했습니다. 이제 한글과 영어 타이핑이 가능하고 웹 브라우징이 가능해졌으니 추가적으로 생기는 문제는 웹 검색을 통해 해결하실 수 있습니다! 다만 몇 가지의 추가 사항만 소개하고 글을 마치도록 하겠습니다.

microcode

마이크로코드란 프로세서 제작자들이 안정성,보안 등을 우려해 업데이트 하는 파일을 의미합니다. Intel CPU라고 가정하고 설치하겠습니다.

참조: 아치 위키 -마이크로코드

systemd-boot 사용자

$sudo pacman -S intel-ucode
$sudo nano /boot/loader/entries/arch.conf

arch.conf는 설치 과정에 본인이 사용하셨던 이름으로 대체하셔야 합니다. 아래를 중간에 삽입합니다.

initrd /intel-ucode.img

부트 로더를 업데이트하고 재부팅을 진행합니다.

$sudo bootctl update

grub 사용자

intel-ucode설치를 하고 나면 grub은 알아서 잘 찾아줍니다. config파일 업데이트를 진행합니다.

$sudo pacman -S intel-ucode
$grub-mkconfig -o /boot/grub/grub.cfg

공통

재부팅 이후에 잘 적용이 되었는지 확인합니다.

#journalctl -k --grep=microcode

아래와 유사한 내용이 확인되어야 합니다.

microcode: microcode updated early to revision 0xde, date = 2020-05-18
microcode: sig=0x806ec, pf=0x80, revision=0xde
microcode: Microcode Update Driver: v2.2.

video driver

VGA 드라이버를 잡아주셔야 합니다.

$lspci | grep -e VGA -e 3D

그리고 아치 위키 – Xorg: 드라이버 설치 페이지를 보시고 해당하는 드라이버를 설치해주시면 됩니다.

시스템 체크

부팅 중 발생한 오류 목록을 확인

$sudo journalctl -p 3 -xb

결과를 확인하시고 구글 등의 검색을 통해 해결하시면 됩니다.

systemd 실행 중 실패한 파일 확인

$sudo systemctl --failed

참조: 아치 위키 – 시스템 관리 페이지

ccache, makeflags

ccache는 자주 컴파일 되는 것들을 캐싱해 둠으로써 빌드 시간을 단축시키는데 목적이 있습니다.

$sudo pacman -S ccache

프로세서 개수 확인

$nproc

결과로 나온 숫자를 기억해두시면 됩니다.

makepkg.conf 파일 수정

$sudo nano /etc/makepkg.conf

중간에 BUILD ENVIRONMENT 부분에서 아래로 몇 줄 내려가보면

BUILDENV=(!distcc color ccache check !sign)

으로 ccache 부분 앞의 !를 제거해줍니다.

아까 BUILD ENVIRONMENT 제목으로 돌아간 후 위로 4줄정도를 보시면 위 처럼 #을 지우신 후 아까 외운 숫자를 j뒤에 붙이시면 됩니다.

이제 bashrc파일을 수정하겠습니다.

$nano ~/.bashrc

맨 아래에 두 줄을 추가해줍니다.

export PATH="/usr/lib/ccache/bin/:$PATH"
export MAKEFLAGS="-j4"

pacman.conf

pacman.conf파일은 pacman의 인터페이스와 작동에 관한 설정을 담은 파일입니다.

$sudo nano /etc/pacman.conf

부록C – AUR 관련 당부 말씀

AUR Helper란 AUR 패키지들의 업데이트나 설치를 도와주는 소프트웨어입니다. 일반적으로, AUR 레파지토리에 설치되어 있는 패키지들의 버전보다 더 상위 버전이 존재하는지만을 확인해주는 유틸리티, 그보다 한 걸음 더 나아가 상위 버전이 존재한다면 다운로드 받아주는 유틸리티(search and download), 빌드까지 책임져주는 유틸리티(search and build) 마지막으로 아예 pacman으로 설치한 패키지까지 포함해 AUR만이 아니라 공식 레파지토리까지 검색하여 설치와 업데이트를 진행해주기 때문에 평소에 pacman을 사용할 일이 없도록 해주는 유틸리티(pacman wrapper)까지 다양한 종류가 있습니다.

아치 위키에서는 분명히 ‘AUR 헬퍼들은 공식 지원 대상이 아님’을 밝히고 있습니다. 따라서, AUR 헬퍼를 사용하다가 발생하는 문제들에 있어서는 지원을 받지 못합니다.

기존에는 yaourt가 디폴트 수준으로 많이 사용되고 있어서 가장 앞에 두었습니다. yaourt는 개발이 중단되었습니다. yaourt가 중단되어 다른 소프트웨어 추천을 원하신다면 cower를 추천합니다. cower도 개발이 중단되었습니다. 현재 많은 인기를 끌고 있는 것은 auracle(search and download), yay(pacman wrapper)로 보입니다.

아치 리눅스를 사용하는 동안, 수많은 AUR 헬퍼 패키지가 등장했다가 인기를 끌고 사라져갔습니다. 그냥 Git 혹은 AUR 디렉터리를 홈 아래에 만드신 후, Git 클론해서 업데이트 하면서 관리하시는게 속편합니다. 무엇보다 가급적 AUR 패키지를 아예 안 쓰거나, 최소화하는 것을 권장합니다.

부록D – Cheat Sheet

$dd bs=4M if=~/Downloads/archlinux of=/dev/sdX status=progress && sync

$ls /sys/firmware/efi
$ping -c 2 www.google.com
$lsblk

$wipefs --all /dev/sda
$parted /dev/sda
$cfdisk /dev/sda 

$mkfs.vfat -F 32 /dev/sdaN
$mkfs.ext4 -j /dev/sdaN
$mkswap /dev/sdaN
$swapon /dev/sdaN
$mount -v -t ext4 /dev/sdaN /mnt
$mkdir -pv /mnt/boot
$mount -v -t vfat /dev/sdaN /mnt/boot
$ntpd -q -g
$hwclock --systohc --utc
$nano -w /etc/pacman.d/mirrorlist
$pacstrap /mnt base base-devel linux linux-firmware vim
$genfstab -U /mnt >> /mnt/etc/fstab

$arch-chroot /mnt
$ping -c 2 www.google.com
$passwd
$nano -w /etc/locale.gen
$locale-gen
$echo LANG=en_US.UTF-8 > /etc/locale.conf
$export LANG=en_US.UTF-8
$echo pcname > /etc/hostname
$ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
$pacman -S grub efibootmgr
$grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch --recheck
$grub-mkconfig -o /boot/grub/grub.cfg

$exit
$umount -lR /mnt
$reboot