2020年2月11日 星期二

zfs boot with ubuntu 20.04 and UEFI

這是這篇的延續, 也是從一套已經安裝好的 ubuntu 移植去別的硬碟這種模式, 不過這次是全部重來. 以下參考這篇 "Booting a ZFS Root via UEFI on Debian", zpool 建立手法也會幾乎跟它完全一樣. oting a ZFS Root via UEFI on Debian, 首先的需要安裝幾個東西:

  • zfsutils-linux
  • zfs-initramfs
假設原始的系統檔案裝在 /dev/nvme0n1p2
我打算安裝的目標是 /dev/sda2, /dev/sda1 為 UEFI boot, 我打算安裝後 zpool 們的樣子:
rpool
rpool/sys : /
rpool/plug : /opt/plug/

#mkfs.vfat /dev/sda1

# zpool create -o ashift=12 -o altroot=/mnt -m none rpool /dev/sda2
# zfs set compression=lz4 rpool
# zfs create -o mountpoint=/opt/plug rpool/plug
# zfs set compression=lz4 rpool/plug
# zfs create -o mountpoint=/ rpool/sys
# zfs set atime=off rpool/sys
# zfs set relatime=on rpool/sys
# zfs set compression=lz4 rpool/sys
#### 這時因為 rpool 在 zpool create (或 import) 時有下 -o altroot=/mnt 的關係, 所有根基目錄都是在 altroot 的指示之上, 所以 mountpoint 可以放心的設定為 '/'
# zfs create -o mountpoint=/opt/plug rpool/plug
# zfs mount rpool/sys 
#### 這時 df -h 會看到 rpool/sys mount 在 /mnt 下.
#### copy 全部的檔案.
# mkdir -o /tmp/src 
# mount /dev/nvme0n1p2 /tmp/src/
# cp -a /tmp/src/* /mnt/
# mount /dev/sda1 /mnt/boot/efi/
#### 安裝 grub
# grub-install --removable --recheck --force --bootloader-id=BOOT --compress=xz --target=x86_64-efi --boot-directory=/mnt/boot/ --efi-directory=/mnt//boot/efi/ --modules="part_gpt ext2 zfs"
#### 這時有一個動作非常重要, 看 grub 抓到的 zfs uuid 是什麼
# cat /mnt/boot/efi/EFI/BOOT/grub.cfg
## search.fs_uuid xxxx0000oooo1111 root hd0,gpt2
#### 要看這紅字寫的是什麼, 後面改 grub.cfg 會用到
# cat /mnt/boot/grub.cfg|grep vmlinuz|head -1
## linux   /boot/vmlinuz-5.3.0-24-generic root=UUID=00112233-4455-6677-8899-aabbccddeeff ro
#### 這裡要手動改 grub.cfg 比較囉唆, 以下是個人手段, 參考用
# sed -i 's/00112233-4455-6677-8899-aabbccddeeff/xxxx0000oooo1111/g' /mnt/boot/grub.cfg
# nano /mnt/boot/grub.cfg
#### 這裡把 vmlinuz 裡那行 root=UUID=.... 改成 root=ZFS=rpool/sys, 一個 kernel 就要改兩次, 以此類推. 還有所有的 /boot/ 這裡改成 /sys@/boot/ 否則 grub 抓不到開機用的 kernel / initramfs.
#### 
# nano /mnt/etc/fstab
#### 把原本 ext4 mount 的部份還有 swap 全 remark 掉, /boot/efi 改成 /dev/sda1 的 UUID.

後面要維護時記得 zpool 多下一個 altroot 參數, ex:
zpool import rpool -o altroot=/mnt
#### /mnt 必需要是空的

到這裡差不多完工. 過往的做法不好管制某一個 zpool readonly yes/no 還有其它屬性, 這種的比較方便. 還有就是對 UEFI 的支援. /boot/efi/EFI/BOOT/grub.cfg 裡寫的那個 UUID 我用 blkid 還是什麼工具都查不到, 雖然就像過往 btrfs / ext4 查的到 UUID 把檔案直接 co 到 UEFI partition 區裡就可以動那麼簡單, 但就是 zfs 這個 UUID 很奇特, 要透過 grub-installer 抓出來...

