最近工作上剛好需要在樹莓派(Raspberry Pi 3)上安裝 CentOS 7 及建置 LAP (Linux+Apache+PHP)環境,記錄一下過程。
安裝 CentOS 7
至 CentOS 官網下載連結 下載「樹莓派 3」的壓縮檔版本(檔名中含有 RaspberryPi3 即是)。
由於下載的 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
參考資料: