概述
目标:开机全屏运行浏览器,自动打开指定网址;
环境:Ubuntu 18.04
分析
整理一下大致思路,比较简单:
1. 取消桌面启动,减少资源浪费;
2. 用户自动登陆;
3. 自动打开图形界面应用程序;
准备
更换apt-get源
系统启动后,第一件事就是把apt-get的源修改为国内镜像,本文用的是阿里源,配置过程如下:
cd /etc/apt/ # 习惯性操作 $ sudo cp sources.list sources.list-bak # 将下面一段代码替换掉sources.list原来内容 $ sudo vi sources.list # ------------------start--------------------- deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse # ------------------end--------------------- # 更新源地址 $ sudo apt-get update
软件包安装
chromium-browser是必须的,其他软件包根据自己的需求。
$ sudo apt-get install vim $ sudo apt-get install nginx $ sudo apt-get install chromium-browser
开始
设置系统运行级别
系统启动默认进入字符界面的配置有2种方式:
1. 修改grub
将quiet splash
改为text
2. 使用systemd
来设置runlevels
本文主要是第二种方式,Ubuntu使用systemd而不是init,因此runlevels
的概念被术语target
所取代。因此init-based runlevels
和systemd-based targets
之间确实存在关系,映射如下:
┌─────────┬───────────────────┐
│Runlevel │ Target │
├─────────┼───────────────────┤
│0 │ poweroff.target │
├─────────┼───────────────────┤
│1 │ rescue.target │
├─────────┼───────────────────┤
│2, 3, 4 │ multi-user.target │
├─────────┼───────────────────┤
│5 │ graphical.target │
├─────────┼───────────────────┤
│6 │ reboot.target │
└─────────┴───────────────────┘
如果只是修改当前runlevels
,执行 sudo systemctl isolate multi-user.target
即可
咱们要修改默认runlevels
,执行以下命令:
$ sudo systemctl enable multi-user.target $ sudo systemctl set-default multi-user.target # 设置后查看runlevels,结果为:N 3 $ runlevels
重启后系统自动进入字符界面,如果想启动桌面,执行startx
即可
设置用户自动登陆
$ sudo mkdir /etc/systemd/system/getty@tty1.service.d/ $ sudo vim /etc/systemd/system/getty@tty1.service.d/override.conf # 将以下内容写入文件保存 # ------------------start--------------------- [Service] ExecStart= ExecStart=-/sbin/agetty --noissue --autologin sql %I $TERM Type=idle # ------------------end---------------------
设置浏览器自启动
编写启动脚本
启动浏览器需要有X11的支持,借鉴startx的思路:先启动xserver,再启动client;其实把client部分换掉就行了。
$ cd /usr/bin/ $ sudo cp startx mystartx $ sudo vim mystartx
在mystartx
中找到这段内容:
xinit "$client" $clientargs -- "$server" $display $serverargs
在它前面插入:
client=/usr/bin/chromium-browser clientargs=" --kiosk --incognito --start-maximized --start-fullscreen --disable-session-crashed-bubble http://www.u396.com"
注意1:此时针对1080*1920分辨率,不能全屏,解决方法:
cd .config/chromium/Default/ cat Preferences |json_pp > tmp
修改tmp内容:
"window_placement" : { "work_area_right" : 1920, "bottom" : 1080, "work_area_top" : 0, "top" : 10, "left" : 10, "right" : 1920, "maximized" : false, "work_area_bottom" : 1080, "work_area_left" : 0 }
然后替换文件
mv tmp Preferences
注意2:外接HDMI没有声音输出问题
1.alsamixer检查是否默认设置了HDMI
2.aplay -l 列出音频设备卡和设备编号
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC892 Analog [ALC892 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 1: ALC892 Digital [ALC892 Digital]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 8: HDMI 2 [HDMI 2]
Subdevices: 1/1
Subdevice #0: subdevice #0
3.sudo vim /etc/asound.conf 设置默认设备,然后重启
defaults.pcm.card 0 defaults.pcm.device 3
设置自启动
打开~/.bashrc文件,在最后追加一下内容:
cc=`ps axuw|grep chromium-browser|wc -l` xc=`ps axuw|grep xserver|wc -l` echo "chromium-browser process:${cc}, x11 server process:${xc}" if [ $cc -lt 2 ] && [ $xc -lt 2 ]; then /usr/bin/mystartx fi
结束语
折腾了几个小时,重启服务器,面子上算是搞定,其中的问题欢迎大家指正。一直以来主要用centos,最后一次使用ubuntu大概十年前了,记得当时免费申请光盘,要了一箱,送给同学,然而没送出去几套,不禁有些感慨。当年在学校时,在大牛民工于某的影响下,几个发行版都玩了玩,其中印象比较深还有Magic,中文支持比较好,现在不知道怎么样了。