树莓派是当前最火的嵌入计算平台没有之一,树莓派能够给咱们无数的想象,树莓派的高性能、低功耗、低成本、可扩展性(最新的树莓派原生支持WIFI和蓝牙,这功能太赞了)深受你们的喜好。虽然树莓派到目前为止已经很好安装系统了。可是要想方便的使用和部署开发的软件仍是比较麻烦的。php
安装环境的话,你的有树莓派硬件(此图为:树莓派3 Model B),你还得须要一个支持HDMI显示器(电视机也能够)
、HDMI线
、MicroSD卡(8G+,Class10+级别)
、电源适配器(5V、2A+、MicroUSB接口)
、读卡器(支持MicroSD卡)
,至于还有键盘、鼠标、散热片、风扇、保护壳等。html
树莓派的供电能力有限,大功率IO设备须要外置供电,尤为是USB口,建议买个供电的扩展坞!!!node
有了这些东西就能够开始搭建环境,下面的例子以树莓派3 Model B为硬件搭建。linux
在官网下载NOOBS,NOOBS至关PC的BIOS,手机的Recovery。用于引导和配置系统硬件环境,这里我下载的是NOOBS带Raspbian桌面环境的版本(快速下载-移入查看密码)。git
准备MicroSD,并用工具格式化SDFormatter,选择待格式化的盘符,点击进行格式化(快速下载-移入查看密码)。github
解压NOOBS,拷贝NOOBS_XXX解压文件夹下面的文件与文件夹到MicroSD的根目录。web
将MicroSD插入树莓派,接上显示器与电源、鼠标、键盘。(树莓派电路自身是裸露的,千万不要直接与金属表面接触,注意释放手上静电)。npm
开机出现彩色封面表示正常启动,系统即将出现引导界面,点击“Shift”键指导进入安装界面。ubuntu
进入一下界面,表示大功告成,选择Raspbian,点击Install,进行安装系统。vim
如何进行分辨率适配?在NOOBS的管理界面中找到“EditConfig”,进入编辑框,找到hdmi_group和hdmi_mode的值对应想要调整的分辨率,其余分辨率可自行谷歌、百度。
如下是计算机显示器使用的分辨率。这些分辨率的hdmi_group=2 hdmi_mode=1 640x350 85Hz hdmi_mode=2 640x400 85Hz hdmi_mode=3 720x400 85Hz hdmi_mode=4 640x480 60Hz hdmi_mode=5 640x480 72Hz hdmi_mode=6 640x480 75Hz hdmi_mode=7 640x480 85Hz hdmi_mode=8 800x600 56Hz hdmi_mode=9 800x600 60Hz hdmi_mode=10 800x600 72Hz hdmi_mode=11 800x600 75Hz hdmi_mode=12 800x600 85Hz hdmi_mode=13 800x600 120Hz hdmi_mode=14 848x480 60Hz hdmi_mode=15 1024x768 43Hz DO NOT USE hdmi_mode=16 1024x768 60Hz hdmi_mode=17 1024x768 70Hz hdmi_mode=18 1024x768 75Hz hdmi_mode=19 1024x768 85Hz hdmi_mode=20 1024x768 120Hz hdmi_mode=21 1152x864 75Hz hdmi_mode=22 1280x768 reduced blanking hdmi_mode=23 1280x768 60Hz hdmi_mode=24 1280x768 75Hz hdmi_mode=25 1280x768 85Hz hdmi_mode=26 1280x768 120Hz reduced blanking hdmi_mode=27 1280x800 reduced blanking hdmi_mode=28 1280x800 60Hz hdmi_mode=29 1280x800 75Hz hdmi_mode=30 1280x800 85Hz hdmi_mode=31 1280x800 120Hz reduced blanking hdmi_mode=32 1280x960 60Hz hdmi_mode=33 1280x960 85Hz hdmi_mode=34 1280x960 120Hz reduced blanking hdmi_mode=35 1280x1024 60Hz hdmi_mode=36 1280x1024 75Hz hdmi_mode=37 1280x1024 85Hz hdmi_mode=38 1280x1024 120Hz reduced blanking hdmi_mode=39 1360x768 60Hz hdmi_mode=40 1360x768 120Hz reduced blanking hdmi_mode=41 1400x1050 reduced blanking hdmi_mode=42 1400x1050 60Hz hdmi_mode=43 1400x1050 75Hz hdmi_mode=44 1400x1050 85Hz hdmi_mode=45 1400x1050 120Hz reduced blanking hdmi_mode=46 1440x900 reduced blanking hdmi_mode=47 1440x900 60Hz hdmi_mode=48 1440x900 75Hz hdmi_mode=49 1440x900 85Hz hdmi_mode=50 1440x900 120Hz reduced blanking hdmi_mode=51 1600x1200 60Hz hdmi_mode=52 1600x1200 65Hz hdmi_mode=53 1600x1200 70Hz hdmi_mode=54 1600x1200 75Hz hdmi_mode=55 1600x1200 85Hz hdmi_mode=56 1600x1200 120Hz reduced blanking hdmi_mode=57 1680x1050 reduced blanking hdmi_mode=58 1680x1050 60Hz hdmi_mode=59 1680x1050 75Hz hdmi_mode=60 1680x1050 85Hz hdmi_mode=61 1680x1050 120Hz reduced blanking hdmi_mode=62 1792x1344 60Hz hdmi_mode=63 1792x1344 75Hz hdmi_mode=64 1792x1344 120Hz reduced blanking hdmi_mode=65 1856x1392 60Hz hdmi_mode=66 1856x1392 75Hz hdmi_mode=67 1856x1392 120Hz reduced blanking hdmi_mode=68 1920x1200 reduced blanking hdmi_mode=69 1920x1200 60Hz hdmi_mode=70 1920x1200 75Hz hdmi_mode=71 1920x1200 85Hz hdmi_mode=72 1920x1200 120Hz reduced blanking hdmi_mode=73 1920x1440 60Hz hdmi_mode=74 1920x1440 75Hz hdmi_mode=75 1920x1440 120Hz reduced blanking hdmi_mode=76 2560x1600 reduced blanking hdmi_mode=77 2560x1600 60Hz hdmi_mode=78 2560x1600 75Hz hdmi_mode=79 2560x1600 85Hz hdmi_mode=80 2560x1600 120Hz reduced blanking hdmi_mode=81 1366x768 60Hz hdmi_mode=82 1080p 60Hz hdmi_mode=83 1600x900 reduced blanking hdmi_mode=84 2048x1152 reduced blanking hdmi_mode=85 720p 60Hz hdmi_mode=86 1366x768 reduced blanking
修改系统默认密码、位置、时区、键盘、WiFi地区。
开启VNC,SSH方面远程无屏管理。
修改系统用户密码。
获取ROOT权限打开命令终端(Ctrl + Alt + T),输入如下内容(“sudo” 是临时使用最高权限执行命令的意思)。
sudo passwd root 执行此命令后系统会提示输入两遍的root密码,输入你想设的密码便可,而后在执行 sudo passwd --unlock root
修改软件中心镜像地址提升下载速度,镜像地址能够自行谷歌、百度。
su #(若是已是root帐户登陆,便可跳过此步骤) cd /etc/apt/&&mv sources.list sources.list.bak #(备份现有的源文件) sudo nano /etc/apt/sources.list #(添加新配置文件) ================= deb http://mirrors.cqu.edu.cn/Raspbian/raspbian/ wheezy main contrib non-free rpi #(添加剧庆大学的镜像) #Ctrl + O、Enter、Ctrl + X #保存退出 ================= sudo apt-get update && apt-get upgrade #(测试更新)
文件受权,注意不要滥用。
sudo chmod 777 /xxx #目录为Everyone sudo chmod -R 777 /xxx #目录以及子文件所有为Everyone
输入法管理器与输入法安装,我这里选择iBus(由于符合国人的操做习惯,设置也比较人性化点点,同时内置拼音。可是不能和PC的国产输入法比较。其实还有fcitx输入法管理器)
sudo apt-get install ibus ibus-pinyin
配置开机自动启动方面使用,默认下每次开机须要手动启动。
#添加自启动脚本 cd /home/pi cd .config mkdir autostart cd autostart #添加脚本文件(能够写入多个脚本文件,用于配置不一样分辨率链接) nano input.desktop #添加脚本 [Desktop Entry] Type=Application Name=InputManger Exec=ibus-daemon --xim StartupNotify=false #Ctrl + O、Enter、Ctrl + X #保存退出
设置桌面样式
永久挂载新分区
df -h #查看未使用的分区 sudo umount /dev/xxxx #对应分区卸载,记住你的这个分区路径 sudo mkdir /xxx #建立自定义的挂载位置,将卸载的分区挂载到本身的目录 #临时挂载 sudo mount /dev/xxx /xxx #将分区挂载到本身建立的目录 #永久挂载 sudo nano /etc/fstab #进入系统的磁盘分区的配置表,系统开机会进行分区映射 #添加一行,将分区挂载到自定义的位置 ====================================================== /dev/xxx /xxx auto defaults 0 0 ====================================================== #Ctrl + O、Enter、Ctrl + X #保存退出
制做系统镜像
镜像是个很是方便的东西,能够将系统打包。若是运行的系统损坏或不想要了,能够用备份的镜像文件将其恢复。经过Win32DiskImager进行备份和还原,平时备份能够将镜像压缩,能够节约空间。(快速下载-移入查看密码)
第一次如何恢复根分区容量
#运行命令终端 sudo raspi-config #进入系统配置
最新的Raspbian内置VNCServer工具,因此就不须要在单独安装VNCServer工具了,上一步已经启动的VNC功能,同时须要注意的是用户名,密码。VNC能够添加多个不一样名称的端口。
#添加自启动脚本 cd /home/pi cd .config mkdir autostart cd autostart #添加脚本文件(能够写入多个脚本文件,用于配置不一样分辨率链接) nano vnc.desktop #脚本名称 #添加脚本 [Desktop Entry] Type=Application Name=VNC #名称 Exec=vncserver -geometry 1920x1080 :1 #设置分辨率1920x1080,以及VNC端口为1 StartupNotify=false #Ctrl + O、Enter、Ctrl + X #保存退出
使用VNCViewer进行远程链接,VNCViewer支持多平台版本能够到官网下载。(快速下载-移入查看密码)
在NodeJS官网下载安装包或在线安装,注意安装ARM版本。(快速下载-移入查看密码)
#方法1、 #做者地址:https://github.com/nodesource/distributions #命令终端 curl -sSL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add - curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - sudo apt-get install -y nodejs #方法2、 #命令终端 cd /home/pi #离线安装 #拷入node-v6.9.1-linux-armv7l.tar.gz 到 /home/pi #在线安装(其余版本同理,只须要修改版本名称便可) wget https://nodejs.org/dist/v6.9.1/node-v6.9.1-linux-armv7l.tar.gz #命令终端 tar zxvf node-v6.9.1-linux-armv7l.tar.gz sudo mv node-v6.9.1-linux-armv7l /usr/local/bin sudo ln /usr/local/bin/node-v6.9.1-linux-armv7l/bin/node /usr/local/bin/node sudo ln -s /usr/local/bin/node-v6.9.1-linux-armv7l/lib/node_modules/npm/bin/npm /usr/local/bin/npm
NodeJSARM版NPM存在路径问题,须要如下方式解决。
#尝试npm -v发现出错了,缘由是路径问题,修改相对路径(注意查看脚本中的相对路径),跳转到/usr/local/bin目录。 #打开文本npm #贴上修改后的文件内容: #!/bin/sh (set -o igncr) 2>/dev/null && set -o igncr; # cygwin encoding fix basedir=$(dirname `readlink -f $0`) cd $basedir case `uname` in *CYGWIN*) basedir=`cygpath -w "$basedir"`;; esac NODE_EXE="$basedir/node.exe" if ! [ -x "$NODE_EXE" ]; then NODE_EXE=node fi NPM_CLI_JS="$basedir/node-v6.9.1-linux-armv7l/lib/node_modules/npm/bin/npm-cli.js" if ! [ -x "$NPM_CLI_JS" ]; then NPM_CLI_JS=npm-cli.js fi case `uname` in *CYGWIN*) NPM_PREFIX=`"$NODE_EXE" "$NPM_CLI_JS" prefix -g` NPM_PREFIX_NPM_CLI_JS="$NPM_PREFIX/node-v6.9.1-linux-armv7l/lib/node_modules/npm/bin/npm-cli.js" if [ -f "$NPM_PREFIX_NPM_CLI_JS" ]; then NPM_CLI_JS="$NPM_PREFIX_NPM_CLI_JS" fi ;; esac "$NODE_EXE" "$NPM_CLI_JS" "$@"
NodeJS升级命令。
sudo npm install -g n #更新到最新稳定版 sudo n stable #更新到最新版本 sudo n latest #更新到具体版本 sudo n v6.9.1
这里使用的是Mono,而非Net Core,由于Net Core坑太多了,不适合跨平台移植软件。还有作跨平台软件须要注意外部文件路径问题,经过 Path.DirectorySeparatorChar 获取平台路径特征与经过 AppDomain.CurrentDomain.BaseDirectory 获取运行程序的绝对根目录,同时,win32的类库目前是不能被Mono运行的。Net的类库是彻底可运行,须要注意的是Windows下有些原生类库在Mono里面没有集成,须要设置生成时复制到输出目录。(快速下载-移入查看密码)
首先下载Mono官方的源代码,而后在树莓派上进行编译,编译时间过长,清耐心等待数小时。安装过程当中会出现依赖的软件未安装,致使安装中止,须要一步一步的进行安装依赖经过“sudo apt-get xxx”或“sudo apt-get xxx=xxx.xxx.xxx”来解决。
方法1、 #这里是案例,能够下载最新版进行编译(须要耐心等待6~8小时),安装 #下载官方源码包,能够离线下载提升速度 wget http://download.mono-project.com/sources/mono/mono-4.0.1.44.tar.bz2 #解压 tar -xvf mono-4.0.1.44.tar.bz2 #切换路径 cd mono-4.0.1 #配置编译安装路径 ./configure --prefix=/usr/local #编译 make #安装 make install #注意经过sudo apt-get安装libgdiplus类库,方便图像程序的运行,如:WinForm等图像库相关的软件的使用 方法2、 #经过Mono官网:https://www.mono-project.com/download/stable/#download-lin-raspbian,树莓派专栏命令安装完整Net环境 安装命令: sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF echo "deb http://download.mono-project.com/repo/debian raspbianjessie main" | sudo tee /etc/apt/sources.list.d/mono-official.list sudo apt-get update sudo apt-get install mono-develsudo sudo apt-get install mono-completesudo sudo apt-get install mono-dbgsudo sudo apt-get install referenceassemblies-pclsudo sudo apt-get install ca-certificates-monosudo sudo apt-get install mono-xsp4
耐心等待数小时后,安装完成,能够用C#写个HelloWorld试试还有WinForm等,看看惊喜。
若是还须要AspNet程序的运行,则须要安装 Jexus Web服务器,用于支持AspNet程序的运行。如下是Jexus安装。(快速下载-移入查看密码)
#安装 cd /tmp wget linuxdot.net/down/jexus-5.6.5.tar.gz tar -zxvf jexus-5.6.5.tar.gz cd jexus-5.6.5 sudo ./install #更新 cd /tmp sudo /usr/jexus/jws stop wget http://linuxdot.net/down/jws-v5.6.4-arm.zip tar -zxvf jws-v5.6.4-arm.zip cd jws-v5.6.4-arm sudo ./upgrade sudo /usr/jexus/jws regsvr sudo /usr/jexus/jws restart ===测试/var/www/default/index.aspx======= <%@Page Language="C#"%> <%=DateTime.Now.ToString()%> ==============================
#添加自启动脚本 cd /home/pi cd .config mkdir autostart cd autostart #添加脚本文件(能够写入多个脚本文件,用于配置不一样分辨率链接) nano webserver.desktop #添加脚本 [Desktop Entry] Type=Application Name=WebServer Exec=lxterminal --command="sudo /usr/jexus/jws start" StartupNotify=false #Ctrl + O、Enter、Ctrl + X #保存退出
Jexus的全局配置在/usr/jexus/jws.conf,能够经过“sudo nano /usr/jexus/jws.conf”配置。
SiteLogDir=log #指定日志目录 SiteConfigDir=siteconf #指定每一个站点的配置信息位置 httpd.processes=1 #: 1-8. (0 is auto) 这是Jexus服务器使用的进程数量,建议每1核CPU用一个进程,最多可设8个进程,若是设置大于1,须要启动独立的会话服务。不然出现Session丢失问题 httpd.MaxTotalMemory=0 #: In megabytes. Set to 0 for auto. 容许使用的最大内存,0是自动分配 httpd.MaxCpuTime=2400 #: In seconds. Set to 0 for unlimited. 容许CPU执行的最长时间,若是超时系统会终端当前运行的线程,0是不限制。 httpd.MaxConnPerIp=0 #: 0 is unlimited 单个IP的最大并发链接数 # httpd.User=www-data #工做进程以什么用户身份和对应权限工做,默认为root # php-fcgi.set=/usr/bin/php-cgi,6 #若是须要Jexus同时充当PHP FastCGI服务器,这一句就是fast-cgi设置,分两个部分,逗号前为php-cgi这个文件的路径,逗号后是php进程数 # CertificateFile=/xxxx/xx.crt #SS证书 # CertificateKeyFile=/xxxx/xx.key #SSL证书秘钥文件 # SSL_Ciphers=RC4-MD5 #使用的加密套件类型 # Runtime=v2.0.50727
Jexus的每一个站点的配置/usr/jexus/siteconf/xxx,例如配置default:“sudo nano /usr/jexus/siteconf/default”配置,能够配置多个,经过“sudo nano /usr/jexus/siteconf/xxx”进行添加其余网站配置。
###################### # Web Site: Default ######################################## port=80 #网站的端口号 root=/ /home/pi/Project/www/default #网站的根目录 hosts=* #OR your.com,*.your.com #容许访问域名 # addr=0.0.0.0 #网站容许访问本地IP # CheckQuery=false #查询检查 NoLog=true #不开启日志 # NoFile=/index.aspx #默认的主页 Keep_Alive=false #是否保持长链接 UseGZIP=true #是否启动GZIP压缩 # UseHttps=true #网站是否使用SSL安全访问 # DenyFrom=192.168.0.233, 192.168.1.*, 192.168.2.0/24 #禁止访问的IP限制 # AllowFrom=192.168.*.* #容许访问的IP限制 # DenyDirs=~/cgi, ~/upfiles #禁止访问的目录 # indexes=myindex.aspx #首页文件名,能够写多个,用英文逗号分开(能够不填。由于JWS系统含有经常使用首页名) # rewrite=^/.+?\.(asp|php|cgi|pl|sh)$ /index.aspx #URL重写是指WEB服务器将访问者的请求URL路径资源按指定的匹配规则解释和匹配为另外的一个真实RUL路径资源。 # reproxy=/bbs/ http://192.168.1.112/bbs/ #反向代理功能,当用户访问/abc/时,jexus就会随机选择一台服务器进行访问,达到负载均衡或服务器集群的效果。 # Jexus php fastcgi address is '/var/run/jexus/phpsvr' ####################################################### # fastcgi.add=php|socket:/var/run/jexus/phpsvr # php-fpm listen address is '127.0.0.1:9000' ############################################ # fastcgi.add=php|tcp:127.0.0.1:9000
在树莓派上建立内存盘,将频繁读写的缓存等小文件放到内存,减小对SD卡的寿命消耗。
mkdir /ram mount -t tmpfs -o size=10m,mode=0777 tmpfs /ram
手动方式:
sudo date --s="2018-03-18 00:00:00"
自动方式:
sudo ntpd -s -d
若是没有配置NTP服务器,那么须要从新配置,以下:
# 打开ntp服务的配置文件 sudo nano /etc/ntp.conf # 找到这两行 # You do need to talk to an NTP server or two (or three). # server ntp.your-provider.example # 添加 server ntp.fudan.edu.cn iburst perfer server time.asia.apple.com iburst server asia.pool.ntp.org iburst server ntp.nict.jp iburst server time.nist.gov iburst # Ctrl+X保存退出 # 重启ntp服务 sudo /etc/init.d/ntp restart
下面运行Git服务器为例:
#添加自启动脚本 cd /home/pi cd .config mkdir autostart cd autostart #添加脚本文件(能够写入多个脚本文件,用于配置不一样分辨率链接) nano gogsserver.desktop #添加脚本 [Desktop Entry] Type=Application Name=GogsServer Exec=lxterminal --working-directory=/home/pi/Software/GogsServer/gogs --command="./gogs web" StartupNotify=false #Ctrl + O、Enter、Ctrl + X #保存退出
fdisk -l #查看分区信息 df -T #查看挂载点新 cfdisk /dev/sda #分区工具 mkfs -t ext4 /dev/sdaXXX #格式化分区 mount /dev/sdaXXX /mnt/XXX #挂载分区 mount /dev/sdaXXX /media/XXX #手动挂载分区 umount /media/XXX 卸载分区 e2label /dev/sdaXXX /XXX #修改分区别名 /etc/fstab #添加自动挂载分区 tune2fs -m 1 /dev/sda #减小Ext4分区预留空间到1% #SSD优化 #https://www.jianshu.com/p/nQpqsN #方法1-修改/etc/rc.local文件 在最后一条命令exit 0 前增长以下内容: fstrim -v / /为root分区(SSD硬盘分区) 不建议使用fstrim-all命令,在非三星和Intel SSD上会有性能瓶颈, #方法2-cron echo -e "#\x21/bin/sh\nfstrim -v /" | sudo tee /etc/cron.daily/trim sudo chmod +x /etc/cron.daily/trim #方法3-修改/etc/fstab文件 修改SSD相关分区条目,增长discard 和 noatime参数 /dev/sda1 / ext4 discard,noatime,commit=600,errors=remount-ro 0 1 discard参数启动SSD的TRIM功能,能够提高性能和使用持久性。 notime参数告诉文件系统不要记录文件的最后访问(读取)时间,只记录最后修改时间。能够有效减小对磁盘的读写次数,由于访问频率相对修改来讲很是多 #SSD优化后记 新买得一块SSD,据说开启TRIM才能更好的发挥SSD的性能,Linux并无默认开启TRIM,但开启仍是比较简单。 首先要检测SSD是否支持TRIM: sudo hdparm -I /dev/sda | grep "TRIM supported" 若是支持则会出现:”Data Set Management TRIM supported” 若是SSD支持TRIM, 则能够开启TRIM了, 这里介绍经常使用的两种方法。 #方法1:修改fstab, 添加discard属性 sudo vim /etc/fstab #下面是我机器上fstab的配置 UUID=27dd31b4-8aa4-4043-b921-540a312c056c / ext4 rw,relatime,data=ordered,discard 0 1 UUID=42f79958-0776-4b2f-8aa3-db827bf257b6 /home ext4 rw,relatime,data=ordered,discard 0 2 #方法2:使用fstrim按期执行trim任务 #以我用的archlinux为例,首先安装并运行cron服务: sudo pacman -S cronie sudo systemctl start cronie sudo systemctl enable cronie #而后建立一个任务配置: sudo gedit /etc/cron.daily/trim #并将下面的内容拷贝到里面: #!/bin/sh LOG=/var/log/trim.log echo "*** $(date -R) ***" >> $LOG fstrim -v / >> $LOG fstrim -v /home >> $LOG
以上是基本安装方式,随着版本更新,可能存在出入。同时命令中的注释须要去掉。