Вопрос или проблема
Встраиваемое устройство на базе Linux версии 2.6.26.5, ARM Linux Kernel. Оболочка Busybox v1.10.2 (ash), я нахожусь в оболочке Busybox. Я хочу настроить соединение между встраиваемым устройством и компьютером. Возможно ли вручную настроить сетевое соединение из оболочки Busybox?
Я смонтировал основные виртуальные файловые системы (proc, sysfs, tmpfs, /dev/pts), затем ввел команды для настройки сети, но безуспешно.
Я предполагаю, что, возможно, некоторые модули или драйверы не были загружены в этом режиме оболочки, но я не уверен.
BusyBox v1.10.2 (2017-08-02 14:07:25 CST) встроенная оболочка (ash)
Введите 'help' для списка встроенных команд.
/bin/sh: can't access tty; job control turned off
# mount -t proc proc /proc
# mount -t sysfs sysfs /sys
# mount -t tmpfs tmpfs /tmp
# mount -t tmpfs tmpfs /dev
# mkdir /dev/pts
# mount -t devpts devpts /dev/pts
# mdev -s
# ifconfig lo 127.0.0.1
# ifconfig eth0 hw ether 88:75:56:05:6D:28
# ifconfig eth0 192.168.15.1 netmask 255.255.255.0 broadcast 192.168.15.255
# ifconfig eth0 up
# route add -net 192.168.15.0/24 eth0
# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 88:75:56:05:6D:28
inet addr:192.168.15.1 Bcast:192.168.15.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:22
# ping 192.168.15.100
PING 192.168.15.100 (192.168.15.100): 56 data bytes
From 192.168.15.100 icmp_seq=0 timed out
Редактирование: ifconfig eth0
вывод на компьютере с Ubuntu:
$ ifconfig eth0
eth0 Link encap:Ethernet HWaddr 20:47:47:49:bc:75
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Busybox включает команду ip как часть пакета. Это позволяет добавлять IP-адрес к интерфейсу следующим образом. (замените <examples> на ваши значения)
ip addr add <10.128.55.2> dev <eth0>
Кроме того, он включает параметры конфигурации маршрута и канала. Вот документация: https://linux.die.net/man/8/ip
Ответ или решение
Настройка сетевого подключения на встроенном устройстве, использующем BusyBox и оболочку ash, является важной задачей, которая требует понимания основных сетевых концепций и команд, доступных в данной среде. Давайте разберем процесс по шагам и рассмотрим возможные проблемы, с которыми вы можете столкнуться.
1. Проверка состояния оборудования
Прежде чем начинать настройки, убедитесь, что сетевой интерфейс eth0 действительно существует и работает. Для этого выполните команду:
ifconfig -a
Эта команда покажет все доступные сетевые интерфейсы, включая выключенные. Если eth0 не отображается, это может указывать на отсутствие необходимых драйверов или модулей.
2. Монтирование виртуальных файловых систем
Вы уже выполнили важные шаги по монтированию файловых систем, и это необходимо для работы сетевых функций в Linux:
mount -t proc proc /proc
mount -t sysfs sysfs /sys
mount -t tmpfs tmpfs /tmp
mount -t tmpfs tmpfs /dev
mkdir /dev/pts
mount -t devpts devpts /dev/pts
mdev -s
Эти команды создают необходимые точки монтирования, что позволяет устройству взаимодействовать с настройками и драйверами.
3. Настройка IP-адреса
Чтобы настроить IP-адрес интерфейса, используйте команду ifconfig, как вы уже сделали:
ifconfig eth0 192.168.15.1 netmask 255.255.255.0 broadcast 192.168.15.255
ifconfig eth0 up
Это правильно, но, как вы также упомянули, в BusyBox также присутствует команда ip, которая может быть более универсальной:
ip addr add 192.168.15.1/24 dev eth0
ip link set dev eth0 up
4. Настройка маршрутизации
Вы добавили маршрут в локальную сеть, что также важно:
route add -net 192.168.15.0/24 eth0
Это правильно, и опция ip route add
также может использоваться:
ip route add 192.168.15.0/24 dev eth0
5. Тестирование соединения
Теперь попробуйте провести тест соединения с вашим компьютером. Если ваш компьютер настроен на 192.168.15.100, убедитесь, что он также использует ту же подсеть (255.255.255.0) и что его интерфейс активен. Используйте команду ping:
ping 192.168.15.100
Если вы видите сообщения об истечении времени ожидания, это может означать несколько проблем:
- Защитные настройки вашего компьютера (брандмауэр) блокируют пакеты.
- Сетевой кабель не подключен или неисправен.
- На вашем компьютере не работает служба сетевого протокола, например, ICMP.
6. Проверьте наличие необходимых модулей и драйверов
Отсутствие драйверов может быть одной из причин, почему соединение не устанавливается:
lsmod
Эта команда покажет загруженные модули. Убедитесь, что драйвер для вашего сетевого адаптера загружен. Иногда драйвера могут отсутствовать в вашем BusyBox, поэтому предварительно загрузите нужные модули.
Заключение
Настройка сетевого подключения в среде BusyBox требует внимательного выполнения последовательных шагов. Если вы последовали инструкциям выше и все еще сталкиваетесь с проблемами, возможно, вам стоит проверить различные аспекты оборудования, а также конфигурацию вашего компьютера. При необходимости рассмотрите возможность компиляции ядра с поддержкой необходимого оборудования.