2022년 12월 30일 금요일

Arduino 에서 LCD 사용하기

테스트 환경

arduino-ide 설치

다운로드

  1. 아두이노 다운로드 페이지 에서 리눅스용 zip 파일 다운로드
  2. 아이콘 이미지는 icon-icons 에서 ICO, 128px 선택 후 다운로드
  3. .desktop 파일 생성 스크립트 다운로드

설치

$ cd ~/Downloads

# 아두이노 IDE 설치
$ sudo unzip arduino-ide_2.0.3_Linux_64bit.zip -d /opt

# 아이콘 복사
$ sudo mv arduino_logo_icon_170518.ico /opt/arduino-ide_2.0.3_Linux_64bit/arduino.ico

# .desktop 파일 생성
$ ./mkdtp.sh /opt/arduino-ide_2.0.3_Linux_64bit/arduino-ide
# .desktop 파일에 아이콘 정보 추가
$ sed -i '/Icon/s;$;/opt/arduino-ide_2.0.3_Linux_64bit/arduino.ico;' ~/.local/share/applications/arduino-ide.desktop
# 독 > 프로그램 표시 > arduino 로 검색 > arduino-ide 를 오른쪽 클릭 > 즐겨찾기에 추가 

실행 및 설정

  1. 즐겨찾기에서 아두이노 아이콘 클릭
  2. File > Preferences... > Language 를 한국어로 변경 > OK > (자동으로 재로딩)
  3. 보드를 USB 케이블로 PC 에 연결
  4. 보드 선택에서 Arduino Uno 선택

회로 구성

회로 구성할 때는 전원을 끄고(USB 케이블을 빼고) 한다.

연결 및 예제 코드는 구글 등에서 아두이노 LCD 연결 등으로 검색한다.
여기서는 요즘 핫한 ChatGPT (무료 가입) 에게 물어봤다. (구글 번역기 돌린 것)
How to connect Arduino Uno and I2C 1602 LCD?

그림도 잘 그린다.
Arduino Uno       I2C 1602 LCD
 _______________  _______________
|               ||               |
|       GND ----|---- GND        |
|       +5V ----|---- VCC        |
|       A4 -----|---- SDA        |
|       A5 -----|---- SCL        |
|_______________|________________|

코드 작성 및 실행

코드도 ChatGPT 에게 물어봤다. (구글 번역기)
Show me an example program to display 'hello world' on I2C 1602 LCD on Arduino Uno.
코드와 코드의 설명이 나온다.

실행

1. 작성해준 코드를 arduino-ide 의 스케치에 전체 붙여넣기를 한다.
2. 업로드 버튼(왼쪽 위의 ->)을 누른다.
Compilation error: LiquidCrystal_I2C.h: No such file or directory
컴파일 에러가 나왔다.
3. ChatGPT 에게 다시 물어봤다. (역시 구글 번역기)
'Compilation error: LiquidCrystal_I2C.h: No such file or directory' What do you do?
세가지 가능성을 말하는데 새로 설치한거라 1번으로 시도
스케치 > 라이브러리 포함 > 라이브러리 관리... > 필터 검색... 에서 LiquidCrystal_I2C 로 검색 > 
LiquidCrystal I2C by Frank de Brabander 를 설치
4. 다시 업로드 버튼(->) 을 누른다. 
avrdude: ser_open(): can't open device "/dev/ttyACM0": Permission denied
권한 에러가 나왔다.
5. 그룹을 추가한다. 
$ ls -l /dev/ttyACM0 
crw-rw---- 1 root dialout 166, 0 12월 31 10:53 /dev/ttyACM0
$ sudo usermod -aG dialout $USER
# 다시 로그인 해야한다. (터미널이나 IDE 를 다시 띄우는게 아니고, 전원 끄기/로그아웃 > 로그아웃)
5. 업로드 버튼(->) 을 누른다. 
업로드는 성공했다.

