Raspbian教学系统安装、配置流程
本文介绍了基于Raspbian 的教学操作系统的安装、配置流程。整个软件系统安装配置适用于6-18岁青少年、儿童的编程教育。
本安装的基础环境: Raspberry-pi 3B + raspbian strenth
1. 配置网络
因为大多数Raspbian通过 VNC操作,所以能连上网是第一步。
将 Rpi 接到一台显示器上,连好键盘和鼠标,开机启动
1.1配置IP地址
配置文件路径
# sudo nano /etc/dhcpcd.conf
从文件名可以看出,这里是配置动态IP 的地方,当然也可以配置静态IP, 那么到底是配置静态IP还是动态IP呢?
(1)动态 IP 配置
不动此文件中的配置,默认就是动态IP,有线和无线都是。但有时网络中没有 dhcp 服务,比如用电脑直连Rpi 时,如果不配置一个IP,则没法连接到 Rpi 上,如果这时没有可外接的显示器,则Rpi 将无法使用。一种变通的方法是当没有 DHCP时,系统自动启用一个静态IP, 这就是 static profile。 dhcpcd.conf 配置文件中,去掉 #define static profile 以面语句的注释,即可实现这种效果。
即当有DHCP时,自动获取IP, 没有时,使用 192.168.2.3 这个地址。
(2)静态IP 配置
此外,也可以配置静态IP地址,如下所示,一旦配置了静态 IP 地址,就无法使用 DHCP 了。
下面分别给出配置 eth0, 和 wlan0 两个设备静态IP
#配置以太网卡
interface eth0
static ip_address=192.168.1.15
static routers=192.168.1.1
static domian_name_servers=114.114.114.114
static domian_name_servers=114.114.115.115
#配置无线网卡
interface wlan0
static ip_address=192.168.1.15
static routers=192.168.1.1
static domian_name_servers=114.114.114.114
static domian_name_servers=114.114.115.115
如果要配置为用有线链接 VNC, 用无线wifi上网的话,只需要添加以下一行即可,无线上网采用 DHCP
interface eth0
static ip_address=192.168.2.11 # 这个 IP 要有别于无线网络所在的网段,并且不可配置 routers 和 domain_name_servers 这两个参数,否是无线也无法上网
1.2 配置无线Wifi
wifi 帐号密码保存文件为 /etc/wpa_supplicant/wpa_supplicant.conf
打开后内容如下
其中每个network 保存了一组wifi ID,密码,加密方式。只要照此添加即可。
2. 开启VNC服务
两种方法,基于x桌面和字符界面
2.1 x桌面
启动 Raspberry Pi Configuration
Interfaces页中将VNC置为 Enabled
2.2 字符界面
$sudo raspi-config
打开字符配置界面,选择第5项 Interfacing Options
选择 p3 VNC
选择 Yes
完成该项配置后,就可以在电脑中通过 VNC连接上来进行后面的操作了
3. 配置分辨率
Raspberry Pi 没有 BIOS,所有的配置都写在 config.txt 文件中
配置文件及路径
$ sudo nano /boot/config.txt
取消以下几行配置的注释,并赋值如下
hdmi_group=2 # 1表示用电视规格分辨率CEA, 2表示用计算机规格分辨率DMT。
hdmi_mode=47 # 1440×900 50Hz 分辨率
在末尾行添加
hdmi_ignore_edid=0xa5000080
将显存在小设为128M
gpu_men=128
某些时侯,过小的显存会导致在使用VNC时导致连接成功后闪退。
该项是命令树莓派不检测HDMI设备的任何信息,只按照我们指定的分辨率输出。 如果不加,树莓派可能仍会“自作聪明”的检测HDMI设备的分辨率,结果造成我们设置的分辨率无效。
如果插到显示器上没反应,把系统目录下的config.txt里的hdmi_safe=1前面的注释去掉。
4. 调整交换分区大小
Raspbian 默认的交换分区大小是100M,这对于运行复杂的编译程序是不够,建议交换分区大小与内存大小一致,因此需要将交换换分区大小调整为896M
以前通过修改 /var/swap文件大小来调整 swap 分区大小是错误的,因为重新启动后,大小又还原了,正确的做法是在 /etc/dphys-swapfile 文件中进行配置
找到
CONF_SWAPSIZE=100
将其改为
CONF_SWAPSIZE=896
重启,查看交换分区大小,确认修改正确
$ free
5. 配置键盘
raspbian默认的键盘布局为 gb ,这会导致键盘上的 @ # | \ 变为 ” £ ~ # @
可以在 X 界面或 字符 界面下进行键盘配置
5.1 X 界面配置键盘
开始菜单选择 Mouse and keyboard Settings
Keyboard Layout 中选择 United States English(US)
5.2 字符界面配置键盘
选第4项 Localisation Optinos
选第3项 Change Keyboard Layout
5.3 修改配置文件
配置文件位置
$ sudo nano /etc/default/keyboard
修改含有 XKBMODEL 这行,改为
XKBMODEL=”cn” # (默认被设置成了 gb )
重启即可。
6. 配置字符集
7. 配置时区
7.1 通过字符界面配置
地区选亚洲
城市选上海 或 重庆
完成以上配置后会要求重新启动系统
7.2 通过配置文件配置(Stretch版不用)
6.2.1 编辑配置文件
$ sudo nano /etc/rc.conf # 如果不存在,就创建
修改成如下内容:
LOCALE="en_US.UTF-8"
DAEMON_LOCALE="no"
HARDWARECLOCK="localtime"
TIMEZONE="Asia/Shanghai"
6.2.2 使用NTP来自动对时
NTP是Network Time Protocol, 需要在系统中先安装openntpd:
$ sudo apt-get install openntpd
在/etc/rc.conf中添加最后一句话(在第一步时已经添加,表示让openntpd开机启动):
DAEMONS=(syslog-ng network netfs crond openntpd sshd)
重启即可。
8. 配置apt-get源
后面的配置需要就需要安装新的软件了,为了在国内能流畅下载,需要更换apt-get 的源,推荐使用中科大的源(参见 《设置Raspbian apt-get 国内软件源》 )。
配置文件位置
$ sudo nano /etc/apt/sources.list
删除原文件所有内容,用以下内容取代(以下是阿里云):
deb http://mirrors.aliyun.com/raspbian/raspbian/ stretch main non-free contrib
deb-src http://mirrors.aliyun.com/raspbian/raspbian/ stretch main non-free contrib
编辑此文件后执行以下命令,更新软件列表.
$ sudo apt-get update
9. 安装中文字体
虽然设置了中文字符集,但Raspbian没有预装中文字体,需要自己安装
这里采用先装字体再设置这了符集的方式,因为先设置了字符集而没有字体,则会显示方块内码,根本无法阅读。所以将安装顺序改动一下。
Raspbian继承了Debian的一个毛病:就算选了默认中文,也不自动安装中文字体。
所以只设置系统支持中文,也无法马上显示汉字。进入桌面会出现乱码,但 Raspbian stretch 后的版本就已经自带中文字体了:
输入命令安装以下中文字体
$sudo apt-get -y install ttf-wqy-zenhei #文泉驿正黑
$sudo apt-get -y install ttf-wqy-microhei #文泉驿微黑
$sudo apt-get -y install xfonts-wqy #点阵宋体
$sudo apt-get -y install fonts-arphic-ukai #文鼎楷体
$sudo apt-get -y install fonts-arphic-uming #文鼎明体
10. 安装中文输入法
安装一个非常好用的拼音输入法:
$sudo apt-get -y install scim-pinyin
11. 安装应用软件
11.1安装 Veyon 电子教室软件
安装方法及流程参见 《Linux电子教室软件 Veyon 安装及配置》
直接安装编译成功的 deb 包,将deb包拷贝到Download目录下
$ dpkg -i veyon_4.0.4_armv7l.deb
使用 以下命令安装依赖的包
$ apt –fix-broken install
依赖解决后,Veyon也一并安装完成
但是在 Raspbian Buster上安装时,报告的依赖关系如下
用 apt-get install 安装以下依赖包 liblzo2-dev libqca2-dev libqca-qt5-2-dev
另外从Debian — Package Download Selection — libprocps6_3.3.12-3+deb9u1_armhf.deb下载libprocps6_3.3.12-3+deb9u1_armhf.deb 依赖包安装。
11.2. 安装影音播放器 Mplayer, KMplayer
$ sudo apt-get install mplayer
KMpalyer 是 Mplayer的 KDE界面版本
11.3. 安装 Tux4Kid 系列软件
Tux4Kid包括 TuxTyping, TuxPaint, TuxMath 三个软件
$sudo apt-get install tuxtype
$sudo apt-get install tuxpaint
$sudo apt-get install tuxmath
11.4. Kig 几何作图软件,
$sudo apt-get install kig
安装大小:122M
11.5 Okular 电子文档阅读软件
支持pdf 等多种格式,界面功能比Raspbian自带的要好
$sudo apt-get install okular
安装大小 160M
11.6 Krita 专业电子彩绘软件
功能强大比拟photoshop,对于 Raspbian 系统需要编译安装
目前没有进入 debian 软件库
11.7 安装 KMix 声卡驱动混音及管理软件
库存名:kmix
安装大小:1.7M
11.8 安装 Kdenlive 视频非编软件
库存名:kdenlive
安装大小:121M
安装后首次启动提示
运行不太流畅,CPU占用率高
11.9 安装Arduino IDE
$sudo apt-get install arduino
11.10 安装 Dia 绘图软件
$sudo apt-get install dia
11.11 安装gimp 图像处理软件
$sudo apt-get install gimp
gimp是Linux 下替代photoshop 的软件
11.12 安装 Audacity 音频编辑工具
安装大小 34.2M
试用点评:全中文界面,社区支持,支持MP3格式,使用简便,一看就会,功能非富
11.12 安装 xchm chm阅读器
安装大小 662k
试用点评:全中文界面,社区支持,支持MP3格式,使用简便,一看就会,功能非富
11.13 安装 Kalzium 元素周期表软件
安装大小 24M 试用点评:全英文界面,界面美面,易于使用
11.14 安装 Kmplot 函数图象绘制软件
安装大小 20M
试用点评:安装后首次运行有问题
11.15 安装 Kstarts 星图软件
安装大小 87.4M
试用点评:无重庆座标,需要下载当地数据包,但下载失败
11.16 安装 Labplot 科学数据可视化软件
安装大小 21M
试用点评:安装后首次无法启动
11.17 安装 Step 二维物理仿真软件
安装大小 17.4M
试用点评:中文界面,可运行
11.18 安装 Cantor 数据函数软件
安装大小 194M
试用点评:中文界面,可运行
11.18 安装 S4A Arduino图形编程界面
deb 方式安装
安装包大小 33.5M
试用点评:中文界面,安装成功后, 需要先用 Arduino IDE 向Arduino 中装入fireware 程序,装完后才能连接。
附带的 固件程序为 S4AFirmware16.ino
S4A是一种在线编程的方式,只要连上USB线,打开 S4A,则Rpi 就会一直与 Arduino 通信,可以从 Arduino 一直闪烁的 Tx/Rx 灯上看出来。
已测可编程控制
11.18 安装 Qtcreator Qt开发软件
安装大小
试用点评:中文界面,可运行
安装 qtcreator 前还需要安装 qt5-default 即Qt基础包,详见 Qt5开发环境搭建文档
# sudo apt-get install qtcreator
11.19 安装 shutter 截屏软件
shutter是一款非常棒的 Linux 截屏工具(不支持录屏),支持指定区域截屏,截图编辑等功能。
截图自动保存在 pi/picture 目录下
安装 shutter 时会附带安装一个 ImageMagic 软件工具
安装大小 76M
$ sudo apt-get install shutter
在Raspbian Buster 上安装会出现以下依赖问题
libgnome2-perl libgoo-canvas-perl libgtk2-appindicator-perl
尝试从安装源中找到这个三个依赖包
11.20 安装 Samba
11.21 安装Omxplayer
Omxplayer是一款利用树莓派GPU硬解码实现1080P流畅播放的软件。
更多使用信息请参阅“Omxplayer——树莓派的硬件解码播放神器”博文。
12. 删除下载文件及编译文件
apt安装的软件下载保存在 /var/cache/apt/archives下,下面命令及时清除这些文件。
$ sudo apt-get clean
13 拷贝范例文件
音视频文件,pdf文件,各拷贝一份,测试用
14. 整理任务栏、桌面、开始菜单
14.1 整理任务栏
任务栏右击 选"面板设置”
双击快速启动栏弹出下面窗口
整理成如下窗口
14.2 整理桌面
整理桌面主要是删除桌面无用的图标,将桌面背景图片替换为带有 企业Logo 的桌面背景图片
/usr/share/rpd-wallpaper
用做好logo的图片替换这个目录里的文件
14.3 整理开始菜单
整理开始菜单包括三项工作,1. 将应用程序重新归类 2. 删除某些应用存在于多个菜单的情况 3. 为各个应用图标添加中文标识
菜单项的 desktop 文件位于 /usr/share/applications 目录下
找到菜单项对应的 desktop 文件并进行修改。
每个desktop文件包含以下各标识
Name 名称
GenericName 通用名
Commnet 说明
Exec 执行文件
Icon 图标
Type 类型
StartupNotify
Categories 类别(决定菜单项在哪个目录分支下) Education 教育: Setting 设置 : Network 网络 ….
X-Ubuntu-Gettext-Domain
15 后期开发配置
15.1 配置 root 帐户
Raspbian 默认情况下 root 帐户是 lock 了的,即没有启用。登录系统使用的主要是 pi 用户。为了安全考虑pi 用户在学生接管系统后,应由学生设一个自己密码(否则后期学生掌握了远程技术后会用 pi 帐号干环事)。但为了方便教师管理学生机,如:分发文件,系统升级,过行程序等,教师仍要有权限可以登录学生机,因此有必要拿到系统的 root 权限。操作步骤如下:
1. 为 root 设置密码
$ sudo passwd root
2. 解锁 root 帐户
$ sudo passwd –unlock root
如果要重新锁定 root 用户可以如下操作
$ sudo passwd –lock root
3. 测试用户是否可用
$ su root
4. 如果要切换为 系统启动登录到 root 帐户,可以修改
$ sudo nano /etc/systemd/system/getty.target.wants/getty@tty1.service
将第28行 ExecStart=-/sbin/agetty –noclear %I $TERM
改为: ExecStart=-/sbin/agetty –autologin root –noclear %I $TERM
重启以后系统自动以root帐户登录了。
目前,安装学生系统并不需要做这一步。
5. 让 ssh 可以 root 帐号登录
编辑 /etc/ssh/sshd_config ,搜索 PermitRootLogin 关键字
# PermitRootLogin prohibit-password
改为
PermitRootLogin yes
重启系统
现在 root 帐户可以使用了,但 root 帐户还并不安全,因为 pi 用户还可以以 sudo 方式更改 root 帐户的密码。让 pi 失去更改 root 帐户密码的权限。
15.2 收回部分sudo权限
因为有了 sudo,pi用户可以以 root 的身份做一些事情,到底能做哪些事情呢?这一切都在sudoers 这个配置文件中的定义中。
sudo 的配置位于/etc/sudoers文件中,但是并不能直接打开这个文件编辑,需要用 visudo 命令来编辑,这个命令与普通编辑的不同之处在于,当编辑格式有误时,会无法保存,并给予提示,防止该配置文件遭到破坏。
1. 查看 pi 用户当前拥有的 sudo 权限
$ sudo -l
可以看到,只要 sudo,就可以运行任何命令,包括给 root 用户改密码 sudo passwd,这是非常危险的。
2. 重新配置 /etc/sudoers 文件
因此,在任意位置执行以下命令即可打开对该文件的编辑
$ sudo visudo
可以看到在 User privilege 中给了 root 用户 以任何主机名(第一个ALL),以任何组的任何帐号(ALL:ALL),执行任何命令(最后一个ALL)
下面一行 Allow members of group sudo中,给了 sudo 组同样的权限,这就是造成 sudo -l 查询时看以的pi权限中的第一个 (ALL:ALL) ALL,因此这一行需要更改
但我们并没有看到产生 (ALL)NOPASSWD: ALL 这条权限的语句
我们还注意最后一行 #includedir 包含了一个文件进来,这里 # 并不是注释,而是一条包含语句,于是打开对应 目录查看,果然这里有 010_pi-nopasswd
于是用编辑打开查看,里面有这样一句
因此,在以上各处的 ALL 后添加排除语句 !/usr/bin/passwd,!/usr/sbin/visudo,!/bin/nano /etc/sudoers,!/bin/nano /etc/sudoers.d/010_pi-nopasswd,!/usr/bin/vi /etc/sudoers,!/usr/bin/vi /etc/sudoers.d/010_pi-nopasswd 将所有可以修改这两个文件的命令的权限都取消。
sudoers.d 目录下的010文件也一并加
添加再次查看 sudo 权限,符合我们的要求了
试验一下,
成功,pi 用户无法sudo 修改root 密码了。