2012年3月28日 星期三

在 Linux 架設 NFS 伺服器

目的:自建 NFS 伺服器,提供給其它主機用。



1. 安裝 NFS 伺服器相關套件

apt-get install nfs-kernel-server

2. 修改 NFS 設定

NFS 設定檔在 /etc/exports 檔案,其內容如下:

# /etc/exports: the access control list for filesystems which may be exported
#               to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
#

其中 # 是註解,底下的
/srv/homes       hostname1(rw,sync,no_subtree_check)

是 NFS 設定,其語法如下:

要開放之目錄    可存取之網域(存取權限)

/hd2            163.26.229.0/24(ro,sync,no_subtree_check)

163.26.229.0/24 是什麼意思 ? 指 163.26.229.* 之 IP 都可存取我們的 NFS 伺服器

255.255.255.0

    11111111.11111111.11111111.00000000 -> 255.255.255.0
AND 10100011.00011010.11100101.00000000 -> 163.26.229.0
------------------------------------------------------


3. 啟動 / 重新載入 NFS 伺服器


當我們完成 NFS 設定檔案的修改後,我們必須啟動或重新載入 NFS 伺服器,以便我們將剛剛修改之設定啟用。

啟動 NFS 伺服器之設定檔指令如下:

/etc/init.d/nfs-kernel-server start

關閉 NFS 伺服器之設定檔指令如下:

/etc/init.d/nfs-kernel-server stop

重新載入 NFS 伺服器之設定檔指令如下:

/etc/init.d/nfs-kernel-server reload

觀看 NFS 伺服器目前狀態之指令如下:

/etc/init.d/nfs-kernel-server status


4. 觀看本機 NFS 伺服器分享狀態

# showmount -e localhost
                          IP


5. 掛載遠端 NFS 資料夾

mount -t nfs 163.26.229.xx:/hd2 /mnt


6. 開機即掛載遠端 NFS 資料夾

How ?

在 /etc/fstab 中新增一行:

192.168.10.1:/srv/ftp /home/ftp  nfs ro,sync  1 2

新增完之後請以 root 權限執行:

# mount -a

看看有沒有錯誤訊息,如果沒有錯誤訊息表示可以正常掛載。



7. 我們建置虛擬網路環境,最麻煩的問題是套件都要透過網路下載,使用自建 NFS 站可以解決這個問題。其流程如下:

7.1 自建 NFS 伺服器,並將 debian 鏡像目錄分享出來
7.2 在 PXE 伺服器中掛載 NFS 目錄
7.3 將 PXE 伺服器的 /etc/apt/sources.list 中所有下載來源全部改成自有目錄,其語法如下:
 deb file:///home/ftp/debian/ jessie main contrib non-free
 deb file:///home/ftp/debian/ jessie-updates main



2012年2月20日 星期一

20120221 PMOS/NMOS 推導

PMOS 與 NMOS 的特色:

1. PMOS 輸入 0 開啟,輸入 1 關閉
   NMOS 輸入 1 開啟,輸入 0 關閉
   口訣:PINO
          InOut

2. 一般來說 PMOS 接 VDD,NMOS 接 GND,因為 PMOS 可以傳遞好 1 的訊號,NMOS 可以傳遞好 0 的訊號。



什麼是 CMOS ? (金屬互補半導體)

什麼是互補 ?

1. 有 PMOS 就有 NMOS,PMOS 的數量跟 NMOS 的數量相同

2. PMOS 若為併聯,則 NMOS 為串聯,反之亦然



nor2 之真值表如下:
in1 in2  or nor and nand xor2
  0   0   0   1   0    1    0
  0   1   1   0   0    1    1
  1   0   1   0   0    1    1
  1   1   1   0   1    0    0

2011年12月22日 星期四

建立 Debian boot USB

0. 前言

假設 USB 隨身碟為 /dev/sdd1,檔案系統為 VFAT,隨身碟掛載在 /mnt 目錄下

以下檔案要準備:

a. http://ftp.twaren.net/Debian/debian/dists/Debian6.0.3/main/installer-i386/current/images/hd-media/vmlinuz
b. http://ftp.twaren.net/Debian/debian/dists/Debian6.0.3/main/installer-i386/current/images/hd-media/initrd.gz

c. http://ftp.twaren.net/Linux/Debian/debian-cd/6.0.3/i386/iso-cd/debian-6.0.3-i386-CD-1.iso

1. 將上述三個檔案複製至 /mnt 目錄,並將 debian-6.0.3-i386-CD-1.iso 改名為 debian.iso

2. 在 /mnt 目錄新增 syslinux.cfg 檔,其內容為:
default vmlinuz
append initrd=initrd.gz

3. 執行 syslinux /dev/sdd1

4. 解除掛載

5. 使用 fdisk 將 /dev/sdd1 可開機旗標打開,此隨身碟應該可以開機了

2011年10月3日 星期一

Linux 底下安裝 gcin 中文輸入法

Linux 底下安裝 gcin 中文輸入法:

1. 安裝 gcin,指令如下:

apt-get install gcin

2. 回到家目錄,在家目錄下執行:

wget ftp://163.26.229.6/linux/.xinitrc


3. 離開帳號,重新登錄帳號,再執行 startx 進入 X 視窗。

4. 在 firefox 中測試中文輸入。

4.1. 按 Ctrl+SPACE 切換輸入法
4.2. 按 上/下 鍵選字

5. 設定輸入法:
請執行:

gcin-setup

即可設定 gcin 輸入法。




設定 zh_TW.Big5 locale

假設我們在 X 視窗開啟終端機時看到以下訊息:
-bash: warning: setlocale: LC_ALL: cannot change locale (zh_TW.Big5)

或者執行 locale 時看到以下訊息:

root@pc-29:~# locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=zh_TW.Big5
LANGUAGE=zh_TW:zh
LC_CTYPE="zh_TW.Big5"
LC_NUMERIC="zh_TW.Big5"
LC_TIME="zh_TW.Big5"
LC_COLLATE="zh_TW.Big5"
LC_MONETARY="zh_TW.Big5"
LC_MESSAGES="zh_TW.Big5"
LC_PAPER="zh_TW.Big5"
LC_NAME="zh_TW.Big5"
LC_ADDRESS="zh_TW.Big5"
LC_TELEPHONE="zh_TW.Big5"
LC_MEASUREMENT="zh_TW.Big5"
LC_IDENTIFICATION="zh_TW.Big5"
LC_ALL=zh_TW.Big5

那表示我們的電腦沒有設定好 big5 的語系,此時請執行:

dpkg-reconfigure locales

將語系設定為 zh_TW.Big5 即可。

設定大字體之終端機

Linux 底下的終端機程式有許多種,例如:

1. gnome-terminal - 好用、好設定,但較肥,上 BBS (ppt) 時,字元排列會亂掉。
2. xterm (內定) - X 視窗內定,中文讀取有問題,除了剛架系統使用外,其它時候一般不使用。
3. rxvt-ml - 好用、不好設定,容量需求低,上 BBS 時無問題。
..

我們應該選擇使用那一個終端機程式  ? 個人偏好 rxvt-ml,但若各位不玩 bbs 的話,可以選擇 gnome-terminal 以便設定。

裝完 rxvt-ml 後,請執行以下指令以便進入大字體之終端機環境:

crxvt-big5 -fg white -bg black -km big5 -fm cmex24m -fn 12x24
           前景 白色 背景 黑色 編碼 big5 中文字形   英文字形

更深入探討 lspci 指令

更深入探討 lspci 指令:

之前我們所討論的 lspci 指令只是告訴我們如何觀察系統介面,今天我們希望能讓 lspci 指令告訴我們那一個介面卡是用那一個驅動程式,請執行:

lspci -v

其輸出如下(節錄):

00:1b.0 Audio device: Intel Corporation N10/ICH 7 Family High Definition Audio Controller (rev 01)
        Subsystem: Giga-byte Technology Device a002
        Flags: bus master, fast devsel, latency 0, IRQ 16
        Memory at e5100000 (64-bit, non-prefetchable) [size=16K]
        Capabilities: <access denied>
        Kernel driver in use: HDA Intel

00:1d.7 USB Controller: Intel Corporation N10/ICH 7 Family USB2 EHCI Controller (rev 01) (prog-if 20 [EHCI])
        Subsystem: Giga-byte Technology Device 5006
        Flags: bus master, medium devsel, latency 0, IRQ 23
        Memory at e5104000 (32-bit, non-prefetchable) [size=1K]
        Capabilities: <access denied>
        Kernel driver in use: ehci_hcd

03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 02)
        Subsystem: Giga-byte Technology GA-EP45-DS5 Motherboard
        Flags: bus master, fast devsel, latency 0, IRQ 27
        I/O ports at d000 [size=256]
        Memory at e5010000 (64-bit, prefetchable) [size=4K]
        Memory at e5000000 (64-bit, prefetchable) [size=64K]
        [virtual] Expansion ROM at e5020000 [disabled] [size=64K]
        Capabilities: <access denied>
        Kernel driver in use: r8169

lspci -v 會給我更詳盡的資訊,其中有一行為

Kernel driver in use:XXXXXX

其中的 XXXXXX 即為該介面所使用到的驅動程式。



轉向符號 > >>

> -> 將標準輸出轉向至某一檔案,並將原有內容清掉。

>> -> 將標準輸出轉向至某一檔案,但是不清除內容而是從後面增加資料。


轉向符號好用之處在於能替我們將過多之訊息先存入某一檔案中,再以 vi 等文字編輯器來慢慢觀看。例如,我們可以使用

lspci -v > lspci.log

將 lspic -v 的輸出轉向至 lspci.log 檔案,以便我們用 vi 觀察。


dmesg > dmesg.log

可以將 dmesg 之輸出轉向至 dmesg.log 這個檔案,我們可以觀察其內容。

** dmesg 可以看到系統裡完整的硬體資訊 **

 如果你的 dmesg 出現很多奇怪的訊息,也可以看 /var/log/dmesg 這個檔案。

2011年7月21日 星期四

虛擬機器 Qemu

虛擬機器

所謂的虛擬機器就是「假的」機器,利用 X86 平台來模擬出其它平台並執行其它平台的程式,我們今天要介紹的虛擬機器是 X86 模擬主機,也就是以 X86 模擬 X86。


要執行虛擬機器,你的硬體要有幾個條件:

1. CPU 為多核心 (四核以上)
2. RAM 為 4GB 以上 (愈大愈好),以便分配給每台虛擬機器獨立的 RAM (至少 512MB)
3. 硬碟愈大愈好

市面常見的虛擬機器程式有三個,最有名的叫 VMware、第二有名叫 VirtualBOX,最沒有名叫 Qemu,今天我們要教 Qemu。

Why ?
1. VMware 要錢,上網申請可以使用免費版本
   http://www.vmware.com/tw/

2. VirtualBOX 免費但是某些原始碼未開放,VirtualBOX 有簡單易用的介面,如果各位是使用 Windows 系統可以參考使用 Win 版的 VirtualBOX。
   http://www.virtualbox.org/
   http://azo-freeware.blogspot.com/2008/09/virtualbox-166.html

3. Qemu 是近幾年發展速度最快的虛擬機器,可以模擬 X86 平台、ARM 平台及其它平台
   http://wiki.qemu.org/Main_Page

Qemu 的使用步驟如下:

0. 安裝 Qemu
1. 設定硬碟
2. 下載安裝 ISO 檔
3. 執行


*** 我們執行環境為一般使用者,只安裝套件時要用 root ***

以下將一一說明:

0. 安裝 Qemu
   請執行
   apt-get install qemu qemu-kvm
   來安裝 qemu 套件

