樹莓派是當前最火的嵌入計算平台沒有之一,樹莓派可以給我們無數的想象,樹莓派的高性能、低功耗、低成本、可擴展性(最新的樹莓派原生支持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
以上是基本安裝方式,隨着版本更新,可能存在出入。同時命令中的注釋需要去掉。