你需要把連接DHCP服務(wù)器的交換機(jī)接口,設(shè)置成可以打上多個VLAN標(biāo)簽的。也就是混合接口。否則只能獲取一個網(wǎng)段的IP。
成都創(chuàng)新互聯(lián)公司10多年成都定制網(wǎng)站服務(wù);為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計(jì)及高端網(wǎng)站定制服務(wù),成都定制網(wǎng)站及推廣,對茶樓設(shè)計(jì)等多個行業(yè)擁有多年的網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn)的網(wǎng)站建設(shè)公司。
你可以參考一下……這個筆記做的還行!!
一.編譯內(nèi)核
1. 進(jìn)入linux源代碼目錄:
#cd /usr/src/linux-2.4.20
2. 清理源代碼樹,檢測內(nèi)核包里面的文件是否正確:
#make mrproper
3. 運(yùn)行配置程序:
#make xconfig
說明:最關(guān)鍵要選擇fs(ext3),initrd,cpu,網(wǎng)卡型號的支持,或直接將準(zhǔn)備好的config文件拷貝到/usr/src/linux-2.4.20/arch/i386目錄下,改名為defconfig(注意先將原有的defconfig文件備份,切記).
4. 開始編譯,檢查相關(guān)獨(dú)立性:
#make dep
5. 清除內(nèi)存和編譯過程中生成的.o文件:
#make clean
6. 生成bzImage內(nèi)核文件,在./arch/i386/boot下:
#make bzImage
二.Busybox文件系統(tǒng)的生成
1. Busybox簡介
busybox是一個集成了一百多個最常用linux命令和工具的軟件,他甚至還集成了一個http服務(wù)器和一個telnet服務(wù)器,而所有這一切功能卻只有區(qū)區(qū)1M左右的大小.我們平時用的那些linux命令就好比是分力式的電子元件,而busybox就好比是一個集成電路,把常用的工具和命令集成壓縮在一個可執(zhí)行文件里,功能基本不變,而大小卻小很多倍,在嵌入式linux應(yīng)用中,busybox有非常廣的應(yīng)用,另外,大多數(shù)linux發(fā)行版的安裝程序中都有busybox的身影,安裝linux的時候案ctrl+alt+F2就能得到一個控制臺,而這個控制臺中的所有命令都是指向busybox的鏈接.
2. 配置busybox
busybox的配置程序和linux內(nèi)核菜單配置方式簡直一模一樣.
解壓: #tar xvfz /Nodiskboot/busybox-1.00.tar.gz
#cd /Nodiskboot/busybox-1.00
#make menuconfig
下面是需要編譯進(jìn)busybox的功能選項(xiàng),其他的可以根據(jù)需要自選,但是同樣不要太貪心.
General Configuration應(yīng)該選的選項(xiàng)
Show verbose applet usage messages
Runtime SUID/SGID configuration via /etc/busybox.conf
Build Options
Build BusyBox as a static binary (no shared libs)
這個選項(xiàng)是一定要選擇的,這樣才能把busybox編譯成靜態(tài)鏈接的可執(zhí)行文件,運(yùn)行時才獨(dú)立于其他函數(shù)庫.否則必需要其他庫文件才能運(yùn)行,在單一個linux內(nèi)核不能使他正常工作.
Installation Options
Don't use /usr
這個選項(xiàng)也一定要選,否則make install 后busybox將安裝在原系統(tǒng)的/usr下,這將覆蓋掉系統(tǒng)原有的命令.選擇這個選項(xiàng)后,make install后會在busybox目錄下生成一個叫_install的目錄,里面有busybox和指向他的鏈接.
其他選項(xiàng)都是一些linux基本命令選項(xiàng),自己需要哪些命令就編譯進(jìn)去,一般用默認(rèn)的就可以了.
配置好后退出并保存.
3. 編譯并安裝busybox
#make
#make install
這樣,在busybox目錄下將生成一個_install的文件夾,里面會有四項(xiàng)bin,sbin和linuxrc,其中bin,sbin都是目錄,busybox文件放在bin下面,然后其他的所有文件都是符號連接,連接到busybox上。
上述步驟生成了initrd簡單的目錄架構(gòu),我們還有手工添加若干。
4. 制作根文件系統(tǒng)
一個根文件系統(tǒng)必須包含支持一個完整的Linux系統(tǒng)所需的最基本的全部文件:
* 最基本的文件結(jié)構(gòu)
* /dev, /proc, /bin, /etc, /lib, /usr, /tmp 等目錄的最小集合
* sh, ls, cp, mv等基本工具程序
* rc, inittab, fstab等基本配置文件
* /dev/hd*, /dev/tty*, /dev/fd0等基本設(shè)備
* libc-x.x.x.so等程序運(yùn)行所需的各種動態(tài)庫文件
1).創(chuàng)建目錄rootfs
mkdir /Nodiskboot/rootfs
cd /Nodiskboot/rootfs
2).基本目錄結(jié)構(gòu)
#mkdir etc usr var tmp proc home root dev etc/init.d mnt lib
#chmod 755 etc usr var tmp home root dev etc/init.d mnt lib
#chmod 555 proc
介紹一下各種目錄的作用:
* /dev -- 設(shè)備文件,實(shí)現(xiàn)系統(tǒng)I/O 所需
* /proc -- 使用proc文件系統(tǒng)所需
* /etc -- 包含系統(tǒng)配置文件
* /sbin -- 包含重要的系統(tǒng)程序
* /bin -- 包含大部分系統(tǒng)程序
* /lib -- 包含提供動態(tài)鏈接所需的共享庫文件
* /mnt -- 掛載其他設(shè)備:磁盤、光盤、usb設(shè)備等的掛載點(diǎn)
* /usr -- 額外的程序、函數(shù)庫文件以及配置文件
3).拷貝busybox
#cp -R /Nodiskboot/busybox-1.00/_install/* /Nodiskboot/rootfs/
4).建立dev設(shè)備文件名
#cd /Nodiskboot/rootfs/dev
#mknod -m 666 tty c 5 0
#mknod -m 666 console c 5 1
#mknod -m 666 tty0 c 4 0
#mknod -m 600 fd0 b 2 0
#mknod -m 600 ram0 b 1 0
#mknod -m 600 null c 1 3
mknod是在dev下成生mknod節(jié)點(diǎn)設(shè)備文件。加載磁盤的命令是:
#mknod -m 660 hda b 3 1
其中3是第一條主線上,1是主設(shè)備上第一個分區(qū)(0~63),如果是第二條線則是22,如果是從設(shè)備則是(64~127).
但是手工方法建立太麻煩了,通常直接從/dev下把需要的設(shè)備文件拷貝過來.
這些設(shè)備文件是特殊文件,在拷貝時一定要加上-R參數(shù)才能拷貝.
#cp -R /dev/console ./
#cp -R /dev/null ./
#cp -R /dev/zero ./
...
5).建立etc目錄下的配置文件
寫入三個文件inittab,fstab,init.d/rc.sysinit,文件內(nèi)容如下
inittab:
::sysinit:/etc/init.d/rcS
::askfirst:/bin/sh
fstab:
proc /proc proc defaults 0 0
init.d/rcS:
#!/bin/sh
mount –a
exec bin/dhcpcd
# chmod 755 rc.sysinit
其中rcS中exec語句是啟動dhcp客戶端軟件,啟動自動配置IP功能。
6).在lib下面cp相應(yīng)的庫文件
用ldd命令查看文件運(yùn)行所用到的庫,由于未用到動態(tài)鏈接庫,而是直接鏈接到linuxrc文件上,所以lib下面是空的.
7).存儲節(jié)點(diǎn)的初始化是另一個需要注意的問題。在前面曾提到,內(nèi)核引導(dǎo)的最后一項(xiàng)工作是創(chuàng)建并執(zhí)行init進(jìn)程,隨后init進(jìn)程將創(chuàng)建其他進(jìn)程,運(yùn)行一些系統(tǒng)所需的重要程序。由于在通常的Linux系統(tǒng)中的init程序的使用和配置與System V系統(tǒng)中的init程序類似,而在嵌入式系統(tǒng)等特殊應(yīng)用場合并不需要實(shí)現(xiàn)多個用戶(multiuser)的使用,也不需要用戶登陸終端,所以System V系統(tǒng)中的init程序?qū)ξ覀兊囊蠖怨δ苓^于復(fù)雜。在此,我們采用使用比較廣泛的工具busybox中的init程序。busybox包含常用的基本工具程序如:sh,ls,mount,init,cp等,而大小只有幾百K(視所選擇工具程序的數(shù)目來決定大小)。實(shí)際上,編譯busybox后只有一個busybox程序,其余的所有工具程序都是busybox程序的符號鏈接,busybox通過辨別不同的程序名稱,跳轉(zhuǎn)執(zhí)行不同的功能。
busybox中的init程序可以完成初始化的基本功能而且去掉了System V系統(tǒng)init程序的多余功能,init程序執(zhí)行的順序如下:
1. 創(chuàng)建init的信號處理
2. 初始化控制臺
3. 分析inittab文件,/etc/inittab
4. 執(zhí)行系統(tǒng)初始化腳本,/etc/init.d/rcS
5. 執(zhí)行所有inittab中類型為wait的程序
6. 執(zhí)行所有inittab中類型為once的程序
完成以上步驟后,init循環(huán)執(zhí)行所有inittab中類型為respawn和askfirst的程序。文件inittab中的每一行配置遵照格式如下:
id:runlevel:action:process
雖然這個格式與傳統(tǒng)的System V init 類似,但是id 域的含義不同。id 通常是用來指定控制啟動進(jìn)程運(yùn)行的tty。如果id域?yàn)榭談t代表這個進(jìn)程的運(yùn)行不需要與shell交互。在busybox中,runlevel域 可以完全忽略。process 指明執(zhí)行程序以及所帶參數(shù)選項(xiàng)。 action 域可以選擇一下八個類型:
sysinit提供給init初始化腳本所在的路徑;
respawn當(dāng)進(jìn)程終止后將其重新啟動;
askfirst與respawn類似,不同之處是在終端提示“Please press Enter to activate this console.”;
wait代表init等待這個程序執(zhí)行完后才繼續(xù)執(zhí)行;
once表示執(zhí)行一次而且不需要等待完成;
ctrlaltdel表示當(dāng)按下Ctrl-Alt-Delete時執(zhí)行;
shutdown表示程序在關(guān)機(jī)時執(zhí)行;
restart表示程序在重啟時執(zhí)行,通常是init本身。
在存儲節(jié)點(diǎn)上運(yùn)行的程序是:掛載硬盤(mount),掃描硬盤生成多媒體文件報(bào)告的程序,流媒體服務(wù)器(vls),與管理節(jié)點(diǎn)通信程序(agent),監(jiān)視網(wǎng)絡(luò)帶寬使用狀況的程序()。其中,mount的action域應(yīng)為wait,因?yàn)槭紫纫獙⒋嬗卸嗝襟w文件的硬盤掛載才能對其執(zhí)行掃描;vls的action域應(yīng)為respawn,vls運(yùn)行出現(xiàn)嚴(yán)重錯誤后,重新啟動vls,并向管理節(jié)點(diǎn)報(bào)告,寫入log。
三. 制作ramdisk映象文件
根文件系統(tǒng)所有東西都放在/Nodiskboot/rootfs下,我們將利用ramdisk把這些內(nèi)容做成ramdisk映象文件并壓縮它.
# dd if=/dev/zero of=/dev/ram0
dd: 正在寫入 ‘/dev/ram1’: 設(shè)備上沒有空間
讀入了 8193+0 個塊
輸出了 8192+0 個塊
zero是一個特殊的設(shè)備,表示全部為0的字符塊.上面這條命令的意思是把系統(tǒng)的第一個ramdisk用全部為0的數(shù)據(jù)填充,因?yàn)? ramdisk默認(rèn)大小為4M,因此當(dāng)讀滿8192個塊(每塊512字節(jié))后,顯示'設(shè)備上沒空間'.這很正常,/dev/ram0已經(jīng)被填充滿了.
如果指定塊的大小:
# dd if=/dev/zero of=/dev/ram0 bs=1M count=4
讀入了 4+0 個塊
輸出了 4+0 個塊
不會有錯誤提示,這里演示了dd的一般用法,接下來還要頻繁用到dd命令.
在/dev下有很多ramdisk設(shè)備ram0,ram1,ram2,ram3.... 一般用第一個就可以了.
填充后,ram1就有可空間,可以在這個空間上創(chuàng)見一個文件系統(tǒng):
# mkfs.ext2 -m0 /dev/ram0
將ram0掛裝到文件系統(tǒng)中:
先建立一個掛裝點(diǎn):
#mkdir /mnt/ram0
掛上ram0:
#mount /dev/ram0 /mnt/ram0
將先前做好的Nodiskboot根文件系統(tǒng)拷貝到ram0上.
#cp -R /Nodiskboot/rootfs/* /mnt/ram0
做完以上幾步,你應(yīng)就白了ramdisk設(shè)備的含義,他是和hda1,hdb1,一樣的塊設(shè)備,用mount掛到文件系統(tǒng)下后就可以訪問,往里放東西,但是所有的東西在內(nèi)存上.關(guān)機(jī)將丟失所有東西.
拷貝好Nodiskboot根文件系統(tǒng)后卸載ram0:
#umount /dev/ram0
如果出現(xiàn)"device is busy",說明有別的進(jìn)程在使用/dev/ram0上的文件,解決辦法如下:
#fuser -v /mnt/ram0
#umount /dev/ram0
這時,雖然不能通過/mnt/ram這個掛裝點(diǎn)訪問ram0中的內(nèi)容了,但是他卻切切實(shí)實(shí)得在內(nèi)存中存在.
再用dd把這個ram1以映象方式取出來:
# dd if=/dev/ram0 of=/Nodiskboot/ramdisk.img
驗(yàn)證一下取出來的內(nèi)容:
# file ramdisk.img
ramdisk.img: Linux rev 1.0 ext2 filesystem data
他是一個ext2 文件系統(tǒng),類似一個ISO光盤映象文件.
因次,我們可以用loop設(shè)備來把他重新掛裝到文件系統(tǒng)里:
# mount -o loop ramdisk.img /mnt/ram0/
為了方便,我仍舊把他掛在/mnt/ram0下,因此,在先前一定要把/dev/ram0 umount掉
查看/mnt/ram0下的內(nèi)容,他應(yīng)該和/Nodiskboot/rootfs下的一模一樣,否則就是出錯了:
# ls /mnt/ram0
etc usr var tmp proc home root dev etc/init.d mnt lib
這樣,我們就得到了一個ramdisk根文件系統(tǒng)映象ramdisk.img
把他umount掉:
#umount /mnt/ram0
壓縮ramdisk.img印象文件:
# gzip -v9 ramdisk.img
查看壓縮后的大小:
# ls -lh ramdisk.img.gz
四. 壓縮內(nèi)核與根文件系統(tǒng)
當(dāng)內(nèi)核與根文件系統(tǒng)準(zhǔn)備好之后,就要將這兩者壓縮在一起,使用的工具是mknbi,它是DHCP啟動映象制作工具,在linux下與etherboot配合使用.mknbi壓縮的文件下載到存儲節(jié)點(diǎn)后,由etherboot進(jìn)行分析,對內(nèi)核與根文件系統(tǒng)分離解壓后
1:將bzImage拷貝到mknbi下,將initrd也拷貝到mknbi下
2:mkelf-linux --output=/tftpboot/boot.eb --param="rw root=/dev/ram initrd=0x075F0000" bzImage initrd
其中param參數(shù)的設(shè)置, initrd代表內(nèi)核映象文件bzimage將被解壓縮到的內(nèi)存的位置。
五.最后一步――執(zhí)行
將mknbi-linux生成的壓縮文件boot.eb放置在管理節(jié)點(diǎn)的/tftpboot路徑下,并修改/etc/dhcpd.conf中的配置,使boot.eb作為每一個存儲節(jié)點(diǎn)通過TFTP需要從管理節(jié)點(diǎn)下載的文件。然后,管理節(jié)點(diǎn)啟動DHCP守護(hù)進(jìn)程(# service dhcpd start),運(yùn)行TFTP服務(wù)(# chkconfig tftp on)。
存儲節(jié)點(diǎn)在上電后就可以分配得到IP地址,下載操作系統(tǒng)內(nèi)核和根文件系統(tǒng),運(yùn)行各種配置好了的程序,可以在存儲節(jié)點(diǎn)上ifconfig,可以看到節(jié)點(diǎn)上的網(wǎng)卡開始工作,現(xiàn)在可以完成busybox里面集成的簡單命令,如ping之類。
網(wǎng)關(guān)修改為 102.168.0.254
route add default gw 102.168.0.254
----------------------------------------------------------------------
修改dns
echo "nameserver 202.202.202.20 " /etc/resolv.conf
-----------------------------------------------------------------------
重啟網(wǎng)絡(luò)服務(wù)
/etc/rc.d/init.d/network restrart
------------------------------------------------------------------------
掛載光驅(qū)
1.在 mnt 目錄下建立一個 cdrom目錄
cd /mnt
mkdir cdrom
2.掛載光驅(qū)
mount -t iso9660 /dev/cdrom /mnt/cdrom
3.卸載光驅(qū)
umount /mnt/cdrom
*******************************************************************************************************
onfig eth0 新ip (光用這個命令,會在重啟以后變成原來的ip)
然后編輯/etc/sysconfig/network-scripts/ifcfg-eth0,修改ip
[aeolus@db1 network-scripts]$ vi ifcfg-eth0
DEVICE=eth0 設(shè)備名稱
ONBOOT=yes 計(jì)算機(jī)啟動時是否激活網(wǎng)卡
BOOTPROTO=static 獲取ip地址的方式,
IPADDR=192.168.2.111 ip地址
NETMASK=255.255.255.0 子網(wǎng)掩碼
GATEWAY=219.136.241.254 網(wǎng)關(guān)(我的虛擬機(jī)里面好像沒有)
[aeolus@db1 etc]$ vi resolv.conf
nameserver 202.96.128.68
nameserver 219.136.241.206
-----------------------
Linux下修改網(wǎng)卡IP和網(wǎng)關(guān)
建議通過終端字符方式下來修改
一修改IP地址
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
BROADCAST=192.168.1.255
IPADDR=192.168.1.33
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes
USERCTL=no
PEERDNS=no
TYPE=Ethernet
~
vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.2.34
NETMASK=255.255.255.0
USERCTL=no
PEERDNS=no
TYPE=Ethernet
NETWORK=192.168.2.0
BROADCAST=192.168.2.255
二修改網(wǎng)關(guān)
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=Aaron
GATEWAY=192.168.1.1
三重新啟動網(wǎng)絡(luò)配置
/etc/init.d/network restart
-----------------------------------------------------------------------------------
修改配置文件
/etc/sysconfig/network-scripts/ 下有配置文件
比如文件:ifcfg-eth0 代表是以太網(wǎng)實(shí)際網(wǎng)卡0的配置文件
比如文件:ifcfg-eth0:1 代表是以太網(wǎng)實(shí)際網(wǎng)卡0的配置文件
域名服務(wù)器配置文件:/etc/ resolv.conf
修改ip地址
即時生效:
# ifconfig eth0 192.168.0.20 netmask 255.255.255.0
啟動生效:
修改/etc/sysconfig/network-scripts/ifcfg-eth0
修改default gateway
即時生效:
# route add default gw 192.168.0.254
啟動生效:
修改/etc/sysconfig/network-scripts/ifcfg-eth0
修改dns
修改/etc/resolv.conf
修改后可即時生效,啟動同樣有效
修改host name
即時生效:
# hostname fc2
啟動生效:
修改/etc/sysconfig/network
你也可以去看下這個,希望可以幫助你啊