문제

LCD 에 불은 들어오는데 글자가 안보인다.
ChatGPT 에게 계속 물어봤다. (계속 구글 번역기)
The LCD lights up, but I can't see the text. What's wrong?

네가지 가능성 중 첫번째 시도
LCD 뒷면에 명암대비를 조절하는 나사(파란색) 을 돌려보니 글자가 보임.

쓰고보니 ChatGPT 사용기가 되었다.

2022년 12월 25일 일요일

Raspberry Pi OS 64bit

스트리밍 비디오 구독이 끝남에 따라 써보고 싶었던 64비트 OS 설치했다.
* aarch64 용 Widevine DRM 라이브러리가 없어 스트리밍을 지원하는 미디어센터 배포판은 아직 32비트 OS 기반이 대세인 것 같다.
* 64비트 OS 에 32비트 kodi 를 설치하기도 한다.

Raspberry Pi OS (64-bit) 설치

간단하게 rpi-imager 로 설치

$ sudo apt install rpi-imager
$ rpi-imager
# 운영체제 > Raspberry Pi OS (other) > Raspberry Pi OS Lite (64-bit)
# 저장소 선택 > 설치할 SD 카드 선택
# 고급 옵션(톱니바퀴)에서 ssh 설정, 사용자 이름 변경 등을 하면 편하다 
# 쓰기

Kodi 설치

$ sudo apt update
$ sudo apt install kodi


부팅시 Kodi 자동 시작

[Guide] Kodi on Raspberry Pi OS / Raspbian Buster 에서 AUTO-STARTING KODI AT BOOT: Option 1 (without desktop) 를 따라한다.

$ sudo tee -a /lib/systemd/system/kodi.service <<_EOF_
[Unit]
Description = Kodi Media Center
After = remote-fs.target network-online.target
Wants = network-online.target

[Service]
User = pi
Group = pi
Type = simple
ExecStart = /usr/bin/kodi-standalone
Restart = on-abort
RestartSec = 5

[Install]
WantedBy = multi-user.target
_EOF_
$ sudo systemctl enable kodi.service

rpi-imager 에서 pi 대신 다른 사용자 만들어서 위의 서비스 파일에서 User 와 Group 은 변경해 줬다.
다른 사용자를 만든 경우 다음 명령을 실행하라는데, 확인해보면 이미  들어가 있었다.
$ sudo usermod -a -G audio,video,input,dialout,plugdev,netdev,users,cdrom,tty $USER


소리 출력이 오디오잭으로 되어 있어 HDMI 로 바꿔줬다.
그 밖의 설정은 앞선 설치 기록들과 같다

개인적으로는 이전보다 화면이 더 밝고 화면감이 더 좋은 것 같다.


참고
[Guide] Kodi on Raspberry Pi OS / Raspbian Buster 

scp 로 두 리모트 서버간 파일 전송

문제

remote_src:/file/path/data 파일을 remote_dst:/file/path 로 복사


전제 조건

local_host 는 remote_src 와 remote_dst 에 ssh 자동 로그인 설정이 되어 있음
remote_src 와 remote_dst 는 서로에 대해 ssh 자동 로그인 설정이 되어 있지 않음


실행

local_host$ scp -3 remote_src:/data/file/path remote_dst:/data/file/path

-3 옵션이 remote_src -> local_host -> remote_dst 로 데이터가 흘러가게 해 줌

따로 중간 파일을 관리하지 않아도 되는 점이 좋다


참고
https://stackoverflow.com/questions/28831329/how-to-transfer-a-file-between-two-remote-servers-using-scp-from-a-third-local

2022년 12월 24일 토요일

Raspberry pi 4 에 Arch Linux 64bit 설치

Arch Linux, Raspberry Pi 4, AArch64 Installation 의 Installation 탭 참고

기본적으로는 파티션 작업하고, 이미지를 다운로드해서 풀어 넣으면 끝이다.

