找回密码
 注册
查看: 1223|回复: 4

为什么我的网卡每次启动时都没有激活,要进去后手工激活

[复制链接]
发表于 2005-11-8 02:03:16 | 显示全部楼层 |阅读模式
我的内核可以找到网卡并加载网卡驱动,但是每次进入系统都要手工激活网卡,超麻烦,
也就是说进去后我都要这么做:
ifconfig eth0 up
ifconfig lo up
ifconfig eth0 192.168.18.1 netmask 255.255.255.0
pon dsl-provider
非常麻烦
我看了/etc/init.d/networking和/et/network/interfaces文件都没有什么差错。
并且lsmod都能找到网卡模块,有谁能告诉我哪里出错了。
先谢了。
对了是采用udev+hotplug的,再问一个问题,2.6.14的内核不是不用devfs了吗,但是我在编译内核后启动时会提示无法加载devfs文件系统,虽然不要紧,但是还是看着不太舒服,谢谢。
ubuntu 5.10的系统。
realtek 8139D的网卡。
 楼主| 发表于 2005-11-8 11:08:05 | 显示全部楼层
etc/network/interfaces 是 Debian 系統中最為重要的網路設定檔案,許多網路介面的設定都是透過這個檔案。細節請查閱 interfaces(5)。或您的系統檔案 /usr/share/doc/ifupdown/examples/network-interfaces.gz 有完整的範例介紹。

本文件以最新版 ifupdown 為基礎。

interfaces 中若為空白或 # 開頭,則視之為註解,系統會自動略過。首先,您永遠都會想要一個 loopback 介面。因此 interfaces 介面會有這麼兩行

auto lo
iface lo inet loopback
接下來您可能想設定乙太網路卡的 IP 位址及路由,假設位址是 192.168.0.1,網路遮罩為 255.255.255.0,路由器位址是 192.168.0.254。那麼請在檔案中加入

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 192.168.0.1
        network 192.168.0.0 # 此行不寫無妨
        netmask 255.255.255.0
        broadcast 192.168.0.255 # 此行不寫無妨
        gateway 192.168.0.254
或您的介面藉由 (dhcp)? 動態網路設定,那麼可以如此寫

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
數個乙太介面可以寫為

auto lo eth0 eht1 eth2
iface lo inet loopback
iface eth0 inet dhcp
iface eth1 inet dhcp
iface eth2 inet dhcp
如果要讓更動立刻生效,最有效的辦法是重新開機,最聰明的辦法是以 root 身份下達以下指令

# /etc/init.d/networking restart
以上是最基本與最常用的。接下來將仔細介紹語法、設定方式及進階的用法。

如果您注意到設定的內容了,大概已經發現每個網路介面設定是起於 "auto"、"iface" 兩個關鍵字,而關鍵字之後接上網路介面名稱,網路類別以及設定方法,下方便是該網路介面的設定細節。事實上除了 "auto"、 "iface" 之外,還有一個 "mapping"。

auto
auto 關鍵字乃指定每個「物理網路介面」,你可以單一行指定介面名稱,也可以在檔案中使用數行。在開機時,系統命令稿會執行 "ifup -a",而這個指令會找出所有的 auto 設定節,並依序啟動該網路介面。

auto lo eth0
iface lo inet loopback
iface eth0 inet dhcp
或以數行表示

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
iface 設定選項
關鍵字 "iface" 設定的則是「邏輯介面」(logical interface),倘若未使用 "mapping" 設定,則 iface 等於純粹用於設定「實體介面」(physical interface),稍後提到 "mapping" 會說明差別。

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 192.168.0.1
        netmask 255.255.255.0
        gateway 192.168.0.254
依照範例設定而言,iface 之後接的是介面名稱(之後會介紹 logical interface 與 physical interface),以上顯示的即是 eth0。之後則是網路協定類別(address family),有以下三種分類

inet - TCP/IP networking (IPv4)
ipx - IPX networking
inet6 - IPv6 networking
之後看到的 static 選項稱為 method of the interface,也就是設定的方式,通常用到的是

inet - TCP/IP networking (IPv4)
loopback
static
manual
dhcp
bootp
ppp
wvdail
ipx - IPX networking
static
dynamic
inet6 - IPv6 networking
loopback
static
v4tunnel
每種設定方式對於之後的細部設定參數都有所不同。細節請參考 interfaces(5)。以 TCP/IP networking 為例

auto eth0
iface eth0 inet static
        address 192.168.0.1
        network 192.168.0.0 # 此行不寫無妨
        netmask 255.255.255.0
        broadcast 192.168.0.255 # 此行不寫無妨
        gateway 192.168.0.254
