Category Archives: system

Failed to access WSL files using \\wsl$\

If you can’t access your WSL files using “\\wsl$\<distro>” in Explorer or Visual Studio Code like me, try to add back “P9NP” in “PROVIDERORDER” under 2 registry keys “HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\NetworkProvider\HwOrder” and “Order”. This is a known issue opened in 2019 https://github.com/microsoft/WSL/issues/4027

Upgrade Debian GNU/Linux from Buster to Bullseye

There’s no planned release date for Debian 11 yet, but Debian is well-known for its stability, and Debian 11 entered the final release stage, so no harm to try it especially for personal use. To a certain extent Debian GNU/Linux is a rolling release distribution, you can just edit the APT source to get the… Read More »

Ubuntu 版本的命名

Ubuntu 18.04 LTS Bionic Beaver 推出了。想借這個機會分享一下 Ubuntu 版本命名的方式。 每個 Linux 分發版 (distribution) 的名命都有其特式,例如 Debian 就以 Toy Story 的角色命名。 Ubuntu 的版本數字是年年.月月,如 18.04 是 2018 年 4 月推出。 LTS 是長期支援版本,LTS 通常隔年推出,變相 LTS 通常是雙數。 版本名稱則有點特別,會是兩個第一個字母相同的英文字。第一個是形容詞,第二個則是頻危或傳說中的動物。由 Ubuntu 6 開始,跟 Android 一樣,按字母次序排列,讓人單看名稱就知道哪個較新。Ubuntu 17 時,17.04 Zesty Zapus、17.10 Artful Aardvark 已由 Z 回到 A 了。

clang-cl crashed when building Chromium

The clang-cl crash is a known issue (crbug.com/780124) when building Chromium on Windows. The clang team has fixed it but not yet shipped. The bug only happens with precompiled headers so the workaround is to add this to gn args: enable_precompiled_headers = false —— 很久沒有 build 過 Windows 版的 Chromium 了。近來多用返 Windows,決定更新一下。 > ninja -C… Read More »

DigitalOcean 公佈新價單 當中低價 VM 獲得免費升級

雲計算已被好多公司所採用,越來越來供應商加入應戰,得益的當然係消費者。主打簡單、便宜的 DigitalOcean 公佈了 2018 新價單,當中加入了 $15/mo 填補了 $10/mo – $20/mo 之間的空檔。最令人歡喜是低價 VM 獲得免費升級,記憶體多了一倍! 現在 $5/mo 已可擁有 1 core / 1G / 25GB cloud VM!舊有的 VM 可以先關機再 re-size 便可獲得升級。記得好好利用!

VMware ESXi SCSI controller

VMware ESXi SCSI controller 有以下選項: BusLogic LSI Logic Parallel LSI Logic SAS VMware Paravirtual 當中 BusLogic 最 legacy,但兼容度最好,而 VMware Paravirtual 效能最好。基本上,現在大路的 Linux kernel 都支援 VMware Paravirtual,module 名為 vmw_pvscsi。 如果個 Linux VM 是安裝時沒有選用 VMware Paravirtual,安裝後才改為 VMware Paravirtual,Linux 是無法在正當模式啟動。此情況同轉換了 Hypervisor 後一樣,要進入 rescue 模式才重新生成 initramfs。 進入 rescue 模式後, 想查看 vmw_pvscsi 的資訊,可打 modinfo vmw_pvscsi 想看看有沒有載入 vmw_pvscsi 可以用 lsmod lsmod… Read More »

Shrink an XFS partition

眾所周知,XFS 只可增大 (extend),不可縮細 (shrink)。 雖不可縮細,但其實可以用 write zero 方法,把空間寫 0,dump VM 可大大減少 disk image 的大小,所以其實影響不大。 write zero 有兩個方法,一是用 zerofree 另一是用 dd,zerofree 需要 remount 成 read-only 及 RHEL 系列沒有此 package,而 dd 雖慢但簡單 $ dd if=/dev/zero of=/tmp/zero bs=8M; rm /tmp/zero 如果真的想縮細 XFS 就唯有建立一隻新 disk,如 /dev/sdc,之後把 /dev/sdc1 mount 去 /mnt/sdc1,再用 xfsdump 和 xfsrestore $ sudo -s $ fdisk /dev/sdc… Read More »

Using Certbot to sign/renew the Let’s Encrypt certificate

早前寫了一篇 knowledge transfer 文章,講解如何從 Let’s Encrypt 簽 TLS cert,現在同大家分享一下。 Certbot is an official tool to renew/sign the cert issued from Let’s Encrypt. Installation of certbot was painful in the old days, so in the first release, I use its official Docker image to do the job. docker run -it –rm -p 443:443 -p 80:80 \… Read More »

VCRedist from VC++ 2008 installs temporary files in root directory

當你發現 C:\ 多了以下一堆垃圾,放心,可以把這檔案移除 (只限這些)。因這是一個已知的 bug install.exe install.res.1028.dll install.res.1031.dll install.res.1033.dll install.res.1036.dll install.res.1040.dll install.res.1041.dll install.res.1042.dll install.res.2052.dll install.res.3082.dll vcredist.bmp globdata.ini install.ini eula.1028.txt eula.1031.txt eula.1033.txt eula.1036.txt eula.1040.txt eula.1041.txt eula.1042.txt eula.2052.txt eula.3082.txt VC_RED.MSI VC_RED.cab

善用 POSIX 的 stdin 及 stdout

Linux / macOS 的 stdin、stdout 完全把 Windows 比下去。 例如,你可以邊 download 邊解壓: $ curl -L http://ftp.cuhk.edu.hk/pub/packages/apache.org/cassandra/3.10/apa che-cassandra-3.10-bin.tar.gz | gzip -dc | tar -x 註: -L => 跟著網站 redirect 如有 gzip -dc => unzip 去 stdout tar -x => untar 又例如,你想從另一部機的 Docker image 載入這部電腦: $ ssh remote-machine ‘docker save image-name:tag | gzip -c’ | gzip -dc |… Read More »

開啟 BitLocker AES 256 加密

Windows 8 或以上比 Windows 7 好的地方有很多,其中以往只有 Ultimate 才的 Hyper-V 及 BitLocker,在 Professional 版本已可擁有! BitLocker 預設是用 AES 128,個人覺得 AES 256 更安全,現在 CPU 已內置 AES 指令,256 比 128 不會慢得多少。 要開啟 BitLocker 的 AES 256 要在 “Local Group Policy Editor” 自行打開。用 “manage-bde -status” 可查看 BitLocker 的狀態。 自 Windows 10 version 1511 起,BitLocker 引進 XTS mode AES,XTS 比 CBC… Read More »

由 init 到 systemd

在電腦世界,雖要有一些程式來管理其他程式的「啟動」、「重啟」及「停止」。 在 Windows、Linux、Matrix 🙂 都有。Windows 叫這做 “Services”。開放的 Linux 就有數種程式來做這種事。比較常用的就有 init、upstart 及 systemd。 現在知名的發行版,如 Fedora、RHEL、Ubuntu、Debian 都已把 init 改為用 systemd。這個轉換早前引發開源界很大爭議,原因 systemd 有違 Unix Philosophy: Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface Systemd 做太多野了,不單啟動或重啟一個程式這樣簡單。Systemd 不是純 text process。對一般 users… Read More »

Let’s Encrypt 免費 SSL cert

一向 SSL cert 是有錢人的玩意,找間有名的 CA 簽發,一個 domain 往往要數千甚至上萬港元一年,莫講話個人,好多中小企都負擔唔起,這不單阻礙了網絡安全的發展,更阻礙了 SPDY (HTTP/2) 的推廣。情況可能被 Let’s Encrypt 打破,她提供了免費 SSL cert 簽發服務,簽出來的 cert 在 IE11、Edge、Safari、Firefox、Chrome、Android、iOS 都被認可。這實在是網絡發展一大進步。 要 Let’s Encrypt 簽署,你可以用 Certbot,而使用 Certbot 最簡單的方法就是使用 Docker。Docker 已成了最簡單 deployment 的方法,比 RPM、DEB 更方便! 首先 pull 個 image 下來本機 $ docker pull quay.io/letsencrypt/letsencrypt:latest 之後建立本機資料夾用來存方簽好的 cert、key、config 等檔案 $ sudo mkdir /var/lib/letsencrypt /etc/letsencrypt 再起動 docker container $… Read More »

如何建立 RPM private repository (私有 RPM 倉庫)

