2023년 6월 26일 월요일

씽크패드, 우분투 그리고 배터리

전원 관리

$ sudo add-apt-repository ppa:linrunner/tlp
$ sudo apt update
$ sudo apt install tlp tlp-rdw

커널 버전이 5.17 보다 작고 thinkpad 이면 추가 패키지 설치
ThinkPads only: External Kernel Modules


충전 임계값 

위도우즈 쪽의 프로그램에서는 기본 값이 75, 80 이었기에 같은 값으로 설정했다.

$ echo 75 | sudo tee /sys/class/power_supply/BAT0/charge_control_start_threshold
$ echo 80 | sudo tee /sys/class/power_supply/BAT0/charge_control_end_threshold
# 충전 케이블을 뽑고 75% 이하로 떨어지면 다시 꼽는다.


2023년 6월 15일 목요일

MS 윈도우에서 x-server 사용하기

MS 윈도우에서 x-server  툴들이 몇가지 있는데,
WSL2 에서 ubuntu 를  돌리면 x-server 를 사용할 수 있다는걸 처음 알았다.
ubuntu니까 당연할 수도 있겠지만 WSL2 라서 GUI 기능은 없다고 생각했다.

ubuntu 에 깔려 있는 x 와 관련 있어 보이는 패키지는 다음과 같다.
x11-common
x11-utils
xauth
xdg-user-dirs
xkb-data
ubuntu 쪽에서 뭔가 하는것 같지는 않다.

리모트 서버에서 eog 등을 띄우고 윈도우의 작업관리자를 보면 다음과 같은 그룹이 생긴다.
('* 숫자' 는 같은 이름의 프로세스 개수이다.)

Linux용 Windows 하위 시스템(18)
    COM Surrogate * 2
    Remote Desktop
    Windows Subsystem for Linux * 10
    Windows Subsystem for Linux Service
    콘솔 창 호스트 * 4

눈에 띄는게 Remote Desktop(msrdc.exe) 로 WSL 설치 디렉토리에 있다.

msrdc 는 mstsc 의 후속작(?)으로 Azure Virtual Desktop 의 rdp 클라이언트라고 한다.
ssh 연결할 때 -X 옵션을 주거나 ~/.ssh/config 에서 ForwardX11 yes 를 추가하면
리모트의 x 프로그램을 쓸 수 있다.

이제 다른 x-server 툴들은 지워도 될 것 같다.



2023년 6월 11일 일요일

osmc 에 pihole(광고차단) 설치하기

요즘 웹사이트의 광고 내용이 너무 심하다는 생각이 들어 광고 차단 프로그램을 설치했다.


환경

공유기: ipTIME A8004ITL

라즈베리파이 4: OSMC 2023.06-1

광고 차단 프로그램: Pi-Hole 


OSMC 설치

Disney Plus + OSMC + 라즈베리파이 4 에서 OSMC 설치부분만 따라한다. 이미지는 항상 최신.


도커 설치

찾아보니 pihole 의 도커 이미지가 있길래 도커 이미지를 사용한다.
도커가 아니고 직접 설치하려면 참고의 사이트를 보고 한다.

도커는 패키지로 설치한다. (같은 페이지에 다른 방법도 있으니 참고한다.)
https://docs.docker.com/engine/install/debian/#install-from-a-package

각 패키지 별로 최신 버전을 다운 받아 설치한다.

$ wget https://download.docker.com/linux/debian/dists/bullseye/pool/stable/armhf/containerd.io_1.6.21-1_armhf.deb
$ wget https://download.docker.com/linux/debian/dists/bullseye/pool/stable/armhf/docker-ce_24.0.2-1~debian.11~bullseye_armhf.deb
$ wget https://download.docker.com/linux/debian/dists/bullseye/pool/stable/armhf/docker-ce-cli_24.0.2-1~debian.11~bullseye_armhf.deb
$ wget https://download.docker.com/linux/debian/dists/bullseye/pool/stable/armhf/docker-compose-plugin_2.18.1-1~debian.11~bullseye_armhf.deb
$ sudo dpkg -i *.deb
$ sudo usermod -aG docker $USER
# 재로그인


Pi-hole 설치

설치는 https://hub.docker.com/r/pihole/pihole 를 따라 docker-compose.yml 파일만 생성하면 된다.

필요 없어 보이는 부분은 삭제하고 포트 등은 수정했다. 윈래 내용은 위 페이지를 참고한다.

$ mkdir ~/pihole
$ cd ~/pihole
$ cat << EOF > docker-compose.yml
version: "3"
services:
  pihole:
    container_name: pihole
    image: pihole/pihole
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "8080:80/tcp"
    environment:
      TZ: "Asia/Seoul"
# WEBPASSWORD: 'set a secure password here or it will be random' volumes: - "./etc/pihole:/etc/pihole"
- "./etc/dnsmasq.d:/etc/dnsmasq.d"
restart: unless-stopped EOF $ docker compose up -d


문제 해결 1.

53 번 포트가 이미 사용 중이라고 나온다.
확인해보니 connman 서비스가 사용 중이다.