arch_rpi4_installer.sh

Arch Linux Raspberry Pi 4 aarch64 Installer

usage: arch_rpi4_installer.sh <device>
  device: mmcblk0 in case of /dev/mmcblk0

SD 카드 디바이스 이름 찾기
$ lsblk | grep disk
mmcblk0     179:0    0  29.8G  0 disk

# 또는 SD 카드를 꽂고
$ sudo dmesg | tail
[268097.526718] mmc0: new ultra high speed SDR104 SDHC card at address 0001
[268097.528536] mmcblk0: mmc0:0001 ASTC 29.8 GiB 
[268097.530892]  mmcblk0: p1 p2

2022년 12월 17일 토요일

Linux 키보드 매핑 변경

알리에서 VR-PARK 라는 BT 콘트롤러를 샀다.
(그리 필요하진 않지만) 이북 리더에서 페이지 넘기는건 괜찮은것 같은데
그걸 제외하면 볼륨조절 이외에는 별로 쓸모가 없어 보인다.
그래서 PC 의 미디어 리모콘용으로 키를 변경해 봤다.

기본적으로는 디바이스별 키맵 변경을 참고 했다
테스트 환경 - ubuntu 22.04

* 우선 모드별 키 매핑은 다음과 같다. (기본은 모드 D)

모드 A
A  - 마우스 버튼 1
B  - 마우스 버튼 8
C  - 키코드 123 XF86AudioRaiseVolume
D  - 키코드 122 XF86AudioLowerVolume
상 - 여러 번의 마우스 커서 이동
하 - 여러 번의 마우스 커서 이동
좌 - 여러 번의 마우스 커서 이동
우 - 여러 번의 마우스 커서 이동
전면 위, 아래 - 각각 A, B 와 동일
모드 B
A  - 키코드172 XF86AudioPlay
B  - 키코드180 XF86HomePage
C  - 키코드123 XF86AudioRaiseVolume
D  - 키코드122 XF86AudioLowerVolume
상 - 키코드173 XF86AudioPrev
하 - 키코드171 XF86AudioNext
좌 - 키코드173 XF86AudioPrev
우 - 키코드171 XF86AudioNext
전면 위, 아래 - 각각 A, B 와 동일
모드 C
A  - 마우스 버튼 41
B  - 마우스 버튼 37
C  - 마우스 버튼 40
D  - 마우스 버튼 38
상 - 없음
하 - 없음
좌 - 없음
우 - 없음
전면 위, 아래 - 각각 B, A 와 동일
모드 D
A  - 마우스 버튼 1
B  - 마우스 버튼 8
C  - 키코드 123 XF86AudioRaiseVolume
D  - 키코드 122 XF86AudioLowerVolume
상 - 마우스 커서
하 - 마우스 커서
좌 - 마우스 커서
우 - 마우스 커서
전면 위, 아래 - 각각 A, B 와 동일매

* 키 매핑 조사

xev 를 띄우고, 창에 마우스 커서를 놓고, 버튼 및 조이스틱을 동작 시켜 터미널 출력을 확인

일부 버튼(볼륨)은 키코드를 얻을 수 없고 KeymapNotify 등이 발생했는데 xev 로 Fn+F1-F12 키코드 조사에 따른면 다른 키 바인딩 앱이 동작 중이라 그렇다고 한다.
xlsclients 를 실행하니 gsd-media-keys 라는 이름이 보였다.
killall gsd-media-keys 로 삭제 후 모든 매핑을 조사할 수 있었다.

변경할 키의  심볼은 xkbcomp.dump 에서 또는 다음 명령어로 확인한다.

xkbcomp $DISPLAY -

최종적으로는 키보드로만 구성된 모드 B 에서 다음과 같이 동작하게 하기로 했다. 
$ cat vrpark.sh
#! /bin/bash

XKB_ROOT="/tmp/$USER/xkb"

