安裝 Windows 11 有感 – 為了更充分支援 Linux 子系統

前篇文章提及了如何在 Windows 10 環境下執行 Linux GUI Apps,所使用的方法是透過 RDP 遠端連結 WSL 內的 Linux。就近再爬許多文,還發現到如果安裝了 MobaXterm,因為該應用程式內建了 X-Server,所以透過 MobaXterm 也可以直接執行 Linux GUI Apps。而更甚者,如果是安裝 Windows 11 系統,因為其內建的 WSL2 同時就併入 WSLg (Windows Subsystem for Linux GUI),這使得在 Windows 環境下更可以無縫式的直接執行 Linux GUI 應用程式。

其實考量到 Windows 11 是去年底才釋出,不免一堆 Bugs 存在,原來是打算今年底待釋出重大更新後才來安裝,但為了能更完整地整合 WSL 環境,所以還是提前給重新安裝。不過沒想到安裝過程並不太順利,主要原因是 Windows 11 要求主機需要設定為安全啟動 (Secure Boot)開啟 TPM (Trusted Platform Module) 模組,以及切換至 UEFI 模式,這意味著原來硬碟磁區必要要從 MBR 轉換為 GPT;然後還需要把原來相容的 CSM (Compatibility Support Module) 模組關閉掉,總之若要直接升級 Windows 10 原有系統,那會相當麻煩,乾脆直接整顆硬碟重灌、BIOS 設定上述條件會比較省事許多。

我的 PC 桌機為去年升級的 AMD Ryzen 3700x + Asus Tuf Gaming B550M Plus 主機板,在重新安裝前先把 BIOS 作番韌體更新 (結果竟然整個 BIOS 設定回復為初始狀態,還要重新設定超頻等設定,真是麻煩)。重新開機後進入 BIOS 更改安全啟動、選擇 TPM 模組、關閉 CSM 模組。

閱讀全文 »

[安裝筆記] Windows 10 安裝 Linux 子系統 (WSL2)

在 Windows 10 上跑 Linux 子系統,實在太過方便了!尤其是近年所推出 WSL 2 (Windows Subsystem for Linux version 2),利用其內建的虛擬機器 (其實就是輕量化後的 Hyper-V),可以充分完整支持原生 Linux 核心 (kernel),擁有比前一版 WSL 1 更好的效能與穩定性。

如何安裝 WSL 2 @Windows 10 環境,相當簡單,可以參考官網 WSL 文件:
Windows 10 上適用於 Linux 的 Windows 子系統安裝指南」。這裏僅摘要記錄下安裝的要項:

啓用 WSL 功能與所需組件

開啓「控制台 —> 程式和功能 —> 開啟或關Windows功能」,勾選如圖必要功能:「Windows 子系統 Linux 版」與「虛擬機器平台」,至於「Hyper-V」則不需要,原來以爲需要,再爬文才知「虛擬機器平台」就是輕量化 (lightweight)的 Hyper-V 虛擬機。勾選完畢後重新開機。
啓用 WSL 功能與所需組件

閱讀全文 »

Thinkpad T61 安裝 ArchLinux 摘要-基本安裝

像我這類對 Linux 系統有點懂又不太懂的「中手」最適合 ArchLinux 了。「簡潔 (simplicity)」與「滾動式更新 (rolling update)」的特性,可以讓使用者自行選擇欲安裝的套件,並可時刻維持版本在最新的狀態。

安裝過程雖然沒有如 Ubuntu 那樣近乎傻瓜式的安裝方式,但透過指令,一樣一樣地逐步「刻出」所屬自己的系統,客製化程度相當高,安裝來回幾次後 (這蠻正常的,砍掉再重裝,習以為常。),也就易於掌握安裝/設定的竅門。

大概主要參考官方 Wiki-Beginners guide,其實基本安裝就不會有問題了。安裝步驟參考該 Wiki,這裡只是針對個人在安裝過程中,有些稍須注意的設定註記備忘。

安裝期間過程摘要

  1. 我使用 ImageUSB 工具將下載的 ArchLinux ISO 檔寫入到 USB 碟。這類將開機系統寫入至 USB 碟的工具程式很多,視所在的作業系統來決定用哪個工具寫入即可。
  2. 關於磁區 (partition)的分割,要注意的是主機使用 UEFI or Legacy BIOS 開機;儲存裝置 (HDD/SSD)是採 MBR or GPT 來分割,這裡會牽涉到分割 所使用的工具 (fdisk or gdisk)

    我的 T61 當然只有傳統的 BIOS 開機,然後分割表我則是採用先進的 GPT 分割表,所以需要額外分割一個 2MB 的開機分割區,並指定其類型為 EF02。這樣未來電腦開機後才得以正確導入到開機磁區再交由如 syslinux/grub 等開機管理程式啟動系統。

    閱讀全文 »

RogueLike in Linux C++-寫在前頭

我想再利用閒暇時間瞭解下 Linux 的程式開發,以俾得以對 Linux 系統底層有更進一步的應用與控制。因為未來開放式硬體的架構 (ex. Raspberry Pi, BeagleBoard, Cubieboard ...etc),必然是以 Linux 為開源系統,並以此為基準點,建立各類硬體裝置控制的應用。

我偏好採用 C++ 作為 Linux 開發的程式語言,畢竟 Linux 系統底層/服務 大都以 C/C++ (其實還是要當為兩種不同的語言,只是 C++ 可以很容易引用 C 的函式庫。)來開發的。再則:

  • 高移植性:重點在於函式庫的跨平台 (Windows/Linux ...)、跨硬體架構 (Intel/ARM-based CPU)!且太多開源各類的函式庫可資引用,方便太多。
  • High-Performance。
  • 物件化的始祖:畢竟我還是習慣採物件化的思維來設計與開發,具 OOP 的機制還是會比較直覺。

我希望初期先透過一個主題來持續學習與實踐 C++ 的開發 (先不需牽扯到系統底層處)。因為畢竟與工作無關,且是當成休閒嗜好的輕鬆態度學習的;所以我想乾脆就把 RogueLike 遊戲 的程式開發作為學習的標的。

因為我現在也正在玩 DCSS (Dungeon Crawl Stone Soup),而 RogueLike Game 不需著重在畫面音效等,僅需利用 ASCII 字符的格狀畫面來呈現即可,所以就不用考量到畫面效果的處理技術。另外一點很重要的是,大部分的 RogueLike 遊戲係以 Open-Source 連原始程式碼都免費釋出,還有許多教學資源可供充分的研究與學習。

我就打算以這一系列-Complete roguelike tutorial using C++ and libtcod,作為我學習以 Linux C++ 開發 RogueLike 遊戲的教案,然後逐步的把心得筆記下來。

總之,我是打算抱著很輕鬆的態度來學習 Linux C++ 的,應該是會視之為 long-term 的學習歷程。

閱讀全文 »

Linux C++-開發環境與Hello程式

實作目標:在 Ubuntu 與 Raspbian 建立 C++ 開發環境。
副目標:撰寫並執行 Hello 程式,以測試開發與編譯環境。

實作:

  • 關於 Code::Blocks IDE
    Linux C++ 老手普遍僅以 vim 為程式碼開發平台,並以 g++ 與 Makefile 工具達成自動化編譯的目的;不過對新手尤其習慣 Windows-based 具有整合開發環境的開發人員來說,只用上述命令列模式指令來編輯與撰寫 scripts 難度高了些。

    Code::Blocks 是一個開源、跨平台的 IDE 開發工具,可以撰寫 C/C++, Fortran 等程式語言;除了提供視覺化的開發環境外,也可以透過其 plugin framework 擴展功能,例如得以增強在程式編譯與除錯方面的功能。

  • 安裝 Code::Block & gcc/g++
    Code:Block 安裝非常容易。Ubuntu 可以透過 XWindows 下的「軟體中心」搜尋「Code Block」找到安裝即可;Raspbian 則在 Pi Store 以同樣關鍵字搜尋安裝。

    至於 gcc/g++,先釐清這是兩種不同的 compiler。gcc = gnu compiler collection,可以編譯多種語言;g++ 則只可以編譯 C++ 程式。關於兩者的區別,可參考-gcc和g++的區別

    Ubuntu 14.04 只需另行安裝 g++ 編譯器即可 (同上安裝方式);而 Raspbian 則已預行安裝。只要在 terminal 下打:

    # gcc (or g++) - v

    即可查知是否已安裝及其版本訊息。

  • 閱讀全文 »

HowTo-安裝 Redmine 2.3.2@EC2-Ubuntu 12.04

關於如何申請 Amazon EC2 Free Tier (第一年免費),可以參考此篇-快速安裝 Amazon EC2 LAMP 環境 (EC2 Console)Amazon AWS EC2 LAMP Quickstart Guide

在創建 instance 時,我安裝的 OS 是預設的 Ubuntu LTS 12.04 64-bit (AMI ID: ami-70f96e40),伺服器地區為 US West (Oregon),選擇的方案當然是免費的 T1 Micro (630Mb RAM) Free Usage Tier,這僅對架設小型站台 (如 Redmine 等 Issue Tracking 系統)已是足夠了。

除了 Ubuntu 作業系統外,包括 AMP (Apache, MySQL, PHP), Git, Ruby, redmine 等,全都是需要透過 Putty 連線至 EC2 Console 安裝設定的 (當然,也要先設定好如何遠端連線)。千萬不要安裝 X-Windows 環境於 EC2,我曾試過,然後可以利用 FreeNX 透過 RDP 遠端遙控 EC2,但主記憶體吃了 580Mb,僅剩 10Mb 可茲利用 (有效記憶體僅為 590 Mb)。

至於為何不乾脆使用 BitNami Redmine Cloud Server,或直接安裝 BitNami Redmine Stack AMI (Amazon Machine Image) 映像檔就可以直接使用?因為沒有免費的糖果啦!直接使用 Bitnami Redmine Stack,每個月的租費至少需要 US$15,那就是買你懶得或不諳系統安裝的使用者的系統建置服務費的。為了省錢同時也練習一下關於 Linux 相關系統建置,一切還是自己來。

Redmine 是一套近兩年頗為歡迎的專案管理工具,可以參考此篇-Redmine 基本功能介紹。Remine 支援絕大宗的版控系統 (包括 Git, Subversion, CVS 等),使得更輕易整合關於 Issue 與 Commit 訊息。

Redmine 是使用 Ruby on Rails Framework 撰寫開發的系統,所以作業系統需要具有可執行 Ruby 的直譯環境,當然也需要有 Web Server (支持 Apache, Nginx) 與 資料庫系統 (支持 MySQL, PostgreSQL),才可以完整運作 Redmine。

這裡列出包括作業系統與所需要建置的應用系統:
 o Ubuntu LTS 12.04 64-bit。
 o Apache 2.2。
 o MySQL 5。
 o Ruby 1.9.3 (使用 RVM 安裝)。
 o Redmine 2.3.2 (2013-07-14)。

閱讀全文 »

軟體思維顧問

專職軟體輔導與教育訓練的獨立顧問。輔導企業資訊單位如何有效組織系統開發與維護;輔導開發人員達成有效的專業分工。傳授如何把軟體作軟 (Keeping Software Soft)的技能,得以提昇系統的彈性/延展,並進而創造系統的再利用價值。

Personal