這次 lz4 壓縮率不比 btrfs zstd:3 來的高了, 但執行速度目前感覺上還是小贏 btrfs.

update200224: UEFI boot partition grub.cfg 中要搜尋的 fs_uuid 為 16 進位, 但 linux blkid 下看到的 zfs UUID 其實是 10 進位, 照這樣轉換去就可以簡的修改 UEFI boot 區內 grub.cfg 的內容讓 grub 可以抓到指定的 zfs partitiom, 不需要跑 grub-install

2020年2月10日 星期一

vmware host modules

在 linux 上安裝 workstation / player 時會常因為 kernel 沒事做不向下相容的更新, 導致 kernel module 編不出來的問題. 要解決這個問題前, 首先先要確認自己用的 workstation / player 的版本(12 以前的不支援). 再確認已經有安裝編譯套件與 kernel header (ubuntu 就是 build-essential), 還有 git. 來這裡找你的版本:
https://github.com/mkubecek/vmware-host-modules
例如有問題的是 workstation 12.5.9, 就要來這裡下
git clone https://github.com/mkubecek/vmware-host-modules.git -b workstation-12.5.9
1.player 可以用 workstation 的, 版號一樣.
2.不要偷懶用 -b master 或 -b workstation-12.5.x 這類的 branch, 通常拉回來的都不能編
再來進去 vmware-host-modules 目錄裡 make, make install.

離寫這篇文沒多久前出的 workstation 15.5.1 都已經不能在 kernel 5.4.0 上順利編過, 一定要來這邊找更新過的 kernel module 才行, 有這邊更新過的 code, 已經出很久的 12.5.9 靠它都還可以在 5.4.0 上順利編過繼續使用. 真是感謝 Michal Kubeček.

2020年2月7日 星期五

fstrim failed on btrfs

! 我不確定是不是跟我一開始 mkfs.btrfs 都有下 -M 有關係 !
systemctl status fstrim 會出現這些問題:
systemd[1]: fstrim.service: Main process exited, code=exited, status=64/n/a
systemd[1]: fstrim.service: Failed with result 'exit-code'.
systemd[1]: Failed to start Discard unused blocks.
在支援 TRIM command 上的 SSD 上, 如果單一個 btrfs partition 總容量小於 8GiB (8192MiB) 時就會發生. 某些較早沒有支援 TRIM 的 SSD 沒這問題, 沒有支援 TRIM 的 SD/emmc 也沒這問題.
.
至於影響嘛... 我有碰過只是改個檔案就開不了機的狀況過.

2020年1月12日 星期日

M4/3 轉 Z

其實就只是發個廢文也爽的概念.
Canon s.c. 50mm f/1.8 + FD to M4/3 轉接環 + M4/3 金屬近拍接寫環 + M4/3 to Z 轉接環 + Z6
M4/3 to Z 這種轉接環個人覺得, 如果你轉的鏡頭焦長大約在 70mm 以下的話就還看不出什麼問題..

2019年12月24日 星期二

techart TZE-01

1.我手上唯一的 e-mount 鏡頭只有 SEL1018, 對焦跑的真的很快, 實用性超過我想像. 防手震有沒有開我無法得知, 我只能知道機身有開.
2. commlite cnf-e-1 這個 sony e 轉 nikon F 的轉接環完全不能動
改天有機會來測測看 SEL1650PZ 跟 SEL24240
update 19/12/26: 我去 sony 攤位試到配合的最好的, 個人覺得是 28mm f2 跟 24-105mm f4, 24-240mm 對焦可以很準但很慢, 16-50pz 對焦很快但關機無法收鏡頭. 24-70mm f/4 對焦有點慢而且 "有時近拍會對不到, 要拉遠再回來對焦的現像", 這個現像目前只有試到 28mm f/2, 24-105mm f/4, 16-50mm pz 沒這問題, 24-240mm, 18-105mm f/4, 24-70mm f/4 都會有這種現像. 還有, 請先把轉接環先裝上鏡頭, 再裝上機身, 拆下時先拆轉接環, 再從鏡頭卸下轉接環.



