2017年7月23日 星期日

32 bit linux 不支援 zfs 但還是可以享用 snapshot 快照

這幾天鐵齒之後學到的慘痛經驗, 很快筆記分享一下。 我試著要裝 32 bit (lubuntu-*-i386.iso), 並加裝 zfs 驅動程式。 官網 跟安裝畫面就已經警告說 zfs 大量使用 virtual memory, 所以在 32 bit 環境上會很不穩, 可是我就是鐵齒又有 OS 蒐集癖、 就是想要 把它的根目錄放進 zfs 裡面去。 裝完之後, 用 kvm 開機測試, 通過 initramfs, 甚至已經掛載位於 zfs 的根目錄, 所有服務也都一一漂亮地 [ok] 啟動, 然後就卡在進不了圖形介面, 甚至連 ctrl-alt-f2 等等終端機也叫不出來了。 就死當, 很徹底。 隔沒多久, host 的 root 帳號就收到 mail, 說 zfs 的 checksum error -- 我猜那一個 zpool 應該整個毀了。 還好當時有刻意先開一個新的 zpool 來測試, 沒牽連到原先已裝好的其他 64 bit 版 lubuntu。

好吧, 32 bit 的 linux 不能安裝 zfs 驅動程式; 但是它還是可以享用 zfs 的快照功能 -- 用 qemu-kvm。 在 64 bit、 支援 zfs 的 host 上面, 假設已有一個名為 tank 的 zpool。

  1. 建立一個 12G 的 zvol: zfs create -V 12G tank/ROOT/xenial32
  2. 用 qemu-kvm 把 32 bit 的 lubuntu 16.04 裝到第二顆硬碟或隨身碟或一個 lvm volume 去。
  3. 參考 隨遇而安四海為家的 linux, 用 fsarchiver 把剛裝好的 32 bit 備份起來, 再把它還原到 /dev/zvol/tank/ROOT/xenial32 去。
  4. 馬上建立一個快照: zfs snapshot tank/ROOT/xenial32@1-pristine
  5. 從這個 32 bit 版的 lubuntu 的 /boot 底下, 把 vmlinuz* 跟 initrd.img* 複製出來。
  6. 這個裝在 zfs 裡面的 32 bit linux 無法真的自己從硬體開機; 不過 qemu-kvm 可以啟動單一分割mykvm -kernel vmlinuz* -initrd initrd.img* -append 'root=/dev/sda' /dev/zvol/tank/ROOT/xenial32 至少還可以在 qemu-kvm 虛擬機裡面、 在 zfs 上面玩 32 bit 的 linux, 然後不時從 host 用 zfs snapshot 指令建快照。 Yeah!

2017年7月20日 星期四

資料科學/機器學習的好用入門工具 t-SNE 幫你看見高維度數值資料

手寫數字測試 t-sne 演算法 想像你有一個試算表, 裡面有幾十個數值欄位, 還有幾個 「分類用」 的字串欄位。 你想問: 如果我拿到一筆資料的所有數值欄位, 是否可以猜出它屬於哪一個分類? 比方說, 已知一個人的身高/體重/BMI/心跳速率/血壓/睡眠時間/肝指數GOT、GPT/... 是否可以猜出他比較可能是哪一種血型/星座/生肖/職業/...? (有點毛毛的例子, 不過也正好提醒大家: 現代的趨勢就是這樣 -- 你的隱私, 就是政府或大企業手中的大數據。) 這是機器學習領域裡面典型的分類問題 (classification)。 如果資料量不大 (例如只有幾百筆或幾千筆資料、 每筆只有幾十個或幾百個欄位), 可能不足以拿來訓練複雜的人工智慧演算法; 又或者你有大量的資料, 但想要在全力運算之前小量取樣, 並且用一個操作簡單運算量較低的演算法來迅速了解你的資料長相。 這時, 屬於非監督式學習類型的 t-SNE 演算法就非常適合拿來用肉眼觀察資料的群聚/分類現象。

