Решение. Заменить новый DHCP-клиент dhcpcd на старый dhclient. Как это сделать.
sudo pacman -S dhclient
sudo pacman -R dhcpcd
После этого необходимо подкорректировать /etc/rc.d/network.
Что корректировать, можно посмотреть здесь
После корректировки в процедуре ifup() стало так
ifup()
{
if [ "$1" = "" ]; then
echo "usage: $0 ifup
return 1
fi
/sbin/ifconfig $1 up
wi_up $1 || return 1
eval ifcfg="\$${1}"
if [ "$ifcfg" = "dhcp" ]; then
# remove the .pid file if it exists
# /bin/rm -f /var/run/dhcpcd-${1}.pid >/dev/null 2>&1
# /bin/rm -f /var/run/dhcpcd-${1}.cache >/dev/null 2>&1
rm -f /var/lib/dhclient/dhclient.${1}.leases >/dev/null 2>&1
# I'm not sure if it's safe to remove the lease file
rm -rf /var/run/dhclient.${1}.pid >/dev/null 2>&1
/sbin/dhclient -lf /var/lib/dhclient/dhclient.${1}.leases -pf /var/run/dhclient.${1}.pid ${1}
# /sbin/dhcpcd $DHCPCD_ARGS ${1}
else
/sbin/ifconfig $ifcfg
fi
return $?
}
Аналогично исправляем код в процедуре ifdown()
ifdown()
{
if [ "$1" = "" ]; then
echo "usage: $0 ifdown
return 1
fi
eval ifcfg="\$${1}"
if [ "$ifcfg" = "dhcp" ]; then
# if [ -f /var/run/dhcpcd-${1}.pid ]; then
# /bin/kill $(cat /var/run/dhcpcd-${1}.pid)
if [ -f /var/run/dhclient.${1}.pid ]; then
kill `cat /var/run/dhclient.${1}.pid`
fi
fi
# Always bring the interface itself down
/sbin/ifconfig ${1} down >/dev/null 2>&1
return $?
}
Хочу отметить, что в источнике .leases файл искался в директории /var/lib/dhcp. Но у меня такой директории не было, зато была /var/lib/dhclient. Я внес соответствующее изменение в исходный код патча.
P.S. dhclient сообщает больше информации, проблемы с DHCP проще диагностировать.
Комментариев нет:
Отправить комментарий