我們可看到以上屬於 inet static 的設定有 address、network、netmask、broadcast、gateway,您大概注意到每行開頭的空白縮格,這些空白僅是為了閱讀設定便利,無縮格亦可。

另外一些強大的模組化命令稿機制便是 "up"、"pre-up"、"down"、"post-down" 等參數。這些參數的用途在於介面啟動或停止時,執行特定的命令。例如可在介面啟動時,自動載入您欲設定的 iptables 規則等,或是藉由 macchanger 指令在開機時更改網路介面的 MAC 位址。如果您要進行的設定是不分網路介面的,那麼可以把相關的命令寫成命令稿丟到 /etc/network/if-<option>.d/,那麼系統便會自動以 run-parts 逐一執行之。

mapping 設定選項
mapping 是 ifupdown 的主要特色之一,本文介紹的語法為最新版,使用 woody 的版本語法大有不同。這個選項可用來執行特定的指令,並決定目前的環境以決定網路組態。

例如伺服器上有兩張乙太網路卡,一張網路介面接於區域網路,作為 NAT 服務。另一張介面則接於廣域網路或寬頻網路,透過 (DHCP)? 取得網路位址。大部份時候必須逐一確認兩張網路卡的位址,以便設定組態。以下的範例用於可直接判別某個特定 MAC 位址的網路設備是否存在,每張不同的網路介面無法跨網域存取其他網路設備的位址。

auto eth0 eth1
mapping eth0 eth1
    script /path/to/get-mac-address.sh
    map 11:22:33:44:55:66 lan
    map AA:BB:CC:DD:EE:FF internet
iface lan inet static
    address 192.168.42.1
    netmask 255.255.255.0
    pre-up /usr/local/sbin/enable-masq $IFACE
iface internet inet dhcp
    pre-up /usr/local/sbin/firewall $IFACE
設定中以 "script" 參數明確指出執行的程式,此程式會逐一的在指定的網路介面上執行,並傳回特定的字串,以這裡的範例為例,取得特定的網路設備位址。而 map 11:22:33:44:55:66 lan,則是若 11:22:33:44:55:66 存在,則指定「邏輯介面」(logical interface) 為 lan,若為 AA:BB:CC:DD:EE:FF 則指定為 internet。

下面的設定區塊中則指示不同的「邏輯介面」則給予不同的設定。例子中

iface lan inet static
    address 192.168.42.1
    netmask 255.255.255.0
    pre-up /usr/local/sbin/enable-masq $IFACE
指示 lan 邏輯介面設定位址為 192.168.42.1,網路遮罩為 255.255.255.0,並在啟動時執行 /usr/local/sbin/enable-masq $IFACE,其中 $IFACE 變數則是實體介面(physical interface),非 "eth0" 即 "eth1",這個變數會傳給 /usr/local/sbin/enable-masq ,因此程式便可執行正確的設定。

iface internet inet dhcp
    pre-up /usr/local/sbin/firewall $IFACE
而 internet 邏輯介面,則以 dhcp 啟動,並執行 /usr/local/sbin/firewall。

除了這樣的用途,如果你擁有膝上型電腦,想必偶爾於工作、客戶、家中甚至咖啡館使用。不同的網路環境需要不同的組態,如果你必須在移動之後不停的更改組態,實在非常麻煩。試著想想,如果只需要設定一次,未來只要插上網路線,系統便自動且聰明的決定使用何種組態,那豈不方便?請試試 guessnet 吧。
回复

使用道具 举报

 楼主| 发表于 2005-11-8 11:09:13 | 显示全部楼层
问题已经解决了,主要是pppoeconf修改了我的/etc/network/interfaces里面的auto eth0。
回复

使用道具 举报

发表于 2005-11-11 14:57:48 | 显示全部楼层
请问,要是找不到网卡,怎么办?
回复

使用道具 举报

 楼主| 发表于 2005-11-17 03:49:59 | 显示全部楼层
[quote:3616e3824b="darking"]请问,要是找不到网卡,怎么办?[/quote]
一般是驱动问题,一是内核里没有编译进去你的网卡驱动,这种情况的话你就要重新编译内核,把你网卡的芯片型号编译进去,
二是内核里没有你的网卡的驱动,这种情况下就要去网卡的官方下驱动自己编译成模块并放在当前内核版本的模块目录下,再把网卡信息加入modules.conf里面去。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2025-2-13 10:14 , Processed in 0.021272 second(s), 15 queries .

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表