2019年12月23日 星期一

卡口大小, 法蘭距


圖表來自 https://photographylife.com/what-is-lens-mount
所以 fuji-X 是可以上 full frame 的.


Displaying Camera Mount Comparison


雖然這篇我主要的目地在測試剪貼圖..

2019年10月12日 星期六

Nikon Z6 + FTZ 一點測試..


在一開始我直接破題, Nikon 現在還沒辦法像 Olympus / Panasonic / Sony 那樣做到鏡機合一雙重防手震, 頂多只能做到機身防手震的輔助, 但僅止是這樣, 相對於過去的使用體驗已經有著很大的進步, 所以個人認為機身防手震相容性非常重要, 所以寫這一篇...
FTZ 接環對原廠鏡頭目前試到 AF-S 鏡都有支援 (再不支援就該死了..), 只是透過 FTZ 絕大部份的鏡頭都僅支援機身的 3 軸防手振 (少 x / y 軸方向的), 只有少部份例外. 以下測試使用光圈為鏡頭最大可用光圈.


AF-S AF-C VR
Nikon 16-35mm f/4 N VR +++ +++ yes
Nikon 24-70mm f/2.8 (g1) +++ +++ yes




Sigma 8-16mm f4.5-5.6 ++ ++ yes
Sigma 17-70mm f/2.8-4 C +++ +++ yes
Sigma 24-105mm f/4 art ++ ++ yes




Tamron 24-70mm f/2.8 (g1) ++ + no
Tamron 70-300mm f/4-5.6 (g1) ++ + no
Tamron 150-600mm f5-6.3 (g1) - - off

其中 Tamron 兩支 AF 可用的都有用到途中突然曝光異常的現像, 特別是使用 AF-C 時會一直一直出現, Sigma 除舊鏡直接完全不能動以外表現非常良好, 特別是 17-70mm 這隻, 對焦速度感覺有比在 D80/D90 機身上時速度要快. 而 Sigma 24-105mm 個人實拍測試的感想是十分好用, 手感不輸之前在 D600 上使用的感覺.

Tamron 24-70mm (g1)(A007) 除了曝光頻閃的問題, VC 也不能用, 關掉 VC 後就一切正常. 70-300mm VC (g1)(A005) 則是 VC 一定要關掉否則根本無法使用. 150-600mm AF 無效機身防手震無效, 只有對焦提示還可以工作...

其實個人很希望 Nikon 再推出一支支援 AF-D 的轉接環, 基於一些機身性能跟市場因素還有消費者導向, 這種產品是老用戶比較希望見到而且購買的產品...

ps. 轉接非自動鏡頭如 Ai-S / M42 等, 在機身設定好非 CPU 鏡頭的焦長後, 也可以有機身防手震支援, 但沒有以前有的對焦支援跟準焦提示的功能...

update 191111: 有關 sigma 8-16mm, 之前特地寫信問日本 sigma 這支鏡有沒有針對 z6/z7 的修正 firmware, 日本 sigma 的回答是有而且全部 Nikon mount 的都可以支援了, 俊毅說這隻鏡最後一版 firmware 是 2014 年的事 (而且沒有版本號碼... 所以無從告知讀者倒底哪一版可以用), 這表示 sigma 並沒有特別針對 z 系列 ftz 做什麼修正, 而是原本就嘛可以用.... (這太屌了... 以副廠來說...), 給俊毅處理後就正常可用了.
反觀 Tamron, 雖然代理商很nice, 有可以用的 firmware 就給你換, 只要你是公司貨.. 但問題在 Tamron 原廠對舊產品 A005/A007/A011 就是完全不理不采, 以後應該不會再買這家的產品.....

update 210714: 更新到 firmware 3.31 跟 FTZ 1.10 沒有任何改變.