Create TOC

레이블이 Linux인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Linux인 게시물을 표시합니다. 모든 게시물 표시

2024년 12월 14일

Debian/systemd로 rclone mount하기

2022년 6월 17일

Debian/Wayland에서 탭하여 클릭이 동작하지 않을때

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으로 포맷된 것을 가정하고 작성되었다.

  1. /etc/auto.master.d/media.autofs파일을 만든다

    /media  /etc/auto.master.d/media --timeout 60
    
  2. /etc/auto.master.d/media파일을 만든다.

    sda1 -fstype=auto,async,nodev,nosuid,umask=000 :/dev/sda1
    

WebDav

/mnt/net/davfs/box으로 mount 하도록 설정한다.

  1. davfs2 패키지를 설치한다.

    $ sudo apt-get install davfs2
    
  2. /etc/davfs2/secrets에 접속할 webdav 정보를 추가한다.

  3. /etc/auto.master.d/davfs.autofs파일을 만든다.

    /mnt/net/davfs /etc/auto.master.d/davfs --timeout 60
    
  4. /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="&lt;Super&gt;Tab" type="string" value="switch_window_key" />

그리고 아래와 같이 수정한다.

<property name="&lt;Super&gt;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