2007年1月30日 星期二

架設PXE網路開機服務來為net4501安裝ubuntu

PXE全名Preboot Execution Environment,是一種可以讓機器透過網路來載入作業系統的服務,而一般都是拿它來安裝作業系統,特別是在沒有額外儲存裝置或是要大量安裝的機器上. 它的原理大概是這樣,機器開機時,在網路中要一個ip(透過dhcp機制),然後順便透過tftp還有nfs將作業系統的核心抓到本機上執行.

以下是我在ubuntu6.06上安裝的過程:

1.要架設PXE,首先在來源機器上先安裝好需要的軟體
$sudo apt-get install tftp-hpa tftpd-hpa

$sudo apt-get install dhcp3-server

$sudo apt-get install nfs-common

2.設定dhcpd
編輯 /etc/dhcp3/dhcpd.conf

加入

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.12 ;
filename "pxelinux.0";
}

其實這是簡單的dhcp設定, 但額外需要加上 filename "pxelinux.0"; 來載入OS的核心

3.設定tftp並放置OS核心(安裝來源)
(1)確認tftp服務有打開: $cat /etc/inetd.conf 應該會有tftp的敘述

(2)執行 $sudo update-inetd --enable BOOT

(3)確認 /etc/default/tftp-hpa 的內容是否為
#Defaults for tftpd-hpa
RUN_DAEMON="yes"
OPTIONS="-l -s /var/lib/tftpboot"

(4)把OS核心或你下載的ISO檔,解壓縮到 /var/lib/tftpboot
$lftp -c "open http://archive.ubuntu.com/ubuntu/dists/dapper/main/installer-i386/current/images/; mirror netboot/"

