協同設計室(三)

兩週前, 當安裝設定 Ubuntu 18.04 Server 版時, 就已經從 https://blog.printk.io/2018/04/ubuntu-18-04-lts-bionic-beaver-server-installer-differences/ 中得知, 整體的安裝過程與 16.04 有明顯差異.

SFTP 伺服器設定

假如使用 ubuntu-18.04-live-server-amd64.iso 執行安裝, 必須了解新的網路採用 netplan YAML 格式設定 (詳見: netplan.io). 而且安裝流程自動搭配一系列套件. 其中包括 openssh-server/openssh-sftp-server/ssh-import-id.

以 openssh-sftp-server 的設定而言, 在 Ubuntu 16.04 只要手動選擇安裝 openssh-server, 安裝流程就會自動配置, 安裝完成後, sftp client 就可以自動對任何一個使用帳號進行 sftp 傳檔, 但是在 Ubuntu 18.04, 即便自動安裝了 sftp server 所需的套件, 仍必須手動對每一位用戶設定 sftp 連線的許可內容.

設定方法為 sudo vi /etc/ssh/sshd_config, 在設定檔案最後加入:

Match group sftp
ChrootDirectory /home
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

表示只有屬於 sftp 群組的使用者才能夠啟動 sftp 連線, 且以各自的 /home/myuser 當作連線目錄.

sshd_config 存檔後, 以 sudo service ssh restart 重新啟動 ssh 服務, 接著要將允許使用 sftp 的帳號納入 sftp 群組, 先建立 sftp 群組:

sudo addgroup sftp

然後將 myuser 用戶加入 sftp 群組:

sudo usermod -a -G sftp myuser

之後, myuser 就可以使用 filezilla 客戶端以 sftp 協定連線到伺服器, 以 myuser 帳號密碼登入後, 連結到 /home/myuser 目錄.

參考資料:

有關建立 sftp 群組並修改 ssh 伺服設定:

https://linuxconfig.org/how-to-setup-sftp-server-on-ubuntu-18-04-bionic-beaver-with-vsftpd

有關將用戶納入 sftp 群組設定:

https://askubuntu.com/questions/79565/how-to-add-existing-user-to-an-existing-group

BCD 檔案複製

由於協同設計室中的六台電腦採用的群準還原卡版本為 UEFI V8, 若使用還原卡的複製 Windows 10 磁區功能後, 必須使用 WinPE DVD 或 USB 隨身碟開機後, 複製開機磁區的 BCD (Boot Configuration Data) 修復, 因此需要自製一只開機用的 USB WinPE, 加上 BootICEDiskGenius 等工具套件.

製作 WinPE USB

首先必須要在一台能夠正常開機的 Windows 10 中, 安裝適合的 Windows ADK (Windows Assessment and Deployment Kit), 意思是必須配合所複製磁區的 Windows 10 版本, 下載相應的 Windows ADK 套件, 目前最新的版本為 Windows ADK for Windows 10, version 1803.

在用來製作 WinPE USB 開機隨身碟的 Windows 10 電腦上完成 Windows ADK 的安裝後, 首先執行 Deployment and Imaging Tool environment, 將開機用的 USB WinPE 資料暫時放在 c:\winpe 目錄中.

copype amd64 c:\winpe

接下來將 boot.wim Mount 進 c:\winpe\mount 目錄中:

Dism /Mount-Image /ImageFile:"C:\WinPE\media\sources\boot.wim" /index:1 /MountDir:"C:\WinPE\mount"

接著加入 HTML Application (HTA) 套件:

Dism /Add-Package /Image:"C:\WinPE\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-HTA.cab" 

因為之後所要使用的 Diskgenius 需要中文介面, 所以必須再加上中文的支援:

Dism /Add-Package /Image:"C:\WinPE\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\zh-cn\WinPE-HTA_zh-tw.cab"

Dism /Add-Package /Image:"C:\WinPE\mount" /PackagePath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-FontSupport-ZH-TW.cab"

然後就可以將 c:\winpe 目錄中的資料轉進 f: 槽, 讓代號為 f: 的 USB 隨身碟成為 WinPE 開機碟:

makewinpemedia /UFD c:\winpe f:

最後則是下載 BootICEDiskGenius 等兩項工具套件, 然後使用 7zip 工具, 開啟 f:\sources\boot.wim 檔案, 將 BootICEx64.exe 放入 f:\sources\boot.wim\Users 目錄中, 並且將 DiskGenius 目錄也納入 f:\sources\boot.wim\Users 目錄中, 就完成 WinPE USB 開機隨身碟的製作.

修復 Windows GPT 啟動區 BCD 檔案

假設使用了群準 UEFI V8 還原卡中的內建磁區複製功能, 將第一開機磁區中的資料複製到第二磁區, 進入開機表單後選擇第二磁區, 將無法進入 Windows 10 的正常開機程序, 原因是複製取得的第二磁區中的 EFI\MicroSoft\Boot\BCD 檔案並非正確的 Boot Configuration Data, 必須從前述製作的 WinPE USB 開機隨身碟中複製.

