Migrate from Parallels to VirtualBox (.hdd to .vdi format)

因為 Parallels Desktop 每次換新的版本都要 $$,每次 OSX 更新都要換版本,從版本 6 到 9 後已經對他失去了耐心,網路上一片討伐,也覺得對不起以前被我推薦使用 PD 的朋友,這次升級 Yosemite 後雖然 PD9 升級到最新版本後還是可以用,但準備開始把 PD 的虛擬機都轉到 VirtualBox 上做測試了。發現以前使用網路上的轉換方法需要多做一個步驟,新的方法可以直接轉為 VDI 格式,因此寫這篇文章分享一下方法。

舊的方法如下:
1. 正常的將虛擬機關機,而不要在 Suspend 的狀態操作。
2. 開啟 Parallels 虛擬機存放資料夾,所有虛擬機副檔名應為 .pvm
3. 右鍵點選欲轉換目標虛擬機 -> Show Package Content
4. 找到 .hdd 檔案,一樣右鍵 -> Show Package Content
5. 找到 .hds 檔案複製到 VirtualBox 虛擬機路徑 … (喝杯咖啡去)
6. 打開 VirtualBox 新建虛擬機,使用 “use existing virtual HDD file” 選項

這個方法仍使用 HDD 格式,若想要用 VirtualBox 原生的 VDI 格式 需要轉換…

新的方法:
還是需要定位到 .hds 檔案,然後直接轉換為 VirtualBox 的 VDI 格式:

VBoxManage clonehd Windows 8.1-0.hdd.0.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds ~/VMs/Win8.1.vdi --format VDI

仍在測試中,不曉得經過了這幾年 VirtualBox 在 Oracle 下的進步情況如何。

移除不再需要的 Time Machine 檔案

Time Machine 出問題,一直提示空間不足無法成功備份,但是重做後又不會正確刪除到足夠的空間進行備份,手動刪除了幾個檔案還是相同的情況,放著不管結果它自己一個晚上自己不曉得自動重新備份了幾次,早上起來發現機器很燙。

原想刪除掉整個備份重來,從 System Preference/Time Machine 移除掉備份硬碟後發現裡頭的 Backups.backupdb 目錄還在並未釋放,這應該算是『功能』吧,可以避免誤刪備份。試著用基本的

sudo rm -rf -R [backup folder]

指令刪除的時候一直提示 “Operation not permitted”,找了一些資料後用來解決的方法如下,做個簡單的記錄:

sudo /System/Library/Extensions/TMSafetyNet.kext/Helpers/bypass rm -rfv [backup folder]

記得把 [backup folder] 改為你自己的路徑 (如:/Volumes/Backup Disk/Backups.backupdb/),我的作業系統是 10.9.4,如果是 10.8 以前的版本請試著找找:

/System/Library/Extensions/TMSafetyNet.kext/Contents/MacOS/bypass

Update:

sudo tmutil delete [backup folder]

看來是比較新的方法,有說法是 bypass 已經 outdated,不過還是可以用。

好用的科技被甚麼阻礙了

Workout

這就是大家俗稱的「火星坐標」,與地球坐標是不一樣的,也只有在偉大的國度才會發生,因此許多好用的應用程式就因為這個原因出現了上圖的偏差情況,實在不是路線偏差而是某些部門的心理偏差啊。

不注重行人的人行道

20140402-175050.jpg

公共交通建設的主要用意是在減少交通堵塞、增加行人安全,這完全是違反原意,占用人行道使行人必須要跟非機動車爭道,反而更不安全了。

路邊的眼鏡攤

20140326-211628.jpg
這樣賣眼鏡不用驗光嗎?

需要充電的時候

20140314-171239.jpg

多晒太陽充飽電,滿血再出發。

Kali Linux Taiwan mirror

官方的 Source 在台北連線實在很慢,經常跑起來只有 1xK/Sec,找到了淡江大學資訊中心的伺服器有 Mirror 一份,直接改 /etc/apt/sources.list 替換成下面這兩個位址就可以了,在台北家裡連線速度可以到每秒 8xxK,系統更新速度當然快多了。

http://ftp.tku.edu.tw/kali/
http://ftp.tku.edu.tw/kali-security/

開機時自動啟動 Go Web 應用程式 – Upstart 設定方式

補上篇,Go Web 應用程式需要在 Command Line 下啟動,在 Production 環境中我們可以在 Ubuntu 中使用 Upstart 設定為開機時自動啟動,設定如下:

file: /etc/init/go-http.conf

# Upstart Configuration
description     "Golang Web App"
author          "xxxxx xxx"

start on (net-device-up
          and local-filesystems
          and runlevel [2345])
          
stop on runlevel [016]

respawn

exec /path/to/http

然後就可以使用這個指令來啟動:

$ sudo service go-http start
go-http start/running, process 12537

Upstart 在 Ubuntu like 系統上是預設安裝的應用程式,在其他的 Linux 下可能需要另外安裝。設定好了之後重新開機時就會像一般的 Daemon 一樣自動啟動應用程式。這個設定會在網路已經啟用的狀況下才啟動你指定的程式,對於 Upstart 有興趣深入了解的朋友可以參考這篇:http://upstart.ubuntu.com/cookbook/

2014/2/15 [補充] Debian 與 Ubuntu 都將支持使用 systemd 而不再用 Upstart, 因此稍晚這篇要改成 systemd 的設定方式。

在 Apache 上使用 VirtualHost 的方式執行 Golang 的 Web 站台

主要是參考網路上的這一篇:http://www.jeffreybolle.com/blog/run-google-go-web-apps-behind-apache

作者給出了一個簡單的 Go Web 程式:

package main

import(
    "http"
    "log"
    "os"
)

const resp = `<html>
    <head>
        <title>Simple Web App</title>
    </head>
    <body>
        <h1>Simple Web App</h1>
        <p>Hello World!</p>
    </body>
</html>`

func handler(w http.ResponseWriter, r *http.Request) {
    w.Write([]byte(resp))
}

func main() {
    http.HandleFunc("/", handler)
    err := http.ListenAndServe(":8080", nil)

    if err != nil {
        log.Println(err)
        os.Exit(1)
    }
}

這個 Web 程式主要是監聽 8080 Port,用 go build 之後得到的執行檔可直接作為 Web Server 運行。然後在 Apache 上安裝幾個 Module 後重啟 Apache。

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod rewrite
sudo service apache2 restart

接下來在 /etc/apache2/sites-available/ 目錄下建立 VirtualHost 的設定檔案 (gowebsite):

<VirtualHost *:80>
    ServerAdmin webmaster@example.com
    ServerName www.example.com
    ServerAlias example.com

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all

        RewriteEngine on
        RewriteRule ^(.*)$ http://localhost:8080/$1 [P,L]
    </Directory>
</VirtualHost>

接著在 Apache 啟動這個設定檔,將此 VirtualHost 設為啟動:

sudo a2ensite gowebsite
sudo service apache2 restart

整個過程就是在 VirtualHost 設定檔中設定此站台資料透過 Proxy Module 來由 localhost:8080 取得,當然這邊也可以同時在很多不同的 Port 中執行很多的 VirtualHost 站台。

更改 Mac 在 Terminal 顯示的 HostName

在『系統偏好設定』中已經設定了正確的電腦名稱,可是每次在公司內部連上網路之後打開終端機,命令提示字元上顯示的卻是上一次使用這個 IP 的電腦名稱,如果這一點讓你困擾的話,可以試試下面這個指令修改 HostName:

sudo scutil --set HostName [新名稱]

scutil 這個命令支持下列的參數:

--get pref
    Retrieves the specified preference.  The current value will be
    reported on standard output.

    Supported preferences include:
          ComputerName   The user-friendly name for the system.
          LocalHostName  The local (Bonjour) host name.
          HostName       The name associated with hostname(1) and gethostname(3).

--set pref [newval]
    Updates the specified preference with the new value.  If the new value is not
    specified on the command line then it will be read from standard input.

    Supported preferences include: ComputerName LocalHostName HostName

    The --set option requires super-user access.

但以我的情況是只要修改 “HostName” 就可以了,其他兩個使用 get 查看都跟我設定的一樣,修改後記得重新開啟 Terminal 或是 iTerm 使其生效。

Copyright © 2017. Powered by WordPress & Romangie Theme.