Photon OS

前言

由於打算把所有的網路服務都逐步改成docker的方式,所以打算把底層的系統也換成Vmware針對docker等容器特化版的Linux - PhotoOS

Installation

  1. 下載Image ISO
  2. 然後在VMware workstation或VMware Esxi上建立新的VM(選擇VMware PhotonOS 64 bits或是Linux Kernel最新的64bits都可以)
  3. 用光碟開機後依照步驟做就好了

基本上這個系統需要的RAM跟空間很小,但是你會需要RAM跟空間來跑Docker.所以在建立的時候請考慮你要使用的服務數量來設定你的RAM跟空間

Basic Setup

確認基本服務

1
2
#看一下基本的系統服務是否有開啟,例如open-vm-tools
systemctl status vmtoolsd.service

帳號設定

安裝的時候就會設定root密碼了,可以利用useradd再增加一般使用者(為了安全性)

1
2
3
4
#增加使用者
useradd -m -g root $(your_id)
#替你的帳號設定密碼
passwd $(your_id)

因為使用上還是很常會需要root權限,所以可以依照個人喜好決定是否要建立額外帳號然後登入後用su或是sudo或是直接修改/etc/ssh/sshd_config改成允許root ssh登入都可以

網路設定

Systemd-Networkd

基本規則

參考網頁systemd-networkd@ArchWiKi

安裝後的系統預設是dhcp開啟的狀態,若是只要單ip並且有另外的dhcpd加上Mac Address控制的話是可以不用動,有其他需求的需要去修改以下檔案

關閉DHCP

1
2
3
4
5
6
7
8
#/etc/systemd/network/99-dhcp-en.network
--------------------------------------------------------------------------------------------------------------------------------
[match]
Name=e*

[Network]
DHCP=yes #這個改成no來關閉dhcp
IPv6AcceptRA=no

固定IP設定方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#/etc/systemd/network/10-static-en.network
--------------------------------------------------------------------------------------------------------------------------------
[Match]
Name=ens160 #網卡名稱

[Network]
Address=10.1.10.9/24 #IP位置,可重複多次定義多個IP
Gateway=10.1.10.1 #Gateway IP
DNS=10.1.10.1 #DNS IP
# NTP設定,用空白隔開不同Server
NTP=tock.stdtime.gov.tw watch.stdtime.gov.tw time.stdtime.gov.tw clock.stdtime.gov.tw tick.stdtime.gov.tw
# 關閉IPV6
LinkLocalAddressing=no
IPv6AcceptRA=no

設定網路介面名稱

1
2
3
4
5
6
7
8
#/etc/systemd/network/10-ethusb0.link
--------------------------------------------------------------------------------------------------------------------------------
[Match]
MACAddress=00:00:00:00:00:00 #卡號

[Link]
Description=USB to Ethernet Adapter #這張網路卡的說明
Name=ethusb0 #介面名字

想建立多張網卡的話就建立三個檔案分開定義卡號就好了

升級系統packages

1
yum update

安裝程式package

1
yum install -y vim #安裝vim

尋找package

1
yum search python #尋找所有名字裡有python的package

掛載SMB分享的檔案

基本上會把docker的volume檔案夾先mount上NAS上的備份用資料夾,這樣可以

  1. 簡單備份
  2. 減少PhotonOS的HDD空間需求
  3. 針對某些需要NAS上檔案的docker服務可以直接access

參考資料

Cifs-utils

基本上我的音樂檔案都是放在NAS上面,雖然可以透過NFS掛在機器上,但是同理也可以用SMB/Cifs掛載

在PhotonOS上可以利用yum安裝

1
yum install -y cifs-utils

然後修改加入

1
2
3
#/etc/fstab
--------------------------------------------------------------------------------------------------------------------------------
\\winbox\getme /mnt/win cifs user,uid=500,rw,noauto,suid,credentials=/root/secret 0 0

以及

1
2
3
4
/root/secert
--------------------------------------------------------------------------------------------------------------------------------
username=sushi #SMB ID
password=yummy #SMB ID的Password

記得/root/secert的權限改成0400

Cifs-utils + autofs

這個可以自動加卸載這個在photonOS上測試無效

1
yum install -y autofs

增加到

1
2
3
#/etc/auto.master
--------------------------------------------------------------------------------------------------------------------------------
/mymount /etc/auto.mymount

然後編輯

1
2
3
#/etc/auto.mymount
--------------------------------------------------------------------------------------------------------------------------------
winbox -fstype=cifs,rw,noperm,credentials=/root/secret.txt ://winbox/getme

有任何使用到/mymount的動作就會自動掛上

使用Systemd開機自動掛載

因為/etc/fstab的auto比網路還快就啟動,所以最保險的方法還是建立systemd的service,其他的方法基本上都無效

1
2
3
4
5
6
7
8
9
10
11
12
#/etc/systemd/system/mount.service
---------------------------------------------------------------------------------------------------------------------------------
[Unit]
Description=mount CIFS
After=network.target

[Service]
Type=simple
ExecStart=/bin/mount -a

[Install]
WantedBy=multi-user.target

重點是要定義After=network.target這樣才會在有網路後進行

延伸Tips

擴容

實際跑一陣子後,會發現不管怎麼省吃儉用,一開始給予的VM硬碟大小,很大機率會不夠用然後需要擴大(實際上我已經遇到兩三次了)
以前用windows VM的時候的解決方案通常是再加一個HDD然後掛其他槽解決,但是使用Photon OS的情況下,大多數都會希望直接擴大原有的/dev/sda就好了

參考文章 - Photon OS Github說明頁面

Esxi調整HDD容量

這個就不用特別說明,直接修改Esxi讓HDD大小增加就好了

parted

1
tdnf -y install parted

先安裝parted(若沒裝的話)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 先scan變更

echo 1 > /sys/class/block/sda/device/rescan

# 進入parted

parted /dev/sda

# 列出你的分割區,若有提示你沒用上全部的硬碟要不要fix就選f去修正

(parted) print

# 使用resizepart把空間都用上(100%)

(parted)resizepart <第幾個分割區> 100%

# 完成後離開Parted,使用resize2fs指令把你擴大後的空間fs弄好

resize2fs </dev/sdaX>

# 搞定後可以用df -H指令看一下效果