ืกื˜ืจื™ื ืคืึทืจืฉื˜ืขืœืŸ ืฆื• ืงื™ื™ืคืœ ื“ืขื•ื•ื™ืกืขืก ืื™ื‘ืขืจ ื“ื™ ื ืขืฅ

ืกื˜ืจื™ื ืคืึทืจืฉื˜ืขืœืŸ ืฆื• ืงื™ื™ืคืœ ื“ืขื•ื•ื™ืกืขืก ืื™ื‘ืขืจ ื“ื™ ื ืขืฅ

ืื™ืš ื“ืืจืฃ ืฆื• ื•ื•ื™ื™ึทื–ืŸ ืึท ื“ืึทืฉื‘ืึธืจื“ ืžื™ื˜ ืžืึธื ื™ื˜ืึธืจื™ื ื’ ืื•ื™ืฃ ืขื˜ืœืขื›ืข ืกืงืจื™ื ื– ืื™ืŸ ื“ื™ ืึธืคื™ืก. ืžื™ืจ ื”ืึธื‘ืŸ ืขื˜ืœืขื›ืข ืึทืœื˜ Raspberry Pi Model B + ืื•ืŸ ืึท ื›ื™ื™ืคึผืขืจื•ื•ื™ื™ื–ืขืจ ืžื™ื˜ ืึท ื›ึผืžืขื˜ ืึทื ืœื™ืžืึทื˜ืึทื“ ืกื•ืžืข ืคื•ืŸ โ€‹โ€‹ืจืขืกื•ืจืกืŸ.

ืžืฉืžืขื•ืช ื“ื™ Raspberry Pi ืžืึธื“ืขืœ ื‘ + ื”ืื˜ ื ื™ืฉื˜ ื’ืขื ื•ื’ ืจืึทื ื“ืึทืžื ืึทืก ืฆื• ื”ืึทืœื˜ืŸ ื“ืขื ื‘ืœืขื˜ืขืจืขืจ ืงืขืกื™ื™ื“ืขืจ ืคืœื™ืกื ื“ื™ืง ืื•ืŸ ืžืึทื›ืŸ ืึท ื’ืจื•ื™ืก ืกื•ืžืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ื’ืจืึทืคื™ืงืก ืื™ืŸ ืขืก, ื•ื•ืึธืก ืื™ื– ื•ื•ืึธืก ืขืก ื›ืึทืคึผืึทื ื– ืึทื– ื“ืขืจ ื‘ืœืึทื˜ ืื™ื– ื˜ื™ื™ืœ ื’ืœื™ื˜ืฉื™ ืื•ืŸ ืึธืคื˜ ืงืจืึทืฉื™ื–.

ืื™ืš ื’ืขืคื•ื ืขืŸ ืึท ืคืขืจืœื™ ืคึผืฉื•ื˜ ืื•ืŸ ืขืœืขื’ืึทื ื˜ ืœื™ื™ื–ื•ื ื’, ื•ื•ืึธืก ืื™ืš ื•ื•ื™ืœืŸ ืฆื• ื˜ื™ื™ืœืŸ ืžื™ื˜ ืื™ืจ.

ื•ื•ื™ ืื™ืจ ื•ื•ื™ืกืŸ, ืึทืœืข ืจืึทื–ื‘ืขืจื™ื– ื”ืึธื‘ืŸ ืึท ืคืขืจืœื™ ืฉื˜ืึทืจืง ื•ื•ื™ื“ืขื ืคึผืจืึทืกืขืกืขืจ, ื•ื•ืึธืก ืื™ื– ื•ื™ืกื’ืขืฆื™ื™ื›ื ื˜ ืคึฟืึทืจ ื™ื™ึทื–ื ื•ื•ืึทืจื’ ื•ื•ื™ื“ืขื ื“ื™ืงืึธื•ื“ื™ื ื’. ื“ืขืจ ื’ืขื“ืึทื ืง ืื™ื– ื’ืขืงื•ืžืขืŸ ืฆื• ืงืึทื˜ืขืจ ืึท ื‘ืœืขื˜ืขืจืขืจ ืžื™ื˜ ืึท ื“ืึทืฉื‘ืึธืจื“ ืขืจื’ืขืฅ ืึทื ื“ืขืจืฉ, ืื•ืŸ ืึทืจื™ื‘ืขืจืคื™ืจืŸ ืึท ืคืึทืจื˜ื™ืง ื˜ื™ื™ึทืš ืžื™ื˜ ืึท ืจืขื ื“ืขืจื“ ื‘ื™ืœื“ ืฆื• ื“ื™ ืžืึทืœืขื ืข.