# 매핑 생성
# @B 모드
# 위/왼쪽     - 소리 크게
# 아래/오른쪽 - 소리 작게
# C           - 재생/일시정지
# D           - 전체화면 (f)
# A           - 오른쪽
# B           - 왼쪽
mkdir -p $XKB_ROOT/symbols
cat << EOF > $XKB_ROOT/symbols/custom
xkb_symbols "media" {
  key <I171> { [ XF86AudioLowerVolume ] };
  key <I172> { [ Right ] };
  key <I173> { [ XF86AudioRaiseVolume ] };
  key <I180> { [ Left ] };
  key <VOL+> { [ XF86AudioPlay, XF86AudioPause ] };
  key <VOL-> { type="ALPHABETIC", symbols[Group1]=[ f, F ] };
};
EOF

kbd_id=$(xinput list | sed -n 's/.*VR-PARK.*id=\([0-9]*\).*keyboard.*/\1/p')
[ "$kbd_id" ] &&
  setxkbmap -device $kbd_id -print |
  sed 's/\(xkb_symbols.*\)"/\1+custom(youtube)"/' |
  xkbcomp -I$XKB_ROOT -i $kbd_id -synch - $DISPLAY 2>/dev/null

연결되면 기본으로 모드 D 가 되어 모드 B 로 변경해야 하지만, 꽤 만족스럽다.


다만 몇 가지 문제는
1. 유튜브의 경우 오른쪽 왼쪽을 누르면 5초씩 이동하는데 VLC player의 경우 10초씩 이동한다.

2. 미디어 콘트롤러로는 키가 부족하다. 최소 이전파일/다음파일의 두 개가 더 필요하다.

3. 유튜브 중간 중간 나오는 광고 건너뛰기는 처리가 안된다. 배너 광고 삭제도 안된다.
모드D 로 바꿔서 할 수 있기는 있는데 정확히 맞추기가 너무 힘들다

4. 디바이스가 연결될 때마다 이 스크립트를 실행해야 한다. (절전을 위해 자주 꺼진다)


1 에 대해서는 VLC player 의 설정을 변경한다.
도구 > 환경설정 > (왼쪽 아래의) 설정보기에서 전체 선택 > 인터페이스 > 단축키 설정 > 이동 시간: 짧게 에서 5로 변경 > 저장 

2 는 디바이스 쪽에서 제어가 되어야 할 것 같다. 전면 버튼 두 개와 조이스틱의 방향 2개가 남지만 보내는 곳에서 같은 값으로 보내면 받는 곳에서는 할 수 있는게 없다.

3 은 이 방법에 익숙해 지거나, 마우스를 사용하거나, 디바이스 쪽에서 제어가 되어야 할 것 같다.

4 는 udev 를 설정해서 해결하기로 한다. 

* udev 설정
기본적으론 Linux에서 장치 검색 및 관리를 위해 Udev 사용 방법 에 따라 기본 룰을 작성하고 테스트를 했다.

udevadm 을 실행하고 디바이스를 연결하여 표시되는 메시지를 확인한다.
$ udevadm monitor --udev
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
UDEV  [9025.790074] add      /devices/pci0000:00/0000:00:14.0/usb1/1-10/1-10:1.0/bluetooth/hci0/hci0:3585 (bluetooth)
UDEV  [9025.800014] add      /devices/virtual/misc/uhid/0005:05AC:022C.0014 (hid)
UDEV  [9025.806226] add      /devices/virtual/misc/uhid/0005:05AC:022C.0014/input/input40 (input)
UDEV  [9025.810143] add      /devices/virtual/misc/uhid/0005:05AC:022C.0014/hidraw/hidraw3 (hidraw)
UDEV  [9025.811948] add      /devices/virtual/misc/uhid/0005:05AC:022C.0014/input/input40/mouse3 (input)
UDEV  [9025.814807] add      /devices/virtual/misc/uhid/0005:05AC:022C.0014/input/input40/js0 (input)
UDEV  [9025.926914] add      /devices/virtual/misc/uhid/0005:05AC:022C.0014/input/input40/event22 (input)
UDEV  [9026.992700] bind     /devices/virtual/misc/uhid/0005:05AC:022C.0014 (hid)
$ udevadm monitor --environment --udev
. . .
UDEV  [8397.519158] add      /devices/virtual/misc/uhid/0005:05AC:022C.0012/input/input38/event22 (input)
ACTION=add
DEVPATH=/devices/virtual/misc/uhid/0005:05AC:022C.0012/input/input38/event22
SUBSYSTEM=input
DEVNAME=/dev/input/event22
. . .
$ udevadm info -a /dev/input/event22