$cp -a netboot/* /var/lib/tftpboot

$cd /var/lib/tftpboot/

$tar xfz pxeboot.tar.gz

(4) 因為我是在net4501這塊板子上安裝,因而沒有vga界面,所以必須動點手腳
編輯 pxelinux.cfg/default

將 print screen 的敘述拿掉,並把install的參數改成

LABEL install
kernel ubuntu-installer/i386/linux
append console=ttyS0,19200n81 initrd=ubuntu-installer/i386/initrd.gz ramdisk_size=16417 root=/dev/ram rw --


4.當然,欲使用網路開機的機器,必需支援PXE開機才行,找一部有PXE功能的機器試試,應該就可以成功了

參考

Mandriva One 2007 Metisse

前陣子我在ubuntu上裝了XGL,不知是硬體設備太差還是我設定有誤的關係,只有幾項簡單的效果有出來,希望ubuntu社群能盡快地把它包進去XD










2007年1月7日 星期日

[ubuntu] 關掉serial port login的服務

編輯 /etc/inittab ,把有關tty的東西comment掉,存檔離開並執行 #init q 就可以了.

要打開的話,就 uncomment 吧.

[ubuntu] 修改自動掛載的usb device權限

在比較新的Linux套件中,都支援自動掛載usb的功能,也就是一個usd裝置插入後,能夠像windows那樣判別是什麼裝置,然後提供一個存取它的方式,而Linux在自動掛載時,會給它預設的權限,但這不一定是我們相要的,雖然chmod可以做,但實在太不方便了,以下我以usb的視訊為例,更改其預設的權限,當然,前提是你已經設定好其driver了.

1. 將目錄切到 /etc/udev/rules.d
$cd /etc/udev/rules.d

2. 裡面應該會有有關permission的檔案
在ubuntu 6.10中存在一個叫40-permissions.rules的檔

3. 編輯此檔
$sudo vim 40-permissions.rules

4. 由於我要設定的視訊,所以找到裡面有關video devices區塊
# Video devices
SUBSYSTEM=="drm", GROUP="video"
SUBSYSTEM=="dvb", GROUP="video"
SUBSYSTEM=="graphics", GROUP="video"
SUBSYSTEM=="video4linux", GROUP="video"
KERNEL=="agpgart", GROUP="video"
KERNEL=="nvidia*", GROUP="video"

5. 參考其它區塊的範例,在video4linux後端加上 MODE="0666" ,如下
# Video devices
SUBSYSTEM=="drm", GROUP="video"
SUBSYSTEM=="dvb", GROUP="video"
SUBSYSTEM=="graphics", GROUP="video"
SUBSYSTEM=="video4linux", GROUP="video", MODE="0666"
KERNEL=="agpgart", GROUP="video"
KERNEL=="nvidia*", GROUP="video"

#當然,也可以改成你所要的權限

6. 存檔離開,此時重新插入usb裝置(視訊),權限就是你所要的

2007年1月5日 星期五

[Linux] 檢查開啟某些檔案的行程

有時候,系統上某些檔案或裝置(其實Linux上的大多的硬體裝置都有一個虛擬檔案),被某些行程所開啟或佔用,一時間我們可能找不出,例如要將cdrom umount掉時,系統卻告訴你device is busy,但我們卻找不出是誰在用,此時,我們需要的是lsof

以下是幾種常用的功能:

1.列出某個process所開啟的檔案
$lsof -p
或 $lsof -c



2.列出某裝置上的user正在幹麼
$lsof /dev/tty1 /dev/pts/0

3.列出已開啟socket的process
$lsof -i

2007年1月3日 星期三

[ubuntu]在ubuntu上重新編譯核心

在ubuntu上要更新kernel,通常只要裝kernel-image就會自動幫你弄的好好的,可是有時image中的模組並不會滿足我們的需求,因此就可以自重編核心.

1.若使用ubuntu 6.10 的話,要先把/bin/sh換掉,因為/bin/sh在6.10中預設是指向/bin/dash,而我們要把它指向/bin/bash
#rm -f /bin/sh
#ln -s /bin/bash /bin/sh

2. 安裝所需要的工具
#apt-get update
#apt-get install kernel-package libncurses5-dev fakeroot wget bzip2

3. 下載kernel原始碼,解開它,並建立一個link指向它
#cd /usr/src
#wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.1.tar.bz2
#tar xjf linux-2.6.18.1.tar.bz2
#ln -s linux-2.6.18.1 linux
#cd /usr/src/linux

4. 下載並套用所需要的patch
#bzip2 -dc /usr/src/patch.bz2 | patch -p1 –dry-run
#bzip2 -dc /usr/src/patch.bz2 | patch -p1

5. configure kernel的設定
#make menuconfig
或者可以先套用目前的設定
#cp /boot/config-`uname -r` ./.config
再make menuconfig裡把它load進來

6. 開始編譯了
#make-kpkg clean
#fakeroot make-kpkg –initrd –append-to-version=-custom kernel_image kernel_headers

7. 安裝核心
#cd /usr/src
#ls -l
#dpkg -i linux-image-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb
#dpkg -i linux-headers-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb

8. 若需要的話,修改grub的選單
#vim /boot/grub/menu.lst
#grub-install /dev/hda

9. 重開機並驗證
#shutdown -r now

#uname -a


參考網頁

[ubuntu]安裝EW-7318Ug USB無線網卡

1. 首先先到RALink官網上抓Linux的driver,要抓RT2571W/RT2671USB的
http://www.ralinktech.com/ralink/Home/Support/Linux.html

2. 把它編譯好,並掛起來
$sudo apt-get install linux-headers-$(uname -r) build-essential g++-3.4
$wget http://www.ralinktech.com/drivers/Linux/RT73_Linux_STA_Drv1.0.3.6.tar.gz
$tar -xvf RT73_Linux_STA_Drv1.0.3.6.tar.gz
$cd RT73_Linux_STA_Drv1.0.3.6/
$cd Module/
$sudo cp -v Makefile.6 ./Makefile
$make all
$sudo cp -v rt73.ko /lib/modules/`uname -r`/kernel/drivers/usb/net/
$sudo mkdir -pv /etc/Wireless/RT73STA
$sudo cp -v rt73.bin /etc/Wireless/RT73STA/
$dos2unix rt73sta.dat -f
$sudo cp -v rt73sta.dat /etc/Wireless/RT73STA/rt73sta.dat
$sudo insmod /lib/modules/`uname -r`/kernel/drivers/usb/net/rt73.ko

3. 檢查模組相依性
sudo depmod -a

4. 使用 iwconfig , ifconfig 等工具設定好就可以用了

參考資料