Pi OS Server

      在〈Pi OS Server〉中尚無留言

2025/10 發行 trixie 版本

安裝設定

安裝變的很簡單,只要指定鍵盤及設定帳號密碼即可。請注意鍵盤預設是 english(UK),需選擇 other,改成 english(US)。

SSH 設定

執行如下指令啟動 SSH

sudo systemctl enable ssh
sudo systemctl start ssh

啟動 wifi

一開始無線網卡是無法使用的,因為 Wi-Fi is currently blocked by rfkill,需使用如下指令啟動。

sudo raspi-config

然後選擇 System Options/Wireless LAN,然後無線網路的 SSID 及密碼。設定完成後需重新開機,然後使用 ifconfig 查看 ip。

安裝 vim

使用如下指令安裝 vim

sudo apt update
sudo apt install vim

設定 Wifi 固定 IP

執行 sudo vim /etc/netplan/90-xxxx.yaml,修改如下藍色部份。

network:
  version: 2
  wifis:
    NM-12e89705-8047-4883-96ac-23b9e2bf5760:
      renderer: NetworkManager
      match:
        name: "wlan0"
      dhcp4: no
      dhcp6: no
      addresses: [192.168.1.20/24]
      routes:
        - to: default
          via: 192.168.1.1
          metric: 20
      nameservers:
        addresses: [168.95.1.1, 168.95.192.1]
      access-points:
        "Mahal4F_5G":
          auth:
            key-management: "psk"
            password: "密碼"
          networkmanager:
            uuid: "12e89705-8047-4883-96ac-23b9e2bf5760"
            name: "Mahal4F_5G"
            passthrough:
              wifi-security.auth-alg: "open"
              ipv6.addr-gen-mode: "default"
              ipv6.ip6-privacy: "-1"
              proxy._: ""
      networkmanager:
        uuid: "12e89705-8047-4883-96ac-23b9e2bf5760"
        name: "Mahal4F_5G"

儲存後,雖說執行 sudo netplan apply 就可以生效更改 ip,但這可能有 bug,若沒改變 ip,就需重新開機。

設定有線固定 ip

修改 /etc/90-xxxxx.yaml,最後面新增如下

  ethernets:
    eth0:
      dhcp4: no
      addresses: [192.168.1.20/24]
      routes:
        - to: default
          via: 192.168.1.1
          metric: 200
      nameservers:
        addresses: [168.95.1.1,168.95.192.1]

啟動

使用如下指令重新啟動網卡

sudo netplan apply

藍芽

連線

使用 sudo bluetoothctl,然後輸入

power on
disconverable on

就可以在手機查詢到 raspberrypi 的裝置。

更改 bluetooth service

輸入如下指令

sudo vim /etc/systemd/system/bluetooth.target.wants/bluetooth.service ,然後修改如下

[Service]
Type=dbus
BusName=org.bluez
ExecStart=/usr/libexec/bluetooth/bluetoothd -P input
NotifyAccess=main
#WatchdogSec=10
Restart=on-failure
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
LimitNPROC=1

最後動放 Service

sudo systemctl daemon-reload
sudo systemctl restart bluetooth

todo

安裝 bluetooth

已安裝的套件 : python3-gi,bluez

sudo apt install python3-dbus bluez-tools -y git bluetooth bluez bluez-tools libbluetooth-dev libcairo2-dev pkg-config python3-dev gir1.2-glib-2.0 libgirepository1.0-dev build-essential

安裝 btk

todo

git clone https://github.com/taoso/btk.git
cd btk

設定 Python 虛擬環境

todo

python3 -m venv .venv --system-site-packages
source ./.venv/bin/activate
pip install git+https://github.com/pybluez/pybluez.git#egg=pybluez
pip install -r requirements.txt
pip install pycairo PyGObject

todo

Python 建立需擬環境

python3 -m venv .venv --system-site-packages
source ./.venv/bin/activate
pip install pydbus

執行

todo

bluetoothctl

sudo bluetoothctl

power on
agent KeyboardOnly
default-agent
discoverable on
pairable on

Python

安裝編譯 btk 所需的函數庫