$ sudo netstat -ntpl | grep 53

connman 은 네트워크 연결을 관리해주는 서비스라 없애긴 그렇고 dns 프록시 기능만 끄도록 한다.

$ sudo sed -i 's/dnsproxy=yes/dnsproxy=no/' /etc/connman.prefs
$ sudo systemctl restart connman
$ docker restart pihole


일단 Pi-Hole 의 dns 동작확인
OSMC 를 대상으로 다음과 같이 표시되면 문제 없다. ({} 부분은 각자에 맞게 치환)

$ nslookup www.google.com {OSMC IP 주소}
Server:		{OSMC IP 주소}
Address:	{OSMC IP 주소}#53

Non-authoritative answer:
Name:	www.google.com
Address: 172.217.161.228
Name:	www.google.com
Address: 2404:6800:400a:80b::2004

Pi-Hole 웹 로그인

http://{OSMC IP 주소}:8080/admin

암호 확인

$ docker compose logs pihole | grep
# 암호를 잊어버렸을 때는 docker-compose.yml 에 WEBPASSWORD 를 설정
# 또는 새로 생성
$ docker compose exec pihole pihole -a -p


여기부턴 잘못 설정하면 집안 전체의 인터넷이 안될 수도 있다.
바꾸기 전의 값을 잘 기록해 뒀다가 문제가 생기면 되돌리던가,
강제 리셋 시키는 방법을 알아 두는게 좋다.


Pi-Hole 설정

기본적으로는 아무 것도 안해도 동작한다.

DNS 서버가 기본으로 google 로 되어 있는데 이걸 KT 로 바꿔 줬다.
http://{OSMC IP 주소}:8080/admin/settings.php?tab=dns

Google 쪽 체크는 없애고 커스텀 쪽에 값을 추가했다. KT 의 주소는 공유기에서 복사.

Custom 1 (IPv4)    Custom 1 (IPv4)
[v]                [v]
[168.126.63.1]     [168.126.63.2]


공유기의 DNS 설정 변경

공유기 관리 페이지 > 고급 설정 > 네트워크 관리 > 인터넷 설정 정보 > 다음 설정 > 설정 버튼 클릭
[v] DNS 주소 수동 입력 에 체크

기본 DNS 주소	[].[].[].[]  <= {OSMC IP 주소}
보조 DNS 주소	[].[].[].[]  <= 비워둔다


참고로 OSMC 는 서버로 동작하기 때문에 늘 IP 가 같아야 한다.
고정 IP 로 설정하거나 공유기의 DHCP 서버 설정에서 수동 주소를 설정한다.


블랙리스트 추가

https://yorublog.tistory.com/16 에서 Tip 광고가 나오나요? 부분을 따라 추가한다.

광고를 오른 클릭 > 링크 주소 복사 > https://이 사이 부분만 복사/...

http://{OSMC IP 주소}:8080/admin/groups-domains.php 에서 다음 부분에 복사해 넣고 Add to Blacklist 버튼 추가

Domain:
[aaa.bbb.ccc.com]


문제 해결 2.

이게 문제인지는 잘 모르겠다. 블랙리스트를 추가해도 광고가 떴다.
어디선가 설정하고 몇 분 있어야 동작한다고 했던 것 같긴한데 다음 동작을 했다.

http://192.168.192.123:8081/admin/gravity.php 에서 Update 클릭

시간이 지나서 된 건지 블록리스트를 업데이트해서 된 건지는 확실치 않다. 

PS. 몇 개 더 해보니 시간이 걸리는게 맞는 것 같다.


보조 DNS 설정 추가

OSMC 는 항상 켜두기는 하는데 혹시 동작이 안되 집안의 인터넷이 안되는
사태가 발생하면 안될 것 같아 보조 DNS 는 원래 값으로 설정해 뒀다.

공유기 관리 페이지 > 고급 설정 > 네트워크 관리 > 인터넷 설정 정보 > 다음 설정 > 설정 버튼 클릭
[v] DNS 주소 수동 입력 에 체크

기본 DNS 주소	[].[].[].[]           <= {OSMC IP 주소}
보조 DNS 주소	[168].[126].[63].[1]  <= 기존의 기본 DNS 주소


참고

  • https://yorublog.tistory.com/16
  • https://github.com/pi-hole/pi-hole/#one-step-automated-install
  • https://docs.docker.com/engine/install/debian/#install-from-a-package
  • https://www.techkhoji.com/pi-hole-blocking-not-working-fix/

2023년 5월 27일 토요일

vim 에서 JSX.IntrinsicElements 에러 수정

vim 8 + coc-tsserver 으로 .tsx 파일을 열었는데 다음과 같은 에러가 보인다. 

 Property 'div' does not exist on type 'JSX.IntrinsicElements'. (tsserver 2339)

검색해보면 주로 컴포넌트 이름을 소문자로 잘못 써서(<Hello> 를 <hello> 로 사용) 나오는 것 같다. 
하지만 이 경우는 div 로 기본 html 태그이니 에러가 나오는 것은 이상하다.

