2019年9月15日 星期日

今年 LibreOffice Conference 精彩回顧

今年度的 LibreOffice 年度論壇於 9/10~9/13 在西班牙的 Almeria 舉行。以下是我看到/聽到的一些精彩回顧:
  • 在 Community meeting 中提到 LibreOffice 的翻譯平台從 Pootle 轉移到 Weblate,新站台已經上線測試中,6.4 以後的翻譯將會從 Weblate 取用,6.3 以前的則仍在 Pootle 上更新。
  • ODF 1.3 版規格書已經整理完畢即將送 OASIS,一切順利的話將於 2020 年底發布。
  • 議程第一天(9/11)時大會(才)公布,在 AULA 08 (Aulario IV)  教室內的議程,因為教室內的投影設備只限接在教室內的電腦,而教室內的電腦未安裝 LibreOffice,所以要求講者準備 PDF 檔。
    • 但孫老大要講的是簡報技巧,只用 PDF 檔是不夠的。所以我們兩個在第一天議程結束後跑去教室內試電腦,結果發現:
      • 教室內電腦的 Windows 系統連系統設定都鎖起來了,不能安裝軟體也不能設定。
      • 但是可以使用 LibreOffice Portable
      • 然後雖然 Windows 系統鎖了那麼多東西,但 BIOS 沒有鎖,所以用 ezgo 隨身碟可以開進 ezgo 系統內。
  • 9/11 一場(對我們從台灣來的人來說算滿普通的)大雨,造成西班牙東南部嚴重災情(請參考 FB 上的頁面)。我們當時只覺得這雨還好而已,沒想到有六個人死亡(在此致上關懷之意)。
  • 議程第二天一大早,孫老大跟我就跑去把教室內的電腦佈置一下。我用隨身碟安裝了 LibreOffice Portable,確認可以執行後,第一個議程就使用 Portable 版的 Impress 直接進行。然而因為前一天的大雨,第一個議程進行沒多久學校的電力系統就出現跳電的狀況。折騰了一陣子之後,在 AULA 08 的議程直接用筆電進行。


    至於其他間的議程據說都無法進行下去。
  • 接下來第二個議程是孫老大的重頭戲,還好沒有再跳電。孫老大展示了動畫與聚焦技巧,還借用阿拉丁神燈來表達三個對 Impress 改進的期待。
  • 接著轉移陣地到 SALA DE GRADOS ,林冠廷跟王小武(?)兩位年輕人以小武自身賽德克族的經驗,來介紹運用 LibreOffice 保存台灣原民語言與文化的計劃,引起在場聽眾不錯的迴響。來自巴西、法國等地的參與者都表示有興趣,下午冠廷與小武並與來自巴西的 Gustavo 討論相關計劃。
  • 中午之後孫老大、來自中油的文科跟我先蹺課,跑去 Almeria 古堡一遊(因為我只有這天下午有時間出去晃晃...)後來傳來了消息,下午的議程又出現跳電,然後恢復供電以後,因為我的隨身碟還插在電腦上,電腦就直接開進 ezgo 了。在場的人都搞不清楚為何開機會開進中文的系統中 😆😆 
  • 第二天晚上是年會傳統 Hack Night。晚上七點半大家就進入飯店的會議室裡,卻傳出訂的 pizza 要九點才會到(晴天霹靂!)。晚上安排冠廷、小武跟 LibreOffice 資深開發者,也是董事會成員的 Eike Rathke 討論如何為台灣原住民族增加系統在地化資料庫(locale)的問題。台灣團都跟著加入了討論。
  • 第三天早上是認證委員會的 Workshop。第一天晚上我就接到通知。認證委員會的共同主席 Italo 與 Lothar 要邀請孫老大加入認證委員會,問我可不可行。此時不推坑更待何時?我當然一口答應,拍胸脯保證沒問題。孫老大順便露了一手,給在場的社群朋友看他的講義做法,以及我們如何推廣 ODF/LibreOffice。
  • 事後孫老大還特地為了這幾位義大利的朋友補課,因為他們沒能來聽第二天孫老大的議程。
  • 最後的高潮就是宣布明年 10/20 的活動了!明年是 LibreOffice 10 週年,也是自由辦公套裝軟體(i.e., OpenOffice.org)的 20 週年慶。所以會在明年的 7/18~7/19 在伊斯坦堡或安卡拉舉行 Free Suite 20th Anniversity,並宣布明年的年度論壇與 10 週年慶將在德國的紐倫堡舉行。

    嘛,我仍然是第一時間就知道投票結果(知道太多秘密也不好,沒有驚喜感...)

