Create TOC
2025년 12월 14일
2025년 7월 11일
2025년 7월 4일
2024년 12월 14일
2023년 4월 18일
2022년 4월 18일
Debian/HDMI 로 TV 연결했지만 화면이 나오지 않을 때
HDMI 로 TV를 연결했는데 TV가 연결되지 않고 /var/log/kern.log에서 아래와 같은 오류로그가 보인다.
[drm:dc_link_detect_helper [amdgpu]] *ERROR* No EDID read.
TV 제조사에 따라 다르지만 EDID를 제대로 알려주지 않은 경우 문제가 발생한다. 아래와 같은 순서로 문제를 해결할 수 있다.
- https://github.com/akatrevorjay/edid-generator/를 이용해서 EDID binary를 만든다(TV 해상도에 맞는 bin 파일이 있으면 파일을 받는다(이후 1920x1080.bin).
- bin 파일을 /usr/lib/firmware/edid/에 복사해 넣는다.
- initramfs를 다시 만든다.
$ sudo update-initramfs -k all -c - xrandr명령으로 포트 이름을 확인한다.
$ xrandr Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 16384 x 16384 eDP connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 344mm x 194mm 1920x1080 60.04*+ 1680x1050 60.04 1280x1024 60.04 1440x900 60.04 1280x800 60.04 1280x720 60.04 1024x768 60.04 800x600 60.04 640x480 60.04 HDMI-A-0 disconnected (normal left inverted right x axis y axis) - /etc/grub/default 파일에서 GRUB_CMDLINE_LINUX_DEFAULT에 아래 값을 추가한다.
만일 부팅할때 부터 HDMI에 출력하고 싶다면 아래 값을 추가한다.drm.edid_firmware=HDMI-A-1:edid/1920x1080.binvideo=HDMI-A-1:e - update-grub를 실행한다.
$ sudo update-grub
- 재부팅한다.
2021년 10월 25일
Wireguard client 설정
wireguard 서버는 docker 로 설정했다면 client 설정은 간단하다. 아래는 docker-compose.yml 파일이다.
version: "2.1"
services:
app:
image: ghcr.io/linuxserver/wireguard
cap_add:
- NET_ADMIN
- SYS_MODULE
environment:
- PUID=1001
- PGID=1001
- TZ=Asia/Seoul
- SERVERURL=test.com #optional
- SERVERPORT=51820 #optional
- PEERS=5 #optional
- PEERDNS=1.1.1.1
- INTERNAL_SUBNET=10.13.13.0 #optional
- ALLOWEDIPS=0.0.0.0/0 #optional
volumes:
- ./config:/config
- /lib/modules:/lib/modules
ports:
- 51820:51820/udp
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
restart: unless-stopped
wireguard 앱
iOS나 Android의 wireguard 앱을 사용할 경우 아래 명령으로 QR 코드를 출력해서 사용하면 된다.
$ docker-compose exec app /app/show-peer 숫자
linux
w연결을 위해 config/peer숫자/peer1.conf(1은 사용하고자하는 peer 번호를 쓰면 된다) 내용을 /etc/wireguard/mywg.conf(파일 이름은 원하는대로)로 복사해오면 된다.
$ cat config/peer1/peer1.conf
이걸 그대로 /etc/wireguard/mywg.conf 로 복사해서 사용하면 된다. 복사 후 아래 명령으로 연결할 수 있다.
$ sudo wg-quick up mywg
img 파일 mount
raspberry pi OS의 /boot폴더가 손상될 경우 부팅이 안된다. 이때 새로 설치하지 않고 raspberry pi OS에서 /boot만 추출해서 복구해본다.
mount를 위해서 offset 값을 구해야 한다. 우선 fdisk 명령으로 시작 sector (Start)와 크기(Secror size)를 구한다.
$ sudo fdisk -l 2021-05-07-raspios-buster-armhf-lite.img
Disk 2021-05-07-raspios-buster-armhf-lite.img: 1.75 GiB, 1874853888 bytes, 3661824 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x9730496b
Device Boot Start End Sectors Size Id Type
2021-05-07-raspios-buster-armhf-lite.img1 8192 532479 524288 256M c W95 FAT32 (LBA)
2021-05-07-raspios-buster-armhf-lite.img2 532480 3661823 3129344 1.5G 83 Linux
8192에 512를 곱한 수를 offset으로 사용한다.
$ sudo mount -o loop,offset=$((8192*512)) 2021-05-07-raspios-buster-armhf-lite.img /mmt/test
2021년 5월 31일
Debian/key scancode 확인하기
udev의 hwdb를 이용해 키를 변경하려면 key scancode를 확인해야 한다. evtest를 실행하고 입력 장치를 고른 후 키를 누르면 key scancode를 확인할 수 있다.
$ evtest
No device specified, trying to scan all of /dev/input/event*
Not running as root, no devices may be available.
Available devices:
/dev/input/event0: AT Translated Set 2 keyboard
...
/dev/input/event17: Apple Wireless Trackpad
/dev/input/event18: Logitech K760 Keyboard
..
Select the device event number [0-20]: 18
...
Event: time 1622111951.465432, -------------- SYN_REPORT ------------
Event: time 1622111957.763084, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70039
Event: time 1622111957.763084, type 1 (EV_KEY), code 58 (KEY_CAPSLOCK), value 1
Event: time 1622111957.763084, -------------- SYN_REPORT ------------
Event: time 1622111957.967015, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70006
Event: time 1622111957.967015, type 1 (EV_KEY), code 46 (KEY_C), value 1
Event: time 1622111957.967015, -------------- SYN_REPORT ------------
value 뒤의 값이 key scancode다.
2021년 5월 27일
Debian/Logitech K760 설정
F1 ~ F12는 할당된 특수키 (화면 밝기 조절, 음량 조절 등)가 기본 값이고 펑션키(F1~F12)는 FN 키와 같이 눌러야 동작한다. 이것을 펑션키를 기본으로 하도록 설정한다.
k760_conf 설치
github에서 소스를 받아서 k760_conf을 설치한다.
$ git clone https://github.com/neoesque/k760-linux-fn-conf
$ cd k760-linux-fn-conf
$ ./build.sh
$ chmod +x k760_conf
$ sudo cp k760_conf /usr/local/bin/
수동으로 설정 변경
아래와 같은 스크립트를 만들어 root 권한으로 실행하면 펑션키가 기본으로 동작하게 된다. 단, 장치를 다시 연결하면 설정이 초기화 되기 때문에 매번 다시 실행해줘야 한다.
#!/bin/bash
found=0
hidraw_name=
for x in /sys/class/hidraw/hidraw*; do
for y in $x/device/input/input*; do
found=$(cat $y/name | grep "Logitech K760" | wc --lines)
if [ $found -gt 0 ]; then
break;
fi;
done;
if [ $found -gt 0 ]; then
hidraw_name=$(echo $x | sed -e 's/\/sys\/class\/hidraw\//\/dev\//')
break;
fi;
done;
if [ "$hidraw_name" != "" ]; then
echo "/usr/local/bin/k760_conf -d $hidraw_name -f off"
/usr/local/bin/k760_conf -d $hidraw_name -f off
fi;
장치 연결시 자동으로 설정
udev rule을 이용해서 K760이 연결되면 자동으로 k760_conf를 실행하게 만든다.
/etc/bluetooth/input.conf에서 UserspaceHID 가 true/false 에 따라서 설정 방법이 조금 달라진다UserspaceHID==true
k760_udev_userland.sh
아래와 같은 내용으로 /usr/local/bin/k760_udev_userland.sh 파일을 만든다.
#!/bin/bash
LOGFILE=/tmp/logfile_k760sh.log
echo "RUN: at `date` by `whoami` act=$ACTION param=$1 DEVPATH=$DEVPATH DEVNAME=$DEVNAME" >> ${LOGFILE}
if [ "$ACTION" == "add" ];
then
for inp in /sys/class/hidraw/hidraw$1/device/input/*; do
model_name=`cat $inp/name`
if [ "$model_name" == "Logitech K760 Keyboard" ]; then
echo "CONF: /usr/local/bin/k760_conf -d /dev/hidraw$1 -f off" >> ${LOGFILE}
/usr/local/bin/k760_conf -d /dev/hidraw$1 -f off
break
fi
done
fi
실행 속성을 부여한다.
$ sudo chmod +x /usr/local/bin/k760_udev_userland.sh
udev rule 작성
아래와 같은 내용의 /etc/udev/rules.d/99-k760.rules 파일을 만든다.
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", RUN+="/usr/local/bin/k760_udev_userland.sh %n"
udev rule을 다시 읽는다.
$ sudo udevadm control --reload-rules
K760을 다시 연결한다.
UserspaceHID=false
k760_udev.sh
아래와 같은 내용으로 /usr/local/bin/k760_udev.sh 파일을 만든다.
#!/bin/bash
LOGFILE=/tmp/logfile_k760sh.log
echo "RUN: at `date` by `whoami` act=$ACTION param=$1 DEVPATH=$DEVPATH DEVNAME=$DEVNAME" >> ${LOGFILE}
if [ "$ACTION" == "add" ];
then
echo "CONF: /usr/local/bin/k760_conf -d $DEVNAME -f off" >> ${LOGFILE}
/usr/local/bin/k760_conf -d $DEVNAME -f off
fi
실행 속성을 부여한다.
$ sudo chmod +x /usr/local/bin/k760_udev.sh
udev rule 작성
아래와 같은 내용의 /etc/udev/rules.d/99-k760.rules 파일을 만든다.
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idProduct}=="0029", ATTRS{idVendor}=="8087", RUN+="/usr/local/bin/k760_udev.sh %p"
udev rule을 다시 읽는다.
$ sudo udevadm control --reload-rules
K760을 다시 연결한다.
Fn+F4, Fn+F6, Fn+F7 키 보정
위 작업을 끝낸 후 Fn+F4, Fn+F6, Fn+F7 키를 눌러보면 제대로 동작하지 않는다(Fn+F5는 XF86Home 키로 동작한다). Fn+F4, Fn+F6, Fn+F7의 scancode를 적당한 keycode로 바꿔줘야 한다.
그리고 [alt][command][space][command][alt] 배열을 PC계열 키보드처럼 [win][alt][space][alt][menu] 로 바꿔준다.
udev hwdbhttps://wiki.archlinux.org/title/Map_scancodes_to_keycodes를 이용하기 위해 아래와 같은 내용으로 /etc/udev/hwdb.d/99-k760.hwdb 파일을 만든다.
# Logitech K760 map:
# Fn + F4 -> scale
# Fn + F6 -> brightnessdown
# Fn + F7 -> birghtnessup
# LWin -> LAlt
# LAlt -> LWin
# RWin -> RAlt
# RAlt -> Menu
evdev:input:b0005v046DpB316*
KEYBOARD_KEY_700e0=scale
KEYBOARD_KEY_70047=brightnessdown
KEYBOARD_KEY_70048=brightnessup
KEYBOARD_KEY_700e3=leftalt
KEYBOARD_KEY_700e2=leftmeta
KEYBOARD_KEY_700e7=rightalt
KEYBOARD_KEY_700e6=compose
파일이 만들어졌으면 hwdb를 갱신한다.
$ sudo systemd-hwdb update
$ sudo udevadm trigger
적용 후 잠시 기다리면 Fn-F4, Fn-F7, Fn-F8이 원하는 키로 동작한다.
2021년 5월 19일
Debian/Cloudflare Warp VPN 설정
Debian Linux에서 Cloudflare Warp VPN을 사용하는 방법을 기술한다.
설치
아래 패키지를 설치한다.
$ sudo apt install resolvconf wireguard-tools
https://github.com/ViRb3/wgcf에서 wgcf 을 받는다.
VPN 설정
아래 명령을 입력해서 wgcf-profile.conf 파일을 만든다.
$ wgcf register
$ wgcf generate
만들어진 wgcf-profile.conf 파일을 /etc/wireguard에 복사한다.
$ sudo cp wgcf-profile.conf /etc/wireguard
사용 방법
VPN 사용
$ sudo wg-quick up wgcf-profile
curl을 이용해서 연결이 잘 되었는지 확인할 수 있다.
$ curl --silent https://www.cloudflare.com/cdn-cgi/trace | grep warp=
warp=on
VPN 중지
$ sudo wg-quick down wgcf-profile
2021년 4월 10일
Debian/Apple Keyboard, Apple Wireless Touchpad 설정
아래 몇가지 설정을 적용하면 Apple Bluetooth Keyboard와 Apple Wireless Touchpad를 좀 더 편하게 사용할 수 있다.
F1 ~ F12 설정
F1 ~ F12는 할당된 특수키 (화면 밝기 조절, 음량 조절 등)가 기본 값이고 펑션키(F1~F12)는 FN 키와 같이 눌러야 동작한다. 이것을 펑션키를 기본으로 하도록 변경한다.
$ echo 2 | sudo tee /sys/module/hid_apple/parameters/fnmode
부팅할 때 기본값을 변경하려면 아래와 같은 내용으로 /etc/modprobe.d/hid_apple.conf파일을 만든다.
options hid_apple fnmode=2
탭을 클릭으로
탭을 클릭으로 설정하고 스크롤 방향을 MacOS 처럼 설정하기 위해, 아래 내용으로 /etc/X11/xorg.conf.d/apple_wireless_trackpad.conf 파일을 만들고 X를 다시 시작한다(간단하게는 재부팅).
Section "InputClass"
Identifier "Apple Wireless Touchpad"
MatchProduct "Apple Wireless Touchpad"
MatchDriver "libinput"
Option "Tapping" "on"
Option "Natural Scrolling" "on"
EndSection
연결이 불규칙하게 끊어질때
/etc/bluetooth/input.conf 에서 serspaceHID=true 설정 후 재부팅한 뒤 문제가 없는지 확인해본다.
만약 문제가 발생하면 아래와 같이 설정 변경 후 문제가 없는지 확인해본다.
$ echo 1 | sudo tee /sys/module/bluetooth/parameters/disable_esco
$ sudo systemctl restart bluetooth.service
문제가 없다면 다음 부팅때도 적용할 수 있게 설정한다.
$ echo "options bluetooth disable_esco=1" | sudo tee /etc/modprobe.d/bluetooth.conf
2021년 3월 20일
Debian/한성 TFX5670H에 각종 도구 설치
한성 TFX5670H는 칭화통팡의 Tongfang PF5NU1G 제품을 사용한다. 동일한 모델을 KDE Slimbook과 TUXEDO Pulse 15 제품에서도 사용하는데, TUXEDO Computer github에서 Linux 에서 사용할 수 있는 드라이버와 툴을 제공한다.
Touchpad
Touchpad의 상태 표시 LED를 사용할 수 있게 한다.
$ git clone https://github.com/tuxedocomputers/tuxedo-touchpad-switch
$ cd tuxedo-touchpad-switch/
$ sudo apt install libudev-dev libglib2.0-dev git-buildpackage debhelper
$ rm -r build
$ gbp buildpackage -uc -us
$ cd ..
$ sudo dpkg -i tuxedo-touchpad-switch_1.0.1_amd64.deb
설치 후 재부팅한다.
TUXEDO Control Center
module 설치
control center에서 사용하는 드라이버는 tuxedo-keyboard 에 포함되어 있다.
$ git clone https://github.com/tuxedocomputers/tuxedo-keyboard.git
$ cd https://github.com/tuxedocomputers/tuxedo-keyboard.git
$ make
$ make package-deb
$ sudo dpkg -i tuexdo-keyboard-3.0.3.deb
$ cd dist/packages/
SecureBoot를 쓴다면 sign도 한다(key는 /etc/refind.d/keys/refind_local.* 로 저장했고 MOK에 등록했다고 가정한다).
$ for x in clevo_acpi.ko clevo_wmi.ko tuxedo_cc_wmi.ko tuxedo_io.ko tuxedo_keyboard.ko; do sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 /etc/refind.d/keys/refind_local.key /etc/refind.d/keys/refind_local.der /lib/modules/$(uname -r)/updates/dkms/$x; done;
TUXEDO Control Center 설치
빌드 환경은 docker를 이용해서 구성했다. node가 설치되어 있다면 설치되어 있는 node를 사용해도 된다.
$ docker pull node:current-buster
$ git clone https://github.com/tuxedocomputers/tuxedo-control-center.git
$ cd https://github.com/tuxedocomputers/tuxedo-control-center.git
$ docker run --rm --user "$(id -u)":"$(id -g)" -v "$PWD":/app -w /app node:current-buster npm install
$ docker run --rm --user "$(id -u)":"$(id -g)" -v "$PWD":/app -w /app node:current-buster npm run pack-prod deb
$ sudo apt install libappindicator3-1
$ cd dist/packages/
$ sudo dpkg -i tuxedo-control-center_1.0.11.deb
2021년 2월 9일
Debian/ufw 설정
ufw 기본 설정은 모든 나가기는 허용하고 모든 들어오기는 차단한다. 사용상 편의를 위해서 local network(192.168.0.0/24) 에서만 일부 들어오기 허용규칙을 추가 한다.
파일 공유
가상 머신(libvirt)에서 파일 공유 접근 허용 규칙을 추가한다.
$ sudo ufw allow in on virbr0 to any app CIFS comment "CIFS on virbr0"
local network 허용 규칙을 추가한다.
$ sudo ufw allow from 192.168.0.0/24 to any app CIFS
RDP
포트를 직접 지정해도 되지만, app profile을 만들어 두는게 편리하다. root 권한으로 아래 내용과 같은 /etc/ufw/applications.d/RDP 파일을 만든다.
[RDP]
title=RDP
description=Remote Desktop Protocol
ports=3389
ufw 규칙을 다시 읽는다.
$ sudo ufw reload
local network 허용 규칙을 추가한다.
$ sudo ufw allow from 192.168.0.0/24 to any app RDP
app profile을 만들지 않고 규칙을 추가하려면 아래와 같이 한다.
$ sudo ufw allow from 192.168.0.0/24 to any port 3389 comment RDP
KDEConnect
포트를 직접 지정해도 되지만, app profile을 만들어 두는게 편리하다. root 권한으로 아래 내용과 같은 /etc/ufw/applications.d/kdeconnect 파일을 만든다.
[KDEConnect]
title=KDE Connect
description=Remote smartphone control
ports=1714:1764/tcp|1714:1764/udp
ufw 규칙을 다시 읽는다.
$ sudo ufw reload
local network 허용 규칙을 추가한다.
$ sudo ufw allow from 192.168.0.0/24 to any app KDEConnect
app profile을 만들지 않고 규칙을 추가하려면 아래와 같이 한다.
$ sudo ufw allow from 192.168.0.0/24 to any proto tcp port 1714:1764 comment "KDE Connect"
$ sudo ufw allow from 192.168.0.0/24 to any proto udp port 1714:1764 comment "KDE Connect"
2021년 1월 27일
Debian/KDE에 xrdp 환경 설정
KDE에 xrdp 환경을 설정한다.
xrdp
설치
$ sudo apt install xrdp
설정
xrdp
/etc/xrdp/xrdp.ini에 아래 내용을 추가한다.
[x11vnc]
name=x11vnc
lib=libvnc.so
ip=127.0.0.1
port=5900
username=na
pamusername=ask
pampassword=ask
pamsessionmng=127.0.0.1
설정이 끝나면 xrdp 서버를 재시작한다.
$ sudo systemctl restart xrdp
방화벽
192.168.0.x 대역에서만 접속할 수 있게 방화벽을 설정한다.
$ sudo ufw allow from 192.168.0.0/24 to any port 3389 comment RDP
x11vnc
xrdp에서 사용할 x11vnc 서버를 설정한다. KDE의 krfb를 사용하면 한글 입력시 자소가 분리된다.
설치
$ sudo apt install x11vnc
systemd 설정
아래 명령으로 x11vnc.service 파일을 편집한다.
$ sudo systemctl edit --force --full x11vnc.service
파일 내용은 아래와 같다. xrdp에서만 접속하기 때문에 -localhost옵션을 넣었고 비밀번호를 사용하지 않기 위해 -nopw옵션을 사용했다.
[Unit]
Description=x11vnc server for SDDM
Requires=display-manager.service
After=display-manger.service
[Service]
ExecStartPre=/bin/bash -c 'while ! find /var/run/sddm -type f; do sleep 2; done'
ExecStart=/bin/bash -c "/usr/bin/x11vnc -display :0 -auth $(/usr/bin/find /var/run/sddm/ -type f) -nopw -shared -xkb -norepeat -noxrecord -noxdamage -localhost -no6 -loop -forever"
[Install]
WantedBy=graphical.target
테스트
적당한 RDP client를 사용해 접속이 잘되는지 확인한다.
자동 실행 설정
재부팅 후 자동 실행하도록 설정한다.
$ sudo systemctl enable x11vnc.service
입력기 설정
RDP Client 에 따라서 오른쪽 alt 키나 한/영 키가 동작 안할 수 있기 때문에, 사용하는 입력기 설정에서 한/영 전환 키에 shift+space를 추가해둔다.
2021년 1월 13일
Debian/UltraNav Travel 터치 패드 설정
탭 클릭과 스크롤 방향을 자연스럽게 바꾸도록 설정한다.
xinput을 사용해서 UltrNav의 터치 패드 장치를 찾는다.
$ xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ UNIW0001:00 093A:0255 Mouse id=12 [slave pointer (2)]
⎜ ↳ UNIW0001:00 093A:0255 Touchpad id=13 [slave pointer (2)]
⎜ ↳ Synaptics Inc. Composite TouchPad / TrackPoint (Stick) id=15 [slave pointer (2)]
⎜ ↳ 2.4G Mouse id=16 [slave pointer (2)]
⎜ ↳ Synaptics Inc. Composite TouchPad / TrackPoint id=20 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Power Button id=8 [slave keyboard (3)]
↳ Lid Switch id=9 [slave keyboard (3)]
↳ Sleep Button id=10 [slave keyboard (3)]
↳ HD Webcam: HD Webcam id=11 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=14 [slave keyboard (3)]
↳ Lite-On Tech IBM USB Travel Keyboard with UltraNav Consumer Control id=17 [slave keyboard (3)]
↳ Lite-On Tech IBM USB Travel Keyboard with UltraNav id=18 [slave keyboard (3)]
↳ Lite-On Tech IBM USB Travel Keyboard with UltraNav System Control id=19 [slave keyboard (3)]
찾은 장치에서 Tapping, Natural Scrolling 속성이 있는지 찾아본다.
$ xinput list-props "Synaptics Inc. Composite TouchPad / TrackPoint" | grep -i "Tapping Enabled"
libinput Tapping Enabled (304): 0
libinput Tapping Enabled Default (305): 0
$ xinput list-props "Synaptics Inc. Composite TouchPad / TrackPoint" | grep -i "Natural Scrolling Enabled"
libinput Natural Scrolling Enabled (286): 0
libinput Natural Scrolling Enabled Default (287): 0
xinput으로 속성을 바꾸고 원하는대로 동작하는지 확인한다.
$ xinput set-prop "Synaptics Inc. Composite TouchPad / TrackPoint" "libinput Tapping Enabled" 1
$ xinput set-prop "Synaptics Inc. Composite TouchPad / TrackPoint" "libinput Natural Scrolling Enabled" 1
다음에 X를 다시시작해도 적용하기 위해서 아래 내용으로 /etc/X11/xorg.conf.d/ultranav.conf 파일을 만든다.
Section "InputClass"
Identifier "Synaptics Inc. Composite TouchPad / TrackPoint"
MatchProduct "Synaptics Inc. Composite TouchPad / TrackPoint"
MatchDriver "libinput"
Option "Tapping" "on"
Option "Natural Scrolling" "on"
EndSection
2020년 11월 29일
Debian/anbox
Debian Sid에 anbox를 설치하고 playstore 설치하는 방법을 기술한다.
anbox설치
$ sudo apt install anbox
android 이미지 설치
anbox 패키지에는 android 이미지를 가지고 있지 않다. 아래와 같이 파일을 받아서 /var/lib/anbox에 넣어줘야 한다.
$ wget https://build.anbox.io/android-images/2018/07/19/android_amd64.img
$ sudo mv android_amd64.img /var/lib/anbox/android.img
PlayStore 설치
install-playstore.sh스크립트를 받아서 설치한다.
$ sudo apt install lzip squashfs-tools
$ wget https://raw.githubusercontent.com/geeks-r-us/anbox-playstore-installer/master/install-playstore.sh
$ sudo mkdir /etc/systemd/system/anbox-container-manager.service.d/
$ sudo bash install-playstore.sh
$ sudo apt purge lzip squashfs-tools
설치가 끝나면 아래와 같이 실행하고
$ anbox launch --package=org.anbox.appmgr --component=org.anbox.appmgr.AppViewActivity
Settings를 실행하고 Apps > Google Play Services > Permissions 에서 모든 권한을 주면 된다.
실행 예
설치해보면 실행 안되는 앱이 꽤 많다.
2020년 11월 18일
Debian/rclone + autofs
rclone mount을 autofs에 적용하는 방법을 기술한다.
rclone 으로 myremote remote 설정을 추가했다고 가정한다.
설치
$ sudo apt install autofs fuse3
rclonefs
rclone mount helper 스크립트는 한글 locale 에서 제대로 동작하지 않는다. 아래와 같이 수정해서 /usr/local/bin/rclonefs로 저장한다.
#!/bin/bash
remote=$1
mountpoint=$2
shift 2
# Process -o parameters
while getopts :o: opts; do
case $opts in
o)
params=${OPTARG//,/ }
for param in $params; do
if [ "$param" == "rw" ]; then continue; fi
if [ "$param" == "ro" ]; then continue; fi
if [ "$param" == "dev" ]; then continue; fi
if [ "$param" == "suid" ]; then continue; fi
if [ "$param" == "exec" ]; then continue; fi
if [ "$param" == "auto" ]; then continue; fi
if [ "$param" == "nodev" ]; then continue; fi
if [ "$param" == "nosuid" ]; then continue; fi
if [ "$param" == "noexec" ]; then continue; fi
if [ "$param" == "noauto" ]; then continue; fi
if [[ $param == x-systemd.* ]]; then continue; fi
trans="$trans --$param"
done
;;
\?)
echo "Invalid option: -$OPTARG"
;;
esac
done
# exec rclone
trans="$trans $remote $mountpoint"
# NOTE: do not try "mount --daemon" here, it does not play well with systemd automount, use '&'!
# NOTE: mount is suid and ignores pre-set PATHs -> specify explicitely
PATH=$PATH rclone mount $trans /dev/null 2>/dev/null &
# WARNING: this will loop forever if remote is actually empty!
until [ "`LANG=C \ls -l $mountpoint`" != 'total 0' ]; do
sleep 1
done
저장 후 실행 권한을 준다.
$ sudo chmod +x /usr/local/bin/rclonefs
autofs 설정
cloud.autofs
아래 내용으로 /etc/auto.master.d/cloud.autofs파일을 만든다.
/cloud /etc/auto.master.d/auto.rclone
auto.rclone
아래 내용을 참고로 /etc/auto.master.d/auto.rclone 파일을 만든다.
myremotedrive -fstype=fuse.rclonefs,config=/home/$USER/.config/rclone/rclone.conf,allow-other,uid=$UID :myremote:
설정 적용
autofs를 다시 시작한다.
$ sudo systemctl restart autofs.service
테스트
아래 명령으로 myremote 내용이 잘보이는지 확인해본다.
$ ls /cloud/myremotedrive
Debian/ZSwap 설정
initramfs 설정
z3fold를 추가한다.
$ sudo -s
# echo z3fold >> /etc/initramfs-tools/modules
# update-initramfs -u
grub 설정
/etc/default/grub 파일을 편집한다.
$ sudo vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT에 zswap.enabled=1과 zswap.zpool=z3fold를 추가한다.
GRUB_CMDLINE_LINUX_DEFAULT="quiet zswap.enabled=1 zswap.zpool=z3fold"
grub 설정을 반영한다.
$ sudo update-grub


