Маған кеңседегі бірнеше экрандарда мониторингі бар бақылау тақтасын көрсету қажет болды. Бірнеше ескі Raspberry Pi Model B + және ресурстардың шексіз саны бар гипервизор бар.
Шамасы, Raspberry Pi Model B+ браузерді үнемі жұмыс істеп тұруға және ондағы көптеген графиканы көрсетуге жеткілікті кездейсоқтыққа ие емес, соның салдарынан бет ішінара ақаулы және жиі бұзылады.
Мен сіздермен бөліскім келетін өте қарапайым және талғампаз шешім болды.
Өздеріңіз білетіндей, барлық таңқурайда жеткілікті қуатты бейне процессоры бар, ол аппараттық бейнені декодтау үшін тамаша. Сонымен, басқа жерде бақылау тақтасы бар шолғышты іске қосу және рендерленген суреті бар дайын ағынды таңқурайға жіберу идеясы келді.
Сонымен қатар, бұл басқаруды жеңілдетуі керек, өйткені бұл жағдайда барлық конфигурация жаңарту және сақтық көшірме жасау оңайырақ бір виртуалды машинада орындалады.
Айтылды істелді.
Сервер бөлігі
Дайын қолданамыз
Біз жаңа виртуалды машинаны орналастырамыз және ең алдымен оны оған орнатамыз
apt-get update
apt-get install -y xserver-xorg nodm fluxbox
sed -i 's/^NODM_USER=.*/NODM_USER=ubuntu/' /etc/default/nodm
Біз сондай-ақ Xorg үшін конфигурацияны қолданамыз
cat > /etc/X11/xorg.conf <<EOT
Section "Device"
Identifier "device"
Driver "vesa"
EndSection
Section "Screen"
Identifier "screen"
Device "device"
Monitor "monitor"
DefaultDepth 16
SubSection "Display"
Modes "1920x1080" "1280x1024" "1024x768" "800x600"
EndSubSection
EndSection
Section "Monitor"
Identifier "monitor"
HorizSync 20.0 - 50.0
VertRefresh 40.0 - 80.0
Option "DPMS"
EndSection
Section "ServerLayout"
Identifier "layout"
Screen "screen"
EndSection
EOT
systemctl restart nodm
Енді біз Firefox-ты орнатамыз, оны жүйелік қызмет ретінде іске қосамыз, сондықтан бір нәрсе үшін оған бірлік файлын жазамыз:
apt-get install -y firefox xdotool
cat > /etc/systemd/system/firefox.service <<EOT
[Unit]
Description=Firefox
After=network.target
[Service]
Restart=always
User=ubuntu
Environment="DISPLAY=:0"
Environment="XAUTHORITY=/home/ubuntu/.Xauthority"
ExecStart=/usr/bin/firefox -url 'http://example.org/mydashboard'
ExecStartPost=/usr/bin/xdotool search --sync --onlyvisible --class "Firefox" windowactivate key F11
[Install]
WantedBy=graphical.target
EOT
systemctl enable firefox
systemctl start firefox
Firefox-ты толық экран режимінде бірден іске қосу үшін бізге Xdotool қажет.
Параметрді пайдалану -url
шолғыш іске қосылғанда ол автоматты түрде ашылатындай кез келген бетті көрсетуге болады.
Бұл кезеңде біздің дүңгіршек дайын, бірақ енді суретті желі арқылы басқа мониторлар мен құрылғыларға экспорттау керек. Ол үшін біз мүмкіндіктерді пайдаланамыз
Ол үшін бізге екі нәрсе керек:
apt-get install -y make gcc ffmpeg
cd /tmp/
wget https://github.com/ccrisan/streameye/archive/master.tar.gz
tar xvf master.tar.gz
cd streameye-master/
make
make install
cat > /etc/systemd/system/streameye.service <<EOT
[Unit]
Description=streamEye
After=network.target
[Service]
Restart=always
User=ubuntu
Environment="DISPLAY=:0"
Environment="XAUTHORITY=/home/ubuntu/.Xauthority"
ExecStart=/bin/sh -c 'ffmpeg -f x11grab -s 1920x1080 -i :0 -r 1 -f mjpeg -q:v 5 - 2>/dev/null | streameye'
[Install]
WantedBy=graphical.target
EOT
systemctl enable streameye
systemctl start streameye
Біздің сурет жылдам жаңартуды қажет етпейтіндіктен, мен жаңарту жылдамдығын көрсеттім: секундына 1 кадр (параметр -r 1
) және қысу сапасы: 5 (параметр -q:v 5
)
Енді баруға тырысайық
Клиент бөлігі
Мұнда бәрі оңай, мен айтқанымдай, біз Raspberry Pi B + моделін қолданамыз.
Ең алдымен, оны орнатамыз
Біз сондай-ақ бейне чипке көбірек жад бөлуіміз керек, ол үшін біз өңдейміз /boot/config.txt
gpu_mem=128
Жаңа жүйемізді жүктеп алайық және pacman кілттерін баптандыруды, орнатуды ұмытпаңыз
pacman -Sy omxplayer
Бір қызығы, OMXPlayer Xсіз жұмыс істей алады, сондықтан бізге тек ол үшін бірлік файлын жазып, іске қосу керек:
cat > /etc/systemd/system/omxplayer.service <<EOT
[Unit]
Description=OMXPlayer
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
Restart=always
ExecStart=/usr/bin/omxplayer -r --live -b http://your-vm:8080/ --aspect-mode full
[Install]
WantedBy=multi-user.target
EOT
systemctl enable omxplayer
systemctl start omxplayer
Параметр ретінде -b http://your-vm:8080/
біз серверден url жібереміз.
Барлығы, біздің сервердің суреті қосылған экранда бірден пайда болуы керек. Қандай да бір мәселе туындаған жағдайда ағын автоматты түрде қайта іске қосылады және клиенттер оған қайта қосылады.
Бонус ретінде алынған суретті кеңседегі барлық компьютерлерге экран сақтағыш ретінде орнатуға болады. Бұл үшін сізге қажет болады
mode: one
selected: 0
programs:
"Monitoring Screen" mpv --really-quiet --no-audio --fs
--loop=inf --no-stop-screensaver
--wid=$XSCREENSAVER_WINDOW
http://your-vm:8080/ n
maze -root n
electricsheep --root 1 n
Енді сіздің әріптестеріңіз өте қуанышты болады 🙂
Ақпарат көзі: www.habr.com