ืคึผืœื•ืก, ื“ืึธืก ื–ืึธืœ ื”ืึธื‘ืŸ ืกื™ืžืคึผืœืึทืคื™ื™ื“ ืคืึทืจื•ื•ืึทืœื˜ื•ื ื’, ื•ื•ื™ื™ึทืœ ืื™ืŸ ื“ืขื ืคืึทืœ ืึทืœืข ื“ื™ ืกืขื˜ืึทืคึผ ื•ื•ืึธืœื˜ ื–ื™ื™ืŸ ื“ื•ืจื›ื’ืขืงืึธื›ื˜ ืื•ื™ืฃ ืื™ื™ืŸ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ, ื•ื•ืึธืก ื•ื•ืึธืœื˜ ื–ื™ื™ืŸ ื’ืจื™ื ื’ืขืจ ืฆื• ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงืŸ ืื•ืŸ ื‘ืึทืงืึทืคึผ.

ื ื™ื˜ ื’ื™ื›ืขืจ ื’ืขื–ืื’ื˜ ื•ื•ื™ ื’ืขืฉืขืŸ.

ืกืขืจื•ื•ื™ืจืขืจ ื˜ื™ื™ืœ

ืžื™ืจ ื•ื•ืขืœืŸ ื ื•ืฆืŸ ื“ื™ ื’ืจื™ื™ื˜ ื•ื•ืึธืœืงืŸ ื‘ื™ืœื“ ืคึฟืึทืจ ื•ื‘ื•ื ื˜ื•. ืึธืŸ ืจื™ืงื•ื•ื™ื™ืจื™ื ื’ ื™ื ืกื˜ืึทืœื™ืจื•ื ื’, ืขืก ื›ึผื•ืœืœ ืึทืœืฅ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื’ืขืฉื•ื•ื™ื ื“ ืฆืขื•ื•ื™ืงืœืขืŸ ืึท ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ ืื•ืŸ ื•ื•ืึธืœืงืŸ-ื™ื ื™ื˜ ืฉื˜ื™ืฆืŸ ื”ืขืœืคึผืก ืฆื• ื’ืœื™ื™ืš ืฉื˜ืขืœืŸ ืึท ื ืขืฅ, ืœื™ื™ื’ืŸ ssh ืฉืœื™ืกืœืขืŸ ืื•ืŸ ื’ืขืฉื•ื•ื™ื ื“ ืฉื˜ืขืœืŸ ืขืก ืื™ืŸ ืึธืคึผืขืจืึทืฆื™ืข.

ืžื™ืจ ืฆืขื•ื•ื™ืงืœืขืŸ ืึท ื ื™ื™ึท ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ ืื•ืŸ ืขืจืฉื˜ืขืจ ืคื•ืŸ ืึทืœืข ื™ื ืกื˜ืึทืœื™ืจืŸ ืขืก ืื•ื™ืฃ ืขืก ืงืกืึธืจื’, ื ืึธื“ื ะธ ืคืœื•ืงืกื‘ืึธืงืก:

apt-get update
apt-get install -y xserver-xorg nodm fluxbox
sed -i 's/^NODM_USER=.*/NODM_USER=ubuntu/' /etc/default/nodm

ืžื™ืจ ื•ื•ืขืœืŸ ืื•ื™ืš ื ื•ืฆืŸ ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืคึฟืึทืจ Xorg ืฆื•ื’ืขืฉื˜ืขืœื˜ ืื•ื ื“ื– Diego Ongaro, ืึทื“ื™ื ื’ ื‘ืœื•ื™ื– ืึท ื ื™ื™ึทืข ื”ืึทื›ืœืึธื˜ืข ืงืกื ื•ืžืงืก ร— ืงืกื ื•ืžืงืก, ื–ื™ื ื˜ ืึทืœืข ืื•ื ื“ื–ืขืจ ืžืึธื ื™ื˜ืึธืจืก ื•ื•ืขืœืŸ ื ื•ืฆืŸ ืขืก:

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

ืื™ืฆื˜ ืžื™ืจ ื•ื•ืขืœืŸ ื™ื ืกื˜ืึทืœื™ืจืŸ ืคื™ืจืขืคืึธืงืก, ืžื™ืจ ื•ื•ืขืœืŸ ืœื•ื™ืคืŸ ืขืก ื•ื•ื™ ืึท ืกื™ืกื˜ืขื ื“ื™ื ืกื˜, ืึทื–ื•ื™ ืœืึธื–ืŸ ืื•ื ื“ื– ืฉืจื™ื™ึทื‘ืŸ ืึท ืึทืคึผืึทืจืึทื˜ ื˜ืขืงืข ืคึฟืึทืจ ืขืก ืื™ืŸ ืื™ื™ืŸ ื’ื™ื™ืŸ:

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 ืื™ืจ ืงืขื ืขืŸ ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ืงื™ื™ืŸ ื‘ืœืึทื˜ ืึทื–ื•ื™ ืึทื– ืขืก ืึธืคึผืขื ืก ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ื•ื•ืขืŸ ื“ืขืจ ื‘ืœืขื˜ืขืจืขืจ ืกื˜ืึทืจืฅ.