sudo apt install -y build-essential python3-dev libbluetooth-dev libcairo2-dev libgirepository1.0-dev pkg-config python3-dev gir1.2-gtk-3.0

下載 btk

git clone https://github.com/taoso/btk.git
cd btk
python3 -m venv .venv

安裝 python 所需的套件

source ./.venv/bin/activate 
pip install git+https://github.com/pybluez/pybluez.git#egg=pybluez
pip install -r requirements.txt
pip install pycairo PyGObject

Pi OS 就是之前的Raspbian, 是Debian的一個分支. 是一種穩健但不支援新技術的Linux作業系統.  目前支援 Pi 4.

下載

請由官網下載, 有三個版本, 都是32位元
desktop and recommended software : 桌面完整版
desktop : 桌面簡易版
Lite : Server版

Desktop支援GPU硬体解碼技術, 所以在播放影片相當的順利. 但Ubuntu mate也支援, 畫面更精美, 所以如果要安裝桌面版的話, 建議使用ubuntu mate.

本篇是為了web cam的使用, 所以說明 Server版本安裝

製作sdcard

下載 balena, 選取sdcard位置及映像檔後, 即可開始flash

balena

第一次登入

早期的版本,第一次登入的帳號密碼為 pi/raspberry,請於登入後把密碼改掉

passwd
然後輸入原密碼 : raspberry
然後再輸入二次新密碼

Bookworm 版本改為開機後要輸入帳號及密碼,然後用新增的帳密登入即可。

修改wifi自動連線

sudo raspi-config

System Options/Wireless LAN/TW,然後輸入 SSID及密碼。

請注意, Pi4 的wifi若啟動, 則容易干擾HDMI螢幕, 只要wifi動作, 畫面就會暗掉。

啟動ssh

啟動 pi 的 ssh,然後再由 Windows 電腦使用 putty 登入。啟動 ssh 的方式如下。

sudo update-rc.d ssh enable
sudo systemctl restart ssh
ifconfig

在 Windows 下執行 putty,依上述的 ip 登入。

更新系統

依如下指令更新系統, 然後最好重新開機。

sudo apt update
sudo apt upgrade
sudo reboot

安裝中文字型及常用套件

sudo apt install vim ttf-wqy-zenhei ffmpeg

新增帳號

sudo useradd -m -s /bin/bash 帳號
sudo passwd 帳號
sudo adduser 帳號 sudo
sudo visudo
然後最後加入
帳號 ALL=(ALL) NOPASSWD: ALL
然後再按Ctrl+o(儲存), Ctrl+x(離開)
logout後, 使用新帳號登入

修改時區

sudo raspi-config

然後選擇Localisation Options/Change Time Zone/Asia/Taipei

手動指定 ip

Bookworm版

Bookworm 使用 NetworkManager 管理網路。使用如下指令查看連線狀況

sudo nmcli -p connection show
結果:
NAME                UUID                                  TYPE      DEVICE
----------------------------------------------------------------------------------
Mahal4F_4G          6f315d90-284a-4b17-86e3-efe9dcb445cd  wifi      wlan0
lo                  072d4b26-c199-40fb-a8da-f54ac6260c87  loopback  lo
Mahal4F_5G          24bf69c6-450a-4413-9d11-14ddd6fe0c3e  wifi      --
Wired connection 1  090c3f7c-cc21-3e7a-9e34-d88126c7056d  ethernet  --

然後輸入如下指令更改 ip

sudo nmcli c mod "Mahal4F_4G" ipv4.addresses 192.168.1.20/24 ipv4.method manual
sudo nmcli con mod "Mahal4F_4G" ipv4.gateway 192.168.1.1
sudo nmcli con mod "Mahal4F_4G" ipv4.dns "168.95.1.1,168.95.192.1"
#重啟網卡
sudo nmcli c down "Mahal4F_4G" && sudo nmcli c up "Mahal4F_4G"

2023/12/11版

這個版本在重新開機後,會連續重開好幾次,是有 bug 的版本,而且dns 設定有問題。

進入 /etc/network/interfaces.d,然後新增 eth0(有線)或 wlan0(無線) 檔案,然後輸入如下。

請注意,如果是使用無線連線,還要加入 wpa-ssid 指定要使用那一個 ssid 及 wpa-psk 設定密碼

