Create TOC
2024년 12월 14일
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월 9일
KDE/qdbus로 단축키에 해당하는 기능 실행하기
KDE에서 fusuma를 이용해 trackpad 제스쳐를 설정할때 xdotool을 사용해 KDE 단축키를 누른 것과 같은 효과를 낼 수 있다. 다만 이때 가상머신등을 사용하는 경우 단축키를 가상머신에서 받아들이기 때문에 원하는 단축키 실행이 되지 않을 수 있다. 이때는 xdotool 대신 qdbus을 이용해 KDE 단축키에 해당하는 기능을 바로 실행하면 문제가 해결된다.
단축키를 가지는 component 목록 얻기
$ qdbus org.kde.kglobalaccel
모든 단축기 정보 얻기
$ qdbus --literal org.kde.kglobalaccel /component/plasmashell allShortcutInfos | bat -l json
실행
$ qdbus org.kde.kglobalaccel /component/plasmashell invokeShortcut activate\ widget\ 200
자주 쓰는 단축키
시작 메뉴
$ qdbus org.kde.kglobalaccel /component/plasmashell invokeShortcut activate\ widget\ 200
Expose All
$ qdbus org.kde.kglobalaccel /component/kwin invokeShortcut ExposeAll
Expose
$ qdbus org.kde.kglobalaccel /component/kwin invokeShortcut Expose
Latte Dock 첫번째 항목 활성
$ qdbus org.kde.kglobalaccel /component/lattedock invokeShortcut activate\ entry\ 1
2019년 6월 30일
mosh 설정
mosh는 ssh 를 개선한 원격 터미널이다. UDP 프로토콜 (60000 ~ 61000) 을 사용하며 입/출력 연결을 따로 하기 때문에 ctrl-c 같은 키에 대한 반응성이 좋다.
최초 연결은 ssh 를 사용하며 연결 후 mosh-server 를 실행시키는 구조이다(따라서 접속했을 때만 해당 계정 권한으로 mosh-server 가 실행된다).
설치
Debian Linux
$ sudo apt install mosh
ufw
ufw를 사용하면 방하벽 규칙에 mosh가 사용하는 포트를 추가해줘야 한다.$ sudo ufw allow mosh
포트를 전부 열기 부담되면 아래와 같이 적당히 열여주면 된다.
$ sudo ufw allow 60000:60010/udp
OS/X
$ brew install mosh
사용 방법
foo 계정으로 bar.com 에 접속하는 방법은 아래와 같다.
$ mosh foo@bar.com
ssh 설정을 변경하는 경우 아래와 같이 옵션을 주거나 미리 ~/.ssh/config 설정을 하면 된다.
$ mosh --ssh="ssh -p xxxx" foo@bar.com
호환성을 위한 추가 설정
vim 설정
mosh로 접속시 vim화면이 깨져보일 수 있다. 이때 vimrc 에 아래 설정을 추가한다.
set notermguicolors
2019년 6월 18일
Debian/IpTime NAS 2와 autofs
IpTime NAS2의 smb 공유를 autofs 를 이용해 자동으로 mount/unmount 한다.
패키지 설치
$ apt install autofs cifs-utils smbclient
autofs 설정
mount 경로 생성
$ sudo mkdir -p /mnt/cifs
cifs.autofs
아래와 같은 내용으로 /etc/auto.master.d/cifs.autofs파일을 생성한다.
/mnt/cifs /etc/auto.smb --timeout=300
auto.smb 수정
/etc/auto.smb파일을 수정해서 opts에 vers=2.0을 추가한다.
opts="-fstype=cifs,vers=2.0"
인증 파일 생성
접속할 서버 이름으로 인증 파일을 생성한다.
$ sudo mkdir -p /etc/creds
$ sudo touch /etc/creds/192.168.0.100
$ sudo chmod 600 /etc/creds/192.168.0.100
인증 파일의 내용은 아래와 같다.
username=사용자이름
password=비밀번호
autofs 재시작
설정 적용을 하기 위해 autofs.service를 다시 시작한다.
$ sudo systemctl restart autofs.service
테스트
설정이 완료되면 /mnt/cifs/192.168.0.100에 접근하면 공유 목록이 디렉토리로 표시되고, cd 명령으로 해당 공유에 접근할 수 있다. --timeout 설정에 의해 300초가 지나도록 /mnt/cifs를 사용하지 않으면 자동으로 unmount 한다.
마운트가 잘 되지 않는 경우 아래와 같이 디버그 모드로 테스트 해볼 수 있다.
$ sudo systemctl stop autofs.service
$ sudo automount -d -v -f
Debian/사용 중인 linux를 VirtualBox로 옮기기
사용 중인 Debian linux를 VirtualBox로 옮기는 방법을 기록한다.
VirtualBox로 옮길 Debian linux의 mount 구조는 아래와 같다.
| mount point | device |
|---|---|
| / | /dev/sda1 |
| /home | /dev/sdb1 |
| swap | /dev/sdb2 |
디스크를 VDI로 복사
sda
드라이브 통채로 복사하기 위해서, 용량을 확인하고 그 크기만큼 VDI로 만든다.
$ sudo -s
# fdisk -l /dev/sda | grep bytes | head -1
Disk /dev/sda: 119.2 GiB, 128035676160 bytes, 250069680 sectors
# dd if=/dev/sda | VBoxManage convertdd stdin debian.vdi 128035676160 --format=VDI
sdb
rsync를 이용해서 백업한다. 우선 적당한 크기로(100GB) 이미지를 만들고 ext4로 포맷한 후 rsync로 데이터를 복사한다.
$ dd if=/dev/zero of=home.img bs=1M count=102400
$ sudo -s
# /sbin/mkfs.ext4 home.img
# mkdir /mnt/tmp
# mount -o loop home.img /mnt/tmp/
# rsync -av /home/* /mnt/tmp
# umount /mnt/tmp/
이미지를 VDI로 변환한다.
$ VBoxManage convertdd home.img home.vdi --format=VDI
VirtualBox 설정
가상머신 생성
원하는 사양으로 가상머신을 만든다.
| 속성 | 값 |
|---|---|
| Name | Debian |
| cpu | 2 core |
| ram | 4GB |
| SATA0 | debian.vdi |
| SATA1 | home.vdi |
공유 폴더 설정
공유 폴더를 설정해두면 host <-> 가상 머신 사이에 파일 교환이 쉬워진다.
| host | share name | option |
|---|---|---|
| /Users/foo/Downloads | Downloads | 자동 마운트 off, 항상 사용 on |
headless 설정
headless로 가상머신을 사용할 경우 RDP나 ssh 연결 설정을 해야 한다.
RDP
VirtualBox 자체 RDP 기능을 사용할 수 있다.
$ VBoxManage modifyvm Debian --vrde on --vrdeport 13389
설정이 제대로 되었는지 확인한다.
$ VBoxManage showvminfo Debian | grep VRDE
VRDE: enabled (Address 0.0.0.0, Ports 13389, MultiConn: off, ReuseSingleConn: off, Authentication type: null)
VRDE property: TCP/Ports = "13389"
RDP로 접속할 때는 127.0.0.1의 13389 포트에 접속하면 된다.
ssh
localhost(127.0.0.1)의 4022 포트를 Debian VM의 22에 port forwarding 설정을 한다.
$ VBoxManage modifyvm Debian --natpf1 "ssh,tcp,,4022,,22"
설정이 제대로 되었는지 확인한다.
$ VBoxManage showvminfo Debian | grep Rule
NIC 1 Rule(0): name = ssh, protocol = tcp, host ip = , host port = 4022, guest ip = , guest port = 22
접속 방법은 아래와 같다(id는 foo라고 가정한다).
$ ssh -p 4022 foo@127.0.0.1
headless 부팅
$ VBoxHeadless --startvm Debian
Oracle VM VirtualBox Headless Interface 5.2.30
(C) 2008-2019 Oracle Corporation
All rights reserved.
VRDE server is listening on port 13389
fzf를 사용한다면 아래와 같이 fvbox 함수를 정의해 사용할 수도 있다.
fvbox()
{
local vm
read -r vm <<< $(VBoxManage list vms | awk -F \" '{print $2}' | sort | fzf --layout=reverse-list --preview="VBoxManage showvminfo {} --machinereadable | grep \"^name=\\|^UUID=\\|^VMState=\\|^vrde=\\\|^vrdeports=\\|^Forwarding(\\|^SharedFolder\\|^description=\\|^ostype=\"" --preview-window=right:70%:wrap)
if [ "$vm" = "" ]; then
return;
fi
local running
read -r running <<< $(VBoxManage showvminfo "$vm" --machinereadable | grep '^VMState='| awk -F = '{print $2}')
if [ "$running" = "\"running\"" ]; then
VBoxManage controlvm "$vm" savestate
else
nohup VBoxHeadless --startvm "$vm" > /dev/null 2>&1 &
fi
}
가상머신 부팅 후 Linux 환경 수정
부팅시 "gave up looking for suspend/resume device" 오류
/etc/initramfs-tools/conf.d/resume 파일에서 RESUME 값이 잘못된 경우 발생한다. 아래와 같이 수정한다.
RESUME=/dev/sda1
수정이 끝나면 ramdisk 다시 만든다.
$ sudo update-initramfs -u
fstab 수정
/etc/fstab 에서 /home 과 swap 내용을 삭제하고, 아래와 갈이 /home 에 대한 내용을 추가한다.
/dev/sdb /home ext4 defaults 0 1
swap
적당한 크기의 swapfile을 만든다. 여기서는 메모리 크기와 동일하게 4GB로 만든다.
$ sudo -s
# dd if=/dev/zero of=/swapfile bs=1024 count=4194304
# chmod 600 /swapfile
# mkswap /swapfile
# swapon /swapfile
/etc/fstab 에 아래 내용을 추가한다.
/swapfile swap swap defaults 0 0
hibernation
swap 정책을 변경한다.
$ sudo sysctl -w vm.swappiness=1
부팅 때 적용되도록 /etc/sysctl.d/swap.conf 파일을 수정한다.
vm.swappiness=1
uswsusp 를 설치한다.
$ sudo apt install uswsusp
$ sudo dpkg-reconfigure -pmedium uswsusp
"Continue without a valid swap space?" 질문에는 예를, "Swap space to resume from:" 질문에는 swapfile을 선택한다.
hibernation 서비스 수정 하기 위해 복사한다.
$ sudo cp /lib/systemd/system/systemd-hibernate.service /etc/systemd/system/
/etc/systemd/system/systemd-hibernate.service 맨 마지막 줄을 아래와 같이 수정한다.
ExecStart=/bin/sh -c 's2disk && run-parts --regex .\* -a post /lib/systemd/system-sleep'
수정 사항을 적용한다.
$ sudo systemctl daemon-reload
ramdisk 다시 만든다.
$ sudo update-initramfs -u
아래와 같이 잘 동작하는지 확인한다.
$ sudo systemctl start systemd-hibernate.service
VirtualBox package 설치
VirtualBox guest 패키지를 설치한다.
$ sudo apt install virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11
x11 설정
/etc/X11/xorg.conf 에서 기존에 사용하던 Monitor, Device 그리고 Screen Section은 다 삭제한다.
Section "ServerFlags"
# Ctrl + Alt + Backspace
Option "DontZap" "true"
EndSection
공유폴더
아래와 같은 명령으로 mount 되는지 확인한다.
$ sudo mount -t vboxsf -o uid=$UID,gid=$(id -g) Downloads /mnt/Downloads
uid, gid를 확인한다.
$ echo $UID $GID
1000 1000
/etc/fstab에 아래 내용을 추가한다.
# vbox
Downloads /mnt/Downloads vboxsf defaults,uid=1000,gid=1000 0 0
재부팅
모든 설정이 끝나면 재부팅 후 모든 기능이 잘 동작하는지 확인해본다.
2016년 6월 22일
Raspbian/autofs 설정
설치
$ sudo apt-get install autofs
$ sudo mkdir /etc/auto.master.d
설정
설정이 끝나면 autofs를 다시 시작해야 한다.
디버깅
설정을 수정하면서 테스트하고 싶을 때는 아래와 같이 디버깅 모드를 사용한다.
$ sudo systemctl stop autofs
$ sudo automount -f -d
usb storage
/media/sda1으로 mount 하도록 설정한다. 아래 설정은 미디어가 vfat으로 포맷된 것을 가정하고 작성되었다.
/etc/auto.master.d/media.autofs파일을 만든다
/media /etc/auto.master.d/media --timeout 60/etc/auto.master.d/media파일을 만든다.
sda1 -fstype=auto,async,nodev,nosuid,umask=000 :/dev/sda1
WebDav
/mnt/net/davfs/box으로 mount 하도록 설정한다.
davfs2 패키지를 설치한다.
$ sudo apt-get install davfs2/etc/davfs2/secrets에 접속할 webdav 정보를 추가한다.
/etc/auto.master.d/davfs.autofs파일을 만든다.
/mnt/net/davfs /etc/auto.master.d/davfs --timeout 60/etc/auto.master.d/davfs파일을 만든다.
box -fstype=davfs,uid=${UID},gid=${GID},rw,noexec,user,async :https://dav.box.com/dav
2016년 3월 17일
Debian/UltraNav 스크롤 버튼 활성화
UltraNav의 가운데 버튼(파란 버튼)을 누른 상태에서 스틱을 움직이면 스크롤이 되도록 하려면 아래와 같이 설정한다.
우선 장치 이름을 알아야 한다.
$ xinput --list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Microsoft Microsoft Wireless Optical Mouse® 1.00 id=8 [slave pointer (2)]
⎜ ↳ Synaptics Inc. Composite TouchPad / TrackPoint id=11 [slave pointer (2)]
⎜ ↳ Synaptics Inc. Composite TouchPad / TrackPoint (Stick) id=12 [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)]
↳ Power Button id=7 [slave keyboard (3)]
↳ Lite-On Tech IBM USB Travel Keyboard with UltraNav id=9 [slave keyboard (3)]
↳ Lite-On Tech IBM USB Travel Keyboard with UltraNav id=10 [slave keyboard (3)]
이름 확인 후 ~/.xinputrc파일에 아래 내용을 추가한다.
tpset() { xinput set-prop "Synaptics Inc. Composite TouchPad / TrackPoint (Stick)" "$@"; }
tpset "Evdev Wheel Emulation" 1
tpset "Evdev Wheel Emulation Button" 2
tpset "Evdev Wheel Emulation Timeout" 200
tpset "Evdev Wheel Emulation Axes" 7 6 4 5
tpset "Device Accel Constant Deceleration" 0.95
2015년 11월 3일
Debian/WOL 활성화
NetworkManager를 사용해서 설정할 수 있다.
우선 현재 설정을 얻는다.
$ nmcli con show 이름 UUID 유형 장치 Home 5b54ee0f-f75a-4ac4-94c7-c001d55f4530 802-3-ethernet eth0 $ nmcli c show "Home" | grep 802-3-ethernet.wake-on-lan 802-3-ethernet.wake-on-lan: default 802-3-ethernet.wake-on-lan-password: --
802-3-ethernet.wake-on-lan이 값이 magic이 되도록 수정한다.
$sudo nmcli c modify "Home" 802-3-ethernet.wake-on-lan magic
시스템을 재부팅한다.
2015년 2월 23일
Debian/VirtualBox Extension Pack 설치 오류
VirtualBox 확장 패키지 설치시 아래와 같은 오류가 발생하는 경우가 있다.
확장 기능 패키지 Oracle_VM_VirtualBox_Extension_Pack-4.3.22-98236.vbox-extpack을(를) 설치할 수 없습니다.
The installer failed with exit code 1: .
결과 코드: NS_ERROR_FAILURE (0x80004005)
구성 요소: ExtPackManager
인터페이스: IExtPackManager {3295e6ce-b051-47b2-9514-2c588bfe7554}
이 경우 이전에 설치된 확장 패키지를 수동 삭제 후 새 패키지를 설치해주면 된다.
$ sudo VBoxManage extpack uninstall "Oracle VM VirtualBox Extension Pack" $ sudo VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.3.22-98236.vbox-extpack
2014년 11월 14일
Debian/Box.com mount 설정
이 문서는 Debian에서 Box cloud를 mount 하는 방법에 대해서 기술한다.
사용자 계정은 편의상 davtest 로 한다.
준비
필요한 패키지 설치
$ sudo apt-get install davfs2 fuse
대상 경로 생성
$ mkdir /home/davtest/box
설정
dav 인증 설정
아래 내용을 ~/.davfs2/secrets 파일로 저장한다.
https://dav.box.com/dav
저장 후 파일 접근 권한을 변경한다.
$ chmod 600 ~/.davfs2/secrets
그룹 설정
davfs2 그룹에 사용자를 추가한다.
$ sudo usermod -aG davfs2 davtest
fstab 수정
/etc/fstab 파일에 아래 내용을 추가한다.
https://dav.box.com/dav /home/davtest/box davfs rw,noexec,noauto,user,async,uid=davtest,gid=davtest 0 0
만일 부팅시 자동으로 mount 하고 싶다면 아래처럼 설정한다.
https://dav.box.com/dav /home/davtest/box davfs rw,noexec,auto,user,async,_netdev,uid=davtest,gid=davtest 0 0
패키지 재설정
사용자 계정에서 mount 하기 위해 davfs2 를 재설정한다.
$ sudo dpkg-reconfigure davfs2
Should unprivileged users be allowed to mount WebDAV resource? 질문에 Yes를 선택한다.
테스트
mount
$ mount /home/davtest/box
unmount
$ sudo umount /home/davtest/box
2014년 5월 10일
Debian/XRDP + X11VNC + GDM3
xrdp를 사용하면 RDP를 이용해서 원격 접속이 가능해진다. 그러나 기본 설정으로 접속할 경우 GLX 가속 기능을 하나도 쓰지 못하기 때문에 gnome 3.x를 사용할 수 없다.
gnome 3.x에서 xrdp을 사용하려면 일반적인 VNC 서버 대신 지정된 XDISPLAY를 표시해주는 x11vnc를 사용하면 된다.
이 문서는 x11vnc를 부팅시 데몬으로 동작시켜 GDM3화면부터 xrdp로 사용하도록 설정하는 내용을 기술했다.
x11vnc 설정
설치
$ sudo apt-get install x11vnc
vnc 접속 비밀번호 설정
$ sudo x11vnc -storepasswd 비밀번호 /etc/x11vncpasswd
스크립트 작성
아래와 같은 스크립트를 만들어서 /etc/init.d/x11vnc으로 저장한다.
아래 스크립트는 gdm3을 사용한다는 가정으로 작성되었다. 다른 login manager를 쓴다면 그에 맞게 스크립트를 수정해야 한다.
#! /bin/sh
### BEGIN INIT INFO
# Provides: x11vnc server
# Required-Start: gdm3
# Required-Stop: gdm3
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: x11vnc
# Description: Debian init script for the x11vnc
### END INIT INFO
PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/x11vnc
test -x $DAEMON || exit 0
. /lib/lsb/init-functions
wait_gdm3() {
authfile=$(find /var/run/gdm3/auth-for-Debian-gdm-*/database)
while [ ! -f $authfile ]
do
authfile=$(find /var/run/gdm3/auth-for-Debian-gdm-*/database)
done
}
case "$1" in
start)
log_daemon_msg "Starting X11vnc" "x11vnc"
wait_gdm3
start-stop-daemon --start --quiet --pidfile /var/run/x11vnc.pid --make-pidfile --background --exec $DAEMON -- -display :0 -env FD_XDM=1 -auth guess -usepw -rfbauth /etc/x11vncpasswd -shared -oa /var/log/x11vnc.log -xkb -repeat -localhost -noxrecord -noxfixes -noxdamage -noncache -loop
log_end_msg $?
;;
stop)
log_daemon_msg "Stopping X11vnc" "x11vnc"
set +e
start-stop-daemon --stop --quiet --pidfile /var/run/x11vnc.pid --name x11vnc --retry 5
set -e
log_end_msg $?
;;
status)
status_of_proc -p /var/run/x11vnc.pid "$DAEMON" x11vnc && exit 0 || exit $?
;;
restart|force-reload)
$0 stop
sleep 1
$1 stop
;;
*)
echo -e "Usage: ${SERVICE} {start|stop|status|restart|force-reload}"
exit 1
;;
esac
exit 0
저장 후 permission을 조절한다.
$ sudo chmod +x /etc/init.d/x11vnc
자동 실행 등록
아래 명령을 이용해서 부팅시 자동 실행되도록 등록한다.
$ sudo update-rc.d x11vnc defaults
x11vnc 시작
재부팅 하거나 아래 명령으로 x11vnc 데몬을 시작한다.
$ sudo /etc/init.d/x11vnc restart
xrdp 설정
설치
아래 명령으로 xrdp을 설치한다.
$ sudo apt-get install xrdp
설정 수정
기본으로 사용할 세션을 x11vnc로 지정하기 위해서 /etc/xrdp/xrdp.ini파일을 열어서 아래와 같이 xrdp1과 xrdp2내용을 바꾼다.
[xrdp1] name=console lib=libvnc.so ip=127.0.0.1 port=5900 username=na password=ask [xrdp2] name=sesman-Xvnc lib=libvnc.so username=ask password=ask ip=127.0.0.1 port=-1
데몬 재시작
설정이 끝나면 아래 명령으로 xrdp 데몬을 재시작한다.
$ sudo /etc/init.d/xrdp restart
2014년 5월 7일
XFCE/터미널에서 Tab키로 자동 완성이 되지 않을때
Debian Sid의 XFCE 환경에서 터미널을 실행하고 Tab키를 누르면 자동 완성 기능이 동작하지 않는다.
이때는 ~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml 파일을 열어서 아래 내용을 찾는다.
>property name="<Super>Tab" type="string" value="switch_window_key" />
그리고 아래와 같이 수정한다.
<property name="<Super>Tab" type="empty"/>
수정이 끝나면 logout 후 다시 login 하면 된다.
2014년 2월 25일
Debian/최대 절전 모드가 동작하지 않을 때
pm-hibernate를 실행했을 때 아래와 같은 오류 메시지와 함께 최대 절전 모드로 진입하지 못할 때가 있다.
snapshot_ioctl: ioctl '4004330c' is deprecated and will be removed soon, update your suspend-to-disk utilities
이때는 uswsusp 패키지를 다시 설치하면 된다.
$ sudo apt-get --reinstall install uswsusp