ืื™ืŸ ื“ืขื ื‘ื™ื ืข, ืื•ื ื“ื–ืขืจ ืงื™ืึธืกืง ืื™ื– ื’ืจื™ื™ื˜, ืึธื‘ืขืจ ืื™ืฆื˜ ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืึทืจื•ื™ืกืคื™ืจืŸ ื“ื™ ื‘ื™ืœื“ ืื™ื‘ืขืจ ื“ื™ ื ืขืฅ ืฆื• ืื ื“ืขืจืข ืžืึธื ื™ื˜ืึธืจืก ืื•ืŸ ื“ืขื•ื•ื™ืกืขืก. ืฆื• ื˜ืึธืŸ ื“ืึธืก, ืžื™ืจ ื•ื•ืขืœืŸ ื ื•ืฆืŸ ื“ื™ ืึทืคึผืขืจื˜ื•ื ืึทื˜ื™ื– ื‘ืึทื•ื•ืขื’ื•ื ื’ JPEG, ืึท ืคึฟืึธืจืžืึทื˜ ื•ื•ืึธืก ืื™ื– ืึธืคื˜ ื’ืขื ื™ืฆื˜ ืคึฟืึทืจ ืกื˜ืจื™ืžื™ื ื’ ื•ื•ื™ื“ืขื ืคึฟื•ืŸ ืจื•ื‘ึฟ ื•ื•ืขื‘ ืงืึทืžืขืจืึทืก.

ืฆื• ื˜ืึธืŸ ื“ืึธืก, ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื•ื•ื™ื™ ื–ืื›ืŸ: ืคืคืžืคึผืขื’ ืžื™ื˜ ืžืึธื“ื•ืœืข x11grab, ืฆื• ื›ืึทืคึผืŸ ื‘ื™ืœื“ืขืจ ืคึฟื•ืŸ X ืื•ืŸ streamEye, ื•ื•ืืก ื•ื•ืขื˜ ืคืึทืจืฉืคึผืจื™ื™ื˜ืŸ ืขืก ืฆื• ืื•ื ื“ื–ืขืจ ืงืœื™ื™ืึทื ืฅ:

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)

ืื™ืฆื˜ ืœืึธื–ืŸ ืก ืคึผืจื•ื‘ื™ืจืŸ ืฆื• ื’ื™ื™ืŸ ืฆื• http://your-vm:8080/, ืื™ืŸ ืขื ื˜ืคืขืจ ืื™ืจ ื•ื•ืขื˜ ื–ืขืŸ ืึท ืงืขืกื™ื™ื“ืขืจ ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงื˜ ืกืงืจืขืขื ืฉืึธื˜ ืคื•ืŸ ื“ื™ื™ืŸ ื“ืขืกืงื˜ืึทืคึผ. ื’ืจื•ื™ืก! โ€” ื“ืื ื”ืื˜ ืžืขืŸ ื’ืขื“ืืจืคื˜.

ืงืœื™ืขื ื˜ ื–ื™ื™ึทื˜

ื“ืึธ ืึทืœืฅ ืื™ื– ืืคื™ืœื• ืกื™ืžืคึผืœืขืจ, ื•ื•ื™ ืื™ืš ืฉื•ื™ืŸ ื’ืขื–ืื’ื˜, ืžื™ืจ ื•ื•ืขืœืŸ ื ื•ืฆืŸ Raspberry Pi Model B+.

ืขืจืฉื˜ืขืจ ืคื•ืŸ ืึทืœืข, ืœืึธื–ืŸ ืื•ื ื“ื– ื™ื ืกื˜ืึทืœื™ืจืŸ ืขืก ืึทืจื˜ืฉ ืœื™ื ื•ืงืก ืึธืจืขื, ืคืืจ ื“ืขื ืคืืœื’ืŸ ืžื™ืจ ื™ื ืกื˜ืจืึทืงืฉืึทื ื– ืื•ื™ืฃ ื“ืขืจ ื‘ืึทืึทืžื˜ืขืจ ืคึผืœืึทืฅ.

ืžื™ืจ ื•ื•ืขืœืŸ ืื•ื™ืš ื“ืึทืจืคึฟืŸ ืฆื• ืึทืœืึทืงื™ื™ื˜ ืžืขืจ ื–ื›ึผืจื•ืŸ ืคึฟืึทืจ ืื•ื ื“ื–ืขืจ ื•ื•ื™ื“ืขื ืฉืคึผืึธืŸ, ืคึฟืึทืจ ื“ืขื ืžื™ืจ ื•ื•ืขืœืŸ ืจืขื“ืึทื’ื™ืจืŸ /boot/config.txt

gpu_mem=128

ืœืึธืžื™ืจ ืฉื˜ื™ื•ื•ืœ ืื•ื ื“ื–ืขืจ ื ื™ื™ึทืข ืกื™ืกื˜ืขื ืื•ืŸ, ื’ืขื“ืขื ืงืขืŸ ืฆื• ื™ื ื™ืฉืึทืœื™ื™ื– ื“ื™ ืคึผืึทืงืžืึทืŸ ืฉืœื™ืกืœืจื™ื ื’, ื™ื ืกื˜ืึทืœื™ืจืŸ OMXPlayer:

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

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’