Ես կարիք ունեի գրասենյակի մի քանի էկրանների վրա մոնիտորինգով վահանակ ցուցադրելու: Կան մի քանի հին Raspberry Pi Model B + և հիպերվիզոր՝ գրեթե անսահմանափակ քանակությամբ ռեսուրսներով:
Ըստ երևույթին, Raspberry Pi Model B+-ը չունի բավականաչափ պատահականություն, որպեսզի բրաուզերը անընդհատ աշխատի և դրանում շատ գրաֆիկա ներկայացնի, ինչի պատճառով էջը մասամբ խելագարված է և հաճախ խափանում է:
Բավականին պարզ և էլեգանտ լուծում կար, որով ուզում եմ կիսվել ձեզ հետ։
Ինչպես գիտեք, բոլոր Raspberries-ն ունեն բավականին հզոր վիդեո պրոցեսոր, որը հիանալի է ապարատային տեսանյութերի վերծանման համար: Այսպիսով, միտք ծագեց գործարկել բրաուզեր՝ վահանակով մեկ այլ տեղ, և պատրաստի հոսք փոխանցել ազնվամորիին:
Բացի այդ, սա պետք է ունենա պարզեցված կառավարում, քանի որ այս դեպքում բոլոր կոնֆիգուրացիան կկատարվի մեկ վիրտուալ մեքենայի վրա, որն ավելի հեշտ է թարմացնել և կրկնօրինակել:
Ոչ շուտ ասել, քան արվել:
Սերվերի մաս
Մենք օգտագործում ենք պատրաստ
Մենք տեղադրում ենք նոր վիրտուալ մեքենա և առաջին հերթին տեղադրում դրա վրա
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
Մեզ պետք է Xdotool, որպեսզի անմիջապես գործարկենք firefox-ը ամբողջ էկրանով ռեժիմում:
Օգտագործելով պարամետրը -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 Model 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
Այժմ ձեր գործընկերները շատ ուրախ կլինեն 🙂
Source: www.habr.com