顯示具有 Ubuntu 標籤的文章。 顯示所有文章
顯示具有 Ubuntu 標籤的文章。 顯示所有文章

2010年1月10日

Ubuntu Linux 最佳化網路卡 MTU 與關掉 IPv6

這篇可能需要稍微要有 TCP / IP 與 OSI 七層模型的基礎,還有網路傳輸基本概念,可能才會比較清楚自己在改些什麼。

sudo ifconfig eth0 mtu 9000
# 修改 eth0 網卡的 MTU 為 9000

ping -c 1 -s -M do
# -M do 在 ICMP 上標示不要 Fragmentation。路由器就不會切割封包
# -s 參數為 ICMP payload 大小,值為 MTU 剪掉 ICMP 表頭大小 28
# 若 MTU 大小為 1500 則 payload byte 就是 1472

將 MTU 值寫入開機設定檔
sudo vi /etc/network/interfaces # 編輯網路設定檔
iface eth0 inet static # 設定 eth0 網路卡為固定 IP
pre-up /sbin/ifconfig eth0 mtu 9000 # 設定 eth0 MTU
address 192.168.1.1
netmask 255.255.255.0
gateway 192.168.1.254

iface eth1 inet dhcp # 設定 eth1 網路卡為 DHCP
pre-up /sbin/ifconfig eth1 mtu 9000 # 設定 eth1 MTU

關閉 IPv6 支援
sudo vi /etc/modprobe.d/blacklist
加入 blacklist ipv6 即可

Ubuntu Linux 網路相關指令速記

/etc/network/interfaces
# 設定 IP, netmask, Gateway 或使用 DHCP 網路組態

/etc/hostname
# 主機名稱設定

/etc/resolv.conf
# 設定 DNS 伺服器和本機的網域名稱或網域查詢列表

/etc/hosts
# 建立靜態主機名稱與 IP 對應

sudo apt-get install network-manager-gnome
# 安裝圖形化網路管理介面 ( Gnome )

sudo apt-get install knetworkmanager
# 安裝圖形化網路管理介面 ( KDE )

netstat
# -a 列出所有連線,包含 TCP、UDP 和 Socket 通訊
# -l 列出主機在 Listen 的連線,通常為伺服器軟體
# -n 列出 netstat 時不做 IP 反查,速度較快
# -p 列出使用該連線的軟體名稱和 PID
# -t 列出 TCP 連線
# -u 列出 UDP 連線

ifconfig
# option: netmask, broadcast, mtu, IP address
# add UP or DOWN to enable or disable interface
# ifconfig eth0 hw ether AA:BB:CC:11:22:33 to change MAC address

sudo ifconfig eth0 192.168.1.1 netmask 255.255.255.0
# 設定固定 IP 與子網路遮罩

sudo route add default gw 192.168.1.254
# 設定預設閘道

route -n
sudo route del -net 0.0.0.0 gw 192.168.0.1
route -n
sudo route add -net  default gw 192.168.0.1 dev eth0
route -n
# 移除並新增路由表範例

sudo dhclient eth0
# 在網卡 eth0 上取得 IP, netmask, gateway and DNS

sudo vi /etc/network/interfaces # 設定網路範例

auto lo # 啟用 Loopback 設備。請勿變更!
iface lo inet loopback # 啟用 Loopback 設備。請勿變更!

auto eth0 # 啟用 eth0 網路卡
auto eth1 # 啟用 eth1 網路卡

iface eth0 inet static # 設定 eth0 網卡為固定 IP
address 192.168.1.1 # 設定 IP 位置
netmask 255.255.255.0 # 設定子網路遮罩
gateway 192.168.1.254 # 設定預設閘道
network 192.168.1.0 # 設定網路,可有可無
broadcast 192.168.1.255 # 設定廣播,可有可無

iface eth1 inet dhcp # 設定 eth1 網卡從 DHCP Server 取得 IP