基本的操作步驟為 (僅適用於 UEFI 磁碟複製, 若使用群準 Pro V8 MBR 分割的磁區複製, 可以直接開機, 不需額外處理 MBR):

  1. 從群準 UEFI V8 開機選單中, 以滑鼠選擇第二磁區.
  2. 接著按下 Ctrl + i, 表示要 install 操作系統.
  3. 接下來 UEFI BIOS 會進入重新開機流程, 這時按下 F8 (在 Asus 主機板表示要選擇 boot 裝置).
  4. 選擇以前述所製作的 WinPE USB 開機.
  5. WinPE 開機後會出現命令列視窗, 這時可以 cd 到 C:\Users\DiskGenius 目錄中, 執行 DiskGenius, 目的是指定第二磁區中的 ESP 分割區磁碟代號.
  6. DiskGenius 視窗操作介面左側, 以滑鼠右鍵點選 ESP 分割區, 選擇指派新的磁碟機代號, 例如: 使用內建的磁碟機代號 (假設為 D:).
  7. 當第二磁區中的 ESP 分割區有了磁碟代號後 (假設為 D:), 就可以執行 C:\Users\BootICEx64.exe, 從目前的開機碟中將 BCD 資料複製給第二磁區.
  8. 進入 BootICEx64.exe 視窗操作介面後, 選擇 BCD 編輯, 然後在 BCD 文件中, 指定前述所設定的 D: 槽中的 EFI\MicroSoft\Boot\BCD 檔案, 當作編輯對象.
  9. 接ˋ著點選其下的智慧編輯模式, 選擇 Windows 10 的啟動分割 (即 C:), 點擊保存當前設置後, 當出現 BCD 參數修改成功視窗後即完成, 詳細的說明可以參考 https://github.com/mdecourse/wcms2018/files/1947497/Evosys_UEFI_GPT_partition_copy.pdf

將電腦輔助設計室實體磁區轉為虛擬硬碟

目前電腦輔助設計室第二磁區, 主要安裝套件包括:

Ansys 18.1 - 25 GB

Moldex3D R15 - 1.5 GB

Comsol 5.3 - 4 GB

AutoDesk AutoCad, Inventor 2016 等 - 7 GB

PTC Creo 3.0 M090 - 5 GB

Mathematica 9.0 - 4.5 GB

Matlab R2017a - 7 GB

Abaqus 2017 - 3 GB

Recurdy V8R5 - 4 GB

為了方便流通此一原版套件磁區, 特別製作成虛擬硬碟, 方法如下:

  1. 首先以第二磁區開機後, 加掛一個 6TB 的 USB 外接硬碟, 準備儲存虛擬硬碟檔案.
  2. 利用 https://docs.microsoft.com/en-us/sysinternals/downloads/disk2vhd, 將第二磁區轉為 .vhd 格式, 存入外接硬碟中.
  3. 此一檔案容量為 366 GB, 準備利用 Virtualbox 開機, 但是實際製作時, 出現找不到 driver 的錯誤, 無法正常開機.
  4. 接下來利用 Windows 開機 iso DVD, 加掛在 Virtualbox 的第二磁區對應虛擬開機區, 並且指定由光碟開機.
  5. 開機後選擇修復開機磁區, 完成後, 就可以正常利用 Virtualbox 開啟電腦輔助設計室中的第二磁區.

OnShape 與 AutoDesk Fusion 360 才是未來

經過將近兩個月處理電腦輔助設計室中的 366 GB 硬碟的過程中, 發現從 UEFI BIOS 中的各式設定, MBR 與 GPT 硬碟分割, 操作系統安裝設定與維護, 網路使用授權的管理, 再加上各式海量電腦輔助設計分析套件的安裝, 以及每套海量使用手冊的閱讀及各套封閉 API 延伸程式的學習及應用, 所涉及的工作, 對於一群機械設計工程師所造成的負擔, 已經不是三言兩語可以道盡其中辛酸.

因為一般管理人員與助教無法單獨勝任此項工作, 而各套件代理廠商的工程師也只負責安裝各自的套件, 無法提供整體的系統規劃與管理協助, 而各任課教師則通常認為這種低階系統安裝工作, 與教學無關, 結果就難怪有許多教育版的用戶, 雖然購買原版套件, 但卻全面讓師生使用相應的盜版軟體, 因為大多數人都會認為管理並部署合法電腦輔助工程套件, 是一項耗錢費力且難有成就感的工作.

因此當 2015 年初 OnShape 推出免費的教育版使用授權時, 電腦輔助設計實習課程就逐步將教學工具從 PTC Creo Parametric (這是電腦輔助設計室中, 唯一可以安裝為可攜模式的高端 CAD套件), 轉為 OnShape (https://www.onshape.com/, https://dev-portal.onshape.com), 學員不僅無需任何安裝, 也能直接在手機或平板中的 App 中操作, 完全沒有安裝維護與使用的問題與負擔.

更優的是, 配合電腦輔助設計所需的相關分析與製程規劃, 都可以在統一的雲端環境中完成:

當然, AutoDesk Fusion 360 也提供三年一期的免費教育帳號, 雖然需要下載安裝近端套件 (容量約佔 2.7 GB), 但也具有雲端整合的優點, 預計 2018 年秋季電腦輔助設計實習課程將搭配 OnShape 使用. 導入 Fusion 360 的著眼在於除了 C++ 的 API 程式介面外, 也同時支援 Python3 程式環境 (Getting Started with Fusion 360's API, Fusion 360 API user's manual, Fusion 360 API samples).