몇 가지 테스트를 해보니

1. udevadm info -a <디바이스> 의 결과에 나오는 ATTR 또는 ATTRS 등을 그대로 써야한다.
예로 많은 문서에서 vender id 를 참조할 때 ATTRS{idVendor} 를 사용하지만 이 디바이스는 ATTRS{id/vendor} 를 사용해야 동작했다.

2. 스크립트를 한 번만 실행되게 하려면 룰이 정확히 한 번만 일치되게 작성해야 한다.
예로 SUBSYSTEM=="input" ACTION="add" ATTRS{id/vendor}=="05ac" ATTRS{id/product}=="022c" 는 mouse3, js0, event22 에 모두 일치해서 세번 실행된다.

 간단히 하기 위해 한 번만 발생하는 bind 이벤트를 사용하기로 했다.

$ cat /etc/udev/rules.d/80-vrpark.rules 
ACTION=="bind", SUBSYSTEM=="hid", ENV{HID_NAME}=="VR-PARK", RUN+="/tmp/vrpark.sh"

* 합체 후 문제

위 룰로 vrpark.sh 가 시작하기는 하는데 매핑 변경은 이루어지지 않았다.

udev 가 스크립트의 xinput 을 실행하지 않음 에 따르면 xinput 이 동작하려면 DISPLAY와 XAUTHORITY 환경변수가 필요하다고 한다.

파일 하나로 관리하고 싶은 마음도 있고 해서 최종 파일은 다음과 같다.

vrpark.sh


참고
* xkb 로 리눅스 키보드 해킹
디바이스별 키맵 변경
xev 로 Fn+F1-F12 키코드 조사
xkbcomp.dump
Linux에서 장치 검색 및 관리를 위해 Udev 사용 방법

2022년 11월 12일 토요일

ubuntu 터미널에서 F11 전체화면 끄기

터미널이 F11 을 바로가기 키(전채화면 토글)로 사용하여 vi 의 키매핑이 안먹힌다.
다음과 같이 비활성화

터미널 > 타이틀바의 설정(막대 세개 쌓인것) > 기본 설정 >
바로 가기 > 전체 화면의 바로가기 키(F11) 를 클릭 >
'새 단축키...' 가 보이는 상태 > 백스페이스 입력 > '사용 안함' 으로 변경


2022년 11월 5일 토요일

androidfilehost.com 에서 파일 받기

RPI4 에 설치하려고 LineageOS konstakang 빌드를 다운로드 하려는데
하루가 지나도록 사이트가 다운된 상태라고만 나온다.
질문이나 댓글을 보면 접속이 되는 사람이 있고 안되는 사람이 있는것 같다.
몇몇 나라나 ISP 와 이런 문제가 있는것 같다고 한다.
VPN 을 써보면 될것도 같은데 계정이 없다.

스마트폰에서도 같은 증상인데 Wifi 를 끄고 모바일 데이터로 접속해보니
연결이 잘 된다. ISP 와 문제가 있을 수 있다는 말이 맞는것 같다.
모바일 데이터 용량이 작아서 폰에서 다운로드 링크만 얻어서 PC 에서
다운로드 해봤는데 이건 잘 된다.