2019年8月8日 星期四

建立 forward-only mail server


動機就不寫了,這裡只寫重點:

https://github.com/huan/docker-simple-mail-forwarder
  • 以 alpine 為基底
  • 在跑 docker run 的時候要指定 SMF_CONFIG 跟 TZ 等環境變數,指定完之後跑起來就可以做 mail forward 了。真的很方便。
    • docker 裡面實際上是跑 postfix,用 virtual user table 做轉寄。
  • 自己跑 smf 的主要原因是我要知道轉寄信件的下落... 之前使用 forwardemail.net 在 DNS 裡直接加 TXT 也是很方便,但是有信寄丟時完全沒有線索可以找。所以 mail log 是修改重點
    • 跑起來的時候可以看到 syslog-ng 的警告:設定檔版本太舊。可見裡面用的是 syslog-ng,目前的版本用的是 3.13 而設定檔裡的 version 是 3.9。實際上並不會造成什麼問題,不過想去掉警告訊息的話,就把 install/syslog-ng.conf 裡的 version 改掉
    • syslog-ng 是把紀錄檔整合起來的工具,研究過幾個網頁後可以看到它的設定概念很簡單。指定來源 source { },過濾條件 filter { },還有目的 destination { }。
    • 因為我的重點在 mail log,所以我把 source 調整成
      source src {
        system();
        internal();
      }

      只收系統跟 syslog-ng 自己的訊息,然後在 filter 區塊指定 mail:
      filter f_mail {
        facility(mail);
      }

      再把它寫到目的檔去
      destination d_mail {
        file("/var/log/postfix-mail.log" persist-name("maillog"));
      }
    • log 當然不會是寫在 docker container 裡面的 /var/log,所以在跑 docker run 時要透過 -v 參數掛載外部的目錄進去。
  • 改好 install/syslog-ng.conf 後,重新 build docker image,用它給的 Dockerfile 即可
    docker build -t smf:0807-1 .
  • 把 SMF_CONFIG 跟 TZ 等環境變數,還有執行 docker 的指令寫在一個 shell script 裡
    # cat smf.env

    #!/bin/bash
    export SMF_CONFIG='franklin@sunjun.com.tw:fweng.ef@gmail.com;service@sunjun.com.tw:fweng.ef@gmail.com;'
    export SMF_CONFIG="$SMF_CONFIG;franklin@sunjun.tw:fweng.ef@gmail.com"
    export SMF_CONFIG="$SMF_CONFIG;service@sunjun.tw:fweng.ef@gmail.com|wally.lian@gmail.com"
    export TZ='Asia/Taipei'

    echo "Running simple mail forward on `date`..." >> /tmp/smf.log

    docker run -t -d --restart=always -e SMF_CONFIG="$SMF_CONFIG" -e TZ="$TZ" -v /var/log/docker:/var/log -p 25:25 smf:0807-1

  • 把每個 mail alias 分行寫是為了方便維護。實際上它是用分號隔開即可。
搞定!

2019年8月2日 星期五

Debian 上 hp-setup 鬼打牆不斷要求安裝 proprietary plugin 的問題



HP 的印表機一直算是對 Linux 相當友善的廠牌,所以我選印表機首選都是 HP。而之前跑用 Kubuntu 為基底的 ezgo 時,安裝 hp 印表機的驅動很簡單,只要安裝 hplip 套件執行 hp-setup 後面就通通搞定了。

不過現在換用 Debian 為基底的 ezgo 時,卻出現兩個問題。第一個是下載 plugin 時,從 pgp.mit.edu 取得驗證公開金鑰時一直失敗,其次就是如下面截圖所示,明明告訴我裝好了,實際上卻仍是紅字告訴我需要安裝 proprietary plugin。





先講第一個問題。現在從 pgp.mit.edu 取得金鑰變得很困難,我還找不出是什麼原因,網路上也很少討論。我透過 kgpg 提供的伺服器,找到了另一個可以順利下載金鑰的伺服器 pool.sks-keyservers.net ,並在 gpg.conf 中把預設伺服器換成了這個。但 hp-setup 仍然是去找 pgp.mit.edu,於是我發現他們把下載金鑰的伺服器寫死在程式裡:

/usr/share/hplip/base/validation.py  line 43:

```
class GPG_Verification(DigiSign_Verification):
    def __init__(self, pgp_site = 'pgp.mit.edu', key = 0x4ABA2F66DBD5A95894910E0673D770CDA59047B9):
```


臉上頓時出現三條線... 把它改掉就可以順利下載金鑰了。


另一個問題則是在這裡找到解答:


https://www.linuxquestions.org/questions/linux-software-2/hplip-keeps-looping-at-plug-in-installation-4175647505/

看來是不同系統函式庫放的位置不同所造成... 依照其建議新增路徑與符號連結後就順利安裝成功了。

2019年7月11日 星期四

Debian Stretch 升級到 Debian Buster


Debian Buster 已發布,這兩天把 PVE 上三台 Debian server 通通升級。

第一台跑的是 Mastodon, prosidy 與 peertube,用的 webserver 是 nginx,資料庫則是 postgresql 與 mariadb。升級過程完全沒有問題,十分順利。

第二台跑的是協會的線上商店,還有一些實驗用網站(含 docker)。這一台升級完重開後,發現線上商店跑不起來。找了一會兒發現問題出在 php7.0 -> php7.3,apache module 中必須手動打開 php7.3 並關閉 php7.0 的模組。弄完後原有的服務就都順利跑起來。

第三台是我的主伺服器,上面跑了不少網站像是個人網站、nextcloud、協會官網等等。這台在升級後,先手動去把 php7.3 的模組打開,卻發現 Drupal 與 nextcloud 都出問題無法啟動。然後挖了錯誤紀錄一會兒之後就發現,連同第二台系統的經驗,php7 在 Debian 的 package naming,php7.0 -> php7.3 並不是「升級」,而是「安裝新套件」,所以一堆 php7.0-* 的外掛,像是 php7.3-gd, php7.3-zip, ... 等在升級過程中並不會自動加裝,必須手動安裝才行。

現在三台伺服器都已經安穩上線運行中。

2018年11月11日 星期日

在 Acer One 10 (S1003) 上安裝 ezgo

上週拿到一台類變型金剛的小筆電,主人請我在上面裝 ezgo,因為他「受不了 win10 了」,一整個慢到爆。

(啊,不小心露點了~)

宏碁的 Acer Switch One 10 (S1003),外觀看不到 S1003 的型號,是進入原本 Win10 環境中才看到的。我花了一週左右研究,走了很多冤枉路之後,終於把它搞定了。



這裡紀錄一下發現與做法。

首先引用底下這篇文章裡的一句話:

Recommendations

Don't buy this tablet! It's not a good purchase. This post is for the users that made the same mistake as me.

如果你還在思考的話,不要買這一台!!
研究了一週之後,發現這類特規筆電,即使原生的 Win10 看起來也不是用最佳的效能在跑。

而且要試其他作業系統的話真的會變超難搞...