sudo /etc/init.d/networking restart
# 重新啟用網路介面

sudo ifdown eth0
# 關閉 eth0 裝置

sudo ifup eth0
# 啟用 eth0 裝置並從 interfaces 讀取設定檔

sudo vi /etc/resolv.conf 編輯 resolv.conf 設定檔


nameserver 8.8.8.8 # 第一台 DNS 主機
nameserver 8.8.4.4 # 第二台 DNS 主機

search yzu.edu.tw edu.tw
# 網域優先搜尋。假設 ping www 或連線 www 則會自動嘗試 DNS 正解 www.yzu.edu.tw,若存在則直接回傳 IP 位置,若不存在則再嘗試 www.edu.tw。故連線同網域主機常常用到。缺點是若要連線 www.gmail.com 則首先會嘗試 DNS 正解 www.gmail.com.yzu.edu.tw,然後依序查詢下去,導致效能低落。

domain yzu.edu.tw
# 用法幾乎與 search 一樣,不過他只能設定一個,也就是主機本身的網域,不能含有其他。查詢的規則和 search 一樣,會把查詢的網址加上 domain 後所設定的網域,最後才會查詢到您的網址。

sudo vi /etc/hostname
# 設定主機名稱

sudo hostname -F /etc/hostname
# 立即更新系統 hostname

hostname -f
# 查詢系統的 FQDN ( 出錯時通常為 hosts 或 resolv.conf 沒設定好 )

Ubuntu Linux 無線網路設定筆記

Ubuntu Desktop 中的圖形化介面設定無線網路已十分完善,本篇將著重於 console 下如何設定無線網路。

iwconfig
# 測試無線網路是否成功驅動

lspci
# 查詢無線網路晶片組

iwconfig wlan0 txpower on
# 開啟無線網路電源

sudo iwlist eth0 scanning
# 查詢可用的無線網路


sudo iwconfig eth0 up
sudo iwconfig eth0 essid key 12345678
# 啟用 eth0 無線網卡,12345678 為 WEP 密碼

sudo dhclient eth0
# 透過 DHCP 自動取得 IP

sudo ifconfig eth0 192.168.0.1 netmask 255.255.255.0 # 設定 IP 與 netmask
sudo route add default gw 192.168.0.254 # 設定預設閘道


vi /etc/network/interfaces # 直接設定無線網路組態到 interfaces
auto eth0 # 啟用無線網路
iface eth0 inet static # 設定 eth0 為固定 IP 若要自動取得請改成 dhcp
wireless-essid # 設定無線網路名稱
wireless-key # 設定無線網路密碼
address 192.168.0.1
netmask 255.255.255.0
gateway 192.168.0.1

若要使用 DHCP 則最下面三行可省略。

Ubuntu Linux 透過 ADSL 上網

目前 Ubuntu 的最新發行版 9.10 圖形化介面中的 DSL 撥號程式仍然有 BUG
使用 console 來撥號是唯一使用 ADSL 連線上網的方法。

sudo pppoeconf
# 文字介面 ADSL PPPOE 撥號連線

plog
# 查詢 PPPOE 狀態

sudo poff
# 中斷 PPPOE 連線

sudo pon dsl-provider
# 啟用 PPPOE 連線

Ubuntu Linux 簡單的 Shell 環境變數設定

看完書才知道 Shell 的博大精深與變幻莫測阿,這邊只是一個小小設定的紀錄,更多的詳細用法是無法在一篇文章內說完的,去買書吧XD"

PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
# Ubuntu Linux 預設環境變數

echo $PS1
# 印出 PS1 環境變數 ( \u 表示 username \h 表示 hostname \w 表示 folder )

PS1='\[\033[1;33m\]\u\[\033[1;37m\]@\[\033[1;32m\]\h\[\033[1;37m\]:\[\033[1;31m\]\w\[\033[1;36m\]\$ \[\033[0m\]'

