command | while read line; do echo "$line" | xclip -selection clipboard; read -u1 -p "$line"; done |
2023년 4월 16일 일요일
명령어 결과를 한 줄씩 클릭보드에 복사
2023년 3월 24일 금요일
터미널에서 프로그래스바 표시하기
bash의 경우: pv
설치: sudo apt install pv 또는 conda install pv
사용 예:
docker save image | gzip | pv | ssh remote docker load |
python의 경우: tqdm
설치: pip install tqdm
사용 예:
>>> import time >>> from tqdm import tqdm >>> for i in tqdm(range(101), total=100): ... time.sleep(0.1) |
2023년 3월 13일 월요일
도커로 webOS 빌드
webOS OSE 를 빌드하려는데 빌드를 위한 패키지는 설치하고 싶지 않아서 docker 로 빌드했다.
https://github.com/shallweeee/build-webos
600MB 짜리 (압축풀면 2.2GB) 이미지 하나 빌드하는데 하루 종일 걸린 것 같다.
에러가 나서 여러 번 끊기긴 했는데, 다시하면 문제 없이 실행되는게
아무래도 다 메모리 사용량이 커서였던 것 같다.
동시 실행 갯수 옵션을 줄여가며 다시 돌리다 보니 완성은 됐다.
(너무 줄여서 더 걸린 것 같기도 하다)
디스크 사용량은 몇 가지 큰 디렉토리만 보면 다음과 같다. (너무 크다.)
230G ./BUILD 30G ./downloads 12G ./sstate-cache |
이미지 쓰기 에 따라 SD 카드에 이미지를 쓴다.
부팅 중의 화면이 다른 라즈베리파이 배포판이랑 좀 다르긴 한데 어찌됐든 화면이 뜨긴 했다.
그. 런. 데... 뭐가 너무 없다. (그냥 개발 환경인듯.)
osmc와 비교하면 이미지 크기는 굉장히 큰데 할 수 있는게 거의 없다.
(LG TV 가 아니라서인지) TV 리모컨도 안먹고, 설정도 언어와 Wifi 정도(?) 밖에 없다.
마우스나 키보드 둘 다 필요하고 (어느 하나만으로는 조작을 못하겠다.)
음성 명령은 되는듯 보이나 대응 리모컨이 없어서 못해봤다.
그나마 Youtube 앱을 전체화면 모드로 돌리는 것은 괜찮은듯 하다.
디바이스에 접속은 ares cli 를 쓰면 되는것 같았는데,
그냥 ssh 만으로도 접속은 잘 됐다. 사용자는 root 고 암호는 없다.
혹시나 해서 nginx 로 sstate-cache 서버를 만들어서 새로 빌드를 해봤는데, 이건 광속이다.
10734 개의 태스크 중 마지막 300 여개 정도 빼고는 거의 다운로드만 일어난 것같이 빨리 처리됐다.
나머지는 컴파일을 하기도 해서 시간이 좀 걸렸다.
다른 서버에 nginx 를 설치하고 sstate-cache 를 위한 설정을 추가 및 restart
# /etc/nginx/nginx.conf
http {
. . .
server {
listen 34567;
server_name sstate.webos.ose;
root /yocto/webOS/sstate-cache;
autoindex on;
}
} |
sstate-cache를 서버에 복사
$ scp -r sstate-cache <서버이름>:<포트>/<sstate-cache 까지의 경로> |
webOS 빌드 설정에 sstate-cache 설정 추가 및 빌드
$ ./scripts/docksh ./mcf -b8 -p8 --sstatemirror http://192.168.0.12:34567 raspberrypi4-64 $ ./scripts/docksh bitbake webos-image |
2023년 1월 24일 화요일
qemu + 윈도우10 guest 설치
환경
Host: Ubuntu 22.04
Guest: Windows 10
1. 가상 머신 생성
cpu 와 메모리는 사용하는 PC 성능에 맞게 설정한다.
$ sudo apt update $ sudo apt install qemu-system-x86 virtinst virt-viewer $ virt-install --name=win10 --cpu model=host-passthrough \ --vcpus sockets=1,dies=1,cores=2,threads=2 --ram=8192 --hvm --network network:default \ --disk path=/path/to/win10.qcow2,size=32 --cdrom=/path/to/Windows.iso --osinfo name=win10 |
설명
--name=win10 # 가상머신 이름
--cpu model=host-passthrough # 호스트 CPU 구성 복사.
--vcpus sockets=1,dies=1,cores=2,threads=2 # cpu 4개 할당. 윈도우에선 cores 와 threads 만
# 사용가능한 듯
--ram=8192 # 메모리 8GB 할당
--hvm # 풀가상화
--network network:default # 네트워크는 기본 사용
--disk path=/path/to/win10.qcow2,size=32 # 32GB 크기의 win10.qcow2 디스크 이미지 할당
--cdrom=/path/to/Windows.iso # 윈도우10 설치 이미지 사용
--osinfo name=win10 # 게스트 OS는 윈도우10
|
2. 윈도우10 설치
3. 윈도우 확장팩 설치
SPICE Guest Tools 를 설치한다. (클립보드 공유, 그래픽 드라이버 등)
4. 호스트와 공유 폴더 설정
몇가지 방법이 있는데 제일 간단(?)하고 안정적인 삼바를 통한 공유로 했다.
공유할 필요가 없거나 다른 방법이 있으면 안해도 된다.
가상머신을 사용할 때마다 초기화할거라 (6. 스냅샷 사용 참조) 데이터 보존용으로 설정했다.
4.1 호스트의 삼바 서버
smb.conf 파일에서 Share Definitions 줄을 기준으로 아래를 삭제하고 다음 공유 설정을 추가했다.
hosts deny 는 가상머신만 허용하고 있는데 다른 용도로도 사용한다면 안쓰는게 좋다.
사용자는 사용하는 계정으로 바꿔준다.
$ sudo apt install samba $ sudo vi /etc/samba/smb.conf . . . # hosts deny = all except 192.168.122. #======================= Share Definitions ======================= [host] path = /home/사용자/vmm/share valid users = 사용자 guest ok = no read only = no browseable = no create mask = 0700 security mask = 0700 |
윈도우 탐색기에서 네트워크 드라이브로 \\192.168.122.1\host 를 등록한다.
4.2 qemu 의 built-in 삼바 서버
https://www.ashbysoft.com/posts/libvirt-qemu-samba/ 를 따라 해봤는데 실패했다.
4.3 Remmina
원격데스크탑으로 연결하는 방식으로 파일 공유 자체는 굉장히 쉽다.
다른 PC에 연결할 때는 괜찮은데, 같은 PC 의 가상환경에 연결할 때는 virt-viewer 가 더 좋은 것 같다.
$ sudo apt install remmina $ remmina |
4.4 Cockpit
https://dausruddin.com/how-to-enable-clipboard-and-folder-sharing-in-qemu-kvm-on-windows-guest/#Solution_Folder_sharing
Cockpit Web-UI 를 통해서 접근해야만 동작하는것 같다.
그리고 어차피 spice-webdavd 를 설치하고 채널을 추가하면 virt-viewer 만으로도 공유는 가능하다.
4.5 sshfs
(몇 개월 전에 해본 기억으로) 리눅스에서는 쉬운데 윈도우에서는 설치/설정이 좀 까다롭고 동작이 깔끔하지 않았다
4.6 Virtio-FS
시도해보지는 않았다.
5. 사용
$ virsh start win10 # 가상머신 win10 기동 $ virt-viewer win10 & # 가상머신 win10 에 연결 $ virsh edit win10 # 가상머신 설정 변경 # cdrom 을 검색해서 <source file='...'/> 줄을 삭제하면 재부팅시 cdrom 이 빈상태가 된다. |
GUI 로 조작하려면 virt-manager 를 설치한다.
$ sudo apt install virt-manager $ virt-manager |
6. 스냅샷 사용
그냥, 가상머신을 사용하려는게 목적이면 이건 안해도 된다.
가상머신을 기동할 때마다 초기 상태로 돌려서 사용하고자 한다.
이미지를 백업해 두고 매번 백업본을 복사해서 쓰는 것도 방법이지만 파일 크기가 큰 관계로 스냅샷 기능을 사용한다.
VHD 의 상속이나 도커의 레이어에 해당한다고 보면 될 것 같다.
원본 이미지는 읽기 전용으로 두고 변경되는 부분만 스냅샷 이미지에 저장한다.
자세한 설명 참고: https://kashyapc.fedorapeople.org/virt/lc-2012/snapshots-handout.html
6.1 윈도우 최적화
매번 같은 일을 하지 않도록 필요한 프로그램을 설치하고 설정해둔다.
6.2 베이스 이미지 크기 줄이기
꼭 필요하지는 않다
virtualbox 와 달리 처음부터 전체 디스크 크기를 할당하고 쓰는 것 같다.
더 커질일이 없으니 이미지 크기를 줄여 놓는다.
$ sudo chown $USER:$USER win10.qcow2 # root 권한으로 생성되었다 $ qemu-img convert -p -O qcow2 win10.qcow2 win10.qcow2.orig $ ls -lh # win10.qcow2.orig 는 실제 사용량만큼 작아져 있다. |
6.3 스냅샷 생성
$ qemu-img create -F qcow2 -b win10.qcow2.orig -f qcow2 win10.qcow2 |
생성하지 않고 시작하면 이전 상태가 계속 된다. 필요에 따라 나눠쓰면 되겠다.
https://linuxstory1.tistory.com/entry/%ED%85%8D%EC%8A%A4%ED%8A%B8-%ED%99%98%EA%B2%BD%EC%97%90%EC%84%9C-%EA%B0%80%EC%83%81-%EB%A8%B8%EC%8B%A0-%EA%B4%80%EB%A6%AC%ED%95%98%EA%B8%B0
https://www.spice-space.org/download.html
https://www.ashbysoft.com/posts/libvirt-qemu-samba/
https://dausruddin.com/how-to-enable-clipboard-and-folder-sharing-in-qemu-kvm-on-windows-guest/
https://kashyapc.fedorapeople.org/virt/lc-2012/snapshots-handout.html
2023년 1월 10일 화요일
vim 에서 unicode 입력
vim 에서 π 를 입력해 본다.
방법 1. 검색 + 복사/붙여넣기
웹브라우저에서 unicode pi 등으로 검색
https://www.compart.com/en/unicode/U+03C0
입력: 페이지에서 π 를 복사해서 vim 에 붙여넣기
방법 2. 검색 + 입력
1과 마찬가지로 검색
입력: 입력 모드 > Ctrl + V > u03c0
방법 3. dig
:dig
p* π 960
입력: q 로 죵료후, 입력 모드 > Ctrl + K > p* (두글자 단축키, 위 결과의 왼쪽 첫번째)
방법 4. unicode.vim
'chrisbra/unicode.vim' 플러그인 설치
:UnicodeSearch! greek small
28 π U+03C0 Dec:000960 GREEK SMALL LETTER PI (Ll) (p*) π
입력1: q 로 죵료후, 입력 모드 > Ctrl + V > u03c0 (유니코드, 위 결과의 왼쪽 세번째)
입력2: q 로 죵료후, 입력 모드 > Ctrl + K > p* (두글자 단축키, 위 결과의 오른쪽 두번째)
입력3: 스페이스(여러번) 로 리스트 끝까지 이동 > 번호를 입력하라는 물음에 28 입력 (위 결과의 왼쪽 첫번째)
참고:
* 일반모드에서 ga 를 누르면 커서아래 문자의 ascii 이름을 표시
* unicode.vim 사용시 :UnicodeName 을 입력하면 커서아래 문자의 유니코드 이름을 표시 (방법 4의 출력)
* u03c0 (유니코드, UTF-16 Encoding) 를 입력해도 encoding=utf-8 인 경우 utf-8 코드로 입력
2022년 12월 30일 금요일
Arduino 에서 LCD 사용하기
테스트 환경
- 호스트 ubuntu 22.04
- Arduino Uno 보드
- 1602 LCD I2C Interface
- 아두이노 IDE 2.0.3 리눅스 64bit
arduino-ide 설치
다운로드
- 아두이노 다운로드 페이지 에서 리눅스용 zip 파일 다운로드
- 아이콘 이미지는 icon-icons 에서 ICO, 128px 선택 후 다운로드
- .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 를 오른쪽 클릭 > 즐겨찾기에 추가 |
실행 및 설정
- 즐겨찾기에서 아두이노 아이콘 클릭
- File > Preferences... > Language 를 한국어로 변경 > OK > (자동으로 재로딩)
- 보드를 USB 케이블로 PC 에 연결
- 보드 선택에서 Arduino Uno 선택
회로 구성
그림도 잘 그린다.
Arduino Uno I2C 1602 LCD _______________ _______________ | || | | GND ----|---- GND | | +5V ----|---- VCC | | A4 -----|---- SDA | | A5 -----|---- SCL | |_______________|________________| |
코드 작성 및 실행
실행
$ ls -l /dev/ttyACM0 crw-rw---- 1 root dialout 166, 0 12월 31 10:53 /dev/ttyACM0 $ sudo usermod -aG dialout $USER # 다시 로그인 해야한다. (터미널이나 IDE 를 다시 띄우는게 아니고, 전원 끄기/로그아웃 > 로그아웃) |
문제
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 |
$ sudo usermod -a -G audio,video,input,dialout,plugdev,netdev,users,cdrom,tty $USER |
소리 출력이 오디오잭으로 되어 있어 HDMI 로 바꿔줬다.
그 밖의 설정은 앞선 설치 기록들과 같다
개인적으로는 이전보다 화면이 더 밝고 화면감이 더 좋은 것 같다.