DNS 캐시를 지우고 해보라는 말이 있어서 해봤지만 똑같이 안됐다.
참고로 ubuntu 22.04 에서는 다음과 같이 한다.

$ resolvectl statistics   # 현재상태 확인
$ resolvectl flush-caches # 캐시 삭제
$ resolvectl statistics   # 지워진 것 확인

2022년 9월 25일 일요일

Ubuntu 22.04 Citrix Alt-Tab 동작 안함

Ubuntu 22.04 에서 Ctrix Workspace App(ica client) 으로 Windows 에 접속해서 사용.

처음에는 모든게 정상이었다. 윈도우즈 접속 중에 Alt - Tab 을 누르면
윈도우즈 프로그램간 전환이 가능하고, 윈도우즈키 조합 키들도 다 먹혔다.

그런데 어느 날부턴가 icaclient 에서 Alt - Tab 을 누르면 윈도우즈 앱들
사이의 전환이 아니고 icaclient 와 Ubuntu 앱 사이의 전환이 되어 버렸다.
(icaclient 도 하나의 Ubuntu 앱으로 결국 Ubuntu 앱들 사이의 전환이다.)
윈도우즈키 + M 도 Ubuntu 의 바탕화면을 표시.

당시에는 해결법을 찾지 못했다. https://support.citrix.com/article/CTX232298 를
적용해봐도 효과가 없었다. (사실 2205 버전은 Ubuntu 22.04 에서 라이브러리 버전
문제로 deb 파일로는 설치가 안되어
https://kangaroobyte.com/how-to-install-the-citrix-client-on-ubuntu-22-04-20220516-265/ 에 따라 수동설치한 것이라 수정을 잘못 한 것일 수도 있다.)

오늘 해결을 했는데
https://kbpdfstudio.qoppa.com/alt-tab-does-not-work-on-ubuntu-22-04/ 에
따르면 Wayland 관련된 문제로 gdm 에서 Wayland 대신에 Xorg 를 사용하도록
바꾸면 된다고 한다. (/etc/gdm3/custom.conf)

[daemon]
WaylandEnable=false

https://forum.kde.org/viewtopic.php?f=289&t=171830 에서도 같은 문제를
격은 사연을 찾았다. (그 땐 왜 못찾았지?)

오늘 찾아보니 icaclient 가 Windows 나 Mac 용은 정식 2209 버전이 나왔는데,
Linux 용은 아직 베타 버전이다. Ubuntu 22.04 에서도 deb 파일로 설치가 되지만
Wayland 에서는 여전히 Alt - Tab 문제가 있다.

위의 의견들이 맞다면 내 경우는 Xorg 로 동작하다가 뭔가에 의해 Wayland 로
바뀐게 되는데, 짚히는 것이 전혀 없다.

2022년 6월 28일 화요일

vim-react-snippets 사용하기

vim-react-snippets 를 사용하여 타이핑을 줄인다.

설치

1. 먼저 vim-plug 를 설치.

2. ~/.vimrc 에 다음 내용을 추가한다.

call plug#begin('~/.vim/plugged')
Plug 'SirVer/ultisnips'
Plug 'mlaursen/vim-react-snippets'
call plug#end()

3. 추가 내용 반영

:so % <cr> 

4. 플러그인 설치

:PlugInstall <cr>

샘플 리스트

사용 가능한 샘플 리스트는 다음 파일에 있다. (또는 Cheatsheet 참조)
~/.vim/plugged/vim-react-snippets/UltiSnips/javascript.snippets

사용하기
기본적으로 트리거를 입력후 탭키로 변환한다. (vim-react-snippets 의 동영상 참조)
입력 포인트가 여러 곳이 있을 때, 이동은 <c-j> 와 <c-k> 로 한다. 

입력 예

1) import { Component } from 'react';
트리거 정의
--------------------------------------------------------------------------------
snippet impn "import { nested } from" b
import { $1 } from '$2'
endsnippet
--------------------------------------------------------------------------------
입력
impn <tab> Component <c-j> react <c-j> ;