1. 開機

這台的開機用的是 32 位元 UEFI + Secure Boot。剛拿到這台筆電時,先用自己做的 ezgo 隨身碟試開機,結果發現系統連認都認不到。爬了文後才發現這台用的是 32 bit UEFI。Ouch! 原先的認知是 32 bit 沒有 UEFI,後來才知道便宜的平板多半使用這種模式

所幸 $4 大大先前做過類似的事,留下了這篇文。所以先在我自己的系統上安裝 grub-efi-ia32-bin 套件,然後對著做好的 ezgo 隨身碟做

$ sudo grub-install --removable --target=i386-efi --root-directory=<path_to_USB> /dev/<sdb>

就可以開到 ezgo live 模式了。

值得一提的是,我的 live 是跑 64 bit,原來的 win10 是 32 bit。雖然 UEFI 是 32 bit 但實際上跑 64 bit 的 Lubuntu/Kubuntu 都沒有什麼問題。換句話說原來 win10 用 32bit 其實是便宜行事... CPU 本身是支援 64 位元作業系統的。

然後,Acer 筆電最討厭的就是 Secure Boot 往往找不到如何關掉。Secure Boot 對 Ubuntu 影響很大,如果沒有關掉,連安裝 driver 時跑 dkms 都會卡住。

這次倒是誤打誤撞,在我不小心打開 Erase all Secure Boot Settings 後,它居然被我關掉了。


印象中之前處理的 Acer 筆電並沒有這個選項。無論如何,光是這個 BIOS 跟 Secure Boot 就已經讓我把 Acer 列在黑名單中了。

2. 硬碟

這台筆電裡沒有硬碟
什麼?沒有硬碟?
是的,沒有硬碟。因為它也是平板啊!實際上整個主機都藏在螢幕下,裡面只有兩張 SD 卡,沒有硬碟。這可能也是它跑 Win10 的效能更加杯具的原因之一。

不過,這裡衍生出一個問題。原先我試著把第一個 SD 卡的 Windows 保留下來,把系統安裝在第二張 SD 卡。結果順利安裝完成之後,卻發現開不了機。grub 的錯誤訊息顯示它找不到我的根分割區。

後來推斷,應該是第二張 SD 卡是外插。grub 啟動時,driver 還沒載入,對它而言第二張 SD 卡是不存在的。所以要把兩個系統都裝在第一個 SD 卡 (mmcblk0) 中才行。

(不過後來發生了一些意外,所以我很高興地別無選擇把 Win10 清掉惹。)

3. 無線網路

這是個有點悲情的部份。它的 wifi 是 Broadcom BCM43430 (14e4:43e2),但走的不是 PCI,而是 SDIO。

在第 N 次安裝時,我在 live 系統上照著這一篇說明把內建的無線網路啟動成功了(當然還有安裝像是 bcmwl-kernel-source 這類必要套件)。不過這第 N 次安裝也就是上述裝在第二張 SD 卡的那一次。

結果發現 SD 卡問題後,我要回到 win10 切割磁區,卻發現進不去了。推測可能是第 N-M 次安裝時不小心把開機磁區寫到 /dev/mmcblk0 去了。所以連 windows 也開不了了。

那好吧,我很高興地別無選擇把 Win10 清掉,重新分割再安裝 ezgo,mmcblk0 上切一個 efi 磁區跟根分割區,把第二張的空間都給了 home。

結果發現,此時我再也無法喚醒 bcm43430 了。開機時完全不會去找 sdio,firmware 也無法載入,安裝模組也沒有作用。試了一個早上之後決定放棄,直接接 USB wifi adaptor。

(李組長眉頭一皺,發覺案情並不單純。難道在原來 Windows 的分割區中藏了什麼嗎?為何清掉原來的分割區後會連 SDIO 都找不到呢?)

4. 顯示

