X96 Air P4 / CoreELEC Docker ubuntu systemd
안녕하세요? 일단은 하기와 같이 2개가 필요할 것 같습니다.
일반적인 환경에서 사용할 수 있는 우분투 컨테이너 / HA 이렇게 필요하겠네요.
그러면 일단 우분투 컨테이너 부터 설치해 보겠습니다.
1. Docker 설치하기
CoreELEC 기본 스킨에서 설정으로 이동합니다.
다음으로 애드온으로 이동하여 CoreELEC Addon 을 누릅니다.
하기를 선택하여 설치합니다.
2. SSH 서비스 활성화 하기
설정 --> CoreELEC 로 이동하여 SSH 서비스를 활성화 하고 비밀번호는 그냥 그대로 둡니다.
그리고 아이피 정보를 확인합니다.
원하시는 프로그램으로 연결합니다.
아이피 주소 / 아이디 root / 비번 coreelec / 포트 22
연결이 되었습니다.
3. SSH 포트 변경하기
CoreELEC의 구조가 특이해서 /usr/lib/systemd 폴더와 /storage/.config/system.d 를 사용합니다.
/storage/.config/service/ssh.conf 파일을 변경하여도 원복되는 효과가 있기 때문에 중복 service 를 등록하여 오버라이드 하도록 하겠습니다.
CoreELEC:~ # cd /usr/lib/systemd/system CoreELEC:/usr/lib/systemd/system # cp sshd.service /storage/.config/system.d/ CoreELEC:/usr/lib/systemd/system # vi /storage/.config/system.d/sshd.service [Unit] Description=OpenSSH server daemon After=network.target ConditionKernelCommandLine=|ssh ConditionPathExists=|/storage/.cache/services/sshd.conf [Service] Restart=on-failure EnvironmentFile=-/storage/.cache/services/sshd.conf ExecStartPre=-/bin/sh -c 'mkdir -p /storage/.cache/ssh' ExecStartPre=/usr/bin/ssh-keygen -A ExecStartPre=-/bin/sh -c 'chmod 600 /storage/.cache/ssh/ssh_host_*' ExecStartPre=-/bin/sh -c 'chmod 644 /storage/.cache/ssh/ssh_host_*.pub' ExecStart=/usr/sbin/sshd -D $SSH_ARGS -p 2222 ExecReload=/bin/kill -HUP $MAINPID TimeoutStopSec=1s RestartSec=2 StartLimitInterval=0 [Install] WantedBy=multi-user.target |
상기처럼 저장하고 reboot 해봅니다. 포트가 적용되었는지 체크합니다.
4. systemd 가 가능한 우분투 docker 컨테이너 설치하기
하기 명령으로 진행합니다.
명령어 중에, 디렉터리 바인드의 경우, storage는 코디 설정 저장소, /var/media 는 USB 미디어 마운트 경로입니다.
특히 /var/media 의 경우 rshared 옵션을 넣어주어야합니다.
CoreELEC:~ # docker run -d -it --name ubuntu --restart always \ > --net host --privileged --tmpfs /tmp --tmpfs /run --tmpfs /run/lock \ > -v /sys/fs/cgroup:/sys/fs/cgroup:ro \ > -v /storage:/storage -v /var/media:/media:rshared \ > jrei/systemd-ubuntu:18.04 04f8ec0ecff8cda36e442e9e600f0f4c06acab9c07244bb33739b12ebfc5ce27 # 정상 동작 중인지 확인합니다. CoreELEC:~ # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 04f8ec0ecff8 jrei/systemd-ubuntu:18.04 "/lib/systemd/systemd" 31 seconds ago Up 30 seconds ubuntu # 환경으로 진입합니다. CoreELEC:~ # docker exec -it ubuntu /bin/bash root@CoreELEC:/# ls bin dev home media opt root sbin storage tmp var boot etc lib mnt proc run srv sys usr root@CoreELEC:/# cd ~ root@CoreELEC:~# |
5. 우분투 docker 간단 설정하기
하기와 같이 간단 설정합니다.
# 패키지 리스트 업데이트 root@CoreELEC:~# apt update # openssh-server 와 기초 패키지를 설치합니다. root@CoreELEC:~# apt install wget curl sudo tzdata locales dialog vim htop openssh-server language-pack-en Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: ca-certificates krb5-locales libasn1-8-heimdal libbsd0 libcurl4 libedit2 libgpm2 libgssapi-krb5-2 libgssapi3-heimdal libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhx509-5-heimdal libk5crypto3 libkeyutils1 libkrb5-26-heimdal libkrb5-3 libkrb5support0 libldap-2.4-2 libldap-common libnghttp2-14 libpsl5 libpython3.6 libroken18-heimdal librtmp1 libsasl2-2 libsasl2-modules libsasl2-modules-db libssl1.0.0 libwind0-heimdal libwrap0 libx11-6 libx11-data libxau6 libxcb1 libxdmcp6 libxext6 libxmuu1 multiarch-support ncurses-term openssh-client openssh-sftp-server openssl publicsuffix python3-certifi python3-chardet python3-idna python3-pkg-resources python3-requests python3-six python3-urllib3 ssh-import-id ucf vim-common vim-runtime xauth xxd Suggested packages: lsof strace gpm krb5-doc krb5-user libsasl2-modules-gssapi-mit | libsasl2-modules-gssapi-heimdal libsasl2-modules-ldap libsasl2-modules-otp libsasl2-modules-sql keychain libpam-ssh monkeysphere ssh-askpass molly-guard rssh ufw python3-setuptools python3-cryptography python3-openssl python3-socks ctags vim-doc vim-scripts The following NEW packages will be installed: ca-certificates curl dialog htop krb5-locales libasn1-8-heimdal libbsd0 libcurl4 libedit2 libgpm2 libgssapi-krb5-2 libgssapi3-heimdal libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhx509-5-heimdal libk5crypto3 libkeyutils1 libkrb5-26-heimdal libkrb5-3 libkrb5support0 libldap-2.4-2 libldap-common libnghttp2-14 libpsl5 libpython3.6 libroken18-heimdal librtmp1 libsasl2-2 libsasl2-modules libsasl2-modules-db libssl1.0.0 libwind0-heimdal libwrap0 libx11-6 libx11-data libxau6 libxcb1 libxdmcp6 libxext6 libxmuu1 locales multiarch-support ncurses-term openssh-client openssh-server openssh-sftp-server openssl publicsuffix python3-certifi python3-chardet python3-idna python3-pkg-resources python3-requests python3-six python3-urllib3 ssh-import-id sudo tzdata ucf vim vim-common vim-runtime wget xauth xxd 0 upgraded, 66 newly installed, 0 to remove and 0 not upgraded. Need to get 18.6 MB of archives. After this operation, 79.6 MB of additional disk space will be used. Do you want to continue? [Y/n] |
다음으로 SSH 서버 설정을 변경하고 root 패스워드를 설정합니다.
root@CoreELEC:/# vi /etc/ssh/sshd_config PermitRootLogin yes PasswordAuthentication yes root@CoreELEC:/# passwd root Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully root@CoreELEC:/# systemctl restart ssh.service |
컨테이너 내부에 설정한 우분투로 진입해 봅니다.
다음으로 하기와 같이 로케일과 타임존을 설정합니다.
root@CoreELEC:~# dpkg-reconfigure locales |
root@CoreELEC:~# dpkg-reconfigure tzdata |
6. 활용 용도
기본적인 간단하게 설치되는 패키지들을 설치할 것입니다. 기능이 없는 CoreELEC 쉘이 아닌 여기서 작업할 예정입니다.
추가적으로 USB 마운트는 CoreELEC에서 마운트 해 주면 하기와 같이 잘 연동됩니다.
이전에 컨테이너 내부에서 파일을 써도 밖에서는 보이지 않는 특이한 증상은 rshared 마운트로 해결할 수 있습니다.
root@CoreELEC:~# df -h Filesystem Size Used Avail Use% Mounted on overlay 58G 576M 57G 1% / tmpfs 64M 0 64M 0% /dev shm 64M 0 64M 0% /dev/shm tmpfs 1.9G 2.3M 1.9G 1% /media /dev/mmcblk1p2 58G 576M 57G 1% /storage tmpfs 1.9G 0 1.9G 0% /tmp tmpfs 1.9G 8.1M 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /run/lock tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup tmpfs 384M 0 384M 0% /run/user/0 /dev/sda1 3.8G 104M 3.7G 3% /media/sda1-usb-MXT-USB_Storage_ |
이후에 하기를 진행하겠습니다.
1) HomeAssistant Core 설치
HA Supervised 가 정식 지원되지 않는 장비에는 설치하기가 애매합니다. 물론 억지로 설치가 가능합니다만, 저는 Core 만으로도 무궁무진하게 사용이 가능하여, 꼭 무겁게 설치를 하지 않는 편입니다.
2) MQTT 설치
Ubuntu Docker 에 설치해보겠습니다.
3) Zigbee2Mqtt 설치
CC2531 / CC2538 등으로 연동할 수 있도록 설치해 보겠습니다.
4) 내장 EMMC 에 설치하기
USB로 하면 속도가 떨어지기 때문에 내장 EMMC 에 설치해 보겠습니다.
5) 이 셋탑 8K 60FPS 정상 재생되는지?
테스트 예정입니다. 셋탑 박스에 적혀 있어서 한번 검증을 해야할 것 같습니다.
감사합니다.