debian で Realtek rtl8111e 用 Network driver を使う
当日記ではアフィリエイト広告を利用しています
物理 SSD から実 PC で起動した Debian が Network に接続できなかった。仮想マシンだと仮想 network device があるので接続できる。実 PC の Network device は Realtek rtl8111e と取説には記載されていた。確か Realtek は鬼門だったと記憶している。鉄板は Intel chip。r8169.ko が insmod されているが eth0 がない。
Ubuntu だと繋がっていたはずなので、ググって調べてみた。
rtl8111e 用の rtl8168 は debian なら non-free、Ubuntu なら universe にあるんだね。
繋がらない状態:
# lspci -v
... 略 ...
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 06)
Subsystem: ASUSTeK Computer Inc. P8P67 and other motherboards
Flags: bus master, fast devsel, latency 0, IRQ 29
I/O ports at e800 [size=256]
Memory at f2fff000 (64-bit, prefetchable) [size=4K]
Memory at f2ff8000 (64-bit, prefetchable) [size=16K]
Capabilities: [40] Power Management version 3
Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
Capabilities: [70] Express Endpoint, MSI 01
Capabilities: [b0] MSI-X: Enable- Count=4 Masked-
Capabilities: [d0] Vital Product Data
Capabilities: [100] Advanced Error Reporting
Capabilities: [140] Virtual Channel
Capabilities: [160] Device Serial Number 01-00-00-00-68-4c-e0-00
Kernel driver in use: r8169
Kernel modules: r8169
... 略 ...
# ifconfig -a
enp3s0: flags=4098<BROADCAST,MULTICAST> mtu 1500
ether 20:cf:30:87:7f:51 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0dhclient で enp3s0 に ip address 割り当てると通信できるようになった。
# dhclient enp3s0
# ifconfig
enp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.n.n netmask 255.255.255.0 broadcast 192.168.n.255
inet6 fe80::0000:0000:0000:0000 prefixlen 64 scopeid 0x20<link>
inet6 2nnn:00:0000:1:0000:0000:0000:0000 prefixlen 64 scopeid 0x0<global>
ether 20:00:00:00:00:00 txqueuelen 1000 (Ethernet)
RX packets 117 bytes 8858 (8.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 23 bytes 2352 (2.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 29 base 0x9000
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0通信できたようだけど、折角なので apt line 変更し update、install:
# cat /etc/apt/sources.list | grep ^deb deb http://ftp.jp.debian.org/debian/ stretch main contrib non-free deb http://security.debian.org/debian-security stretch/updates main contrib non-free deb http://ftp.jp.debian.org/debian stretch-updates main contrib non-free # apt update # apt upgrade # apt install r8168-dkms
module 作って initramfs 等を作り直し。再起動すると r8168 を読み込むようになった。でも eth0 は現れず。何か設定が足りないだけ?
結果
結局、r8169 でも r8168 でも、どちらでも通信できた。上のリンク先では速度が落ちると書かれているので、r8169 は安定性に欠けるのかも知れない。とりあえず、r8168 を使ってみる。