서버/리눅스 서버

X96 Air P4 / CoreELEC Docker ubuntu systemd

ㅋㅋ잠자 2021. 8. 2. 19:30
반응형

안녕하세요? 일단은 하기와 같이 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 정상 재생되는지?

테스트 예정입니다. 셋탑 박스에 적혀 있어서 한번 검증을 해야할 것 같습니다.

 

 

감사합니다.

반응형