여러분은 가만히 계세요 제가 모두 고장낼게요

IT 지식, PC 모바일 문제 해결 그리고 종종 애니 게임 일상생활 근황을 종종 올리고 있어요!

냐.한국 자세히보기

카테고리 없음

라즈베리파이 Arch Linux에서 RTL8x용 커널모듈 빌드하기

Kamilake 2022. 11. 16. 08:54
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

RTL8X는 아이피타임 usb 랜카드와 같은 우리나라 흔한 랜카드에 들어가는 컨트롤러인데 많은 배포판에 기본 드라이버가 없어서 직접 빌드해줘야 합니다.

저는 PiKVM에서 와이파이 속도를 빠르게 하려고 빌드중이네요.

원하는 작업 폴더를 만들어주세요

mkdir works
cd works

Git에서 조금은 오래된 커널 모듈 소스를 받아오고 해당 폴더로 이동합니다.

git clone https://github.com/cilynx/rtl88x2BU_WiFi_linux_v5.3.1_27678.20180430_COEX20180427-5959.git
cd rtl88x2BU_WiFi_linux_v5.3.1_27678.20180430_COEX20180427-5959/

바로 빌드하려 하면 잘못 저장된 아키텍처 호환성으로 인해 역 크로스 컴파일을 시도하게 됩니다.

아래 명령으로 Makefile을 수정하세요

sed -i 's/I386_PC = y/I386_PC = n/' Makefile
sed -i 's/ARM_RPI = n/ARM_RPI = y/' Makefile

DKMS 빌드하면서 계속 사용하게 될 버전을 변수로 저장해둘게요

VER=$(sed -n 's/\PACKAGE_VERSION="\(.*\)"/\1/p' dkms.conf)

그대로 빌드하면 위처럼 모종의 이유로 빌드에 실패합니다.

로그를 읽어서 그 이유를 한번 살펴볼게요

헤더 파일 "net/ipx.h"가 없다는 모양입니다. 

헤더를 추가하기 위해 라이브러리를 불러올 수도 있지만, 저는 종속성을 제거하는 쪽으로 가겠습니다.

비슷한 스레드에서 헤더 파일 종속성을 없앤 코드를 배포 중입니다.

https://github.com/aircrack-ng/rtl8188eus/issues/156

 

Driver fails to compile · Issue #156 · aircrack-ng/rtl8188eus

I tried to install the driver and on running make && sudo make install I was greeted with this error fatal error: net/ipx.h: No such file or directory 20 | #include <net/ipx.h> Please...

github.com

rtw_br_ext.c
0.05MB

그대로 붙여넣어 줍니다.  글이 사라졌을 때를 대비해 첨부해둔 파일을 사용하셔도 됩니다.

 nano /usr/src/rtl88x2bu-5.3.1/core/rtw_br_ext.c

저장하고 나와주세요.

그다음은 방금 변경한 내용을 빌드에 사용하기 위해 밖으로 가져오면 됩니다.

sudo rsync -rvhP ./ /usr/src/rtl88x2bu-${VER}

마지막으로, 다시 빌드하고 설치하면 끝입니다.

sudo dkms add -m rtl88x2bu -v ${VER}
sudo dkms build -m rtl88x2bu -v ${VER} # 3~5분 소요
sudo dkms install -m rtl88x2bu -v ${VER}

저희는 루트 CA 인증서가 없기 때문에 모듈을 올바르게 서명할 수 없습니다. 혹시 Secureboot를 사용 중이라면 부팅 도중에 모듈이 온데간데없이 사라질 수도 있기 때문에 보안 부팅을 꺼주세요.

일반적인 PC는 BIOS 설정에서 끌 수 있고 라즈베리파이라면 다음 명령으로 끌 수 있습니다.

SecureBoot disabled

자, 이제 모든 과정이 끝났습니다.

reboot

재부팅하세요.

네트워크 설정

드디어 lsusb에서 장치 이름이 표시되기 시작합니다.

ifconfig 명령으로 네트워크 상태를 확인할 수 있지만, downlink된 장치도 같이 표시하기 위해 다음 명령을 사용합니다.

ifconfig -a

wlan0은 제가 사용하는 파이 4에 빌트인 된 내장랜입니다. 그리고 wlan1이 아니라 wlp1s0u1u3이라는 독특한 이름으로 표시되네요. 이 이름을 기억해두세요.

먼저, 새로 연결한 외장랜을 켜주세요 (당연히 새로 연결한 wlp1s0u1u3를 켜주세요)

sudo ifconfig wlp1s0u1u3 up

유선이시라면 기존 랜을 바로 꺼버려도 괜찮지만, 저는 wlan0으로 ssh에 들어갔기에 새 연결이 활성화되기 전까지 켜두겠습니다.

네트워크를 설정하기 위해 자주 쓰였던 NETCTL 명령은 2021년 뒤부터 시한부 선고를 받았기에 wpa_supplicant 프로필을 만들도록 하겠습니다.

먼저 /etc/systemd/network/로 이동해서 기존 프로필 상태를 한번 봐주세요

제가 해야할 일은 wlan0.network을 제거하고  wlp1s0u1u3.network를 만드는 겁니다. 여러분은 자신의 WLAN 이름으로 해주세요.

cd /etc/systemd/network
touch wlp1s0u1u3.network
nano wlp1s0u1u3.network

원하는 편집기로 적당한 내용을 작성해주세요

# /etc/systemd/network/wlp1s0u1u3.network
[Match]
Name=wlp1s0u1u3

[Network]
DHCP=yes
DNSSEC=no

[DHCP]
ClientIdentifier=mac

작성하셨다면 SSID와 암호를 지정할 시간입니다.

SSID/암호 지정

wpa_passphrase iptime '12345678' > /etc/wpa_supplicant/wpa_supplicant-wlp1s0u1u3.conf

이젠 설명이 필요없겠죠? 새 네트워크 이름으로 암호 프로필을 만들어 저장해주세요

또는, 같은 네트워크를 쓰기 위해 프로필을 그냥 복사할 수도 있습니다.

설정이 완료되었으면 프로필을 활성화하면 됩니다.

systemctl enable [email protected]

그러면 위처럼 두개의 랜이 모두 잘 작동하는 모습을 보실 수 있습니다

모든 랜이 무사하다면 기존 랜을 꺼주세요(당연히 여기서 SSH가 끊깁니다. 새 IP로 접속하셔야 합니다)

자신의 연결을 끊어버렸기 때문에 응답은 돌아오지 않습니다. 하지만 걱정 마세요! 위에서 적어뒀던 IP로 다시 들어가면 훨씬 빠른 네트워크를 이어서 사용할 수 있습니다

새로운 네트워크에서 기존 연결을 완전히 삭제했습니다.

이걸로 끝입니다. 새 네트워크에서 빠른 속도를 즐기세요.

 

이 글이 도움이 되었으면 좋겠습니다.