2017年7月12日 星期三

跟同學交換 ethercalc 容器, 馬上理解 docker 的 volume、 port、 link

Ethercalc 是一個類似 google sheet 的共筆試算表服務。 (作者是數位政委唐鳳!) 除了 公用版 之外, 你也可以自己架設在私有雲裡。 最簡單偷懶的架設方法就用 docker。 電腦教室裡坐在隔壁的兩位 docker 新手, 還可以透過 「把我所架設的服務拿出來跟同學交換」 來學習 docker 的 -v (與 host 共用目錄)、 -p (通訊埠轉發)、 --link (建立 docker 之間的連結), 動手實作馬上比爬文更有感!

2017年7月5日 星期三

很犯規的 caffe 初體驗: 省略訓練直接跳到影像辨識

U. C. Berkeley 的 BVLC (現在改名叫做 BAIR) 所撰寫的人工智慧引擎 caffe 有一個 model zoo 頁面, 裡面都是現成的類神經網路模型, 有一些甚至已有訓練好的權重矩陣 (weight matrices) 可以下載, 連曠日廢時的訓練過程都可以省下來, 完全不需要 受 nvidia 的鳥氣。 對於不求甚解 (而且沒有 GPU) 的工程師來說, 這真是一個玩具天堂, 光是想要把這裡的資源都接上 I/O 變成簡單的命令列, 就已經有很多東西 (可惜很少文件) 可以玩了。 延續 不求甚解工程師的人工智慧學習捷徑地圖, 這次我寫了 caffenet-classify.py 圖像辨識指令, 當成我的第一個 caffe 外包裝小程式習作, 分享給大家玩, 也順便記錄一些心得。

2017年6月14日 星期三

pidgin 與 chatsecure 加密對話實況解說

pidgin 的 otr 外掛 本文用一個對話過程來解說 xmpp 的實際操作方式。 強烈建議動手實測之前請先讀一下結論那節! 以下實驗建中, chatsecure 的部分, 議用一個新的、 還沒有累積朋友的帳號來進行, 以免發生意外, 變成沒有朋友的人! 假設讀者跟朋友已 申請 xmpp 帳號並安裝 pidgin and/or chatsecure, 又假設讀者略懂略懂 非對稱式加解密。 安裝 pidgin 的那一方, 也請先安裝 pidgin-otr 套件, 並且在 「工具」=>「模組」 底下勾選啟用 otr (off-the-record) 功能。 可能還需要展開 「模組明細」、 點選 「設定模組」、 點一下 「Generate」 以便產生加密用的金鑰。 下文對話的兩個角色分別是:

簡稱 新貴 老貴
帳號 ckhung@xmpp.zone ckhung@jabber.org
OS CM (android) lubuntu 16.04
app chatsecure pidgin

2017年5月30日 星期二

透過 pxe 網路開機載入 live cd

很久以前就想玩 pxe 網路開機; 最近想要攻佔不歸我管的 windows 電腦教室, 才開始認真學。 做壞事克服逆境真是進步的最佳動力啊! 這篇 (中文) 很詳盡; 不過如果區網內已有一個 dhcp 伺服器, 而且不能關掉, 那該怎麼辦呢? 把自己的 dhcp 服務設定成 proxy 就可以了。 本文主要參考 這篇 manski.net 的英文文章, 因為它採用 dnsmasq, 讓設定變得很簡單, 而且文章本身也寫得簡單明瞭。 最後, 本文也說明如何透過 pxe 啟動特定幾張 live cd。 (但並沒有要透過網路安裝 linux。)

2017年5月28日 星期日

ubuntu 精簡/最小安裝

為了做一些實驗, 我需要安裝一個精簡版的 ubuntu。 從 官網 出發, 找到你要的版本 (例如我要給舊電腦用, 所以選 32-bit PC: Ubuntu 16.04 LTS "Xenial Xerus")、 下載 mini.iso。 用安裝光碟開機、 回答一些問題、 花一些時間等候安裝 base system。 出現選用項目清單時 (software selection), 除了原本就有的 standard system utilities 之外, 我只勾選了 openssh server。 不要勾 ubuntu server, 因為那會設定防火牆, 導致後續的網路實驗變得比較複雜。 (順便一提, 原來 lubuntu 也可以用這種方式安裝 啊!)