# 彩色 PS1 環境變數 ( 因排版限制,本處中間無斷行 )

vi ~/.bashrc or vi /home/user/.bashrc
# 編輯個人的 bashrc 可使每次打開 shell 都自動定義好色彩

Ubuntu Linux 變更 console 解析度與中文檔名支援

sudo vi /boot/grub/menu.lst
# 編輯 Grub 設定檔
title           Ubuntu, kernel 2.6.18-30
root            (hd0,1)
kernel          /vmlinuz-2.6.18-30
root=/dev/hda3 ro quiet splash vga=0x31B
initrd          /initrd.img-2.6.18-30 savedefault
boot
將 kernel 最後方的 0x31B 修改為 framebuffer 的代碼,重開機後的 console 解析度就會生效囉

sudo vi /etc/default/grub
# 若為 grub2 則須修改此檔案中的 GRUB_GFXMODE=640x480 變數
# 更改完記得 sudo update-grub 來更新設定檔案

sudo apt-get install jfbterm
# 安裝 UTF-8 中文 console 支援

jfbterm
# 執行

Ubuntu Linux 調整 IDE 裝置的效能

本篇只適用於 IDE 裝置,SATA 或 SCSI 預設已經開啟 DMA 加速。

sudo hdparm /dev/hda
# 取得硬碟組態
# -m multcount 每一次 I/O 動作可以掃描的磁區多寡。通常設為 -m16 以取得最佳效能。而 -m0 為停用
# -c IO_support 預設是 16 位元傳輸 -c0 32 位元非同步傳輸是 -c1 同步傳輸參數是 -c3
# -d using_dma 一定要開!-d0 關閉。-d1 開啟
# -X UDMA 額外參數。ATA33 是 -X66 ATA66 是 -X68 ATA100 是 -X69
# -t cache 讀取測試。測試硬碟從快取讀取資料的速度,通常會比 -T 快很多很多,通常是實體匯流排的速度。
# -T 硬碟讀取測試。測試硬碟真正讀取資料速度。
# -i 硬碟組態資訊。顯示詳細硬碟組態設定。

sudo hdparm -tT /dev/hda
# 測試硬碟效能

sudo hdparm -c1 -m16 -d1 -X69 /dev/hda
# 設定新參數並測試效能

sudo vi /etc/hdparm.conf
# 編輯硬碟參數設定檔 ( 設定完重開機才會生效 )
#/dev/cdroms/cdrom0 {
#       dma = on
#       interrupt_unmask = on
#       io32_support = 0
#}

#/dev/hda {
#       mult_sect_io = 16
#       write_cache = off
#       dma = on
#}

#command_line {
#       hdparm -q -m16 -q -W0 -q -d1 /dev/hda
#}

sudo /etc/init.d/hdparm restart
# 立即重新啟用 haparm

2009年12月30日

使用 auto-apt 與 checkinstall 自動滿足套件編譯相依性

以往非 Debianize 的套件要安裝時,免不了要經過下列的噁心步驟:

./configure # 設定軟體相關資訊並檢查是否滿足編譯條件
make # 編譯
sudo make install # 安裝到系統

而且還往往非常不容易成功。現在可以利用 auto-apt 自動幫你搞定。

sudo apt-get install auto-apt
#  安裝 auto-apt 套件

sudo auto-apt update
# 更新套件庫清單

auto-apt run ./configure
make
sudo make install

另外一種將原始碼徹底 Debianize 化的方法更簡單了

sudo apt-get install checkinstall
# 安裝 checkinstall 套件

gunzip source.tgz
./configure
make
checkinstall
sudo dpkg -i source.deb

沒錯,就是把最後一個步驟的 make install 換成 checkinstall 即可,是不是很簡單呢QQ

使用 apt-build 編譯最佳化套件

sudo apt-get install apt-build
# 安裝 apt-build 套件

sudo dpkg-reconfigure apt-build or sudo vi /etc/apt/apt-build.conf
# 重新設定 apt-build 選項與 apt-build 設定檔位置

sudo apt-build update
# 更新套件庫清單

sudo apt-build install
# 安裝新套件,且自動最佳化編譯

sudo apt-build --reinstall install

# 重新安裝套件,且重新最佳化編譯

sudo dpkg --get-selections | awk ' { if ( $2 == "install" ) print $1 } ' > /etc/apt/apt-build.list
sudo apt-build world
# 匯出系統所有安裝套件清單,並做全系統編譯,費時好幾天,並可能失敗,請慎重考慮

利用 apt-get 自行編譯套件

sudo apt-get install build-essential
# 安裝 gcc-compiler make dpkg-dev 編譯程式常用環境

sudo apt-get source
# 取得軟體原始碼,可加 -b 下載完自動編譯

sudo apt-get build-dep
# 安裝編譯此套件所需要的套件(表頭檔或函式庫補完)

dpkg-source -x
# 建立 Debianize 的原始檔方式。解開套件原始碼並上 patch

tar xvf

# 解開套件原始碼

zcat | patch -p0
# 打上 Debianize 的 patch

dpkg-buildpackage
# 編譯套件

編譯 ntop 範例
sudo apt-get update
# 更新套件庫清單

sudo apt-get build-dep ntop
# 自動安裝編譯 ntop 所需套件

sudo apt-get -b source ntop
# 下載原始碼並編譯

sudo dpkg -i ntop.deb
# 安裝剛做好的 deb 套件

apt-key 金鑰管理

sudo apt-key list
# 列出 APT 系統所使用的公鑰

$ sudo apt-key list
/etc/apt/trusted.gpg
--------------------
pub   1024D/437D05B5 2004-09-12 # 1024D 表示金鑰擁有者 ID / 437D05B5 為金鑰指紋
uid                  Ubuntu Archive Automatic Signing Key # 套件庫金鑰
sub   2048g/79164387 2004-09-12

pub   1024D/FBB75451 2004-12-30
uid                  Ubuntu CD Image Automatic Signing Key # 光碟用金鑰


一般公鑰會有2K以上,除非是用隨身碟傳,不然無法很容易傳遞。Ubuntu 的公鑰交換使用 Key Server 來傳遞。我們先對金鑰取特徵值,得到一組40碼的金鑰指紋,每一碼為0到F以16進位表示。然後將公鑰上傳到Key Server,其他人只須憑金鑰指紋即可下載完整公鑰。透過Key Server解決公鑰交換的問題。

如果公鑰已經上傳到Key Server,可以使用下列指令下載公鑰:
gpg --keyserver hkp://wwwkeys.us.pgp.net --recv-keys <金鑰指紋>
# 金鑰指紋最少8碼或16碼,亦可用完整40碼來下載公鑰

gpg --keyserver hkp://wwwkeys.eu.pgp.net --recv-keys 010908312D230C5F
# 取得 Debian 套件庫公鑰

由於 APT 系統所使用的公鑰列表雨 GPG 系統的公鑰列表各自獨立,所以要把 GPG 的工要匯出到 APT 系統

gpg --armor --export <金鑰指紋> | sudo apt-key add -
# 輸出 GPG 金鑰並匯入 APT 系統

sudo apt-key add chentunglee.asc
# 手動匯入金鑰。寫信向套件開發者取得。

sudo apt-key del <金鑰指紋>
# 刪除公鑰

apt-file 以檔案找套件

這個小工具可以讓您的 Ubuntu 透過已知的執行檔、文件、函式庫、標頭檔等來找套件哦!

sudo apt-get install apt-file
# 安裝 apt-file 套件

sudo apt-file update
# 根據 sources.list 同步套件庫清單

apt-file search
# 以關鍵字搜尋套件

可用參數:
-l 只顯示套件,不顯示檔名
-i 忽略大小寫
-F 完全符合關鍵字

