樹莓派 CentOS 7 安裝與配置

最近工作上剛好需要在樹莓派(Raspberry Pi 3)上安裝 CentOS 7 及建置 LAP (Linux+Apache+PHP)環境,記錄一下過程。

安裝 CentOS 7

CentOS 官網下載連結 下載「樹莓派 3」的壓縮檔版本(檔名中含有 RaspberryPi3 即是)。

在 CentOS 官網可以下載樹莓派用的映像檔

由於下載的 img 壓縮檔是 xz 格式,因此要解壓縮成 img 檔後再燒錄到 MicroSD 卡。如果是 Unix-like 的作業系統(Linux、macOS),可直接用下列格式指令完成:

xzcat CentOS-Userland-7-armv7hl-Minimal-$RELEASE-$MODEL.img.xz | sudo dd of=$/path/to/sd/card status=progress bs=4M
sudo sync

例如,下載的是 CentOS-Userland-7-armv7hl-Minimal-1708-RaspberryPi3.img.xz,而 MicroSD 卡是 mount 在 /dev/mmcblk0,則指令將是:

xzcat CentOS-Userland-7-armv7hl-Minimal-1708-RaspberryPi3.img.xz | sudo dd of=/dev/mmcblk0 status=progress bs=4M
sudo sync
  • 注意:因為是用 root 權限執行寫入磁區指令(dd),要非常小心確認 MicroSD 卡的掛載目錄位置,否則一不小心就會有目的磁碟檔案系統毀損的悲劇了!

如果是 Windows 作業系統,則可先用免費的 7-Zip 解壓縮出映像檔(.img)檔,至於將映像檔燒錄到 USB/MicroSD 的工具,其實蠻多的。在 Raspberry Pi 官網文件(Installing operating system images using Windows - Raspberry Pi Documentation)是使用 Win32 Disk Imager。或者也可直接參考 Win32 Disk Imager 備份與燒錄 SD 卡 這篇文章將映像檔燒錄到 MicroSD 卡。當燒錄完成後,將這片 MicroSD 卡插入樹莓派,接上網路線後開機。

下載安裝的 CentOS 映像檔,系統初始設定值如下(via: SpecialInterestGroup/AltArch/Arm32 - CentOS Wiki):

The default settings for the installed image are :

* root password : centos
* eth0 setting : dhcp
* selinux status : permissive or disabled (board/kernel specific, see [Supported Boards] section and your model)
* no ntp/chronyd setup

如果有 HDMI 線可以連接螢幕,再加個鍵盤就可以直接登入。如果沒有外接螢幕則可以在區網內用 ssh 遠端登入作業。由於樹莓派的網卡預設是使用 DHCP,所以可以在區網內利用一些技巧,例如網路掃描工具或在 gateway(像是家用的寬頻分享器)上的 DHCP clients 列表判斷得知。登入後,將再進行後續若干調整設定作業。

CentOS 初始設置

系統更新

登入後第一件事當然是更新套件:

[root@centos-rpi3 ~]# yum -y update

調整分割區容量

另外,登入後在 root 家目錄下有個 README 的說明文件,包括

  • 自動調整分割區容量
  • 設定驅動 WIFI 無線網卡

可以用下列指令看到 SD 卡的容量是 16GB,但 CentOS 預設給的分割區容量是只有 2 GB:

[root@centos-rpi3 ~]# fdisk -l
Disk /dev/mmcblk0: 15.9 GB, 15931539456 bytes, 31116288 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000c3c9b

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            2048     1026047      512000    c  W95 FAT32 (LBA)
/dev/mmcblk0p2         1026048     2074623      524288   82  Linux swap / Solaris
/dev/mmcblk0p3         2074624     6268927     2097152   83  Linux

[root@centos-rpi3 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       2.0G  995M  839M  55% /
devtmpfs        459M     0  459M   0% /dev
tmpfs           463M     0  463M   0% /dev/shm
tmpfs           463M   12M  451M   3% /run
tmpfs           463M     0  463M   0% /sys/fs/cgroup
/dev/mmcblk0p1  500M   49M  452M  10% /boot
tmpfs            93M     0   93M   0% /run/user/0

所以還有 10 多 GB 的空間是閒置未使用。可以依照文件說明,使用下面的指令來擴增:

[root@centos-rpi3 ~]# /usr/local/bin/rootfs-expand

完成後再查看磁區分割使用狀況,可以發現已調整完成:

[root@centos-rpi3 armv7hl]# fdisk -l
Disk /dev/mmcblk0: 15.9 GB, 15931539456 bytes, 31116288 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000c3c9b

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            2048     1026047      512000    c  W95 FAT32 (LBA)
/dev/mmcblk0p2         1026048     2074623      524288   82  Linux swap / Solaris
/dev/mmcblk0p3         2074624    31116254    14520815+  83  Linux

[root@centos-rpi3 armv7hl]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        14G  1.9G   12G  14% /
devtmpfs        460M     0  460M   0% /dev
tmpfs           464M     0  464M   0% /dev/shm
tmpfs           464M   12M  452M   3% /run
tmpfs           464M     0  464M   0% /sys/fs/cgroup
/dev/mmcblk0p1  500M   51M  450M  11% /boot
tmpfs            93M     0   93M   0% /run/user/0
tmpfs            93M     0   93M   0% /run/user/1000

時區設定及對時

系統預設的時區是 UTC(格林威治標準時間),所以要將時區設定為台灣(UTC+8):

[root@centos-rpi3 ~]# timedatectl set-timezone "Asia/Taipei"
[root@centos-rpi3 ~]# timedatectl
      Local time: Wed 2017-09-27 16:20:44 CST
  Universal time: Wed 2017-09-27 08:20:44 UTC
        RTC time: n/a
       Time zone: Asia/Taipei (CST, +0800)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a

要自動對時,先安裝 ntp 套件:

[root@centos-rpi3 ~]# yum -y install ntp

再啟用系統自動對時服務:

[root@centos-rpi3 ~]# timedatectl set-ntp yes

語系設定

系統預設是未設定語系,可以用 localectl 指令查看:

[root@centos-rpi3 ~]# localectl
   System Locale: n/a

       VC Keymap: n/a
      X11 Layout: n/a

若要查看支援的語系,則可加上 list-locales 參數:

[root@centos-rpi3 ~]# localectl list-locales | grep "US"
en_US
en_US.iso88591
en_US.iso885915
en_US.utf8
es_US
es_US.iso88591
es_US.utf8
unm_US
unm_US.utf8
yi_US
yi_US.cp1255
yi_US.utf8

由於個人偏好,這邊是設定為 en_US.utf8。若習慣使用台灣中文語系的話,可以改設為 "zh_TW.utf8":

[root@centos-rpi3 ~]# localectl set-locale LANG=en_US.utf8
[root@centos-rpi3 ~]# localectl
   System Locale: LANG=en_US.utf8
       VC Keymap: n/a
      X11 Layout: n/a

重新開機,讓所有調整設定生效啟動:

[root@centos-rpi3 ~]# systemctl reboot

參考資料: