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年12月22日 星期四
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 中文字形 英文字形
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 這個檔案。
之前我們所討論的 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
所謂的虛擬機器就是「假的」機器,利用 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 目錄的群組)
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 目錄的群組)
2011年7月7日 星期四
有關帳號二、三事
1. id 指令 -> 告訴我們目前帳號的資訊,包括 uid, gid 以及 groups,舉例來說,某個使用者的 id 輸出如下:
uid=1000(herman) gid=1000(herman) groups=1000(herman),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),112(netdev)
上述輸出告訴我們,此使用的 uid 為 1000,使用者帳號為 herman,gid 為 1000,群組亦為 herman,至於 groups 是此使用者所屬群組,主群組為 herman,次群組為 cdrom, floopy, auido, dip, video, plugdev, netdev。
uid -> User ID,建帳號時,系統會自動指定一個未使用的 uid 給你要建的帳號
gid -> Group ID,群組 ID,建帳號時,若未指定,系統會自動指定一個未使用的 gid 給你要建的帳號
groups -> 所屬群組,有主群組及次群組
id 帳號 -> 將某帳號的資訊列出來
2. 使用者帳號設定檔
/etc/passwd -> 帳號
/etc/shadow -> 密碼
/etc/group -> 群組
其權限如下:
-rw-r--r-- 1 root root 1546 2011-07-07 19:12 passwd
-rw-r----- 1 root root 1090 2011-07-07 19:14 shadow
^^^^^^*^^
我們可以發現 shadow 的讀取權限受到限制,如上述 * 處,其原因在於防止暴力猜測法以求出密碼。
0000 - 9999
0 - 9
根據離散數學的推導,有一密碼的排列組合為 n 的話,要猜出此密碼的平均次數為 n/2。
PC 上的密碼可能的文字如下所示:
0~9, a~z, A~Z, ~!@#$%^&*()_+{}:"<>?
所謂的暴力猜測法是以電腦幫我們排列組合,來猜測是否與編碼完之密碼一致。
所謂的編碼,是指把 abc123 -> $1$BrhU5/2V$CwKqbD,編碼有一個特性是單向編碼,破解的方式是使用電腦作排列組合再去比對。
3. 新增帳號:
useradd -m 帳號名稱
useradd -m eecs -> 花生省魔術 ?
a. /etc/passwd 加了一行 eecs
b. /etc/shadow 加了一行 eecs
c. /etc/group 加了一行 eecs
d. 系統新增一個 /home/eecs 目錄
Q: 如何手動刪除帳號 ?
4. 給新帳號密碼:
作法一、
root@pc-29:~# passwd eecs
輸入新的 UNIX 密碼:abc123
再次輸入新的 UNIX 密碼:abc123
passwd:密碼已成功地變更
作法二、
# echo 帳號:密碼 | chpasswd
例如:
# echo eecs:password | chpasswd
5. 刪除帳號
userdel eecs
刪除帳號作了那些動作 ?
a. /etc/passwd 刪除一行 eecs
b. /etc/shadow 刪除一行 eecs
c. /etc/group 刪除一行 eecs
d. 系統新增之 /home/eecs 目錄 *** 沒有 *** 刪除,請至 /home 目錄,執行:
rm -rf eecs
手動刪除目錄(要十分確定再作這個動作!!)
5.1 如何「暫時」將帳號鎖起來 ?
假設我們管帳號時發現有某位使用者「疑似」有濫用系統的傾向,例如亂放檔案或是大量傳輸資料導致頻寬不足,這個時候我們可以「暫時」將使用者帳號鎖定。方式如下:在 /etc/shadow 檔中找出該位使用者,在其密碼欄位加上一個星號即可將此帳號鎖起來不讓他登入。
6. 如何新增大量帳號
假設你現在要新增 50 個學生帳號,其學號為:s100a001 ~ s100a050,每個人的群組都是 eecs,家目錄為 /home/s100a001 ~ s100a050,shell 要為 /bin/bash,密碼要為亂數產生,請問要怎麼辦 ?
6.0 新增大量帳號的思維:
a. 新增 001 帳號 (此時無密碼),提示:useradd
b. 修改 001 帳號之密碼,提示:echo 帳號:密碼 | chapasswd
c. 看看我們帳號是否建立完畢,否則帳號編號往上加 1,並回到步驟 a.,提示:for 迴圈
6.1 先從一個帳號開始:s100a001
groupadd eecs -> 新增 eecs 群組
useradd -m -g eecs -s /bin/bash s100a001
-m -> 強制建家目錄
-g eecs -> 設定主群為 eecs
-s /bin/bash -> 設定 shell 為 /bin/bash
6.2 讓系統自動產序號
請將以下片段另存新檔名為 for.sh
for i in `seq 1 50`
do
echo $i
done
然後執行 sh for.sh
我們可以發現此程式列印出 1 ~ 50 的字串
6.3 改善此程式,讓它印出學號
for i in `seq 1 9`
do
echo s100a00$i
done
for i in `seq 10 50`
do
echo s100a0$i
done
7. 如何給亂數密碼
最簡單的亂數密數:date +%N
8. 整個程式:
for i in `seq 1 9`
do
echo "echo Creating user account: s100a00$i"
echo useradd -m -s /bin/bash -g s100 s100a00$i
a=`date +%N`
echo "echo s100a00$i:$a | chpasswd"
done
for i in `seq 10 50`
do
echo "echo Creating user account: s100a0$i"
echo useradd -m -s /bin/bash -g s100 s100a0$i
a=`date +%N`
echo "echo s100a0$i:$a | chpasswd"
done
9. 如何進行上述程式:
sh for.sh > createusr.sh
將大量建帳號之指令轉成 createusr.sh 這個 shell script.
# sh createusr.sh
以 root 權限來新增帳號
10. 如何大量刪除帳號 ?
a. /etc/passwd
b. /etc/shadow
c. 在 /home 目錄下執行 rm -rf s100*
uid=1000(herman) gid=1000(herman) groups=1000(herman),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),112(netdev)
上述輸出告訴我們,此使用的 uid 為 1000,使用者帳號為 herman,gid 為 1000,群組亦為 herman,至於 groups 是此使用者所屬群組,主群組為 herman,次群組為 cdrom, floopy, auido, dip, video, plugdev, netdev。
uid -> User ID,建帳號時,系統會自動指定一個未使用的 uid 給你要建的帳號
gid -> Group ID,群組 ID,建帳號時,若未指定,系統會自動指定一個未使用的 gid 給你要建的帳號
groups -> 所屬群組,有主群組及次群組
id 帳號 -> 將某帳號的資訊列出來
2. 使用者帳號設定檔
/etc/passwd -> 帳號
/etc/shadow -> 密碼
/etc/group -> 群組
其權限如下:
-rw-r--r-- 1 root root 1546 2011-07-07 19:12 passwd
-rw-r----- 1 root root 1090 2011-07-07 19:14 shadow
^^^^^^*^^
我們可以發現 shadow 的讀取權限受到限制,如上述 * 處,其原因在於防止暴力猜測法以求出密碼。
0000 - 9999
0 - 9
根據離散數學的推導,有一密碼的排列組合為 n 的話,要猜出此密碼的平均次數為 n/2。
PC 上的密碼可能的文字如下所示:
0~9, a~z, A~Z, ~!@#$%^&*()_+{}:"<>?
所謂的暴力猜測法是以電腦幫我們排列組合,來猜測是否與編碼完之密碼一致。
所謂的編碼,是指把 abc123 -> $1$BrhU5/2V$CwKqbD,編碼有一個特性是單向編碼,破解的方式是使用電腦作排列組合再去比對。
3. 新增帳號:
useradd -m 帳號名稱
useradd -m eecs -> 花生省魔術 ?
a. /etc/passwd 加了一行 eecs
b. /etc/shadow 加了一行 eecs
c. /etc/group 加了一行 eecs
d. 系統新增一個 /home/eecs 目錄
Q: 如何手動刪除帳號 ?
4. 給新帳號密碼:
作法一、
root@pc-29:~# passwd eecs
輸入新的 UNIX 密碼:abc123
再次輸入新的 UNIX 密碼:abc123
passwd:密碼已成功地變更
作法二、
# echo 帳號:密碼 | chpasswd
例如:
# echo eecs:password | chpasswd
5. 刪除帳號
userdel eecs
刪除帳號作了那些動作 ?
a. /etc/passwd 刪除一行 eecs
b. /etc/shadow 刪除一行 eecs
c. /etc/group 刪除一行 eecs
d. 系統新增之 /home/eecs 目錄 *** 沒有 *** 刪除,請至 /home 目錄,執行:
rm -rf eecs
手動刪除目錄(要十分確定再作這個動作!!)
5.1 如何「暫時」將帳號鎖起來 ?
假設我們管帳號時發現有某位使用者「疑似」有濫用系統的傾向,例如亂放檔案或是大量傳輸資料導致頻寬不足,這個時候我們可以「暫時」將使用者帳號鎖定。方式如下:在 /etc/shadow 檔中找出該位使用者,在其密碼欄位加上一個星號即可將此帳號鎖起來不讓他登入。
6. 如何新增大量帳號
假設你現在要新增 50 個學生帳號,其學號為:s100a001 ~ s100a050,每個人的群組都是 eecs,家目錄為 /home/s100a001 ~ s100a050,shell 要為 /bin/bash,密碼要為亂數產生,請問要怎麼辦 ?
6.0 新增大量帳號的思維:
a. 新增 001 帳號 (此時無密碼),提示:useradd
b. 修改 001 帳號之密碼,提示:echo 帳號:密碼 | chapasswd
c. 看看我們帳號是否建立完畢,否則帳號編號往上加 1,並回到步驟 a.,提示:for 迴圈
6.1 先從一個帳號開始:s100a001
groupadd eecs -> 新增 eecs 群組
useradd -m -g eecs -s /bin/bash s100a001
-m -> 強制建家目錄
-g eecs -> 設定主群為 eecs
-s /bin/bash -> 設定 shell 為 /bin/bash
6.2 讓系統自動產序號
請將以下片段另存新檔名為 for.sh
for i in `seq 1 50`
do
echo $i
done
然後執行 sh for.sh
我們可以發現此程式列印出 1 ~ 50 的字串
6.3 改善此程式,讓它印出學號
for i in `seq 1 9`
do
echo s100a00$i
done
for i in `seq 10 50`
do
echo s100a0$i
done
7. 如何給亂數密碼
最簡單的亂數密數:date +%N
8. 整個程式:
for i in `seq 1 9`
do
echo "echo Creating user account: s100a00$i"
echo useradd -m -s /bin/bash -g s100 s100a00$i
a=`date +%N`
echo "echo s100a00$i:$a | chpasswd"
done
for i in `seq 10 50`
do
echo "echo Creating user account: s100a0$i"
echo useradd -m -s /bin/bash -g s100 s100a0$i
a=`date +%N`
echo "echo s100a0$i:$a | chpasswd"
done
9. 如何進行上述程式:
sh for.sh > createusr.sh
將大量建帳號之指令轉成 createusr.sh 這個 shell script.
# sh createusr.sh
以 root 權限來新增帳號
10. 如何大量刪除帳號 ?
a. /etc/passwd
b. /etc/shadow
c. 在 /home 目錄下執行 rm -rf s100*
2011年6月30日 星期四
新增硬碟
如何新增硬碟 ?
在 Windows/Linux 底下,新增硬碟是一件很常見的工作,一般來說,新增硬碟的流程如下:
1. fdisk 建立硬碟分割
2. 格式化
3. 掛載
4. 確保下次重新開機後能再度使用此硬碟
今天我們以另一隻隨身碟來作為新增硬碟的例子,未來各位可以自行參考安裝新的硬碟。
[判別新的硬碟]
請執行 dmesg 看最後幾行,如以下所示:
irectory
[ 9.426781] NFSD: starting 90-second grace period
[ 19.698735] apm: BIOS not found.
[ 19.763297] sshd (1261): /proc/1261/oom_adj is deprecated, please use /proc/1261/oom_score_adj instead.
[ 19.968007] eth0: no IPv6 routers present
接著請插上隨身碟,等待五秒,再執行 dmesg,並觀察其結果,如以下所示:
[ 19.968007] eth0: no IPv6 routers present
[168958.284096] usb 1-5: new high speed USB device using ehci_hcd and address 2
[168958.418552] usb 1-5: New USB device found, idVendor=058f, idProduct=6387
[168958.418557] usb 1-5: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[168958.418560] usb 1-5: Product: Mass Storage Device
[168958.418563] usb 1-5: Manufacturer: JetFlash
[168958.418565] usb 1-5: SerialNumber: LRSLABPD
[168958.453634] Initializing USB Mass Storage driver...
[168958.453731] scsi2 : usb-storage 1-5:1.0
[168958.453815] usbcore: registered new interface driver usb-storage
[168958.453817] USB Mass Storage support registered.
[168959.452829] scsi 2:0:0:0: Direct-Access JetFlash Transcend 16GB 8.07 PQ: 0 ANSI: 2
[168959.453276] sd 2:0:0:0: Attached scsi generic sg2 type 0
[168959.456217] sd 2:0:0:0: [sdb] 31375360 512-byte logical blocks: (16.0 GB/14.9 GiB)
[168959.456680] sd 2:0:0:0: [sdb] Write Protect is off
[168959.456683] sd 2:0:0:0: [sdb] Mode Sense: 03 00 00 00
[168959.457555] sd 2:0:0:0: [sdb] No Caching mode page present
[168959.457559] sd 2:0:0:0: [sdb] Assuming drive cache: write through
[168959.460105] sd 2:0:0:0: [sdb] No Caching mode page present
[168959.460110] sd 2:0:0:0: [sdb] Assuming drive cache: write through
[168959.910567] sdb: unknown partition table
[168959.913678] sd 2:0:0:0: [sdb] No Caching mode page present
[168959.913682] sd 2:0:0:0: [sdb] Assuming drive cache: write through
[168959.913684] sd 2:0:0:0: [sdb] Attached SCSI removable disk
從以上訊息,我們可以得知新增加的隨身碟為 /dev/sdb,接著我們可以針對 /dev/sdb 來進行以下操作:分割、格式化、掛載。
** 警告 ** fdisk 殺傷力很大,如果你原先電腦中有內建硬碟,請勿誤用 fdisk,否則一失足成千古恨!!
[(用 root 權限)使用 fdisk 來進行硬碟分割]
fdisk /dev/sdb
--------------------------------------------------------------------------------
Command (m for help):m -> 呼叫 help 畫面,顯示可用之命令
Command action
a toggle a bootable flag -> 設定割區是否可開機(一顆硬碟只能有一個分割區有此旗標)
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition -> 刪除分割區
l list known partition types -> 顯示分割區型別
m print this menu -> 呼叫此畫面
n add a new partition -> 增加新分割區
o create a new empty DOS partition table
p print the partition table -> 列印(顯示)分割區表
q quit without saving changes -> 跳出而且不存檔
s create a new empty Sun disklabel
t change a partition's system id -> 修改分割區 id
u change display/entry units
v verify the partition table
w write table to disk and exit -> 跳出而且存檔
x extra functionality (experts only) -> 專家指令,不熟不要用
--------------------------------------------------------------------------------
Command (m for help):p -> 列印(顯示)分割區表
Disk /dev/sdb: 16.1 GB, 16064184320 bytes
64 heads, 32 sectors/track, 15320 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xea79e48d
Device Boot Start End Blocks Id System
上面畫面告訴我們此硬碟有 16 GB,目前沒有任何分割區
--------------------------------------------------------------------------------
Command (m for help): p
Disk /dev/sdb: 1004 MB, 1004535808 bytes
256 heads, 63 sectors/track, 121 cylinders
Units = cylinders of 16128 * 512 = 8257536 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 122 979968 c W95 FAT32 (LBA)
Partition 1 has different physical/logical beginnings (non-Linux?):
phys=(1023, 255, 63) logical=(0, 32, 33)
Partition 1 has different physical/logical endings:
phys=(1023, 255, 63) logical=(121, 166, 38)
上面畫面告訴我們此硬碟有 1004 MB,目前有 /dev/sdb1 分割區,其型別為 W95 FAT32 (LBA)
--------------------------------------------------------------------------------
Command (m for help): d
Selected partition 1
由於我們只有一個分割區,因此按 d 指令會自動將此分割區砍掉,請注意,此時還有挽回的餘地,只要按 q 跳出即不會對硬碟造成任何傷害。
--------------------------------------------------------------------------------
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-15320, default 1): 1
Last cylinder, +cylinders or +size{K,M,G} (1-15320, default 15320):
Using default value 15320
新增一個主要(primary)分割區,其起始磁柱為 1,結束磁柱為 15320,如果你的隨身碟容量較少,其數字也較小,作完結果如下:
Command (m for help): p
Disk /dev/sdb: 16.1 GB, 16064184320 bytes
64 heads, 32 sectors/track, 15320 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xfc46e2f6
Device Boot Start End Blocks Id System
/dev/sdb1 1 15320 15687664 83 Linux
--------------------------------------------------------------------------------
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
執行完 w 指令就將我們所分割的隨身碟儲存起來,w 指令的破壞力相當強大,一但執行完 w 指令,裡面原始之資料就跟你說 bye bye。
[(用 root 權限)使用 mkfs.ext4 來進行硬碟格式化]
剛剛作完的流程會讓我們產生一新分割區叫 /dev/sdb1,接下來是針對此分割區進行格式化,請執行:
mkfs.ext4 /dev/sdb1
^ -> 千萬別打錯字母!!!!!!!!!!!!!!!!!!!
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
981120 inodes, 3921916 blocks
196095 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4018143232
120 block groups
32768 blocks per group, 32768 fragments per group
8176 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208
Writing inode tables: 81/120
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 21 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
作完指令後,你的隨身碟已經完成格式化了。
[(用 root 權限)使用 mount 來進行分割區掛載]
先以 df -h 來觀看目前掛載之硬碟及掛載點:
檔案系統 Size Used Avail Use% 掛載點
/dev/sda1 37G 2.6G 33G 8% /
tmpfs 1.5G 4.0K 1.5G 1% /lib/init/rw
udev 1.5G 196K 1.5G 1% /dev
tmpfs 1.5G 0 1.5G 0% /dev/shm
/dev/sda5 74G 53G 17G 77% /home
/dev/sda2 138G 92G 40G 71% /opt
/dev/sda3 28G 5.8G 21G 22% /usr
接著請執行
mount /dev/sdb1 /mnt
將 /dev/sdb1 分割區掛載至 /mnt 目錄下,接著可再執行 df -h 來確認,其結果如下。
檔案系統 Size Used Avail Use% 掛載點
/dev/sda1 37G 2.6G 33G 8% /
tmpfs 1.5G 4.0K 1.5G 1% /lib/init/rw
udev 1.5G 196K 1.5G 1% /dev
tmpfs 1.5G 0 1.5G 0% /dev/shm
/dev/sda5 74G 53G 17G 77% /home
/dev/sda2 138G 92G 40G 71% /opt
/dev/sda3 28G 5.8G 21G 22% /usr
/dev/sdb1 15G 166M 14G 2% /mnt
--------------------------------------------------------------------------------
在隨身碟上建立空的測試檔,請執行:
dd if=/dev/zero of=/mnt/test bs=1M count=20
輸入自 /dev/zero 輸出至 /mnt/test blocksize=1MB 20 區塊
上述指令可以在 /mnt 中產生一個 test 檔,其大小為 20 MB
--------------------------------------------------------------------------------
請執行 umount /mnt 將 /mnt 目錄解除掛載
--------------------------------------------------------------------------------
確保下次重新開機後能再度使用此硬碟
硬碟的掛載表在 /etc/fstab,如果我們希望在下次開機時能自動掛載,請在 /etc/fstab
中加入:
/dev/sdb1 /mnt ext4 defaults 1 2
加入後可以執行
mount -a 來測試是否會自動掛載
mount -a 是針對 /etc/fstab 中之設定來掛載相對應的裝置至相對應的目錄!!
但是 /etc/fstab 加入
/dev/sdb1 /mnt ext4 defaults 1 2
此方式有何缺點 ?
1. 若隨身碟自動辨識為 /dev/sdc1 的話,那下次開機認不到
/dev/sdb1 -> 隨身碟
/dev/sdb1 -> SATA 硬碟
/dev/sdb1 -> SCSI 硬碟
在新版 Linux 中,為了防止認錯人,因此使用 block id 的技術,要知道隨身碟的
block id,請執行:
blkid /dev/sdb1
/dev/sdb1: UUID="e6614b38-6d88-4b87-b8f4-35fad9d4611f" TYPE="ext4"
上述 UUID=.. 即為此隨身碟的 block id。
***
== 掛載 windows 隨身碟 ==
當我們執行
fdisk -lu /dev/sdb
得到以下訊息時:
root@pc-29:/home/herman# fdisk -lu /dev/sdb
Disk /dev/sdb: 4009 MB, 4009754624 bytes
23 heads, 23 sectors/track, 14804 cylinders, total 7831552 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc3072e18
Device Boot Start End Blocks Id System
/dev/sdb1 8064 7831551 3911744 c W95 FAT32 (LBA)
我們可以推論 /dev/sdb 硬碟有 4009 MB 大小,其分割區為 /dev/sdb1,其分割區以 W95 FAT32 (LAB) 之格式來格式化。這代表此隨身碟是以 Windows 分割/格式化的。要掛載此隨身之指令為:
# mount -o iocharset=big5 /dev/sdb1 /mnt
執行完我們可以使用 df -h 來驗證此隨身碟是否已掛載,其中 -o iocharset=big5 是指掛載參數設定為 big5 中文檔名。如果我們的檔案以中文檔名存檔,但是掛載時沒有加此 -o 參數,則掛載完後之檔名會變成亂碼。
解除掛載請先離開 /mnt 目錄,再執行:
# umount /dev/sdb1
或
# umount /mnt
即可。
** 一行指令清掉 partition table
假設我們要清掉 /dev/sdb 的 partition table,請執行以下指令即可:
# dd if=/dev/zero of=/dev/sdb bs=512 count=1 \Enter
請千萬注意別打成系統碟如 /dev/sda,否則只能重灌!!
== 還原隨身碟為 windows 格式 ==
1. 使用 fdisk 將 /dev/sdb1 改為 partition id 為 b (按 t 來修改)
2. mkdosfs /dev/sdb1 -> 將此分割區格式化
在 Windows/Linux 底下,新增硬碟是一件很常見的工作,一般來說,新增硬碟的流程如下:
1. fdisk 建立硬碟分割
2. 格式化
3. 掛載
4. 確保下次重新開機後能再度使用此硬碟
今天我們以另一隻隨身碟來作為新增硬碟的例子,未來各位可以自行參考安裝新的硬碟。
[判別新的硬碟]
請執行 dmesg 看最後幾行,如以下所示:
irectory
[ 9.426781] NFSD: starting 90-second grace period
[ 19.698735] apm: BIOS not found.
[ 19.763297] sshd (1261): /proc/1261/oom_adj is deprecated, please use /proc/1261/oom_score_adj instead.
[ 19.968007] eth0: no IPv6 routers present
接著請插上隨身碟,等待五秒,再執行 dmesg,並觀察其結果,如以下所示:
[ 19.968007] eth0: no IPv6 routers present
[168958.284096] usb 1-5: new high speed USB device using ehci_hcd and address 2
[168958.418552] usb 1-5: New USB device found, idVendor=058f, idProduct=6387
[168958.418557] usb 1-5: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[168958.418560] usb 1-5: Product: Mass Storage Device
[168958.418563] usb 1-5: Manufacturer: JetFlash
[168958.418565] usb 1-5: SerialNumber: LRSLABPD
[168958.453634] Initializing USB Mass Storage driver...
[168958.453731] scsi2 : usb-storage 1-5:1.0
[168958.453815] usbcore: registered new interface driver usb-storage
[168958.453817] USB Mass Storage support registered.
[168959.452829] scsi 2:0:0:0: Direct-Access JetFlash Transcend 16GB 8.07 PQ: 0 ANSI: 2
[168959.453276] sd 2:0:0:0: Attached scsi generic sg2 type 0
[168959.456217] sd 2:0:0:0: [sdb] 31375360 512-byte logical blocks: (16.0 GB/14.9 GiB)
[168959.456680] sd 2:0:0:0: [sdb] Write Protect is off
[168959.456683] sd 2:0:0:0: [sdb] Mode Sense: 03 00 00 00
[168959.457555] sd 2:0:0:0: [sdb] No Caching mode page present
[168959.457559] sd 2:0:0:0: [sdb] Assuming drive cache: write through
[168959.460105] sd 2:0:0:0: [sdb] No Caching mode page present
[168959.460110] sd 2:0:0:0: [sdb] Assuming drive cache: write through
[168959.910567] sdb: unknown partition table
[168959.913678] sd 2:0:0:0: [sdb] No Caching mode page present
[168959.913682] sd 2:0:0:0: [sdb] Assuming drive cache: write through
[168959.913684] sd 2:0:0:0: [sdb] Attached SCSI removable disk
從以上訊息,我們可以得知新增加的隨身碟為 /dev/sdb,接著我們可以針對 /dev/sdb 來進行以下操作:分割、格式化、掛載。
** 警告 ** fdisk 殺傷力很大,如果你原先電腦中有內建硬碟,請勿誤用 fdisk,否則一失足成千古恨!!
[(用 root 權限)使用 fdisk 來進行硬碟分割]
fdisk /dev/sdb
--------------------------------------------------------------------------------
Command (m for help):m -> 呼叫 help 畫面,顯示可用之命令
Command action
a toggle a bootable flag -> 設定割區是否可開機(一顆硬碟只能有一個分割區有此旗標)
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition -> 刪除分割區
l list known partition types -> 顯示分割區型別
m print this menu -> 呼叫此畫面
n add a new partition -> 增加新分割區
o create a new empty DOS partition table
p print the partition table -> 列印(顯示)分割區表
q quit without saving changes -> 跳出而且不存檔
s create a new empty Sun disklabel
t change a partition's system id -> 修改分割區 id
u change display/entry units
v verify the partition table
w write table to disk and exit -> 跳出而且存檔
x extra functionality (experts only) -> 專家指令,不熟不要用
--------------------------------------------------------------------------------
Command (m for help):p -> 列印(顯示)分割區表
Disk /dev/sdb: 16.1 GB, 16064184320 bytes
64 heads, 32 sectors/track, 15320 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xea79e48d
Device Boot Start End Blocks Id System
上面畫面告訴我們此硬碟有 16 GB,目前沒有任何分割區
--------------------------------------------------------------------------------
Command (m for help): p
Disk /dev/sdb: 1004 MB, 1004535808 bytes
256 heads, 63 sectors/track, 121 cylinders
Units = cylinders of 16128 * 512 = 8257536 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 122 979968 c W95 FAT32 (LBA)
Partition 1 has different physical/logical beginnings (non-Linux?):
phys=(1023, 255, 63) logical=(0, 32, 33)
Partition 1 has different physical/logical endings:
phys=(1023, 255, 63) logical=(121, 166, 38)
上面畫面告訴我們此硬碟有 1004 MB,目前有 /dev/sdb1 分割區,其型別為 W95 FAT32 (LBA)
--------------------------------------------------------------------------------
Command (m for help): d
Selected partition 1
由於我們只有一個分割區,因此按 d 指令會自動將此分割區砍掉,請注意,此時還有挽回的餘地,只要按 q 跳出即不會對硬碟造成任何傷害。
--------------------------------------------------------------------------------
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-15320, default 1): 1
Last cylinder, +cylinders or +size{K,M,G} (1-15320, default 15320):
Using default value 15320
新增一個主要(primary)分割區,其起始磁柱為 1,結束磁柱為 15320,如果你的隨身碟容量較少,其數字也較小,作完結果如下:
Command (m for help): p
Disk /dev/sdb: 16.1 GB, 16064184320 bytes
64 heads, 32 sectors/track, 15320 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xfc46e2f6
Device Boot Start End Blocks Id System
/dev/sdb1 1 15320 15687664 83 Linux
--------------------------------------------------------------------------------
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
執行完 w 指令就將我們所分割的隨身碟儲存起來,w 指令的破壞力相當強大,一但執行完 w 指令,裡面原始之資料就跟你說 bye bye。
[(用 root 權限)使用 mkfs.ext4 來進行硬碟格式化]
剛剛作完的流程會讓我們產生一新分割區叫 /dev/sdb1,接下來是針對此分割區進行格式化,請執行:
mkfs.ext4 /dev/sdb1
^ -> 千萬別打錯字母!!!!!!!!!!!!!!!!!!!
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
981120 inodes, 3921916 blocks
196095 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4018143232
120 block groups
32768 blocks per group, 32768 fragments per group
8176 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208
Writing inode tables: 81/120
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 21 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
作完指令後,你的隨身碟已經完成格式化了。
[(用 root 權限)使用 mount 來進行分割區掛載]
先以 df -h 來觀看目前掛載之硬碟及掛載點:
檔案系統 Size Used Avail Use% 掛載點
/dev/sda1 37G 2.6G 33G 8% /
tmpfs 1.5G 4.0K 1.5G 1% /lib/init/rw
udev 1.5G 196K 1.5G 1% /dev
tmpfs 1.5G 0 1.5G 0% /dev/shm
/dev/sda5 74G 53G 17G 77% /home
/dev/sda2 138G 92G 40G 71% /opt
/dev/sda3 28G 5.8G 21G 22% /usr
接著請執行
mount /dev/sdb1 /mnt
將 /dev/sdb1 分割區掛載至 /mnt 目錄下,接著可再執行 df -h 來確認,其結果如下。
檔案系統 Size Used Avail Use% 掛載點
/dev/sda1 37G 2.6G 33G 8% /
tmpfs 1.5G 4.0K 1.5G 1% /lib/init/rw
udev 1.5G 196K 1.5G 1% /dev
tmpfs 1.5G 0 1.5G 0% /dev/shm
/dev/sda5 74G 53G 17G 77% /home
/dev/sda2 138G 92G 40G 71% /opt
/dev/sda3 28G 5.8G 21G 22% /usr
/dev/sdb1 15G 166M 14G 2% /mnt
--------------------------------------------------------------------------------
在隨身碟上建立空的測試檔,請執行:
dd if=/dev/zero of=/mnt/test bs=1M count=20
輸入自 /dev/zero 輸出至 /mnt/test blocksize=1MB 20 區塊
上述指令可以在 /mnt 中產生一個 test 檔,其大小為 20 MB
--------------------------------------------------------------------------------
請執行 umount /mnt 將 /mnt 目錄解除掛載
--------------------------------------------------------------------------------
確保下次重新開機後能再度使用此硬碟
硬碟的掛載表在 /etc/fstab,如果我們希望在下次開機時能自動掛載,請在 /etc/fstab
中加入:
/dev/sdb1 /mnt ext4 defaults 1 2
加入後可以執行
mount -a 來測試是否會自動掛載
mount -a 是針對 /etc/fstab 中之設定來掛載相對應的裝置至相對應的目錄!!
但是 /etc/fstab 加入
/dev/sdb1 /mnt ext4 defaults 1 2
此方式有何缺點 ?
1. 若隨身碟自動辨識為 /dev/sdc1 的話,那下次開機認不到
/dev/sdb1 -> 隨身碟
/dev/sdb1 -> SATA 硬碟
/dev/sdb1 -> SCSI 硬碟
在新版 Linux 中,為了防止認錯人,因此使用 block id 的技術,要知道隨身碟的
block id,請執行:
blkid /dev/sdb1
/dev/sdb1: UUID="e6614b38-6d88-4b87-b8f4-35fad9d4611f" TYPE="ext4"
上述 UUID=.. 即為此隨身碟的 block id。
***
== 掛載 windows 隨身碟 ==
當我們執行
fdisk -lu /dev/sdb
得到以下訊息時:
root@pc-29:/home/herman# fdisk -lu /dev/sdb
Disk /dev/sdb: 4009 MB, 4009754624 bytes
23 heads, 23 sectors/track, 14804 cylinders, total 7831552 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc3072e18
Device Boot Start End Blocks Id System
/dev/sdb1 8064 7831551 3911744 c W95 FAT32 (LBA)
我們可以推論 /dev/sdb 硬碟有 4009 MB 大小,其分割區為 /dev/sdb1,其分割區以 W95 FAT32 (LAB) 之格式來格式化。這代表此隨身碟是以 Windows 分割/格式化的。要掛載此隨身之指令為:
# mount -o iocharset=big5 /dev/sdb1 /mnt
執行完我們可以使用 df -h 來驗證此隨身碟是否已掛載,其中 -o iocharset=big5 是指掛載參數設定為 big5 中文檔名。如果我們的檔案以中文檔名存檔,但是掛載時沒有加此 -o 參數,則掛載完後之檔名會變成亂碼。
解除掛載請先離開 /mnt 目錄,再執行:
# umount /dev/sdb1
或
# umount /mnt
即可。
** 一行指令清掉 partition table
假設我們要清掉 /dev/sdb 的 partition table,請執行以下指令即可:
# dd if=/dev/zero of=/dev/sdb bs=512 count=1 \Enter
請千萬注意別打成系統碟如 /dev/sda,否則只能重灌!!
== 還原隨身碟為 windows 格式 ==
1. 使用 fdisk 將 /dev/sdb1 改為 partition id 為 b (按 t 來修改)
2. mkdosfs /dev/sdb1 -> 將此分割區格式化
訂閱:
文章 (Atom)