2019-10-19

Linux Mint 19 (Ubuntu 18.04) 設定VNC Server

以下以Linux Mint 19 XFCE (Ubuntu 18.04)為範例:

#安裝vnc4server套件及gnome桌面套件(遠端gnome桌面)
sudo apt-get install gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal vnc4server

若要使用xfce桌面,改安裝以下套件:
sudo apt-get install xfce4 xfce4-goodies vnc4server

#啟動vncserver,此時會要求輸入密碼,並建立~/.vnc/xstartup 連線初始化檔案
vncserver

#修改~/.vnc/xstartup 連線初始化檔案,選擇連線時桌面環境(請依系統桌面修改)
#!/bin/sh

#export XKL_XMODMAP_DISABLE=1
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4 #xfce4桌面
#exec gnome-session #gnome桌面

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &

#以下為使用 gnome 桌面的額外設定
#gnome-panel &
#gnome-settings-daemon &
#metacity &
#nautilus &
#gnome-terminal &

#建立 ~/.vnc/config ,設定vncserver啟動參數,加入以下設定:
#localhost=no #設定對外部網路監聽
geometry=1920x1080 #設定解析度
alwaysshared #設定可多重連線

#新增 /etc/systemd/system/vncserver@:1.service,讓vncserver能自啟動
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
User=foo
Group=foo
#PAMName=login
PIDFile=/home/%u/.vnc/%H%i.pid
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver %i -geometry 1440x900 -alwaysshared -fg
ExecStop=/usr/bin/vncserver -kill %i

[Install]
WantedBy=multi-user.target

#啟用、啟動、停止 vncserver.service
sudo systemctl enable vncserver.service
sudo systemctl start vncserver.service
sudo systemctl stop vncserver.service

#重開機後,檢查一下是不是port 5901有正常在所有網卡介面(0.0.0.0)監聽
netstat -tnlup

#vnc遠端連線測試:
sudo apt-get install vncviewer
vncviewer my-vnc-server-ip:5901
或用remmina連線 my-vnc-server-ip:5901 測試

ref:
https://askubuntu.com/questions/475023/how-to-make-vnc-server-work-with-ubuntu-desktop-without-xfce
https://wiki.archlinux.org/index.php/TigerVNC


2019-10-15

VirtualBox 5 安裝 macOS High Sierra

因為有跨平台開發的需求,所以Windows、GNU/Linux、macOS都習慣裝VM來做測試,其中以安裝macOS最麻煩...

就自已的經驗,用vmware安裝macos最穩定好裝,virtualbox裝macos則問題非常多,可以的話推薦用vmware,這裡用virtualbox裝只是想試試是否相容性有進少步(結果證明是自找麻煩)

以下為安裝High Sierra步驟,若要安裝Mojave或Catalina應該也行,只是VirtualBox的macOS預設最高版本只能選High Sierra,因此以安裝High Sierra為範例。

0.安裝VirtualBox及其extension pack:
https://www.virtualbox.org/wiki/Downloads

1.下載作業系統:
若在APP Store找不到你要的作業系統,可利用mas找出並下載曾經下載過的macOS:
https://github.com/mas-cli/mas

各版本代號如下:
macOS 10.7 Lion – 444303913
macOS 10.8 Mountain Lion – 537386512
macOS 10.9 Mavericks – 675248567
macOS 10.10 Yosemite – 915041082
macOS 10.11 El Capitan – 1147835434(適用無法升級10.12的舊機型)
macOS 10.11 El Capitan – 1018109117
macOS 10.12 Sierra – 1127487414
macOS 10.13 High Sierra – 1246284741

