2013年10月30日 星期三

[台中] 瑪棻咖啡

其實,著手撰寫這篇文章時,已經是我第二次造訪這裡了。這裡,可以悠閒地享受早、午餐,可以朋友相約來這兒談心事、話八卦,也可以一個人在這兒享受不被打擾的下午時光。

店裡的燈光氣氛非常溫暖,令人感覺很舒服。

角落的座位有插座可以使用,所以也可以攜帶筆記型電腦來使用。

瑪棻咖啡也有提供有室外的座位,雖然現在天氣漸漸轉涼了,不過這座位區並不怎麼冷。

瑪棻咖啡提供早、午餐,餐點種類不少,消費者自行在座位上劃完單,再到櫃台點單就可以了。

餐點的味道挺可口的。我喜歡附餐的蔬果汁,這是現打的,所以不一定每次都是相同的唷!

瑪棻咖啡位於美術館旁的美村路上,附近停車算是挺方便的。

店家資訊:

瑪棻咖啡 (MUFFIN)

營業時間: 7:00 AM ~ 5:00 PM (假日至 6:00 PM)

提供無線上網,使用插座最低消費 120 元。

台中市美村路一段488號

04-23751239

2013年10月28日 星期一

製作 Linux Mint 的 USB 開機碟

之前在《製作 Debian 的 USB 開機碟》這篇文章裡提到要製作 Debian GNU/Linux 的 USB 啟動碟非常容易,只要在 Linux 的環境裡使用 cp 這個指令就可以了。

其實,若要製作 Linux Mint 的 USB 啟動碟也同樣很容易,首先下載 Linux Mint 15 的光碟 ISO 檔 (linuxmint-15-cinnamon-dvd-64bit.iso),然後在 Linux 的環境執行下面指令就可以了:

$ sudo dd if=./linuxmint-15-cinnamon-dvd-64bit.iso of=/dev/sdX oflag=direct bs=1048576
$ sudo sync

其中,/dev/sdX 是 USB 碟的裝置。

至於,若要在 Windows 環境裡製作 Linux Mint 的 USB 啟動碟也不是很難,讀者可以自行參閱《How to install Linux Mint via USB》這篇文章的說明。

2013年10月4日 星期五

在 CentOS 6.4 及 Debian GNU/Linux 7 之間使用 sshfs

在 Linux 裡如果要掛載遠端主機的磁碟或目錄,大多數可以使用 NFS 或 Samba。不過 SSHFS (SSH Filesystem) 提供了一個很簡單的方式,只要主機提供有 SSH 服務就可以使用了。我手邊正好各有一台 CentOS 6.4 與 Debian GNU/Linux 7,就拿來試試囉!

在 CentOS 6.4 安裝 SSHFS 套件

在 CentOS 6.4 的套件庫裡並沒有 SSHFS 的套件,爬文後參考了《CentOS 6.x / Debian / Ubuntu: NFS or SMB/CIFS alternative sshfs》這篇文章,得知在 EPEL (Extra Packages for Enterprise Linux) 的套件庫裡有這個套件。然後,又在《[完全用 GNU/Linux 工作] 05. 套件庫及鏡像站》這篇文章裡得知,「請先行安裝 RPMforge 再安裝 EPEL」。

於是,我又找了找 RPMforge 的套件庫,確定它也有 SSHFS 的套件,那麼就決定使用 RPMforge 裡的 SSHFS 套件了。

$ sudo yum -y install fuse fuse-sshfs

Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
 * base: ftp.cs.pu.edu.tw
 * extras: mirrors.163.com
 * rpmforge: ftp.riken.jp
 * updates: mirrors.163.com
Setting up Install Process
Package fuse-2.8.3-4.el6.x86_64 already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package fuse-sshfs.x86_64 0:2.2-1.el6.rf will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package            Arch           Version               Repository        Size
================================================================================
Installing:
 fuse-sshfs         x86_64         2.2-1.el6.rf          rpmforge          44 k

Transaction Summary
================================================================================
Install       1 Package(s)

Total download size: 44 k
Installed size: 103 k
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : fuse-sshfs-2.2-1.el6.rf.x86_64                               1/1
  Verifying  : fuse-sshfs-2.2-1.el6.rf.x86_64                               1/1

Installed:
  fuse-sshfs.x86_64 0:2.2-1.el6.rf

Complete! 

接著,將允許使用 SSHFS 的使用者加到 fuse 這個 group 裡,指令如下:

sudo gpasswd -a $USER fuse

然後,就可以使用 SSHFS 了。此時,要掛載遠端的目錄指令格式如下:

sshfs username@hostname:/directory /yetanotherlocaldirectory

例如,我要掛載遠端 (192.168.1.106) 使用者 online 家目錄裡的 share 目錄到本地端的 working 目錄時,指令如下:

sshfs online@192.168.1.106:/home/online/share ~/working

卸載的指令格式如下:

fusermount -u /directory

例如,我要卸載剛才掛載的那個目錄,指令如下:

fusermount -u working

最後,我在《好用的sshfs》這篇文章得知,SSHFS 是以遠端主機的權限來掛載,所以如果兩端的主機 uid/gid 不一致時,會出現權限錯誤的問題。解決辦法是在掛載時加上指定 uid/gid 的選項。因為我已經將 CentOS 6.4 與 Debian GNU/Linux 7 裡的使用者 uid/gid 改成一樣的,例如 online 這個帳號的 uid/gid 均為 1000,於是掛載指令變成如下:

sshfs -o "uid=1000,gid=1000" online@192.168.1.106:/home/online/share ~/working