JSX.IntrinsicElements 이란 를 보고 설치된 모듈을 검색해 봐도 잘 들어있다.
$ grep 'interface IntrinsicElements {' -wrn  node_modules/
node_modules/@types/react/ts5.0/index.d.ts:3177:        interface IntrinsicElements {
node_modules/@types/react/index.d.ts:3209:        interface IntrinsicElements {
$ sed -n '/interface IntrinsicElements {/,/\<div\>/p' node_modules/@types/react/index.d.ts
        interface IntrinsicElements {
    . . .
            div: React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>;

찾다보니 coc-tsserver  에 tsserver.tsdk 와 tsserver.useLocalTsdk 설정이 있는 것을 알았다.
tsserver.tsdk 는 IntelliSense 사용을 위해 lib*.d.ts 를 찾을 수 있는 TypeScript 설치 경로를 지정하고, tsserver.useLocalTsdk 는 workspace (node_modules 아래)에서 찾는다.

다음과 같이 vim 에서 coc 설정 파일을 열고 workspace 의 모듈을 사용하도록 설정을 추가한다.
:CocConfig
{
  "tsserver.useLocalTsdk": true
}

참고로 vim 시작시 coc 가 시작하지 않게 하려면 .vimrc 에 다음을 추가한다.
let g:coc_start_at_startup = v:false
도중에 시작은
:CocStart

2023년 5월 13일 토요일

OSMC 에서 쿠팡플레이 실행

쿠팡플레이를 써볼 수 있게 되서 설정해 봤다.

  1. osmc 설치로 kodi 설치까지는 된 거고
  2. 애드온 설치 를 따라 repository.nightrain_v19_public.zip 를 설치
    (osmc는 kodi 와 스킨이 달라 다르게 보이지만 내용은 같아서 따라갈 수 있다.)
    (이 파일은 오래됐지만 링크만 제공하고 링크는 최신이라 문제 없다.)
    서비스 설치할 때 Coupang Play MINI 만 설치했다.
  3. 로그인 정보 입력 및 프로필 선택.
    (프로필은 만든 목록이 보이지 않고 프로필1, 프로필2 등으로 보인다.)

로그인하고 목록 조회 등은 잘 나오는데 막상 재생하면 에러가 났다.
osmc 를 새로 설치한거라 drm 라이브러리가 설치 안되서 그럴것 같았다.
다른 플러그인에서는 drm 라이브러리 설치 화면이 연동되었는데 그렇게는 안되어 있는 모양이다.
(플러그인이 있는 것만으로도 고맙긴하다.)

widevine-arm-broken 에서 Update Widevine (Non-SlyGuy Users) 를 보고 설치한다.
  • 설정 > 애드온 탐색기 > 저장소에서 설치 > 모든 저장소 > 프로그램 애드온 >
    InputStream Helper
  • 설정 > 전문가 > Widevine CDM 라이브러리를 (다시) 설치
  • 모두 예
  • 재부팅
위의 라이브러리 설치 전에 어디선가 보고 다음 패키지를 설채했었는데
지워도 동작하는걸 보면 설치할 필요는 없을지도 모르겠다.
혹시라도 Widevine 라이브러리 설치시 에러가 나면 다음을 설치하면 될 것 같다.

$ sudo apt remove python3-pycryptodome python3-pip

참고:
https://hoing.io/archives/11171
https://www.matthuisman.nz/2021/05/widevine-arm-broken.html

hdl 팁

  • 1 비트를 16 비트로 확장

Mux16(a=false, b=true, sel=bit, out=out);

  • 1 더하기
Add(a=a, b[0]=true, b[1..15]=false, out=out);
  • sub 버스의 일부만 사용하고 싶은 경우, 출력에서 미리 빼둔다.

 Mux16(a=a, b=b, sel=no, out=out, out[0..7]=sub0);

2023년 5월 2일 화요일

ubuntu 업데이트 후 trackpoint 동작 안함

Thinkpad T15 에서 ubuntu 22.04 사용 중인데 소프트웨어 업데이트 후
트렉포인트가 동작하지 않는다. 

다음과 같이 펌웨어 업데이트 후 동작하게 되었다.

$ fwupdmgr refresh
$ fwupdmgr update
    . . .
Upgrade Embedded Controller from 0.1.14 to 0.1.15?
. . . Upgrade Intel Management Engine from 225.60.1807 to 225.67.2046?
. . . Upgrade Prometheus from 10.01.3273255 to 10.01.3478575?
. . .
Upgrade System Firmware from 0.1.24 to 0.1.28?
. . .
An update requires a reboot to complete. Restart now? [y|N]: 


LVFS 를 지원하는 장치에 대해서는 제조사에 관계없이 같은 방식으로 업데이트가 가능하다고 함.

참고:
* https://www.cyberciti.biz/faq/thinkpad-update-firmware-on-linux-x1-extreme-p1-gen2/


이건 안해봤는데 트랙포인트 감도 조절하는 방법이라고 함.
ubuntu 20.04 의 방법이 22.04 에서도 유효할 듯

* https://silvae86.github.io/2019/05/17/tuning-ibm-lenovo-trackpoint/