範例:
apt-file search wx.h
apt-file search ftp
apt-file search /usr/bin/ftp
apt-file search /usr/bin/ftp -F

sudo apt-file list
# 列出套件所包含的檔案

apt-get 套件安裝、移除、升級好工具

sudo apt-get update
# 同步系統套件庫清單

sudo apt-get upgrade
# 更新沒有套件相依性問題的套件

sudo apt-get dist-upgrade
# 依照套件相依性更新所有套件

sudo apt-get install
# 自動安裝指定的套件

sudo apt-get remove
# 自動移除套件,並留下設定檔

sudo apt-get --purge remove
# 自動移除套件,不保留設定檔

sudo apt-get clean
# 移除所有的套件暫存檔案 /var/cache/apt/archives

sudo apt-get autoclean
# 移除所有舊版的套件暫存檔案,最新版本保留

可用參數:

-y 自動回答 yes
-s 安全模式,測試安裝 / 移除
-f 強制模式,強制安裝或修正錯誤
-d 只下載 deb 套件並存放在 /var/cache/apt/archives
--reinstall 重新安裝套件

sudo dpkg --configure -a
# 重新設定之前因中斷等因素還沒裝好的套件

sudo synaptic
# 用圖形化界面管理 APT 套件庫

我的筆記 DokuWiki

架設好DokuWiki一陣子了
裡面有我玩Ubuntu Linux的一些紀錄
和同事使用Oracle的紀錄
有需要就來翻翻吧
Eddie's DokuWiki

方便的 apt-cache 套件查詢工具

apt-cache search
# 從套件資訊中查詢包含 keyword 的套件

apt-cache -n search
# 搜尋 keyword 的套件名稱

apt-cache show
# 顯示套件詳細資訊和介紹

apt-cache showsrc
# 顯示套件原始碼相關資訊

apt-cache showpkg
# 顯示套件相依性相關資訊

apt-cache depends
# 顯示套件相依性相關資訊

apt-cache rdepends
# 顯示套件反向相依性相關資訊

apt-cache stat
# 顯示套件庫資訊

2009年12月5日

Ubuntu 你太求好心切了嗎?

一直以來我都是 Ubuntu 的頭號粉絲,死忠支持者。
但今天我想講的是,為什麼這麼多不穩定的 BUG 在 Version Release 過後這麼久,還未見改善。
Ubuntu 9.10 在今年10月底正式釋出。(其實我老早就從BETA開始一起努力)
雖然安裝的最新版本的過程中無任何不便,但裝完才是問題的開始。
也許你急著要開發許許多多讓 User 感覺驚豔的全新功能
也許你急著要讓桌面環境跟上 Gnome 的最新腳步
也許你急著要讓核心跟上 Linux 最新版本
......
但你也不能忘了大家當初會選擇你的初衷:穩定,友善,好用。

你不能讓 ADSL 上網的使用者每次都要下 sudo pppoeconf 來設定撥號連線
你不能讓使用者每次看 JAVA 網頁都要猜測方塊裡到底寫的是什麼字
你不能讓使用者安裝字型檔案時,迴圈回到一個無止盡
你不能讓使用者開機十次,有兩次無法順利登入 GDM

這 些都是裝完後,一個禮拜內就發現的顯著問題,原本還以為穩定友善的 Ubuntu 團隊,一定會在最短的時間內修復這些,然而在幾乎一個月多過後,上述這些問題還是沒透過 Update or Patches 解決。真是讓我難掩失望,這叫我怎麼再跟別人推廣、怎麼再跟別人說 Ubuntu 的好?(泣...)

雖然這些小問題,都可以透過指令修修改改來更正,但不能期望每個使用者都是 Linux 專家,還是需要顧及使用者的感受。還是很希望官方能盡速處理好這些問題,讓 Ubuntu 能越來越好。

以下列出幾個小問題的解決方式:

搜尋此網誌