2) import React from 'react';
트리거 정의
--------------------------------------------------------------------------------
snippet imp "import package that converts from camelCase or PascalCase to kebab-cased" b
import $1 from '$2`!p snip.rv=lowerdash(t[1])`'
endsnippet
--------------------------------------------------------------------------------
입력
imp <tab> React <c-j> <c-j> ;

2022년 6월 22일 수요일

conda 설치

다운로드

wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh


대화형 설치는

bash Miniforge3-Linux-x86_64.sh


배치모드 설치는

bash Miniforge3-Linux-x86_64.sh -b -p ~/.local/miniforge3
~/.local/miniforge3/bin/conda init


로그인할 때 비활성화 설정

~/.local/miniforge3/bin/conda config --set auto_activate_base false


# 다시 로그인 후에는 PATH 에 잡혀서 경로 없이 conda 만 사용

우분투 표준 폴더 이름 언어 변경

우분투 설치시 설치 언어를 한글로 하면 한국어 사용 환경으로 만들어 주니 편하지만

표준 폴더(다운로드, 바탕화면, 사진 등) 의 이름도 한글로 되어 명령어 사용시 불편하다.

표준 폴더 이름을 영어로 바꾸려면 다음 명령어를 사용한다.

LANG=C xdg-user-dirs-gtk-update


그런데 팝업에도 써 있지만 디렉토리 안의 내용은 옮겨주지 않는다. (빈 디렉토리는 삭제해 주는 것 같다.)

다음과 같이 명령어를 추가하면 옮기는 작업도 같이 한다.

