새해 첫 글!


요즘 Arch Linux + Suckless 환경 세팅에 푹 빠져있다. "푹 빠져있다"라고 쓰고 "많은 시간을 할애해도 아직 환경 구축을 못하고 있다"라고 읽는다. (아마도) 2010년 겨울에 샀던 Dell Inspiron N5010에 새로운 Arch 환경을 시험 삼아 설치하고 이것 저것 아직 세팅할 것이 많은 상태이다 (아직 한글을 못 치고 있다 흑흑). 아직 dual boot에 대한 자신이 없기 때문에 나의 주력 노트북인 Lenovo Ideapad에 새로운 Linux distro를 시험해 볼 여유는 없었는데, 다행히도 집 구석에 안 쓰이고 버려져 있던 Dell 노트북을 재활용할 수 있었다.

오늘 정리하는 것은 아직 데스크탑 환경을 설치하지 않은 갓 태어난 Arch 터미널 (아마도 tty1)에서 와이파이를 연결하는 일이다. 조금 더 상세하게 말하자면 노트북의 wireless 통신 기능을 제어하고 관리하는 방법을 정리한다. Arch Wiki에는 네트워크를 관리하는 여러 방법을 나열해주고 있지만, 이 글에서는 systemd-networkd를 통해서 무선 네트워크를 만져볼 것이다. 이 글은 유선 네트워크에 대해서 아무 내용도 다루지 않는다. 오히려 앞으로의 내용은 유선 네트워크가 연결되어 있다는 가정 하에 이것 저것 설치를 하게 된다.



Why systemd?

systemd 프로젝트 목표 자체가 모든 GNU/Linux 배포판들의 시스템을 통일하고자 하는 것이다. 많은 (또는 대부분의) GNU/Linux 배포판들이 기본 프로세스 관리 시스템으로서 systemd를 채택되어 업그레이드 되고 있어서 그 목표는 꽤나 달성된 것처럼 보인다. 가장 중요하게도 Arch Linux 역시 systemd를 init system으로 선택해서 탑재되어 있다. 그리고 이 핵심 daemon system을 통해서 무선 네트워크도 설정/관리할 수 있으니, why not?

여담. 그런데 사실 systemd 프로젝트에 대한 평가는 많이 갈리고 있다. "하나의 프로그램은 하나의 일만 하고, 그 일을 잘 하자"는 기본 UNIX의 철학에 맞지 않게 복잡한 구성을 가지고 있다든지, Windows를 따라간다는 등의 의견 등을 찾아 볼 수 있다. 하지만 이렇든 저렇든 뭐가 어쨋든 이미 systemd는 대부분의 GNU/Linux 배포판에서 쓰이는 데몬 시스템인 것은 분명한 사실이고, UEFI motherboard 위에서 systemd-boot를 통해 부팅도 책임질 수 있을 정도로 init system으로서의 광범위한 기능을 수행하고 있기도 하다. Arch 핵심 개발자가 systemd를 선택한 이유를 들어보면 systemd의 가치를 또한 느낄 수 있다.

여담2. 확실히 8년 된 노트북이라 그런지 UEFI 지원은 되지 않아 아쉽게도 나는 MBR 파티션에 GRUB으로 부팅하게 설치했다. 나중에 Arch Linux 설치 과정을 정리할 수 있는 시간이 있기를...



앞서 설치해야 할 것들

Arch 터미널에서 유선으로 인터넷에 접속할 수 있다고 가정하고 시작하려고 한다. 구매한 지 8년 된 Dell Inspiron N5010에 Arch Linux를 설치하면서 유/무선 네트워크와 사운드, 터치패드 등의 기본적인 드라이버들이 기본으로 잡히는 것을 보고 오픈소스의 위엄을 살짝 느꼈었다 (아니면 Dell 기계가 Linux에 친숙하기 잘 만든 걸지도?). 이 글은 보시는 분들도 부디 랜선 꽂으면 인터넷 연결이 잘 되시길 바란다 (혹시 ipv6 라우터 어쩌구 저쩌구 불평한다면 dhcpcd 대신 dhclient도 실행해보세요).

iwwpa_supplicant를 설치하자.

$ sudo pacman -S iw wpa_supplicant



일시적 연결 for testing

Arch Wiki에 너무나 설명이 잘 되어있는 부분이므로, 필요한 링크만 남긴다.

https://wiki.archlinux.org/index.php/Wireless_network_configuration

