BBB 上的靜態 IP 不會隨網路/介面檔案而改變

BBB 上的靜態 IP 不會隨網路/介面檔案而改變

我正在使用多個 BBB (Rev C),並使用以下命令透過 USB 從我的 Mac (OSX 10.9.3) 與它們進行通信霍恩迪斯司機。 BBB 正在運行 Debian,因此我想手動為它們分配所有不同的靜態 IP。但是,我無法獲得 IP 以外的任何內容192.168.7.2。將檔案變更/etc/network/interfaces為具有 ip192.168.7.10不會執行任何操作:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
#auto eth0
#iface eth0 inet dhcp
# Example to keep MAC address between reboots
#hwaddress ether DE:AD:BE:EF:CA:FE

auto eth0
iface eth0 inet static
address 192.168.2.2
netmask 255.255.255.0
network 192.168.2.0
broadcast 192.168.2.255
gateway 192.168.2.1

# WiFi Example
#auto wlan0
#iface wlan0 inet dhcp
#    wpa-ssid "essid"
#    wpa-psk  "password"

# Ethernet/RNDIS gadget (g_ether)
# ... or on host side, usbnet and random hwaddr
# Note on some boards, usb0 is automaticly setup with an init script
# in that case, to completely disable remove file [run_boot-scripts] from the boot partition
iface usb0 inet static
    address 192.168.7.10
    netmask 255.255.255.0
    network 192.168.7.0
    gateway 192.168.7.1

確實,boot分割區有一個檔案我也改了,沒有結果:

#!/bin/bash

# Update /etc/network/interfaces to add virtual Ethernet port
cat >>/etc/network/interfaces <<EOF

iface usb0 inet static
  address 192.168.7.10
  netmask 255.255.255.0
  network 192.168.7.0
  gateway 192.168.7.1
EOF

# Add terminal to virtual serial port
cat >/etc/init/gadget-serial.conf <<EOF
start on stopped rc RUNLEVEL=[2345]
stop on runlevel [!2345]

respawn
exec /sbin/getty 115200 ttyGS0
EOF

# Write script to start gadget driver
cat >/usr/sbin/g-multi-load.sh <<'EOF'
#!/bin/bash
if [ "`lsmod | grep g_multi`" != "" ]; then exit 0; fi
mac_addr=/proc/device-tree/ocp/ethernet@4a100000/slave@4a100300/mac-address
eeprom=/sys/bus/i2c/devices/0-0050/eeprom

DEV_ADDR=$(perl -e 'print join(":",unpack("(H2)*",<>))' ${mac_addr})
VERSION=$(perl -e '@x=unpack("A12A4",<>); print $x[1]' ${eeprom})
SERIAL_NUMBER=$(perl -e '@x=unpack("A16A12",<>); print $x[1]' ${eeprom})
ISBLACK=$(perl -e '@x=unpack("A20A4",<>); print $x[1]' ${eeprom})

BLACK=""
if [ "${ISBLACK}" = "BBBK" ] ; then
    BLACK="Black"
fi
if [ "${ISBLACK}" = "BNLT" ] ; then
    BLACK="Black"
fi

modprobe g_multi file=/dev/mmcblk0p1 cdrom=0 stall=0 removable=1 nofua=1 iSerialNumber=${SERIAL_NUMBER} iManufacturer=Circuitco iProduct=BeagleBone${BLACK} host_addr=${DEV_ADDR}

# Enable the network interface
sleep 1
ifup usb0
EOF
chmod +x /usr/sbin/g-multi-load.sh

# Add script to rc.local
perl -i -pe 's!^exit 0!/usr/sbin/g-multi-load.sh\nexit 0!' /etc/rc.local

# Install DHCP server
sudo apt-get -y update
sudo apt-get -y install isc-dhcp-server

# Configure DHCP server
cat >/etc/ltsp/dhcp.conf <<EOF
ddns-update-style none;
subnet 192.168.7.0 netmask 255.255.255.252 {
  range 192.168.7.1 192.168.7.1;
}
EOF
perl -i -pe 's/INTERFACES=".*"/INTERFACES="usb0"/' /etc/default/isc-dhcp-server

# Start up services
/usr/sbin/g-multi-load.sh
service isc-dhcp-server start

答案1

您需要為 BeagleBone Black 更改第三個檔案:/opt/scripts/boot/am335x_evm.sh

我在這裡找到了它: http://ewong.me/changing-usb0-ip-address-on-the-beaglebone-black

答案2

我在我的 BBB 上嘗試過,但沒有成功。原來我的 Beaglebone 上的網路配置是由 connman 控制的。重新啟動後,編輯 /etc/network/interfaces 和其他腳本檔案沒有任何效果。 (我想如果我使用了 GUI 介面,這可能會更明顯。事實上,我旋轉了幾個小時試圖弄清楚發生了什麼......)我終於讓它永久更改為靜態輸入以下命令即可配置ip:

首先,您需要找到您的(在我的例子中是有線)連接的“服務名稱”。進入:

連線服務

就我而言,我的有線連線稱為「ethernet_b0d5cc8194db_cable」。您需要它來設定連接的配置。以下將我的 eth0(有線)連線設定為靜態 IP 位址「192.168.1.219」:

connmanctl 設定 ethernet_b0d5cc8194db_cable ipv4 手冊 192.168.1.219 255.255.255.0 192.168.1.1

新增名稱伺服器:

connmanctl 設定 ethernet_b0d5cc8194db_cable --nameservers 8.8.8.8

我還可以禁用 ipv6(只是我的偏好):

connmanctl 設定 ethernet_b0d5cc8194db_cable ipv6 關閉

遺憾的是我們想出了這麼多不同的方法來在 Linux 上配置網路!

-約翰

相關內容