auto wlan0
iface wlan0 inet static
address 192.168.1.40
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 168.95.1.1 168.95.192.1
wpa-ssid 網路ssid#無線才需設定
wpa-psk ssid密碼#無線才需設定

2023/12/05版

如果在 /etc/ 下有dhcpcd.conf 那就是舊版的,sudo vim /etc/dhcpcd.conf 開啟檔案, 然後新增如下設定

interface wlan0
static ip_address=192.168.1.10/24
static routers=192.168.1.1
static domain_name_servers=168.95.1.1 168.95.192.1

安裝常用軟体

Python 必裝的套件為 vim 及 ttf-wqy-zenhei (文泉驛開源免費向量字型)

sudo apt-get install vim ttf-wqy-zenhei vsftpd

安裝ftp

安裝套件 : sudo  apt-get install vsftpd

設定 : sudo vim /etc/vsftpd.conf, 並於最後加入如下

write_enable=YES # 啟用可以修改文件的 FTP 命令
local_umask=022 # 本地用戶創建文件的 umask 值
xferlog_std_format=YES # 保持標準日誌文件格式
chroot_local_user=YES #變更ftp目錄為根目錄, 防止跳脫ftp之外
allow_writeable_chroot=YES
utf8_filesystem=YES #防止中文亂碼

重新啟動 : sudo systemctl restart vsftpd

Python測量溫度

vcgencmd 套件可以測量樹莓派的溫度及時脈。

本例需安裝套件

pip install numpy pandas

完整代碼如下

#!/home/thomas/measure/.venv/bin/python3
import sys
import os
import time

from vcgencmd import Vcgencmd

def main():
    start_time = time.time()
    fb = open("/home/thomas/readings.txt","a+")
    fb.write("Elapsed Time (s),Temperature (°C),Clock Speed (MHz),Throttled\n")
    vcgm = Vcgencmd()
    while True:
        temp = vcgm.measure_temp()
        clock = int(vcgm.measure_clock('arm')/1000000)
        throttled = vcgm.get_throttled()['breakdown']['2']

        string = '%.0f,%s,%s,%s\n' % ((time.time() - start_time),temp,clock,throttled)
        print(string, end='')
        fb.write(string)
        time.sleep(1)

if __name__ == '__main__':
    main()

遠端桌面連線

樹莓派 :
sudo raspi-config/Interface Option/VNC 打開

Windows:
下載 vnc viewer,安裝後,輸入樹莓派的ip即可遠端桌面連線

wvkbd 虛擬鍵盤

Pi OS Wayland 架構本身就有虛擬鍵盤了,在工作列的最右邊。若要自行安裝,目前就只有 wvkbd 可以用,使用底下指令安裝

sudo apt install wvkbd

下載 bookworm-osk.zip,解開後將 toggle-wvkbd.sh 及wvkbd.desktop copy 到 /usr/bin下

sudo cp toggle-wvkbd.sh /usr/bin
sudo cp wvkbd.desktop /usr/bin

最後把 wvkbd 圖示置於工作列,vim ~/.config/wf-panel-pi.ini , 然後在 launcher_000003 下新增如下設定

launcher_000004=/usr/bin/wvkbd.desktop

更改成 X11 backends

Pi OS bookworm 的桌面架構改成 Wayland,所以在中文輸入時會有問題,需改成 X11 backends 才會正常。

執行 sudo raspi-config,選6 Advanced options,再選 A6 Wayland,改成 X11 backends,然後重新開機就是 X11 backends 的桌面架了

onboard 虛擬鍵盤

改成 X11 backends 後,漂亮的 onboard 虛擬鍵盤就可以使用,請先執行如下安裝指令

sudo apt install onboard
sudo apt install at-spi2-core

最後在偏好設定就可以看到 onboard 設定,而在無障礙功能裏的 onboard 可以啟動虛擬鍵盤。

安裝嘸蝦米輸入法

改成 X11 backends 後,中文輸入法就正常了,執行如下指令安裝嘸蝦米。

sudo apt install fcitx-table-boshiamy

重新開機即可使用嘸蝦米輸入法

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *