樹莓派4B,以樹莓派官方系統爲藍本,定製自己的樹莓派系統

一、目的

樹莓派4B已於2019年6月24號發佈了,感謝樹莓派實驗室(http://shumeipai.nxez.com/)提供的樹莓派4B開發板,可以繼續我的樹莓派教程。從現在起,後續所有課程將全部使用樹莓派4B進行講解(與時俱進嘛)。本文的目的是,記錄我基於樹莓派官方系統,定製教程使用的系統鏡像過程,爲大家提供個參考。

提供的資源:
1、視頻教程,已上傳B站
《大飛品樹莓——自定製樹莓派4B系統安裝篇》:https://www.bilibili.com/video/av79780312。這是本文製作爲鏡像後,安裝鏡像文件視頻教程。
《樹莓派系統安裝說明》:https://www.bilibili.com/video/av71950296
《動手學樹莓派——python上篇》:https://www.bilibili.com/video/av71878718
2、教程配套樹莓派操作系統鏡像
本套課程配套使用系統鏡像,是以raspbian爲基線,添加了教程需要的軟件和課件。
系統鏡像下載地址:https://pan.baidu.com/s/1dT-LNp6Sa3IjkhbBxVl52g
當前樹莓派4B鏡像已上傳到百度雲盤中。

二、意義

爲什麼要定製自己的系統?
1、官方系統已經提供的豐富的軟件工具包,但仍可能無法滿足自己,所有就要依據自己的需要,安裝相應軟件。
2、SD卡不是安全可靠地存儲固件,使用一段時間,SD卡會損壞(flash的擦寫壽命是有限的),所有要將自己的系統定期備份。
3、您的基於樹莓派的產品做的很好,要批量生產了,這是通過將定製好的系統進行備份,然後批量燒寫到SD卡就可以了。

這就是定製自己樹莓派系統的目的,包含安裝相應的軟件包、定製好的系統備份、定製系統的批量化燒寫。

三、開始我們的定製流程

3.1 樹莓派系統藍本

當前使用的樹莓派系統藍本爲樹莓派的Raspbian系統,版本爲“Raspbian Buster with desktop and recommended software”,時間爲 2019-09-26,Kernel version: 4.19,SHA-256:
549da0fa9ed52a8d7c2d66cb06afac9fe856638b06d8f23df4e6b72e67ed4cea。

下載鏡像後,使用windows下的SD卡燒寫工具——win32diskimager-1.0.0-install.exe燒寫系統。(百度雲盤下:https://pan.baidu.com/s/1dT-LNp6Sa3IjkhbBxVl52g,在樹莓派系統安裝工具->windows下)

將SD卡插入樹莓派中,通過micro hdmi裝hdmi線,micro hdmi接口連接樹莓派的HDMI0,hdmi接口連接顯示屏;連接USB的鍵盤和鼠標,樹莓派上電。

打開終端,輸入:sudo raspi-config進行配置。要配置“Interfacing Options”中,使能SSH和VNC選項。(第一次安裝系統鏡像是不是能SSH的,只有通過顯示器的模式,才能使能。使能SSH和VNC後,就可以通過有線連接或者無線連接,以終端或者遠程桌面的方式,訪問樹莓派了,就不用顯示器了,把樹莓派當做一個服務器即可)。此步可以配置樹莓派連接到無線網中。拔掉HDMI線,通過有線連接或者無線方式可以訪問樹莓派了。

3.2 修改系統配置

需要的修改配置有python的默認版本,修改對系統分區的描述,修改樹莓派更新源爲國內源。

3.2.1修改python版本

樹莓派官方python使用2.7.16版本,咱們修改python默認使用3.7.3版本。
cd /usr/bin/ #進入python的安裝目錄
sudo rm python #刪除python默認的鏈接
sudo ln -s python3.7 python #將python3.7指定爲python的默認版本

此時,輸入python命令,默認啓動python3.7.3版本。
在這裏插入圖片描述

3.2.2 修改SD卡的分區描述

此步非常重要,樹莓派官方鏡像使用uuid的方式描述SD卡的分區,這是標準的方式。但如果使用uuid的方式,分區信息被數字化成一串序列號,這樣在系統備份和批量安裝中,肯定對分區的的uuid描述不同,導致內核無法正確掛載rootfs(根文件系統),導致自定製系統啓動失敗。爲了解決這個問題,咱們需要修改下系統配置文件。修改的地方有兩處。
1、修改啓動中,傳遞內內核的rootfs的信息
sudo vi /boot/cmdline.txt
修改“root=uudi…”爲“root=/dev/mmcblk0p2”。
因爲,SD卡的設備名爲mmcblk0,根文件系統使用第二個分區,設備號爲mmcblk0p2。
在這裏插入圖片描述2、修改/etc/fstab文件
修改根文件系統掛載後,系統進行自動掛載和自動修復的配置信息。
sudo vi /etc/fstab
修改
“/boot”和“/”的掛載分區描述,由uuid值更改爲具體的掛載分區名稱。
/boot掛載/dev/mmcblk0p1設備(SD卡的第一個分區,存儲內核文件、dtb設備樹描述文件等)
/掛載/dev/mmcblk0p2設備(SD卡的第二個分區,存儲根文件系統)
在這裏插入圖片描述!!!注意:本步特別重要。

3.2.3 修改樹莓派更新源爲國內源

更換爲國內源,這樣安裝軟件的數據會挺高很多。
sudo vi /etc/apt/sources.list.d/raspi.list #修改源配置文件
將第一行修改爲:
deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
使用中科大的更新源。
在這裏插入圖片描述輸入指令:sudo apt-get update 使用新的源。
在這裏插入圖片描述

3.2.4 修改pip3更新源爲國內源

mkdir ~/.pip
vim ~/.pip/pip.conf
在pip.conf中輸入:
[global]

timeout = 6000

index-url = https://mirrors.aliyun.com/pypi/simple/

trusted-host = pypi.tuna.tsinghua.edu.cn

即可完成pip3的使用國內更新源。

3.3 安裝自己的軟件

通過VNC遠程桌面(或者SSH終端)登錄樹莓派,進行軟件安裝。當前教程安裝的軟件有jupyter-notebook和vsftpd。

3.3.1 jupyter-notebook軟件安裝

jupyter-notebook爲配套教程使用的教程開發環境,可以寫python代碼的同時,直接運行python。

1.安裝jupyter-notebook軟件
安裝jupyter-notebook。
輸入指令:pip3 install jupyter #進行jupyter-notebook的安裝。

安裝相關配件
sudo apt-get install python-pygments
sudo apt-get install python-ipython
python3 -m pip install ipykernel

安裝完畢後,輸入sudo init 6指令重新啓動樹莓派。

2.配置jupter-notebook軟件
輸入指令:jupyter-notebook --generate-config 生成配置文件。
配置文件存放在/home/pi/.jupyter/jupyter_notebook_config.py下。修改該配置文件。
c.NotebookApp.ip = ‘*’ # 開啓所有的IP訪問,即可使用遠程訪問
c.NotebookApp.open_browser = False # 關閉啓動後的自動開啓瀏覽器
c.NotebookApp.port = 61580 # 設置端口61580

輸入指令:jupyter-notebook password,輸入密碼,配置jupyter-notebook密碼。

3、驗證jupyter-notebook的上電啓動
重啓樹莓派,通過有線網連接輸入169.254.108.204:61580

3.3.2 vsftpd軟件安裝

vsftpd提供ftp服務器功能,用戶PC機與樹莓派進行文件交互。
輸入指令:sudo apt-get install vsftpd 即可安裝
安裝完畢後,
輸入指令:vi /etc/vsftpd.conf 配置vsftpd
將#write_enable=YES變爲write_enable=YES,刪除“#”,這樣PC機可以將文件寫到樹莓派中。

重啓樹莓派,使用filezilla工具登錄樹莓派,通過有線網絡登錄。
設備IP爲169.254.108.204,用戶名:pi,密碼:raspberry。即可與樹莓派交換文件。
在這裏插入圖片描述

3.3.3 給樹莓派裝個儀表盤

本節按照樹莓派實驗室的《樹莓派安裝 Nginx + PHP7.0 + Pi Dashboard》教程搭建。(http://shumeipai.nxez.com/2018/04/25/install-pi-dashboard-with-nginx-php7-on-pi.html)

1.安裝 Nginx 和 PHP7
sudo apt-get update
sudo apt-get install nginx php7.0-fpm php7.0-cli php7.0-curl php7.0-gd php7.0-mcrypt php7.0-cgi
sudo service nginx start
sudo service php7.0-fpm restart

2.修改文件
sudo vi /etc/nginx/sites-available/default
將其中的如下內容:
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
替換爲
location / {
index index.html index.htm index.php default.html default.htm default.php;
}

location ~.php$ {
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
#fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME documentrootdocument_rootfastcgi_script_name;
include fastcgi_params;
}

3.下載web網頁
cd /var/www/html
sudo git clone https://github.com/spoonysonny/pi-dashboard.git

4、樹莓派儀表盤
設備上電後,在瀏覽器中輸入:http://169.254.108.204/pi-dashboard/。即可出現樹莓派儀表盤。
在這裏插入圖片描述

3.3.4 安裝RPi.gpio軟件,進行我們在樹莓派4B上的教程

1.Python GPIO 的安裝
輸入指令:
sudo apt-get install python-dev
sudo apt-get install python-rpi.gpio

2、測試 SAKS 擴展板
touch led_off.py
vi led_off.py
輸入如下內容:
#!/usr/bin/env python
#-- coding: utf-8 --

#Copyright © 2016 NXEZ.COM.
#http://www.nxez.com

#Licensed under the GNU General Public License, Version 2.0 (the “License”);
#you may not use this file except in compliance with the License.
#You may obtain a copy of the License at

#http://www.gnu.org/licenses/gpl-2.0.html

#Unless required by applicable law or agreed to in writing, software
#distributed under the License is distributed on an “AS IS” BASIS,
#WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#See the License for the specific language governing permissions and
#limitations under the License.
#tutorials url: http://shumeipai.nxez.com/2015/03/23/saks-diy-tutorials-water-lights.htm
author = ‘Spoony’
license = ‘Copyright © 2016 NXEZ.COM’

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)

DS = 6
SHCP = 19
STCP = 13

def init():
GPIO.setup(DS, GPIO.OUT)
GPIO.setup(SHCP, GPIO.OUT)
GPIO.setup(STCP, GPIO.OUT)

GPIO.output(DS, GPIO.LOW)
GPIO.output(SHCP, GPIO.LOW)
GPIO.output(STCP, GPIO.LOW)

def writeBit(data):
GPIO.output(DS, data)

#寫入8位LED的狀態
def writeByte(data):
for i in range (0, 8):
writeBit((data >> i) & 0x01)
#狀態刷新信號
GPIO.output(STCP, GPIO.LOW)
GPIO.output(STCP, GPIO.HIGH)

try:
init()
writeByte(0xff)
time.sleep(1)
writeByte(0x00)
time.sleep(1)
writeByte(0xff)
time.sleep(1)
writeByte(0x00)

except KeyboardInterrupt:
print (“程序終止”)

本腳本的目的時,SAKA的LED等進行全部的閃爍兩次。

3.將led_off.py添加到上電自啓動腳本中
vi /home/pi/power_on_autorun/power_on.sh
添加內容:
#run led test
/usr/bin/python /home/pi/power_on_autorun/led_off.py
即可上電運行led測試程序,系統啓動後,led組會閃爍兩次。

3.3.5 將大飛品樹莓系統課程git到系統中

將我的大飛品樹莓系統教程,git到樹莓派4B上吧。
mkdir /home/pi/Notebooks/ #建立Notebooks目錄
cd /home/pi/Notebooks/ #進入該目錄

git樹莓派系統安裝篇:
git clone https://gitee.com/shirf_taste_raspi/raspi_os_setup.git

git樹莓派第一期課程
git clone https://gitee.com/shirf_taste_raspi/easy_raspi_python_one.git

git樹莓派硬件測試教程
git clone https://gitee.com/shirf_taste_raspi/SAKS_hardware_test.git

3.3.6 添加樹莓派上電自啓動腳本

通過在/etc/rc.local中添加用戶自定義的上電自啓動腳本。達到樹莓派上電啓動後,自動運行/home/pi/power_on_autorun/power_on.sh這個腳本。
1.新建腳本文件
mkdir /home/pi/power_on_autorun/ #新建目錄
touch /home/pi/power_on_autorun/power_on.sh #新建自動運行目錄
vi /home/pi/power_on_autorun/power_on.sh #編輯腳本,輸入如下內容
#!/bin/sh

#run led test
/usr/bin/python /home/pi/power_on_autorun/led_off.py

#run jupyter-notebook
cd /home/pi/
/usr/bin/python3 /home/pi/.local/bin/jupyter-notebook &

上述內容爲上電進行SAKS擴展模塊LED組閃爍顯示,證明設備已啓動成功,自動啓動jupyter-notebook程序

2.讓樹莓派運行自定義的腳本
vi /etc/rc.local
在exit 0 之前,添加
/bin/su - pi -c “/home/pi/power_on_autorun/power_on.sh”
表示已pi用戶權限運行自定義的power_on.sh腳本。

後續有新的自定義啓動程序,只要添加到/home/pi/power_on_autorun/power_on.sh中即可。

3.3.7 刪除已連接的無線信息

sudo vi /etc/wpa_supplicant/wpa_supplicant.conf #編輯無線網絡配置信息,刪除其中所有network = {***}信息。

四、備份自定製鏡像及安裝自定製鏡像

4.1 備份自定製鏡像

1.以root權限掛載sd卡
將SD通過usb讀卡器插入計算機中,使用umount命令取消SD卡自動掛接。
su root #切換到root權限
mount /dev/sdb1 /media/shirf/sdb1 #將boot分區掛接到sdb1目錄下
mount /dev/sdb2 /media/shirf/sdb2 #將rootfs分區掛接到sdb2目錄下

2.進行系統備份
運行指令:sh backup_system.sh
經過20分鐘備份生成backup.img文件。

4.2 還原自定製鏡像到SD卡中

使用工具“Win32DiskImager”。運行該工具。選擇映像文件,再點擊寫入即可。
!!!注意,一定要關閉相關殺毒軟件,不然U盤被掛載着,沒法寫入。
在這裏插入圖片描述
燒寫成功後:
在這裏插入圖片描述

五、燒寫鏡像後,需要的工作

將燒寫完畢的SD卡插入樹莓派中,上電啓動。

5.1 SAKS擴展模塊提出系統啓動成功

如果您安裝了SAKS樹莓派擴展模塊的話,會看到LED燈組進行2次閃爍,證明系統啓動成功。

5.2 樹莓派儀表盤提示系統系統成功

如果沒有購買SAKS樹莓派擴展模塊,可以在上電30秒後,訪問樹莓派儀表盤,計算機的IP需要配置爲169.254.108.150(在一個網段的其他值也可以),通過有線網絡連接PC機和樹莓派。
在瀏覽器中輸入:http://169.254.108.204/pi-dashboard/。即可出現如下界面:
在這裏插入圖片描述

5.3 配置樹莓派使用所有SD卡容量

使用有線網絡連接PC機和樹莓派,配置PC有線網絡爲:169.254.108.150。
通過VNC登錄樹莓派,樹莓派IP爲:169.254.108.204,用戶名爲:pi,密碼爲:raspberry。
在這裏插入圖片描述
通過VNC成功登錄樹莓派:

在這裏插入圖片描述啓動終端,輸入:sudo raspi-config,在“Advanced Options”中選擇“A1 Expand Filesystem”進行執行。重啓樹莓派即可。

5.4 訪問jupyter-notebook進行教程的學習

在瀏覽器中輸入:http://169.254.108.204:61580,密碼爲:raspberry。即可通過jupyter-notebook進行“大飛品樹莓”課程。

大飛品樹莓課件在“/Notebooks/easy_raspi_python_one”下。
大飛品樹莓視頻教程在:https://www.bilibili.com/video/av71878718
所有線上教程和課件全部免費!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章