這部份是花我最多時間的。一個禮拜大概有一半以上都在這個問題上打轉。因為這台平板筆電的解析度:1280x800,並不在 VBE (Vesa Bios Extension) 規範內。

在前面發現 32 bit UEFI 問題,並看過 $4 大大的文章後,想說既然 grub 檔要從 debian 拿,都要下載 debian-9.5-i386 的 iso 檔,那就乾脆裝 debian 吧!反正一樣可以裝 KDE 或 LXDE 等桌面系統。

用 unetbootin 把 debian-i386 裝進隨身碟,果然可以順利開機!可是......


哇咧,奇妙地躺了 90 度。我猜是因為平板預設模式的關係吧!進去隨身碟中的 boot/grub/grub.cfg 看看。


gfxmode=800x600,應該是它在作怪?不過解析度要怎麼設定呢?

grub 的手冊中有說明。於是我把它調整成 auto。


成功了!試了兩天以來繼 32 bit UEFI 後的第二個進展!按下去準備安裝!


解析度還是不對!再繼續啃 Manual,找到 gfxpayload 這個參數。所以在開機裡加上


答案是一點用處也沒有。

這裡應該卡了我三天吧!嘗試著找 vga= 的值所代表的意義(VBEsvga.txtvesafb.txt),不用 vga= 改用 video=1280x800x32 等,各種組合都嘗試了,但始終沒有成功。

這中間發現了一些好玩的功能,例如在 grub command line 中的 videoinfo 跟 videotest。要先 insmod videoinfo,所有 grub 可用的模組都放在隨身碟系統中的 boot/grub/i386-efi/ 中。

試了幾天準備放棄時,再回頭看 $4 大大的文章,最下面那一段發現原來用系統上的工具就可以加上 i386-efi ,決定再試一次。這次如第一段所述,直接對著 ezgo 做 grub-install,竟然就順利開到 live 模式了。

啊諾~


(此時狀態顯示為:想殺人)

嘗試用 xrandr 來解決。 xrandr -o right 向右轉 90 度。


成功了!終於可以好好安裝。

不過安裝完後,它預設抓的模式仍然是 800x1280,嘗試著改成 1280x800 結果是亂七八糟。所以只能讓它用 800x1280 再轉 90 度。但總也不能每次登入都手動調整吧!於是繼續爬文。透過 cvt 把 800x1280 的 Modeline 紀錄下來,再寫到 /usr/share/X11/xorg.conf.d/10-monitor.conf 中:

Section "Monitor"
        Identifier "DIP-1"
        Modeline "800x1280_60.00"   85.25  800 856 936 1072  1280 1283 1293 1327
 -hsync +vsync
        Option "Rotate" "right"
EndSection

Section "Screen"
        Identifier "Default"
        Monitor "DIP-1"
        SubSection "Display"
                Modes "800x1280_60.00"
        EndSubSection
EndSection

開機進入就自動轉過來了!

當然這樣做其實還有些問題,例如切到 console 時看到的還是倒過來的模式。不過一般使用至少正常了!

5. 結論

印象中之前有幾台 Transformer 要裝 ezgo 都裝不起來,我猜 32-bit UEFI 作梗的機率最高。不過這類筆電與平板二合一的,都是特規中的特規,然後看起來筆電模式其實都並沒有很好地運用硬體效能。目前這一台 Acer One 10 跑起 ezgo 來,我測是除了 wifi 要用 USB dongle 以外沒什麼其他問題,音效也正常。等筆電主人試過再評價囉!

2018年3月11日 星期日

強者我朋友的故事

最近看到一些討論,讓我想到一個強者我朋友的故事。

這個朋友從蠻久以前就是個車奴。其實說到車子,對我來說它就是個交通工具,當然我現在手上這台 TIIDA 也是我生活賺錢的重要夥伴。不過我除了一般保養,有問題時找認識的車廠維修,有時甚至自己想辦法搞定以外,我並沒有特別挑惕一定要哪個廠牌的車子,或是車子要能夠跑多快,外型有多炫,內部操作有多方便。我這台車已經為我服務了快廿七萬公里了。