2.將作業系統APP轉為ISO檔:
假設作業系統APP已經下載應用程式中,執行以下指令:
hdiutil create -o /tmp/HighSierra.cdr -size 5530m -layout SPUD -fs HFS+J
hdiutil attach /tmp/HighSierra.cdr.dmg -noverify -mountpoint /Volumes/install_build
sudo /Applications/Install\ macOS\ High\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/install_build
mv /tmp/HighSierra.cdr.dmg ~/Desktop/InstallSystem.dmg
hdiutil detach /Volumes/Install\ macOS\ High\ Sierra
hdiutil convert ~/Desktop/InstallSystem.dmg -format UDTO -o ~/Desktop/HighSierra.iso
mv ~/Desktop/HighSierra.iso.cdr ~/Desktop/HighSierra.iso
rm ~/Desktop/InstallSystem.dmg

此時桌面會產生HighSierra.iso,將它複製到要安裝VM的電腦上

3.新增VirtualBpx VM,作以下設定:

  • 新增虛擬機,名稱為MacOS,作業系統類型為 macOS 10.13 High Sierra (64-bit),動態硬碟至少60GB
  • 系統 > 主機版 > 開機順序,取消軟碟
  • 系統 > 主機版,至少4096mb記憶體
  • 系統 > 處理器,選擇2核心
  • 顯示 > 螢幕,設定128mb記憶體,2D/3D加速(要看你的電腦有無支援)
  • 儲存 > 儲存裝置確定為 SATA/AHCI,並掛載剛剛產生的作業系統iso檔
4.在終端機下執行以下指令(若在windows環境,需先進入VirtualBox安裝資料夾執行):
VBoxManage modifyvm "MacOS" --cpuidset 00000001 000106e5 00100800 0098e3fd bfebfbff
VBoxManage setextradata "MacOS" "VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" "iMac11,3"
VBoxManage setextradata "MacOS" "VBoxInternal/Devices/efi/0/Config/DmiSystemVersion" "1.0"
VBoxManage setextradata "MacOS" "VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" "Iloveapple"
VBoxManage setextradata "MacOS" "VBoxInternal/Devices/smc/0/Config/DeviceKey" "ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
VBoxManage setextradata "MacOS" "VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC" 1

5.將VM開機,此時會從光碟開機,並進入安裝畫面,這邊開始就是重點:
先開啟磁碟工具,並將硬碟格式化成HFS+,千萬不要選APFS!
不然你的VM設定就要重來一遍了,因為VirtualBox 5不認識APFS, 裝了也只會是無法開機!
假設這裡你把硬碟取名為「Macintosh HD」

之後離開磁碟工具,再從上方選單打開終端機,並執行以下指令:
/Volumes/Image\ Volume/Install\ macOS\ High\ Sierra.app/Contents/Resources/startosinstall --volume Macintosh\ HD --converttoapfs NO --agreetolicense

若遇到沒有反應,或顯示「程式已毀損」之類的,很可能又是開發者憑證時間過期的問題,下指令把時間往前調,如:
date 010100002018 或 date 010100002017
然後再重打安裝指令

此時會將安裝檔複製到硬碟中,複製完會重開機,
此時將VM立即關機並退出光碟,然後再次開機,就會進入到Shell畫面,執行以下指令:
打exit退出Shell
選擇 Boot Maintenance Manager > Boot From File >
選第二個EFI選項 > macOS Install Data > Locked Files > Boot Files > boot.efi

此時就會真正開始安裝macOS了!

6.安裝完系統,在macOS終端機執行以下指令以解除軟體安裝限制:
sudo spctl --master-disable

若你是用VirtualBox 6以上的版本安裝,直接從VirtualBox選單選擇插入Guest Additions光碟,並執行VBoxDarwinAdditions.pkg以安裝guest additions,裝完後若有問題可參考以下鏈結解決:
https://stackoverflow.com/questions/41691803/how-to-install-guest-addition-in-mac-os-as-guest-and-windows-machine-as-host/43715619

若是VirtualBox 5,執行以下指令以修正解析度:
VBoxManage setextradata "MacOS" VBoxInternal2/EfiGraphicsResolution 1920x1080

7.將自已加入vboxusers群組,以正常連接外部裝置(如usb裝置等):
sudo groupadd vboxusers
sudo usermod -aG vboxusers ${USER}
再重開機