1. 設定硬碟映像檔
   請建立 ~/qemu/linux.img,檔案大小為 8GB,指令如下:

   ~$ mkdir qemu
   ~$ cd qemu
   ~/qemu$ qemu-img create linux.img 8G

   此時會建立一個「空」的 linux.img,當我們執行 ls -l 時,請輸出如下:

herman@pc-29:~/qemu$ ls -l
總計 0
-rw-r--r-- 1 herman herman 8589934592 2011-07-21 19:10 linux.img

   但若以 du -sh linux.img 會發現此檔大小為 0,輸出如下:

herman@pc-29:~/qemu$ du -sh linux.img
0       linux.img

Why ? Qemu 在使用硬碟映像檔的策略是:需要時才佔用。


2. 下載安裝 ISO 檔

請將 ftp://163.26.229.6/linux/debian-6.0.3-i386-netinst.iso
下載至 ~/qemu 目錄下

   ~/qemu$ wget ftp://163.26.229.6/linux/debian-6.0.3-i386-netinst.iso
   即可下載


3. 執行
   請執行:
   kvm -m 512 -hda linux.img -cdrom debian-6.0.3-i386-netinst.iso -boot d

-m 512          -> 給虛擬機器 512 MB 的記憶體
-hda linux.img  -> 指定 linux.img 這個檔案為虛擬機器的 hda 硬碟
-cdrom debian-  -> 指定 debian iso 檔為光碟機
-boot d         -> 指定光碟開機
-boot c         -> 指定 hda 開機


kvm 說明 - Linux 核心虛擬技術 - KVM(Kernel-based Virtual Machine)
http://linuxkvm.blogspot.com/2011/04/linux-kvmkernel-based-virtual-machine.html

如果輸出如下,那表示我們要載入 kvm 模組:

herman@pc-29:~/qemu$ kvm -m 512 -hda linux.img -cdrom debian-6.0.2.1-i386-netinst.iso -boot d
open /dev/kvm: No such file or directory
Could not initialize KVM, will disable KVM support

2011年7月14日 星期四

使用者權限管理

Linux 的檔案權限與目錄配置

Q1. 我是 s100 的系統管理員,s100a001 希望他的目錄權限是 rwxr-x---,請問該
   如何處理 ?                                          111101000
                                                         7  5  0
A. 此設定的功用:讓其它人無法切換/觀察 s100a001 目錄中的東西,但是群組可以

/home# chmod 750 s100a001

Q2. 我是 s100 的系統管理員,s100a002 正在開發高機密性的專案,他希望他的目錄除了他自己,別人都不能看,請問該如何處理 ?

A. 權限要設為:rwx --- ---
                 7   0   0

/home# chmod 700 s100a002

Q3. 我們希望建立一個目錄是 /home/s100,此目錄的所有人是 root,群組是 s100 方便我們交換檔案使用,而 s100 群組的人對此目錄都有讀/寫的權限,而且每個檔案的屬性之群組都是 s100,s100 群組以外的人對此目錄將無讀/寫之權限。

A. /home# (以 root 權限在 /home 目錄下)

mkdir s100
ls -l

會看到 s100 之屬性如下:
drwxr-xr-x   2 root     root     4096 2011-07-14 20:28 s100

chgrp s100 s100

ls -l

會看到 s100 之屬性如下:
drwxr-xr-x   2 root     s100     4096 2011-07-14 20:28 s100

chmod 770 s100

ls -l

會看到 s100 之屬性如下:
drwxrwx---   2 root     s100     4096 2011-07-14 20:28 s100


Q. 我們要新增一個目錄叫 /home/class,其群組為 class,s100axxx 帳號可以使用此目錄讀寫,但是所建立的檔案其群組都是 class,請問該如何處理 ?

A. /home# (以 root 權限在 /home 目錄下)

mkdir class

chgrp class class              (將 class 目錄之群組改為 class)
      群組  要更改之檔案/目錄

chmod g+s class (讓 class 目錄下的所有檔案繼承 class 目錄的群組)