在 Debian GNU/Linux 7 安裝 SSHFS 套件

Debian GNU/Linux 7 的套件庫已經收錄了 SSHFS 的套件,因此只要用 apt-get 指令安裝即可。

$ sudo apt-get -y install sshfs

Reading package lists...
Building dependency tree...
Reading state information...
The following NEW packages will be installed:
  sshfs
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/54.8 kB of archives.
After this operation, 147 kB of additional disk space will be used.
Selecting previously unselected package sshfs.
(Reading database ... 119936 files and directories currently installed.)
Unpacking sshfs (from .../archives/sshfs_2.4-1_amd64.deb) ...
Processing triggers for man-db ...
Setting up sshfs (2.4-1) ...

接著,如同 CentOS 6.4 一般,將使用者加入 fuse 這個 group,然後該使用者重新登入後就可以使用 SSHFS 了。

延伸閱讀:

  1. CentOS 的第三方套件庫
  2. 在 CentOS 裡修改使用者帳號的 UID / GID

2013年10月3日 星期四

在 CentOS 裡修改使用者帳號的 UID / GID

我目前手邊有執行著 Debian GNU/Linux 7 與 CentOS 6.4 的兩台機器。其中,Debian GNU/Linux 預設的 uid/gid 是從 1000 開始計算;而 CentOS 則是從 500 開始計算。為了方便使用,我將 CentOS 裡的使用者帳號 uid/gid 更改成和 Debian GNU/Linux 裡的一樣。主要參考的文章是以下這兩篇:

1. Linux How to change user UID and GID

2. Changing UID/GID in CentOS

首先,可以使用 id 這個指令分別在 Debian GNU/Linux 及 CentOS 上查詢使用者帳號的資訊。假設,我使用的使用者帳號為 online,那麼就執行這個指令:

id online

接著,使用 usermod 這個指令變更 uid,這裡將 uid 變更為 1000:

usermod -u 1000 online

再使用 groupmod 這個指令變更 gid,這裡將 gid 變更為 1000:

groupmod -g 1000 online

這裡,在使用 usermod 及 groupmod 兩個指令變更使用者帳號的 uid/gid 時,該名使用者「不得」在登入的狀態。所以,如果已經將 online 登入了,請先將這個帳號登出才能變更 uid/gid。

最後,要檢查 online 這個使用者的家目錄 (/home/online),usermod 這個指令會同時修改使用者家目錄內的所有檔案、目錄,讓使用者屬性一併變更;但 grouupmod 這個指令似乎不會自動去修改。所以,必須再執行這個指令修改使用者家目錄裡的檔案、目錄屬性。

chown -R :online /home/online

這樣就搞定了。

2013年10月1日 星期二

我的 CentOS 6.4 套件安裝記錄

之前安裝 CentOS 時,邊安裝就邊思考在 CentOS 裡要安裝那些套件。其實,很快地我就決定參考《安裝 Debian GNU/Linux 7 (Wheezy)》這篇文章,儘可能將我在 Debian GNU/Linux 7 裡安裝的套件找出來,同樣在 CentOS 6.4 裡安裝了該套件。

於是,我整理了幾下這個腳本,用它來安裝基本的套件:

#!/bin/bash

# Get information from CentOS 
VERSION=`cat /etc/centos-release`
ARCH=`uname -a | awk '{print $12}'`

# Get Account's ID
THIS_ID=`echo $HOME | cut -d '/' -f 3`

echo Hello $THIS_ID, your system is $VERSION, $ARCH.

PKG_BASIC=""
PKG_I18N="cjkuni-ukai-fonts cjkuni-uming-fonts wqy-zenhei-fonts"

# Development
PKG_EDITOR="vim-enhanced ctags cscope"
PKG_COMPILER="make gdb gcc gcc-c++ gcc-java"
PKG_LIBS="ncurses-devel SDL-devel zlib-devel lzo-devel readline-devel glibc-static glibc-devel libstdc++-devel libX11-devel xorg-x11-server-devel xorg-x11-proto-devel libXrender-devel mesa-libGL-devel expat-devel libsx-devel gettext-devel libevent-devel"
PKG_UTILITIES="gnupg2 minicom lrzsz netpbm libtool bison flex doxygen indent fakeroot valgrind gperf zip curl binutils intltool mtools gawk python-setuptools python-markdown genisoimage syslinux squashfs-tools texinfo compat-libtermcap"
PKG_DOCS=""
PKG_KERNEL="kernel-headers kernel-devel kernel-firmware"
PKG_VCTRL="git git-cvs git-svn gitk cvs subversion mercurial mercurial"
PKG_JAVA=""
PKG_EXTRA=""

# Service 
PKG_SERVICE=""

# Packages depond on 32-bit or 64-bit
case $ARCH in
 "x86_64")
  PKG_ARCH="glibc.i686 glibc-devel.i686 libstdc++.i686 zlib-devel.i686 ncurses-devel.i686 libX11-devel.i686 libXrender.i686 libXrandr.i686"
  ;;
 "i686")
  PKG_ARCH=""
  ;;
esac

# All packages
PACKAGES="$PKG_BASIC $PKG_I18N $PKG_EDITOR $PKG_COMPILER $PKG_LIBS $PKG_UTILITIES $PKG_DOCS $PKG_KERNEL $PKG_VCTRL $PKG_JAVA $PKG_EXTRA $PKG_SERVICE $PKG_ARCH"

sudo yum check-update
sudo yum -y upgrade
sudo yum install -y $PACKAGES

echo 'done.' 

延伸閱讀: