2013年10月10日

Virtualbox 重開虛擬機器失敗: VM session was closed before any attempt to power it on.

我的 ubuntu 10.04 最近一次自動更新系統之後

(uname -a 指令後的結困是: Linux ubu1004-srv 2.6.32-52-server #114-Ubuntu SMP Wed Sep 1x 1x:06:3x UTC 2013 x86_64 GNU/Linux),

virtualbox 的每一個虛擬機器都無法開啟, 得到以下的錯誤訊息:

一開始是

VBoxManage:error:The machine ‘xxx...′ is already locked by a session(or being locked or unlocked)

查了網路, 看到這一篇的 "解决方案", 原來是檔被鎖住了, 先下個指確定

     ps ax|grep -i virtualbox

找到如下行的 process 編號
21890 ? Sl 10:34 /usr/lib/virtualbox/VirtualBox –comment svr207 –startvm bxxxxx

再下指令 kill 殺到這個程序, 以為就 OK了,
     kill 21890

沒想要啟動虛擬機器又得到以下錯誤訊息

VBoxManage: error: 
The VM session was closed before any attempt to power it on.
code NS_ERROR_FAILURE (0x80004005)
component SessionMachine, interface ISession

拜了很久的網路文章, 看來好像不少人遇到這個錯誤, 但都無法解決問題。冷靜想想後, 猜應該是和更新 kernel 有關, 查我自行 mount 進來的 NTFS 硬碟, 發現變成「唯讀」, 所以才發無啟動 virtualbox (即使用 sudo chmod 或 sudo chown 都無法改變檔案和目錄的屬性)。 檢查掛載資訊檔

        sudo gedit /etc/fstab


以前的 fstab 文件最後一行加入:
        /dev/hdd1 /media/hdd1 ntfs utf8,umask=0222 0 0

現在不能用了, 將它改成 (中間沒有任何逗號):
         /dev/hdd1 /media/hdd1 ntfs 0 0

先缷載 sudo umount /dev/hdd1, 再重新用指令掛載
        sudo mount -a

竟然恢復正常了,沒時間去確認 fstab 的語法是否改變,但看起來是不需要 options 參數 (utf8,umask=0222)來允許自行掛載的 NTFS 硬碟讀寫了,變的比較精簡。

2013年10月8日

google toolbar 翻譯 失效

原本使用 Google toolbar 時, 滑鼠移到英文字上時, 會自動翻成中文, 但不知怎麼回事, 突然有一天就不能用了....

後來查 google 才發現, 原來我在 firefox 主選單中的 [檢視/工具列] 中, 把 google 工具列隱藏起來了, 原來這樣也會讓「翻譯」功能失效。

不過只要 在 [右方鈑手圖示/選項/版面配置] 最下方,勾選「工具列隱藏時使用各項功能」, 再將 Google 工具列隱藏後, 還是可以用的!

2013年10月2日

在 ubuntu 10.04 中安裝 M$ office

很久以前試過 wine 1.0 但發現 office 2003 一直當。放棄了一陣子...

近來發現一個 wine 的延伸應用: PlayOnLinux

它是用 wine 的 library, 但是和 wine 不一樣的是, wine 把所有的視窗程式都放在同一個虛擬 C: 子目錄中, 但是 PlayOnLinux 卻是允許將每一個視窗程式, 安裝在不同的虛擬擬 C: 子目錄中,...

而且, 最特別的是, 它還允許使用各種版本的 wine! (參見下圖)

所以我的 office 2003 在 wine 1.5.29 下還不能用, 但是從 PlayOnLinux 內建的功能下載 wine 1.73 後, 再安裝 office 2003, 居然成功了!!!

GUI 啟動方式不用介紹, 指令啟動 (playonlinux command line) 妀安裝好的 win 程式是 (see also: Passing command line arguments to Apps?)

      playonlinux --run "程式名稱"

不過我另外發現, 不能裝 Access, 否則會在裝一半時當掉, Word, Excel, PPT 都正常可以使用!

後來發現, 我另一台 ubuntu 12.04 也安裝成功, 但是輸入法卻有問題 (無法用 ibus 打中文), 我在 ubuntu 10.04 是使用 scim 輸入法, 只要不安裝隨 office 2003 所附的微軟輸入法即可。還沒有找到解決的方法...(:



圖片來源: http://www.playonlinux.com/en/dev-documentation-5.html

2013年9月28日

Ubuntu10.04 (lucid) 使用 PPA 安装最新版Firefox

$ sudo apt-add-repository ppa:mozillateam/firefox-next 
$ sudo apt-get update 
$ sudo apt-get install firefox

裝完後是英文版, 要改成中文選單, 用firefox瀏覽下列網址,下載安裝後重新啟動即可
http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/[VERSION]/linux-i686/xpi/zh-TW.xpi
其中[VERSION]為firefox版本號

例如替 firefox 20.0 版安裝中文選單, 連至此下載 zh-TW.xpi

http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/20.0/linux-x86_64/xpi/zh-TW.xpi


see also  Firefox選單列改成中文的方法

2013年8月29日

Mint 13 的無線網路連不上

不知何原因, 我的電腦跑 Mint 13 的無線網路一直連不上, 老是問金鑰,
後來查了Google 之後, 發現把 802.11N 給取消掉, 竟然可以解決這個問題, 原因是:

問題應該是"iwlagn"這隻driver對於802.11n的通訊協定上沒有很好的支援性
做法 :

1. 編輯 (或新增) 名為 _wlan.conf 在以下的位置, 直接下指令

sudo gedit /etc/modprobe.d/_wlan.conf

2. 再其中新增一行:

options iwlagn 11n_disable=1

重新開機後, 這樣應該就OK了

2013年6月26日

在 64-bit Ubuntu 上安裝 32-bit 的 package

使用 64-bit Ubuntu 時,經常會遇到, 有的 package 只提供 32-bit 的版本 (i386),而沒有 64-bit 的版本 (amd64),例如:Adobe Reader 和 Skype 等。

解決方法很簡單,就是強制在64bit 上加裝此 32bit 版本即可, 在以下指令加上 --force-architecture 參數即可:
  • sudo dpkg -i --force-architecture AdobeReader_cht-8.1.3-1.i386.deb
  • sudo dpkg -i --force-architecture skype-debian_2.0.0.72-1_i386.deb 
參考: http://miox.cc/2009/05/64-bit-ubuntu-32-bit-package.html

2013年6月16日

openVAS 安全掃瞄



see:

Microsoft IIS 5.0~6.0 關閉 webdav功能

在Microsoft IIS 5.0~6.0且開啟webdav模組的版本具有Bypass的漏洞,由於程式設計錯誤的原因,導致惡意使用者利用此漏洞,即可能在您的系統上存取到其它機敏檔案。 在Microsoft IIS 7.0之後的版本已修正此漏洞,建議您至下列網址取得最新版本安裝 http://www.microsoft.com/technet/security/Bulletin/MS09-020.mspx 如果無法即時更新IIS版本,建議您立即關閉webdav功能


關閉WebDAV功能


執行 regedit
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters
加入以下registry value:
Value name: DisableWebDAV
Data type: DWORD
Value data: 1
需重新啟動IIS以使用新設定,若要再次啟用 WebDAV 則將其值設為 0

see also: [PPT]資安事件處理案例之說明與分析

ubuntu 10.04 更新 php 至 5.4.15

ubuntu 10.04 預裝的 PHP5 版本是 5.3.2
這個版本有安全性問題:

在PHP < 5.3.6之前的版本,存在緩衝區溢位(Buffer Overflow)漏洞 and 存在拒絕服務(Denial of Service)漏洞,由於程式設計錯誤的原因,導致惡意攻擊者可能會利用此種漏洞即可能癱瘓您的系統或取得更高的權限。 在PHP 5.3.6 之後的版本已修正此漏洞,建議您至下列網址取得最新版本安裝 http://www.php.net

==2013-12-17 後記==
今天想要更新另外一台 ubuntu 10.04 lucid 時,發現以前的方法好像不能用,後來發現是 PHP5 for 10.04的 ppa 變了,應該要改成 ppa:ondrej/php5-oldstable, 而不是 ppa:ondrej/php5。指令是
  sudo add-apt-repository ppa:ondrej/php5-oldstable
然後
  sudo apt-get update
再用
  sudo aptitude install php5 
來安裝, 以自動解決套件相依性問題, 裝好後
用 aptitude show php5 看安裝後版本 (我的是 5.4.23)
 
想更新至 5.4.15, 要用 ppa (以PPA for PHP5 為例:)

新增 ppa for php5 lucid

(以PPA for PHP5 為例:)

sudo vim /etc/apt/sources.list.d/php5-ppa.list
在(可能是空的)檔案中, 加入以下兩行

deb http://ppa.launchpad.net/ondrej/php5-oldstable/ubuntu lucid main
deb-src http://ppa.launchpad.net/ondrej/php5-oldstable/ubuntu lucid main

註:以下是舊網址,無法作用
deb http://ppa.launchpad.net/ondrej/php5/ubuntu lucid main
deb-src http://ppa.launchpad.net/ondrej/php5/ubuntu lucid main

再下更新指令:
sudo apt-get update

安裝 php5 的更新
sudo apt-get install php5

若有找不到部份檔案, 改用 aptitude 的解決方案
sudo aptitude install php5

查看安裝後版本

aptitude show php5

   套件: php5
   狀態: 已安裝
   已自動安裝: 否
   版本: 5.4.15-1~lucid+1


別忘了重啟 apache
sudo service apache2 restart

===註:===

沒有公鑰的解法

在加入 ppa 之後, 進行 sudo apt-get update 時, 常遇到

....
取得 634B 用了 4s (156B/s)
正在讀取套件清單... 完成
W: GPG error: http://ppa.launchpad.net lucid Release: 由於無法取得它們的公鑰,以下簽章無法進行驗證: NO_PUBKEY xxxxx

可下指令來解決:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys xxxxx

see also: http://dominic16y.world.edoors.com/CJF0FiPPvmww

若要移除 ppa (前面裝失敗的)

sudo apt-add-repository --remove ppa:zzz/xxx

以上這一行指令, 在 ubuntu 10.04 lucid 好像不能用, 參考這篇看看: How do I remove a PPA added via command-line?

 

 

2013年5月23日

ubuntu server (10.04) 伺服器安全考量

*連接到您的FTP伺服器上後,發現您的FTP伺服器會回覆伺服器的版本及名稱等資訊,...

這個可更改
sudo vim /etc/vsftpd.conf

改其中的這一行如下, 就不會出現版本資訊

#login時的歡迎信息
ftpd_banner=Welcome to ... FTP service.


記得重啟 ftp service
sudo /etc/init.d/vsftpd restart


see http://blog.udn.com/nigerchen/2261345


*避免 apache 伺服器資訊被探測

Apache:
開啟 httpd.conf,

sudo vim /etc/apache2/apache2.conf

加入以下兩行:
 
    ServerTokens ProductOnly
    ServerSignature Off
 

不過我測試的結果,好像還是看的到??

PHP:
隱藏 PHP 版本就是隱藏 "X-Powered-By: PHP/5.1.2-1+b1" 這個,開啟 php.ini,加入:

    expose_php = Off

完成以上兩個設定後,重新啟動 Apache 即可, 指令:


    sudo /etc/init.d/apache2 restart

*目錄瀏覽禁止

打開 (httpd.conf) 找到, ubuntu 10.04 的新位置應該是

sudo vim /etc/apache2/sites-available/default

...(...略過)
Options Indexes FollowSymLinks MultiViews
...

將以上行中間的 Indexes 刪除掉,儲存之後再重新啟動Apache即可。

 

其它參考資訊:

1. 如何知道 ubuntu 套件安裝資訊
    aptitude show 套件名稱

例如:
    aptitude show gedit

Apache 調校參考

see http://fecbob.pixnet.net/blog/post/38248419

待查 Apache的 MaxClients,ThreadsPerChild,MaxThreadsPerChild等參數,基於你的HTTPd.conf中的MPM模組選擇 (ubuntu 10.04 的位置是在 /etc/apache2/apache2.conf)。

=========
Apache伺服器自帶有一個叫AB(ApacheBench)的工具,在bin目錄下。ApacheBench 可以針對某個特定的 URL 模擬出連續的連線請求,同時還可以模擬出同時間點數個相同的連線請求,因此利用 ApacheBench 可説明我們在網站開發期間模擬實際上線可能的情況。

  在命令列下輸出:
  ./ab -n number_of_total_requests -c number_of_simultaneous_requests http:www.../php_app.php

  例如:
  ./ab -n 1000 -c 50 www.com/app.php

  AB將同時向 www.com/app.php發出50個併發請求,共發出1000次。測試結果將可能是這樣的:

  Server Software: Apache/2.0.16
  Server Hostname: localhost
  Server Port: 80
  Document Path: /myapp.php
  Document Length: 1311 bytes
  Concurrency Level: 50
  Time taken for tests: 8.794 seconds
  Complete requests: 1000
  Failed requests: 0
  Total transferred: 1754000 bytes
  HTML transferred: 1311000 bytes
  Requests per second: 113.71
  Transfer rate: 199.45 kb/s received
  Connection Times (ms)
  min avg max
  Connect: 0 0 5
  Processing: 111 427 550
  Total: 111 427 555

app.php每秒鐘可以處理的請求數為113.71個。將請求數增加,看看伺服器能否處理更大的壓力。你也需要調節Apache的 MaxClients,ThreadsPerChild,MaxThreadsPerChild等參數,基於你的HTTPd.conf中的MPM模組選擇 (ubuntu 10.04 的位置是在 /etc/apache2/apache2.conf)。

修改HTTPd.conf後,要重啟Apache伺服器,然後再用AB測試。

2013年5月21日

遠端管理 VirtualBox-RemoteBox

RemoteBox 是用來遠端管理 VirtualBox,參見 openfoundry 所介紹之文章。看起來還不錯用!

我在 ubuntu 10.04 試的結果無法執行,因為它要求 gtk+ 2.2 以上,但我的只有 2.20....

換了 Mint 14 來試,先依官方 說明 PDF 安裝了這些

sudo apt-get install libgtk2-perl libsoap-lite-perl rdesktop

才發現還要做一些設定才能用, 有空再試吧!

RemoteBox 官網: http://remotebox.knobgoblin.org.uk/

RemoteBox 1.5 on UbuntuRemoteBox 1.5 on Mint

2013年5月17日

有趣的 route 指令

當網路不通時, 大概都是 route 出現問題, google 後發現有趣的 route 指令, 紀錄下來備忘

 
要加入 gateway ip 指令
sudo route add -net default gw GATEWAY_IP dev wlan0
sudo route add default gw 192.168.1.1 eth0
 
使用以下兩行其中一行就可以:
sudo route add default gw 192.168.1.1
或是
sudo route add default gw dev eth0
 
要永久改變的話, 
編輯 sudo vi /etc/rc.local
找到 exit
在 exit 前面加以上的指令

想要新增一個路由至 10.0.0.0 的網段,所有 10 開頭的封包將透過 eth0 的網卡送出

#route add -net 10.0.0.0 netmask 255.0.0.0 dev eth0

刪除透過 eth0 的網卡至 10.0.0.0 的網段的路由

#route del -net 10.0.0.0 netmask 255.0.0.0 dev eth0

新增一個路由至 10.0.0.0 的網段,所有 10 開頭的封包將透過下個設備的 ip 192.168.1.1 送出

#route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.1.1

參考:
https://sites.google.com/site/hcsvieken/fedora-xue-xi/route-lu-you-zhi-ling
route 指令參考: http://people.ofset.org/~ckhung/b/gnu/network.php

2013年5月16日

無線分享器當成 bridge 和 repeater 的規畫佈置

我在家中裝了一個有點複雜的網路

(a) Cable model 從家外面拉進來,有固定位置,裝了一台無線分享器 A (dlink DI-624S)
      192.168.0.1
      DHCP   192.168.0.50~90
(b) 我的書房有一堆電腦, 都需要網路連外, 所以也裝了一台無線分享器 B (Edimax BR-6228NC), IP 設成
     192.168.0.10 LAN
     192.168.0.99 Wlan (固定IP)
     DHCP  關閉 (因為它經由 無線分享器 C 取得 ip 和上網)

無線分享器 A 是 dlink DI-624S, 這台可以讓我的電腦 (XP 和 ubuntu), 都用 VPN 的方式連到工作地方的 vpn server (其它兩台都不行, 不知原因...), 但它似乎又不能讓無線分享器 B 當成 Universal Repeater 來連, 所以只好再拿另一台 AbCom WR254G 來中繼連接

(c) AbCom WR254G (無線分享器 C)
     AboCom    當橋接主 AP1    192.168.0.3 WAN
                                               192.168.0.2 LAN
                              DHCP        192.168.0.91~200
     將無線分享器 C 的一般孔 (不是WAN 孔) 連上無線分享器 A 的一般孔,
     這樣的好處是, 可以用任一台電腦, 連接上以管理這 3 個無線分享器:
     192.168.0.1
     192.168.0.2
     192.168.0.10

可是發現房間中的電腦 (連上無線分享器 B) 無法上網, google 了以後, 應該是 gateway 有問題, 將無線分享器 C 的 gateway 也設成 192.168.0.1 即可

ubuntu 架設 LVS/DR in virtualbox 實作成功紀錄

LVS (linux virtual server) 是用來做 server 負載平衡的軟件。它有三種模式, 我挑了一種比較簡單的 Direct Routing (DR) 來試做, 需要同一網段的 IP, 利用 virtualbox 先裝了 3 台 ubuntu server 12.04

(A) 當入口的 VIP server: 192.168.0.64
    對外的 IP:  192.168.0.90


(B) Real server 1: 192.168.0.65
(C) Real server 1: 192.168.0.66

步驟:
1.安裝 ipvsadm
    apt-get install ipvsadm

2. 在 VIP server 新增一個虛擬網卡, 設成對外的 IP:  192.168.0.90
    修改 VIP server 的 ip 見以下內容
    我是用 dhcp 的方式取得 ip (在分享器設定分享固定 ip)
    下指令然後編輯 interfaces 檔:

sudo vi /etc/network/interfaces


# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth1
iface eth1 inet dhcp

auto eth1:0
iface eth1:0 inet static
address 192.168.0.90
netmask 255.255.255.255
broadcast 192.168.0.90

3. 在 VIP server 建立一個 sh 指令檔, 以執行 ipvsadm 指令 
(目前重開機以後要再執行一次,還沒弄清楚如何解決)
vi lvs.sh

sudo ipvsadm -C
route add -host 192.168.0.90 dev eth1:0
sudo ipvsadm -A -t 192.168.0.90:80 -s rr
sudo ipvsadm -a -t 192.168.0.90:80 -r 192.168.0.65:80 -g
sudo ipvsadm -a -t 192.168.0.90:80 -r 192.168.0.66:80 -g
sudo ipvsadm -S


4. 編輯 /etc/sysctl.conf, 在檔案最下方加入以下內容
sudo vi /etc/sysctl.conf

net.ipv4.ip_forward=0
net.ipv4.conf.all.send_redirects=1
net.ipv4.conf.default.send_redirects=1
net.ipv4.conf.eth1.send_redirects=1


5. 在 real server1 上 (已裝好 apache), 新增一個虛擬網卡 lo:0
可以下指令然後編輯 interfaces 檔:

sudo vi /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth1
iface eth1 inet dhcp

auto lo:0
iface lo:0 inet static
address 192.168.0.90
netmask 255.255.255.255
broadcast 192.168.0.90

改完重啟網卡 (我是重開機), 有網頁說還要加上這一行的指令, 但我發覺重開機後好像不用再下這個指令一次:


sudo route add -host 192.168.0.90 dev lo:0

最後,在 real server2 也做同樣的事。

6. VIP server 重開機後,要執行剛剛建的 lvs.sh 指令檔, 再下指令看看有沒有成功:
~$ ./lvs.sh
~$ sudo ipvsadm

看到以下結果,大致上應該成功了

IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port       Forward Weight ActiveConn InActConn
TCP  192.168.0.90:http rr
  -> 192.168.0.65:http        Route   1      0          0
  -> 192.168.0.66:http        Route   1      0          0 



But ...

我卻發現從同網段的其它機器連不進來,ping 192.168.0.90 的結果,說是有重覆 ip, 不知問題何在?

~$ ping 192.168.0.90
PING 192.168.0.90 (192.168.0.90) 56(84) bytes of data.
64 bytes from 192.168.0.90: icmp_seq=1 ttl=64 time=67.9 ms
64 bytes from 192.168.0.90: icmp_seq=2 ttl=64 time=2.38 ms
64 bytes from 192.168.0.90: icmp_seq=1 ttl=64 time=1090 ms (DUP!)
64 bytes from 192.168.0.90: icmp_seq=2 ttl=64 time=88.7 ms (DUP!)
...


好像在 /etc/rc.local 中加入原來在 lvs.sh 中的指令就可以在開機後自動執行。

參考

2013年5月15日

mySQL 相關指令

在 ubuntu 12.04 之下

停止 mysql
sudo stop mysql

啟動
sudo start mysql

進入 mySQL 指令列
mysql -u username -p

 看 set varaibles (記得要在最後加上分號 ;)
 show status;

 看佔用 CPU  資源
 show processlist;

2013年4月19日

ibus 的倉頡第三代輸入法有問題

我在更新許多有關於 *gtk* 的套件後,ibus 的倉頡第三代輸入法出現問題:
"的" 的倉頡碼應該是 hapi ,但無法輸入。總之,很怪就是了。

後來重裝 ibus 1.3.9 (ubuntu 10.04 Lucid 的 ibus 最高版本)

sudo add-apt-repository ppa:shawn-p-huang/ppa 
sudo apt-get update
sudo apt-get install ibus ibus-gtk ibus-qt4
 
再安裝其它輸法 (已安裝不用重安裝)
sudo apt-get install ibus-pinyin # or other engine(s) you want
im-switch -s ibus# logout and re-login
ibus-setup # add input methods you want
 
以前慣用的 ibus + 倉頡第三代輸入法仍有問題
改用 ibus 1.3.9 + 倉頡第五代輸入法後,比較 OK
也有動態選字功能。 
 
 

2013年4月18日

在 ubuntu 10.04 下的 gretl cvs

要在 ubuntu 10.04 下的 gretl cvs 變成可 commit 修改 .PO 檔,不能用 gretl 手冊中所寫的下這兩行指令

cvs -d:pserver:anonymous@gretl.cvs.sourceforge.net:/cvsroot/gretl login
(不必輸入,直接按空間棒)
cvs -z3 -d:pserver:anonymous@gretl.cvs.sourceforge.net:/cvsroot/gretl co -P gretl


我在 ubuntu 11.04 下實測 (參考:CVS#Read-Write access),先下指令

export CVS_RSH=ssh
cvs -z3 -d:ext:xxi-xxxx@xxx.cvs.sourceforge.net:/cvsroot/gretl checkout gretl

(輸入帳密就 OK 了)

./configure 後說少了 libcurl 和 gtksourceview2.0, 又裝了以下

sudo apt-get install libcurl4-openssl-dev libgtksourceview2.0-dev

再下指令
(如果已下載更新多次, 可能要再下指令
make clean)
./configure
make
sudo make install
sudo cp /usr/local/lib/libgretl* /usr/lib

這樣就 OK 了

搭配 Cervisa + POedit 就可以正常地更新新的 zh_TW.po 檔