2017年5月22日 星期一

窮人的 proxmox 可攜式/行動機房

tux 開車載著機房 業餘機房管理員貴哥向系上要了一部較高階的桌機, 在上面安裝 proxmox 虛擬環境, 用它來架設私有雲、 管理幾部 linux 教學伺服器已經兩年了, 感覺超簡單超方便的, 很想分享給中小企業網管們, 還有喜歡電腦自主又想幫學校省錢的老師們。 小格舊版的 「虛擬機新手恩物 proxmox」 那篇蠻受歡迎的; 新版的 4.* 系列有很多改變, 所以決定重寫一篇。 也順便示範: 沒有伺服器和固定 IP 可用的窮人也能把 proxmox 安裝在一個 qcow2 檔或隨身碟裡面, 背著一間機房到處跑、 隨時拿出來練習! 這招拿來教 proxmox 很方便, 不會影響到電腦教室裡原本的 linux 系統。 (<== 真正的原始動機) 單純想玩 proxmox、 手邊有實體伺服器可用的讀者, 可以省略前面的虛擬環境架設, 直接用 proxmox 光碟啟動伺服器, 並且跳到第二節第4步。

2017年5月14日 星期日

手工精簡版 qemu-kvm 虛擬區域網路

qemu/kvm 是蠻底層的 linux 虛擬化工具, 只適合用於單一虛擬機的場合。 它固定配 10.0.2.15 的 IP 給虛擬機, 這個 IP 僅供虛擬機自嗨用, 從 host 並不能用這個 IP 連到虛擬機; 。 如果要管理一整群虛擬機, 各自要有 ip、 彼此要能互連, 理論上應該改用 virsh 跟 virt-manager 比較好。 不過這兩者的相依套件蠻多的。 對於喜歡騎腳踏車勝過騎機車/開車的人來說, 其實 「含有多部 kvm 虛擬機的區域網路環境」 還是可以用 qemu/kvm 指令徒手建立出來。

2017年5月10日 星期三

用 LUKS 加密虛擬裝置來實作 linux 軟體版碎紙機

碎紙機 電腦要送修, 或是舊硬碟要賣掉、壞掉的電腦/硬碟要回收嗎? 記得要先把資料銷毀才送出去! 實驗 [ 1 2] 顯示: 從 eBay 等等地方買來的二手硬碟當中, 有相當高的百分比其中還含有不該外洩的私密資料, 包含醫療及財務資訊、 私密相片等等。 不能只靠運氣期望拿到你的硬碟的人是個正人君子啊!

2017年4月25日 星期二

把 Windows XP 收納成 qemu 虛擬機

老婆的 (Windows XP!) 電腦壞了。 她忙著買新電腦; 我則要趁著最後一部裝著 xp 的 eeepc 還沒掛掉的時候, 趕快把它變成虛擬機備份起來, 因為上面有一些她無法放棄、 又無法升級到新版 windows 的應用軟體。 這是我第一次成功的 windows P2V (Physical to Virtual) 實戰, 其中有些步驟可能對 windows 7 的 P2V 也有幫助。

2017年4月23日 星期日

隱寫術實作: 把小檔案藏在圖檔或文字檔裡

隱寫術: 把資訊藏在圖檔裡 美國越來越不像是個民主國家。 以後旅經美國可能會需要 交出密碼。 表面上說這是為了反恐, 但其實是 維安劇場 的一部分, 真正的目的是要讓政府可以擴權、 甚至踐踏人權。 所以你的資料光是加密還不夠, 甚至需要讓人看不出加密檔的存在。 這個時候你需要 隱寫術 Steganography [ 維基百科]。