构想方向
我原来是想用智能电视机或者通过电脑去打开浏览器去自动登录一些网页,从成本看肯定是用智能电视机好,但电视机的可控性很差,比如开机自动打开浏览器等的操作就很难完成 。而且非常多的广告,这也不便于当作生产线的显示板使用。
如果用电脑+电视机的组合也可以,可操控性有了,但成本也上来了,每台电脑成本估计在1千元左右,而且耐用性和管理性并不好。
经过网上收集的资料,最后决定用Raspberry 3B作为主机+电视的组合,成本也低,Linux的稳定性也比Windows好。RaspberryPI有桌面程序,但想做到开机立即可进入页面的效果,通过查询到的网上资料都参支不齐,经过反复的实验,自己整理了些资料,也方便以后自己去查询。
我第一篇参照的文章
链接: Installing Chromium on Raspberry Pi without desktop
sudo apt-get install chromium-browser 安装Chromium-browser of raspberry
sudo apt-get install xserver-xorg 安装XServer,Chromium应该是在这个基础上运行的
sudo apt-get install xinit 这个是启动Chromium的一个组件
安装以上三个包后可以通过以下命令运行Chromium-browser,你会发现系统会先运行Xserver,接着再运行Browser,这个过程并不友好。
xinit chromium-browser
接下来我们安装matchbox-window-manager,具体什么作用我不太清楚,应该是管理窗口。
sudo apt-get install matchbox-window-manager
从这里开始关键的问题已经解决,接下来就是优化问题,要解决的问题有以下几点:
加装中文字库
sudo apt-get update
sudo apt-get upgrade -y
*****我认为以上两行代码不一定需要的*****
sudo apt-get install ttf-wqy-microhei
sudo dpkg-reconfigure locales
sudo reboot
添加zh_CN.UTF-8,设定en_GB.UTF-8为默认语言
完成后需要重启
sudo apt-get install unclutter
安装相应的Package后再Sudo Reboot
,重启后再执行unclutter
修改启动配置文件
sudo nano /boot/config.txt
sudo Reboot
重启系统sudo nano start-chromium.sh
会在系统默认的路径/home/pi/下生成start-chromium.sh
文件
//禁止显示器休眠
xset dpms 0 0 0
xset s off
//Hide the mouse from the display
unclutter &
//If Chrome crashes (usually due to rebooting), clear the crash flag so we don't have the annoying warning bar
//Linux sed的命令使用可以参考网上的资料,主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。
sed -i 's/"exited_cleanly":false/"exited_cleanly":true/' /home/pi/.config/chromium/Default/Preferences
sed -i 's/"exit_type":"Crashed"/"exit_type":"Normal"/' /home/pi/.config/chromium/Default/Preferences
//删除chrome临时目录
rm -r /home/pi/.config/chromium -f
matchbox-window-manager -use_cursor no -use_titlebar no &
chromium-browser --disable-features=TranslateUI --window-size=1920,1080 --fast --fast-start --disable-popup-blocking --disable-infobars --start-fullscreen --incognito --disable-session-crashed-bubble --allow-running-insecure-content https://yoururl/
以下解释一下Chromium-browser的启动参数
--disable-features=TranslateUI
不显示翻译此页面的窗口提示
--window-size=1920,1080
满屏的尺寸,这个参数很重要,因为在Lite在显示屏默认不为全屏,这个参数对应启动设定的屏幕尺寸
--fast
--fast-start
If this flag is present then this command line is being delegated to an already running chrome process via the fast path, ie: before chrome.dll is loaded. It is useful to tell the difference for tracking purposes.
--disable-popup-blocking
禁用弹出拦截
--disable-desktop-notifications
禁用桌面通知,在 Windows 中桌面通知默认是启用的。
--disable-infobars
让chorme启动后不提示黄色边框。
--start-fullscreen
全屏模式,可以退出
--incognito
让浏览器直接以隐身模式启动。
--disable-session-crashed-bubble
Disables using bubbles for session restore request.
--allow-running-insecure-content
默认情况下,https 页面不允许从 http 链接引用 javascript/css/plug-ins。添加这一参数会放行这些内容。
备选参数
--touch-events=enabled
--kiosk
启用kiosk模式。(一种类似于全屏的浏览模式)
试过linux系统常用的在rc.local的exit(0)前写shell命令的方法,但是没有奏效。百度后有种说法是rc.local是在系统启动后、用户登录前运行的,这时显然无法运行start-chromium.sh。另一种方法是写开机脚本,然而笔者没有学过shell脚本,因此用了修改.profile的方法。登录后,系统会自动运行./profile,于是就实现了开机自启动start-chromium.sh脚本代码。
sudo nano .profile
在打开的文档后面增加你要增加一句(nano的用法比vi简单,这里就不赘述了)
export DISPLAY=:0 && sudo xinit /home/pi/start-chromium.sh &
其中/home/pi/file是要启动的文件的路径,加入“&”可以防止阻塞。
注意这里与shell命令不同,不是以往的sudo xinit ./home/pi/start-chromium.sh
,这里是没有“.”的。 然后,程序就能开机运行了
Raspberry PI 旧版本的方法
修改/etc/inittab
文件 sudo nano /etc/inittab
向下滚动,找到行 1:2345:respawn:/sbin/getty 115200 tty1
注释掉这一行,修改为 #1:2345:respawn:/sbin/getty 115200 tty1
在该行下增加一行内容1:2345:respawn:/bin/login -f pi tty1 /dev/tty1 2>&1
按Ctrl + X,Y,Enter保存。
原理:linux启动时,会读取inittab文件,执行其中的登录命令,以pi用户名自动登录。
基于新版本Raspberry PI
Raspian-Image (jessie). This one is based on Debian 8 (jessie) where the init-system changed from sysvinit to systemd.
sudo raspi-config
Alternatively, from the Raspbian Jessie desktop, choose Menu → Preferences → Raspberry Pi Configuration.
If you launched raspi-config
from command prompt it looks like below:
Scroll down to 3 Boot Options.
Select option B1 Desktop / CLI
Select B2 Console AutoLogin
Save and exit the configuration and reboot.
The Raspberry Pi will now boot to console everytime. You may setup a script to run at startup if you are planning to operate pi headlessly. To do this, edit /etc/profile. Each time a login shell is spawned all commands in /etc/profile are executed.
sudo nano /etc/profile
To execute a script /home/pi/myscript.sh, add the following line
./home/pi/myscript.sh
Now everytime pi is powered on, it will autologin to pi user and execute your startup script, which presumably will take care of everything you it to do in headless mode.
vi /etc/dhcpcd.conf
# 使用 vi 编辑文件,增加下列配置项
# 指定接口 eth0
interface eth0
# 指定静态IP,/24表示子网掩码为 255.255.255.0
static ip_address=192.168.1.20/24
# 路由器/网关IP地址
static routers=192.168.1.1
# 手动自定义DNS服务器
static domain_name_servers=114.114.114.114
# 修改完成后,按esc键后输入 :wq 保存。
重启树莓派就生效了
sudo reboot