树莓派是当前最火的嵌入计算平台没有之一,树莓派可以给我们无数的想象,树莓派的高性能、低功耗、低成本、可扩展性(最新的树莓派原生支持WIFI和蓝牙,这功能太赞了)深受大家的喜爱。虽然树莓派到目前为止已经很好安装系统了。但是要想方便的使用和部署开发的软件还是比较麻烦的。

安装环境的话,你的有树莓派硬件(此图为:树莓派3 Model B),你还得需要一个支持HDMI显示器(电视机也可以)、HDMI线、MicroSD卡(8G+,Class10+级别)、电源适配器(5V、2A+、MicroUSB接口)、读卡器(支持MicroSD卡),至于还有键盘、鼠标、散热片、风扇、保护壳等。

  树莓派的供电能力有限,大功率IO设备需要外置供电,尤其是USB口,建议买个供电的扩展坞!!!

  有了这些东西就可以开始搭建环境,下面的例子以树莓派3 Model B为硬件搭建。

1.安装系统

在官网下载NOOBS,NOOBS相当PC的BIOS,手机的Recovery。用于引导和配置系统硬件环境,这里我下载的是NOOBS带Raspbian桌面环境的版本(快速下载-移入查看密码)。

准备MicroSD,并用工具格式化SDFormatter,选择待格式化的盘符,点击进行格式化(快速下载-移入查看密码)。

解压NOOBS,拷贝NOOBS_XXX解压文件夹下面的文件与文件夹到MicroSD的根目录。

将MicroSD插入树莓派,接上显示器与电源、鼠标、键盘。(树莓派电路自身是裸露的,千万不要直接与金属表面接触,注意释放手上静电)。

开机出现彩色封面表示正常启动,系统即将出现引导界面,点击“Shift”键指导进入安装界面。

进入一下界面,表示大功告成,选择Raspbian,点击Install,进行安装系统。

如何进行分辨率适配?在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 #进入系统配置

2.远程桌面的安装

最新的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支持多平台版本可以到官网下载。(快速下载-移入查看密码

3.安装NodeJS

NodeJS官网下载安装包或在线安装,注意安装ARM版本。(快速下载-移入查看密码

#方法一、
#作者地址: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 #方法二、
#命令终端
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

4.安装Net环境

这里使用的是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”来解决。

方法一、
#这里是案例,可以下载最新版进行编译(需要耐心等待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等图像库相关的软件的使用 方法二、
#通过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 由于树莓派的内存容量有限,可以适当对Mono的性能进行优化:
关于MONO_GC_PARAMS
mono中的内存分为三块:nursery, major heap和large object space
nursery主要存放新生成的小对象和被pinned住的小对象
major heap是老年代,主要存放在gc中从nursery移过来的对象
large object space存放大于8K的对象,SGen-GC把大对象直接分配在操作系统的内存页上,垃圾回收时直接释放内存回操作系统
MONO_GC_PARAMS需要被设置成环境变量,多个参数用逗号隔开,可以使用以下参数:
max-heap-size:最大堆大小
major:老年代垃圾回收策略,默认只使用单CPU进行垃圾回收,有以下值:`marksweep', `marksweep-conc', `marksweep-par', 'marksweep-fixed' or 'marksweep-fixed-par'
major-heap-size:老年代堆大小,默认为512M,该参数必须和major参数一起使用,单独使用会报错
minor:新生代垃圾回收策略,有以下值:`simple' or `split'
nursery-size:新生代大小,默认为4M,采用的是copying collection, 值必须是2的幂
soft-heap-limit:当内存使用小于该值会较少进行垃圾回收,大于该值则会有更多的垃圾回收次数
stack-mark:线程堆栈扫描策略。有两个值:precise, conservative。SGen垃圾回收器默认使用precise
evacuation-threshold:内存碎片阈值。取值范围[0 - 100(占堆的%)],默认66
wbarrier: 按照官方文档的说法, major collection会扫描整个堆,而nursery collection只会扫描新生代,为了避免冲突,需要追踪从老年代指向新生代的任何引用,mono支持两种数据结构来保持追踪:cardtable 和 remset
save-target-ratio: 保留触发比例 0.1-2 (%)
default-allowance-ratio: 默认限额比例 1-10 (%) 运行案例(根据实际设备的内存可以自行调整):
su xxx #登录要运行程序的用户
cd xxx #进入程序对应的文件夹
ulimit -m 524288 #限制物理内存(KB) = 物理内存 - 524288(KB),如果物理内存低于512MB就需要用512MB - 系统占用内存,注意单位必须换算为KB,防止导致系统崩溃
ulimit -v 1048576 #限制虚拟内存(KB) = 物理内存
export MONO_GC_PARAMS=max-heap-size=512m,major=marksweep-conc,nursery-size=4m,soft-heap-limit=512m,stack-mark=precise,evacuation-threshold=10 #设置内存回收策略,限制Mono能申请的最大内存 = 上面限制的物理内存
mono xxx.exe #运行exe程序

  

耐心等待数小时后,安装完成,可以用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

5.如何创建内存虚拟磁盘

在树莓派上创建内存盘,将频繁读写的缓存等小文件放到内存,减少对SD卡的寿命消耗。

mkdir /ram
mount -t tmpfs -o size=10m,mode=0777 tmpfs /ram

6.时间不准校正方法

手动方式:

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

7.如何开机自动运行命令行工具

下面运行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 #保存退出

8.Linux分区以及SSD优化

fdisk -l #查看分区信息
df -T #查看挂载点新
cfdisk /dev/sda #分区工具
umount /XXX #卸载要格式化的分区
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/sdaXXX #减少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

  

  以上是基本安装方式,随着版本更新,可能存在出入。同时命令中的注释需要去掉。

最新文章

  1. JavaScript--面向对象--猜拳游戏
  2. winform窗体(二)——控件
  3. 微信公众平台推出&quot;微信保护&quot;提升微信账号安全 附微信保护开启教程
  4. 关于webapp的一点思考
  5. 几种 Java 序列化方案的性能比较
  6. 【编程题目】有两个序列 a,b,大小都为 n,序列元素的值任意整数,无序;(需要回头仔细研究)
  7. codeforces C. Diverse Permutation(构造)
  8. JAVA多线程学习--哲学家就餐问题
  9. springmvc实现REST中的GET、POST、PUT和DELETE
  10. linux中萌翻了的cowsay命令
  11. 解决同一PC同一浏览器session共享问题
  12. 百度GPSutil
  13. php键值相同的项数值相加
  14. Alpha冲刺总结
  15. 软件目录结构规范(以python为例)
  16. 背包的一些idea
  17. Java中Dom解析XML
  18. 【Docker】文件拷贝
  19. Python实现文字聊天室
  20. [err]default argument given for parameter 3 of &#39;***&#39;

热门文章

  1. 分享阿里云推荐码 IC1L2A,购买服务器可以直接打9折,另附阿里云服务器部署ASP.NET MVC5关键教程
  2. 【完全开源】知乎日报UWP版(下篇):商店APP、github源码、功能说明。Windows APP 良心出品。
  3. Fedora 21 安装 Nvidia 驱动以及失败后的补救方法
  4. ASP.NET Web API Selfhost宿主环境中管道、路由
  5. ELK 安装笔记
  6. Failure to find xxx in xxx was cached in the local repository, resolution will not be reattempted until the update interval of nexus has elapsed or updates are forced @ xxx
  7. Sass:初识Sass与Koala工具的使用
  8. nginx源码分析之hash的实现
  9. [原创]django+ldap实现单点登录(装饰器和缓存)
  10. Zip 压缩和解压技术在 HTML5 中的应用