LANG=C xdg-user-dirs-gtk-update |
while read line; do
  from="$(echo $line | cut -d' ' -f5)"
  to="$(echo $line | cut -d' ' -f7)"
  mv "$from"/* "$to/" 2>/dev/null
  rmdir "$from" 2>/dev/null
done


참고로 다시 한글 이름으로 바꾸려면

LANG=C xdg-user-dirs-gtk-update

2022년 6월 15일 수요일

포터블 윈도우 11 디스크 만들기

https://www.tomshardware.com/how-to/create-portable-windows-11-disk 를 따라한다.

1. Windows 11 iso  다운로드

2. rufus-3.18p.exe 다운로드 및 실행

3. 장치에 외장 드라이브가 보이지 않는 경우
고급 드라이브 속성 표시 > [v] USB 하드 드라이브 목록

4. 장치에서 [연결한 USB 드라이브] 선택

5. 부트 유형의 선택에서 다운로드한 Windows 11 iso 파일 선택

6. 이미지 옵션에서 [Windows To Go] 선택

7. 시작

8. 버전 선택
설치할 Windows 버전을 선택하십시오. > [v] Windows 11 Pro

9. 전부 확인 선택

10. 재 부팅시, 부팅 옵션에서 Windows 11 을 설치한 드라이브 선택

11. 나머지 설정 작업 진행

2022년 6월 11일 토요일

Thinkpad E320 에 윈도우10 설치

Thinkpad E320 에 윈도우10 을 설치 사용 중 발생한 문제들 

1. 부팅시 멈춰버린다

검색해보면 ;부팅시간이 길다'가 있는데 내 경우는 부팅이 안된다.
다음과 같이 수정

부팅시 F1 으로 바이오스 진입 > Config > Display >
Graphics Device [Integrated Graphics]
OS Detection for Switchable Graphics [Disabled]


윈도우10 설치하고 최신으로 업데이트 한다.
버전 Windows 10 Pro 21H2


2. 최대 해상도가 1024x768 

9.17.10.4459 버전의 Intel HD Graphics 3000 드라이버 설치

참고
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=keatom01&logNo=221226123663


3. Wifi 공유기가 안보임

다른 공유기는 보이는데 내 공유기만 안보임

검색 > 장치 관리자 > 네트워크 어댑터 >
1x1 11bgn Wireless LAN PCI Express Half Mini Card Adapter 오른클릭 >
드라이버 업데이트 > 내 컴퓨터에서 드라이버 찾아보기(R) >
컴퓨터의 사용 가능한 드라이버 목록에서 직접 선택(L) >
1x1 11b/g/n Wireless LAN PCI Express Half Mini Card Adapter

다음과 같이 두 개가 있는데 둘 중 하나를 선택하면 된다.
1x1 11b/g/n Wireless LAN PCI Express Half Mini Card Adapter
1x1 11bgn Wireless LAN PCI Express Half Mini Card Adapter

2022년 2월 11일 금요일

OSMC(Kodi) 에서 드라이브 옵션 지우기

OSMC(Kodi 19.3) 에 USB 외장 하드를 붙이면 파일 메뉴에 자동으로 드라이브 옵션이 생성된다.
예) 비디오 > 파일 >
1.82 TB 드라이브
Auto-mounted drives

이전 버전에서는 외장 하드의 일부 디렉토리만 옵션에 추가하여 사용하고 있었는데
이 버전에서는 드라이브 옵션이 자동으로 추가되어 모든 디렉토리가 다 보이는 통에 곤란해졌다.

자동으로 생성되는 드라이브 옵션을 없애도록 하겠다.
1. USB 외장 하드를 연결하여 이름을 확인한다.
비디오 > 파일 > Auto-mounted drives > 표시되는 이름
또는 터미널에서 ls /media
이 경우는 A2346FB8346F8E5B

2. advancedsettings.xml 파일에 표시 예외 등록
예외 등록 패턴은 '/media/<2에서 찾은 이름>/$' 이 된다. 마지막의 $ 가 중요.
기본적으로는 이 파일이 없으니 생성한다.
cat << EOF > ~/.kodi/userdata/advancedsettings.xml
<advancedsettings version="1.0">
    <video>
        <excludefromlisting>
            <regexp>/media/A2346FB8346F8E5B/$</regexp>
        </excludefromlisting>
    </video>
    <audio>
        <excludefromlisting>
            <regexp>/media/A2346FB8346F8E5B/$</regexp>
        </excludefromlisting>
    </audio>
    <pictureexcludes>
        <regexp>/media/A2346FB8346F8E5B/$</regexp>
    </pictureexcludes>
</advancedsettings>
EOF

3. 게임 메뉴 삭제
안타깝게도 3의 설정은 비디오, 오디오, 사진에 대해서만 유효하다.
제어할 수 없는 게임은 메인 메뉴에서 지우기로 했다.
설정 > 인터페이스 > 스킨 > 스킨 설정 > 일반
Enable main menu customization > Skin shortcuts 애드온 설치
Customize main menu > 게임 > Hide [v]

4. 재시작
sudo systemctl restart mediacenter

2022년 1월 29일 토요일

sed 모음집


--------------------------------------------------------------------------------
# rstrip, 줄 끝에 있는 공백 없애기
sed 's/\s\+$//'

# dos2unix
sed 's/\r$//'

# unix2dos
sed 's/$/\r/'

# 빈 줄 여러 개를 하나로 합치기
sed '/^$/N; /^\n$/D'

# 마지막 줄이 빈 줄인 경우 삭제
sed '${/^$/d}'

# 모든 줄을 한 줄로 합치기
sed -n 'H; ${x;s/\n\+/ /g;p}'

# 특정 줄 다음 줄에 명령어(치환)
sed '/패턴/{n; s/치환/}'

# 특정 줄 다음 다음 줄에 명령어(치환)
sed '/패턴/{n;n; s/치환/}'
--------------------------------------------------------------------------------
https://edoras.sdsu.edu/doc/sed-oneliners.html