2014年9月16日 星期二

DRBL/Clonezila for systemd 開發備忘


=== systemd 常用除錯指令 ====

  • systemctl status -l servic-name.service :
  • journalctl [-b |-a | -u [service name] :
    • journalctl -o verbose _PID=11026
  • systemctl  查詢和控制系統狀態和系統服務
  • systemd-cgls  用樹狀結構的方式秀出相關的服務
  • systemadm   systemd圖形化的前端介面,可用來檢查和控制systemd。
===  FC21 目前問題 ====

  • Issue 1: systemd-remount-fs.service  [Ful]/[SSI]
[   49.667014] systemd[1]: systemd-remount-fs.service: main process exited, code=exited, status=1/FAILURE
[FAILED] Failed to start Remount Root and Kernel File Systems.
See "systemctl status systemd-remount-fs.service" for details.

    • systemctl status -l servic-name.service : (-l)察看長列表,以 systemd-remount-fs.service 為例,可以看到

$ systemctl status -l systemd-remount-fs.service
...
Process: 628 ExecStart=/usr/lib/systemd/systemd-remount-fs (code=exited, status=1/FAILURE)
 Main PID: 628 (code=exited, status=1/FAILURE)
 1月 22 15:42:46 fc21_amd64-192-168-13-1 systemd-remount-fs[628]: mount.nfs: an incorrect mount option was specified
實際執行:

# /usr/lib/systemd/systemd-remount-fs
mount.nfs: an incorrect mount option was specified
mount.nfs: an incorrect mount option was specified
/bin/mount for /usr exited with exit status 32.
/bin/mount for / exited with exit status 32.
  • Issue 2: systemd-journald.service  [Ful]/[SSI] : [[SOLVED]]
[   ***] A start job is running for Journal Service (1min 10s / 1min 40s)[  113.702328] systemd[1]: systemd-journald.service watchdog timeout (limit
 1min)!
[***   ] A start job is running for Journal Service (1min 21s / 2min 41s)[  124.200585] systemd-journald[496]: Received SIGTERM from PID 1 (systemd)
.
[**    ] A start job is running for Journal Service (1min 21s / 2min 41s)[  124.518193] systemd[1]: Failed to start Journal Service.
[FAIL[  124.826271] systemd[1]: Dependency failed for Flush Journal to Persistent Storage.
ED] Failed t[  125.232760] systemd[1]: Unit systemd-journald.service entered failed state.
o start Journal [  125.589701] systemd[1]: systemd-journald.service failed.
Service.
See "[  125.902105] systemd[1]: systemd-journald.service has no holdoff time, scheduling restart.
systemctl status systemd-journal[  126.368627] systemd[1]: Stopping Journal Service...
d.service" for d[  126.595878] systemd[1]: Starting Journal Service...
etails.

    • Solution:
 refer: http://forums.gentoo.org/viewtopic-t-806432-view-previous.html?sid=206e0c04aa942972883135971a18c6ae
Add into clients~/etc/systemd/journald.conf
Storage=volatile
SystemMaxUse=20M
SystemMaxFileSize=20M



===  使用systemd分析啟動過程  ====
•systemd-analyze – 顯示kernel 和 user space 上一次啟動所花費之時間
•systemd-analyze blame – 顯示每個服務啟動用了多長時間
•systemd-analyze critical-chain – 顯示對時間要求嚴格的單元鏈的樹結構
•systemd-analyze dot | dot -Tsvg > systemd.svg – 列出啟動過程的向量圖(需安裝graphviz)
•systemd-analyze plot > bootplot.svg – 產生啟過程的時間圖

  • systemctl  查詢和控制系統狀態和系統服務
  • systemd-cgls  用樹狀結構的方式秀出相關的服務
  • systemadm   systemd圖形化的前端介面,可用來檢查和控制systemd。
Reference:

  • Systemd Man Page
    • http://0pointer.de/public/systemd-man/
    • http://chakraos.org/wiki/index.php?title=Systemd/zh-hant
  • systemd.unit 寫法
    • http://0pointer.de/public/systemd-man/systemd.unit.html
  • Sysemd service 管理:
    • https://wiki.archlinux.org/index.php/Systemd
    • http://fedoraproject.org/wiki/Systemd
  • How to debug Systemd problems
    • http://fedoraproject.org/wiki/How_to_debug_Systemd_problems
    • https://www.suse.com/zh-tw/documentation/sles-12/book_sle_admin/data/book_sle_admin.html
  • Fedora 17 Boot Optimization (察看那些 service 不需要)
    • http://www.harald-hoyer.de/personal/blog/fedora-17-boot-optimization-from-15-to-3-seconds
  •  使用systemd分析引導過程 
    • http://os.51cto.com/art/201407/445309.htm
  •  systemd 服務設定說明
    •  https://zh.opensuse.org/openSUSE:How_to_write_a_systemd_service
  • Systemd
    • http://0pointer.de/blog/projects/systemd.html
  • Firewall in Fedora 18
    • https://fedoraproject.org/wiki/FirewallD
    • http://fedoraproject.org/wiki/Features/firewalld-default

2013年3月20日 星期三

如何在 Secure Boot Enabled 環境下啟動 Clonezilla Live


近來應該會遇到愈來愈多的機器 ,內建 Secure Boot 並預設為啟動。如此一來,在這些設備上要啟動其他的作業系統(如:Linux , BSD,.. 等非 Microsoft Windows 8 OS),除非將 Secure Boot 選項關閉,否則將需要用一些修正的方式讓系統能夠開機。

使用再生龍單機版(Clonezilla Live)進行備份前,需要將其原作業系統關機,再使用再生龍 Live CD/USB 開機。這樣啟動非 Windows 8 作業系統的行為,在上述的 Secure Boot Enabled 的設備中,就會立刻被 uEFI 中斷並無法開機。

以 Clonezilla Live USB 開機為例,在 EFI 的規範下,首先載入的就是 usb://EFI/boot/bootx64.efi ( 64位元設備下) 這個啟動元件,但由於 secure boot 的規範,當然無法讓未簽過簽章的這個 EFI 載入器運行,所以,較為可行的方法之一就是使用一個已被簽章過 EFI 載入器(先稱之為 per-loader)來取代原有的 bootx64.efi,之後讓它帶回真正原先的 bootx64.efi (當然,就需要改名為其他的 .efi),如此才能接回原來的開機程序。

目前,Linux Foundation 有釋出一個給 Microsoft 簽章過的 EFI loader ,可參考:
http://blog.hansenpartnership.com/linux-foundation-secure-boot-system-released/
所以,可以用這個 pre-loader 來讓其他的 loader 在 secure boot enabled 下開機。

由於用 usb 的彈性比較高,所以下面步驟就以 clonezilla live usb 為例子:

1. 先做一個 Clonezilla live 可開機 usb flash;如何製作請參考  http://clonezilla.nchc.org.tw/clonezilla-live/liveusb.php

2. 下載 Linux  Foundation 釋出的簽過章的 EFI 元件:
將此兩檔案放至 usb://EFI/boot 下

3. 由於所下載的 Preloader.efi  預設下一個會載入 loader.efi ,所以為了能接回原來有開機流程,必須做一些檔案的 檔名更改。
切換至 usb://EFI/boot/ 目錄:
  • bootx64.efi -> loader.efi
  • PreLoader.efi -> bootx64.efi
  • HashTool.efi 維持原檔名
完成。如此修改後的 usb flash 即可在secure boot enabled 的設備進行開機。

目前,在 secure boot enabled 設備第一次啟動時,需要將下一個 loader (loader.efi) 註冊至 MOK 中,這行為仍然需要一次的人為的介入。加入一次後,以後則不需要重覆此步驟,除非進 BIOS 清除相關簽章檔案。

以筆者的 PC 為例(ASUS BM6675/中信標案 MD750;BIOS :  v0625;Secure Boot Enabled),第一次開機步驟如下:

1. 選擇以 UEFI : usb flash 開機 (若設備仍允許 legacy mode 的話,則會看到有另一個非 uEFI 的相同設備)

2.  由於 loader.efi (原 Clonezilla live 的 bootx64.efi) 尚未簽章,當然不允許被執行,所以下一階段會執行 hashtool 處理


3. Hash Tool 主畫面,選擇 「Enroll Hash」來位 loader.efi 註冊


4. 選擇 loader.efi 進行註冊


5. 確認註冊進 MOK


6. 完成並離開 Hash Tool


7. 控制權交由 loader.efi 接手,啟動 Clonezilla Live 開機選單


一台設備上這樣的註冊動作只需要一次,下次用同一個 usb flash 開啟時,則會自動進入 7. 的選單。

有幾種情況可能需要重新註冊:
1. MOK 註冊資料被清除(ex:恢復預設值)
2. loader.efi 更改過(ex: 重新植入不同版本的 Cloneizlla Live)

事實上,Linux Foundation 有釋出 keytool.efi 的工具,能夠進階的管理設備中的 key DB (PK,KEK, DBX, MOK,.. 等),下回補充。


Reference:

2013年1月21日 星期一

常用的 ssh 轉 port 方式

 記錄常用的幾種 SSH 通道與轉 port 的使用
  • Tunneling VNC Connections Over SSH 
一般 vnc 協定並無資料加密,建議使用有加密方式,或將通道以加密方式包裹。
下面例子則是以 ssh tunnel 方式,讓 vnc server 的兩端,以加密的通道 (SSH) 進行溝通。此方式的條件是 vnc server 機器上也需要有 ssh daemon 。
場景:VNC server(vncserv.host) 上的 vnc posrt 為 5901 (若一般 vnc viewer 則為vncserv.host:1)
    • 在 local (控制端)執行指令並以建立 SSH 通道
$ ssh -L 5901:localhost:5901 -N -f -l user vncserv.host
    • 在 local 端起動一般 vnc viewer 程式,但連線位置是指為 localhost:1
$ vncviewer localhost:1
  • Tunneling Transmission remote deamon Connections Over SSH
 Transmission remote通常以 web: 在localhost:9091進行管理, 但預設並無以 SSL 登入帳號認証方式,故透過 SSH tunnel 是個較安全的方式
    • 在 local (控制端)執行指令並以建立 SSH 通道
$ ssh -L 9191:localhost:9091 -N -f -l user my.transmission.host

建立後則可用下列方式進行 web 連線

http://localhost:9191/
  • Reverse SSH tunnel SSH connection to a NAT'ed box
反向的 SSH 連線上。例如,要 ssh 到 NAT 內的機器,除非在 NAT 上設定,不然無法 ssh 連通至內部 ssh service。透過 reverse SSH tunnel connection 則可。
    •  先在 NAT 內的機器對外(public.host) 建立連線
$ ssh -R [port00]:localhost:[port01] -N -f -p [port] user@public.host


port00 : 在 public.host 上想開啟的 port
port01 : 在 NAT 這台機器中 (localhost) 自己 ssh daemon 的 port
    • 在外部的機器(public.host)則透過自己的 port00 進行與 NAT 中的機器連線
$ ssh -p [port00] user-id@localhost


Note:
  • -L 5901:localhost:5901 : Specifies that the given port on the local (client) host is to be forwarded to the given host and port on the remote side. Here you are using port 5901 on the localhost to be forward to sshserver.mydomain.com on the 5901 port.
  • -N : Do not execute a remote command i.e. just forward ports.
  • -f : Requests ssh to go to background just before command execution. Requests ssh to go to background just before command execution. Once password supplied it will go to background and you can use prompt for type commands on local system.

Reference:
http://www.cyberciti.biz/tips/tunneling-vnc-connections-over-ssh-howto.html
http://www.positon.org/post/Tunnel-SSH-inverse-pour-connexion-SSH-vers-une-machine-NAT%C3%A9e
http://www.study-area.org/tips/ssh_tips.htm

2013年1月3日 星期四

Linux 下如何在 VM 中連接 socket output

在 Ubuntu 下以 VirtualBox 為例,搭配  socat 套件使用 Fedora 17 的 serial console mode
  • 先確認系統中有 socat 套件。可用 sudo apt-get install socat 安裝
  • 『設定值』-> 『序列埠』: 啟用
  • 『連接埠號』選: COM1 (需對應後面的 boot parameter, COM1 為 ttyS0, COM2 為 ttyS1 , 類推)
  • 連接埠模式:選「主機管線」;不勾選「連接到現有設備/通訊端」(ps: v5.x 之前,需勾選『建立管線』);設定連接埠路徑 : /tmp/serial0 。設定如右。
  •  啟動 VM,此時 /tmp/serial0  這 socket 應該被建立
  • 在 host machine ,終端機下 socat unix-connect:/tmp/serial0 stdio,echo=0,raw ,會等待輸出
  • 在 guest machine 中,在開機參數中加入 console=ttyS0,115200n81 ( 或 38400,76800 , 若是用 Debian live-boot and live-config 的 live system , 則需再加 live-getty )
  • boot 並從 host 終端機使用 serial console



2012年10月15日 星期一

軟體授權條款與智產權等相關議題

記錄一下讀過與軟體授權條款與智產權等相關議題的筆記

與軟體/程式複製、備份相關法條:
  • 第 59 條:合法電腦程式著作重製物之所有人得因配合其所使用機器之需要,修改其 程式,或因備用存檔之需要重製其程式。但限於該所有人自行使用。

防盜拷措施相關:
  • 第 80-2 條:
著作權人所採取禁止或限制他人擅自進入著作之防盜拷措施,未經合法授
權不得予以破解、破壞或以其他方法規避之。
破解、破壞或規避防盜拷措施之設備、器材、零件、技術或資訊,未經合
法授權不得製造、輸入、提供公眾使用或為公眾提供服務。
前二項規定,於下列情形不適用之:
一、為維護國家安全者。
二、中央或地方機關所為者。
三、檔案保存機構、教育機構或供公眾使用之圖書館,為評估是否取得資
    料所為者。
四、為保護未成年人者。
五、為保護個人資料者。
六、為電腦或網路進行安全測試者。
七、為進行加密研究者。
八、為進行還原工程者。
九、其他經主管機關所定情形。
  • 第 87 條

有下列情形之一者,除本法另有規定外,視為侵害著作權或製版權:
七、未經著作財產權人同意或授權,意圖供公眾透過網路公開傳輸或重製
    他人著作,侵害著作財產權,對公眾提供可公開傳輸或重製著作之電
    腦程式或其他技術,而受有利益者。
 
網路服務提供者之民事免責相關:
第 90-4 條
第 90-5 條
第 90-6 條
第 90-6 條
第 90-7 條 
 
個人使用之但書:
第 91 條:著作僅供個人參考或合理使用者,不構成著作權侵害。

 
 
 
 

千禧年數位著作權(全稱Digital Millennium Copyright Act,常簡稱DMCA),是美國於1998年10月28日通過的一部版權法。其中包含五項法案:
  • 世界智慧財產權組織條約執行法案(WIPO Treaties Implementation)
  • 網路著作權侵害責任限制法案(Online Copyright Infringement Liability Limitation)
  • 計算機維修競爭確保法案(Computer Maintenance Or Repair Copyright Exemption)
  • 綜合規定法案(Miscellaneous Provisions)
  • 原始設計的保護法案(Protection Of Certain Original Designs)
libdvdcss (or libdvdcss2 in some repositories) is a open source software library for accessing and unscrambling DVDs encrypted with the Content Scramble System (CSS). libdvdcss is part of the VideoLAN project and is used by VLC media player and other DVD player software such as Ogle, xine-based players, and Mplayer.

http://en.wikipedia.org/wiki/Libdvdcss

DeCSS是一個用來解除以CSS(Content Scrambling System,內容擾亂系統)加密的DVD影片的電腦程式。
  • 1999年10月:DeCSS 最初由不知名人士從網際網路的LiViD(Linux Video and DVD)mailing list 發表。
  • 2000年:程式開發者之一的挪威15歲少年Jon Lech Johansen(三名作者中唯一公開者)遭挪威警方搜索其住家,並且被起訴,面臨可能的兩年有期徒刑及高額罰金。
  • 2003年初:Jon Lech Johansen獲判無罪。 DeCSS 用的解密方法,並非暴力法(Brute force attack),僅使用 40bit 加密 key,只要是高檔的家用電腦在一天內就可以把 key 解出來。 
http://zh.wikipedia.org/wiki/DeCSS
  • 談DMCA反規避條款與合理使用
  • http://www.copyrightnote.org/crnote/bbs.php?board=35&act=read&id=15
  • 否定實體財產權的 DMCA: 反規避/反仿冒/反競爭條款將從 DRM 走向 PRM
    • http://blog.ofset.org/ckhung/index.php?post/09cc
  • 著作權法條文-全國法規資料庫
    • http://law.moj.gov.tw/LawClass/LawAll.aspx?PCode=J0070017
  • 伯恩公約
    • http://www.copyrightnote.org/crnote/bbs.php?board=5&act=read&id=1
    •  http://zh.wikisource.org/zh-hant/%E4%BF%9D%E8%AD%B7%E6%96%87%E5%AD%B8%E5%8F%8A%E8%97%9D%E8%A1%93%E8%91%97%E4%BD%9C%E4%B9%8B%E4%BC%AF%E6%81%A9%E5%85%AC%E7%B4%84
  •  

Ceasar's Photo

www.flickr.com