在 Linux deploy 軟件,最簡單又穩陣的方法,當然是使用 package。即 RHEL/CentOS/Fedora 就用 RPM,Debian/Ubuntu 就用 DEB。首先把自己的軟件 compile 再包裝成 RPM。當有了 RPM 後,可以直接 “yum install package.rpm”。 不過,當 packages 比較多,又或需要做版本 update 時,就會顯得麻煩,比較理想是建立私有 package repository。以下以 MySQL 為例,自從 MariaDB 成為各大版本標準 package,MySQL 就被踢出了。 Oracle 有提供 MySQL 的 CentOS 7 RPM。首先,下載整個 bundle.tar,之後 untar 放進自己部機的 directory 或 Web Server。接著,把簽署 package “rpm –addsign *.rpm”﹐就可 “createrepo .”。你會發現多了一個 叫 repodata 的 folder,那即是成功了。… Read More »

uHub OS X Client

uHub 是 PCCW 提供的雲儲存服務。Server 在香港,所以 upload 同 download 都很快,這是我中意它的最重要原因。雖 uHub Plus 推出了,但問題多多,而且 uHub 有別於 uHub Plus 或 OneDrive 或 Google Drive 或 Dropbox,它是沒有在本機留底,它並非同步盤,檔案完全在線,就好似 56K 年代的 X-Drive 咁。用來於一些不是經常存取的檔案又或零碎的相片就最合適。 uHub 已被 PCCW 遺棄,官方 uHub client 並不支持最新 Mac OS X。安裝時,會被拒絕。用 xar 解壓 uHub client 的 .pkg 會發現 script 指明需要 OS X 10.7 – 10.9 (含)。 是否 OS X… Read More »

使用 Command 開啟 Mac OS X 的 Remote Management

如果唔記得開 Mac OS X 的 Remote Management,又或者想轉 password,又或想 restart Remote Management,只要能 SSH 入去,就可以用以下 command 開啟 Remote Management (一行過,用你想要的 password 代替 “password”) sudo /System/Library/CoreServices/RemoteManagement/ARDAgent.app /Contents/Resources/kickstart -activate -configure -access -off -restart -agent -privs -all -allowAccessFor -allUsers -clientopts -setvncpw -vncpw password

Web Service Load Balancing

而家 RESTful web service 及 AJAX 流行,server 同 client 多數用 JSON / Protocol buffers 交換資料。Server side 對 Java EE / J2EE 需求大減,特別是 mobile Apps,更本用不著 Java EE,偏向用 Node.js 或 Python 或 Go 來做 server API。由於在 web API 做 multi-thread 會很麻煩,花大量時間做 development 及 testing,而基於 JavaScript 的 Node.js 更加沒有 multithreading,而是用 callback。 如果想用盡 CPU cores,最容易的方法是把用 Node.js 或 Python 或… Read More »

Mac OSX RAM Disk

如果你 Mac 有足夠的 RAM 做 RAM Disk,很簡單,只需在 Terminal 打 diskutil erasevolume HFS+ ‘RAM’ `hdiutil attach -nomount ram://8388608` 就可以建立一個 4GB 的 RAM Drive 註:4096 * 2048 = 8388608

快倉輸入法

快倉輸入法,在 Linux 上是我用過最好用的倉頡,也有 Windows 版 http://www.scj2000.net/download 快倉六是以 GNU General Public License version 3 (GPLv3) 授權發放,輸入法之源程碼可在 http://download.scj2000.net/src/ 找到。在各 Linux 分發版內之快倉六套件(建議安裝分發版內之快倉六): Ubuntu 11.04: ibus-table-scj6 Fedora 15: ibus-table-cangjie (包含快倉六) Debian sid: ibus-table-scj6 Debian stable: ibus-table-scj6

在 Linux 上安裝 Oracle Database 的小經驗

Oracle Database 用就用得多。Enterprise Edition 就未安過,只是安過 Express。要安裝 Oracle,有一大堆手續。例如:加 user、改 .bash_profile、改 Kernel 參數等等,但一如其他 Linux 軟件,最煩的是 dependencies。 如果用類 CentOS Linux,最簡單的是從 Oracle 中安裝一個叫 oracle-rdbms-server-11gR2-preinstall 的套件。套件只是幾十KB,只是佢會令你安裝一些需要的套件。 # Download Repos wget –no-check-certificate https://public-yum.oracle.com/public-yum-ol6.repo -O /etc/yum.repos.d/public-yum-ol6.repo # Download GPG Key wget https://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6 -O /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle # 安裝 oracle-rdbms-server-11gR2-preinstall yum install oracle-rdbms-server-11gR2-preinstall 但這個時候我不會真的安裝它,而是 cancel 後自行補安需要的套件。再把 /etc/yum.repos.d/public-yum-ol6.repo 刪除又或改為 .bak。否則,加入 Oracle Respo 後,你的 CentOS 會被安裝其他 Oracle… Read More »