https://wiki.archlinux.org/index.php/WPA_supplicant


wpa_cli가 제공하는 interactive console을 통해서 연결을 확인해 볼 수도 있고, wpa_supplicant -B -i interface -c /etc/wpa_supplicant/example.conf 이런 명령어를 통해서도 할 수 있다 (아마도 마무리는 dhcpcd).


systemd-networkd를 통한 자동 setup

위에서 Arch Wiki의 도움을 받아가며 WiFi 연결이 성공적으로 된 것을 확인했다면, 이제 wireless daemon을 만들 차례다. 우선 파일을 하나 작성하자.

# /etc/systemd/network/25-wireless.network
[Match]
Name=wlp2s0

[Network]
DHCP=ipv4


wlp2s0라고 썼는데, wireless network interface의 이름을 의미하므로 글자 그대로 쓰지 말고 iw dev 명령어를 통해 interface 이름을 꼭 확인해서 입력하시길 바란다. 이 파일을 통해 systemd-networkd daemon을 돌릴 수 있다.

$ sudo systemctl enable --now systemd-networkd

이제 systemd-networkd는 자동적으로 wpa_supplicant@wlp2s0.service 파일을 찾아서 또 다른 daemon을 돌린다. 그리고 이 service는 설정 파일 wpa_supplicant-wlp2s0.conf의 정보와 함께 WiFi에 연결하게 된다.

그럼 이제 해야 할 일은 wpa_supplicant-wlp2s0.conf를 작성하고

# /etc/wpa_supplicant/wpa_supplicant-wlp2s0.conf
ctrl_interface=/run/wpa_supplicant
update_config=1

network={
        ssid="mysweethome"
        psk="mypassword"
}

wpa_supplicant@wlp2s0.service를 실행시키면 된다.

$ sudo systemctl enable --now wpa_supplicant@wlp2s0


reboot 후 확인해보자.


사실 이 내용도 Arch Wiki에 있다, RTFD!



참고 자료


systemd
Wiki https://en.wikipedia.org/wiki/Systemd
Arch Wiki https://wiki.archlinux.org/index.php/systemd
Why it is bad? https://systemd-free.org/why.php
Why Arch embraced systemd? https://www.reddit.com/r/archlinux/comments/4lzxs3

Arch Wiki
Network configuration https://wiki.archlinux.org/index.php/Network_configuration
Wireless network configuration https://wiki.archlinux.org/index.php/Wireless_network_configuration
WPA supplicant https://wiki.archlinux.org/index.php/WPA_supplicant
systemd-networkd https://wiki.archlinux.org/index.php/systemd-networkd

'GNU-Linux' 카테고리의 다른 글

Vim 8의 native package support  (0) 2018.01.21
Arch Linux 한글 환경 설정  (0) 2018.01.17
Arch Linux에서 systemd-networkd로 WiFi 자동 연결 세팅  (3) 2018.01.08
UNIX as IDE  (0) 2017.11.09
UNIX as IDE: 7. Revisions  (0) 2017.11.09
UNIX as IDE: 6. Debugging  (0) 2017.11.08

  • BlogIcon schbal 2019.02.16 19:37 신고

    안녕하세요, ip link set [interface] up을 통해 무선랜 인터페이스를 설정해도 down에서 고정되어 켜지지않습니다.
    유선랜 인터페이스는 키고끄는게 잘되는데 무선랜은 말썽이네요. 이유를 알수있을까요?

    BlogIcon 동건 2019.02.27 23:27 신고

    답이 늦어 무척 죄송합니다 ㅠㅠ. 혹시 슈퍼유저 권한인 상태에서도 똑같이 안되는지요?

  • BlogIcon schbal 2019.03.06 18:38 신고

    네. 일반 사용자 권한으로 실행하면 권한문제가 발생합니다.
    루트권한으로 진행시 아무런 에러는 뜨지않지만 반영역시 되지않습니다.
    유선랜을 끄고해봐도 같네요.

    보드는 asrock ab350 itx를 사용합니다.
    보드에 내장되있던 무선랜카드를 사용하는데 불량인건지.. ㅠㅠ
    방법에 문제가 있다기보다 제가 사용하는 제품에 문제가 있는것같습니다.

    ac9260 사서 달아보고 댓글 남기겠습니다.
    답변 감사합니다

    답글에 답글다는법을 모르겠어서 그냥 댓글로 적어봅니다.