而我這朋友則不一樣。他從可能二十幾年前吧,我們剛考上駕照那時,他就堅持一定要用某個廠牌的跑車。他也真的是有錢啦,而且不只是每週洗車,不管到哪裡他一定要開這台車去。隨著這台車一代又一代的推陳出新,他也真不吝嗇每出一代一定更換。

然後還有一件很妙的事。他不管到哪裡都要開車,即使是到 T 點(那裡其實有許多人三不五時都會要去那邊辦點事,不過到底是哪裡並不是重點,就讓我隱匿其名吧),他也堅持一定要開他那寶貝車。他常常跟我炫耀他開那台車只要三分鐘就可以到 T 點,然後問我幹嘛不跟他一樣弄一台跑車,多省時啊。

可是對我來說,去 T 點開車不一定好,主要是不好停車啦,我也不像他不是那麼忌誨停在非標準的停車格裡,(然後很神奇的在那邊的交警對他那款車好像也一向網開一面,我也不知道為何)所以我多半選擇坐公車去。

去那邊坐公車的話,要轉一次車,下車後再走個五分鐘吧,全程大約 30 分鐘。其實對我來說只要能到 T 點就好啦,但對強者我朋友而言怎麼到達那邊好像是件很重要的事。我有時也會跟他說坐公車也蠻有趣的啊,他偶而聽說公車換了內裝好像比較舒服,或是換了新車之類的,他也會跟我嘗試一下,但每次都是一樣的結果。他受不了三十分鐘的車程,受不了轉車加走路,有幾次幾乎要跟我翻臉。我這個人比較重視友誼(這不代表我會投票給侯友宜喔),所以後來我也就不特別邀他了,他喜歡開車就讓他開吧。我還是跟著我的老夥伴,偶而坐捷運、火車或公車去辦我的事。

然後最近出事了。原本他的車有一個很酷炫的功能,就是買車的時候必須跟原廠登錄指紋,並由原廠在車上植入一個秘鑰。這部車只能強者我朋友開,其他人開車的話,原廠就會用一個特殊暗號通知警察,好像叫海盜還是什麼的。我朋友原本也頗為自豪,但那一天這部車不知道哪裡不對勁,把我朋友認定成海盜啦!他的車不但不能開,還勞動到警察來看怎麼回事。

我朋友當然很生氣啊,他花了那麼多錢買的車,怎麼能說他是海盜呢?他打電話給原廠。原廠查看了一下,給了他一個回應:「我們這邊目前愛莫能助。有兩種可能性,一種是你的指紋跟我們這邊資料庫的對應不正確,可能是車內電腦的問題;另一種是我們這邊中控室認定你的車有問題,所以不讓任何人開。這些都不是現在可以解決的,要花上一段時間。」

我朋友很生氣地說:「我現在要去 T 點啊,我有很重要的工作,不去那邊那資料不行!現在我沒車開也不能去哪裡,你要我怎麼辦?」

原廠仍然給了他一個制式回應:"Sorry, There's nothing we can do."

他打電話來向我發洩了一頓,但我能怎麼辦呢?我說:「不然你那麼急的話就先坐公車去啊!」

不說還好,一說他好像更火大。「公車那麼 low 的東西,我才不坐!」

「好好好,不坐就不坐,不過我也不知道怎麼辦。或許你再買一台新的?」

我朋友就掛電話了。

後來我沒再追這件事。不過我內心總是祈禱著,希望我朋友不要一時衝動跑去偷別人的同款跑車,只為了去 T 點......

2017年9月3日 星期日

open ftp passive mode with ufw


ufw allow ftp

/etc/proftpd/proftpd.conf:
PassivePorts  50000   51000

ufw allow proto tcp from any to any port 50000:51000