Hypriot-支持ARM64的服務器操做系統

Hypriot-支持ARM64的服務器操做系統

Hypriot目前支持下面的硬件系統,能夠支持ARM64:git

推薦使用 https://github.com/hypriot/flash 進行安裝。github

一、OS鏡像下載

下面是支持的設備運用的示意圖:docker

Architecture

二、源碼構建鏡像

你能夠本地構建SD card image,使用 Vagrant。瀏覽器

該 repo 代碼倉庫構建HypriotOS的SD card image,能夠運行在Raspberry Pi 一、二、3以及Zero上。在GitHub releases頁面能夠找到預先構建好的SD card image。爲了構建SD card image,咱們須要:服務器

  • 獲取文件,從root filesystem,來自 os-rootfs
  • 獲取空的 raw filesystem,來自 image-builder-raw ,帶兩個分區。
  • 添加 Hypriot's Debian repos。
  • 安裝 Raspberry Pi kernel,來自 rpi-kernel
  • 安裝 Docker工具和引擎, Docker Compose 和 Docker Machine。

設置Build環境

首先確認 vagrant 已經安裝。而後運行下面的命令建立Vagrant box,而後使用Vagrant Docker daemon。這個Vagrant box須要運行在guestfish inside。使用export VAGRANT_DEFAULT_PROVIDER=virtualbox 去建立VirtualBox VM。網絡

啓動 vagrant boxssh

vagrant up

輸出 docker hosttcp

export DOCKER_HOST=tcp://127.0.0.1:2375

檢查Docker是否在 vagrant 裏運行。ide

docker info | grep 'Operating System'
Operating System: Ubuntu 16.04.3 LTS

構建SD card image

構建 SD card image,輸出被寫入和壓縮到 hypriotos-rpi-dirty.img.zip工具

make sd-image

運行 Serverspec tests

爲了測試SD card image,經過Serverspec 運行下面的命令。將擴展 SD card image在Docker container 中,而後運行 Serverspec tests ,對應於 builder/test/ 目錄中。

make test

三、刷寫SD卡和測試

如今燒寫 SD card image到Raspberry Pi而後啓動。運行 Serverspec 總體性測試,在樹莓派中對應 builder/test-integration/ 目錄。設置 BOARD 到運行的樹莓派的IP address 或者 host name。

flash hypriotos-rpi-dirty.img.zip
BOARD=black-pearl.local make test-integration

該測試能夠在任何 Docker Machine工做, 所以你不須要建立 Vagrant box。

@使用初始化文件

使用 flash --userdata myinit.yml hypriot.img 的方式能夠指定初始化文件,將使用cloud-init這個機制對系統進行初始化設置,詳情參見 https://github.com/hypriot/flash 裏的說明,使用很是方便。

  • 注意,使用初始化文件或致使啓動時耗費時間運行,出現登陸錯誤的狀況,要耐心等待初始化過程完成,會出現新設定的主機名,再登陸,就能夠了。

四、設置網絡和容器服務

4.1 設置靜態IP地址

Linux上,通常經過/etc/network/interfaces或者/etc/network/interface.d/*.*文件來指定。若是安裝了dhcpcd,則經過/etc/dhcpcd.conf文件來指定。

目前,Hypriot沒有使用dhcpcd,即時手動安裝,也不起做用(參考:https://github.com/hypriot/device-init/issues/6 ),所以只能使用指定interface文件的方法。以下所示,運行:

sudo nano /etc/network/interfaces

輸入下面的內容(IP地址等改成本身的):

# interfaces(5) file used by ifup(8) and ifdown(8)
# Include files from /etc/network/interfaces.d:
# source-directory /etc/network/interfaces.d
    
allow-hotplug wlan0
iface eth0 inet static
address 192.168.1.97
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 8.8.8.8

# Enable Wifi AP SSID
wpa_conf /etc/wpa_supplicant/wpa_supplicant.conf

或者將其保存爲文件 /etc/network/interface.d/wlan0,亦可。該文件啓動時將被interface所包含進去。

4.2 配置WiFi無線接入點

運行命令( sudo nano /etc/wpa_supplicant/wpa_supplicant.conf ),輸入下面內容(把MySSID和MyPassword改爲本身的無線路由器設置):

ctrl_interface=/var/run/wpa_supplicant

network={
  ssid="MySSID"
  psk="MyPassword"
  priority=1
}

保存後,重啓network服務(sudo service network restart)便可。

4.3 安裝Portainer容器管理

$ docker volume create portainer_data
$ docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

獲取IP地址:ifconfig

遠程ssh登陸:ssh pirate@192.168.199.101,192.168.199.101爲ifconfig得到的IP地址。

而後到瀏覽器,輸入:http://192.168.199.101:9000或相似地址便可管理容器服務。

五、版本維護

對本項目維護者,你能夠提交 SD card image 到GitHub releases 版本倉庫,按照下面的方式創建版本:

TAG=v0.0.1 make tag

打開 GitHub release,填寫相應的變化描述和解決問題的連接。

貢獻

你能夠貢獻給該 repo,經過 forking而後發送回 pull requests. 歡迎任何反饋!

相關文章
相關標籤/搜索