Arch linux wifi работает вручную, как сделать это автоматически?

22

Запуск Arch Linux с ядром 3.6.11-12-ARCH + на моем Raspberry Pi.

У меня есть USB-адаптер Linksys wifi (WUSB54GC v3), который работает и работает после выполнения следующих команд:

$> sudo ifconfig wlan0 up
$> sudo iwlist scan
$> sudo iwconfig wlan0 mode managed essid myssid key "mykey" retry 7
   # Only had to do this next one the first time
$> sudo wpa_passphrase myssid "mypassword" > /etc/wpa_supplicant/wpa_supplicant.conf 
$> sudo wpa_supplicant -B -Dwext -iwlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
$> sudo dhcpcd wlan0

Как заставить Wi-Fi на этом устройстве работать каждый раз после загрузки? В конце концов я хочу развернуть его в местоположении без проводного соединения (отсюда и WiFi), но я, очевидно, не смогу этого сделать, если мне придется каждый раз вручную запускать / подключать Wi-Fi.

Matt
источник
Беспроводная связь лучше всего управляется с помощью демона, такого как network-managerили wicd.
Иордания
1
Пробовали ли вы эту инструкцию для автоматического подключения к беспроводным сетям: wiki.archlinux.org/index.php/Netcfg
Raza
3
netcfg не рекомендуется в пользу netctl (пока не уверен, было ли это изменение отражено в ARM respin Arch), но да, это способ обработки вашей конфигурации сети.
fukawi2

Ответы:

18

Вы должны использовать netctl. Это Arch Linux, встроенный в систему управления сетью. Если он еще не установлен (хотя он должен быть установлен), запустите и pacman -Syu netctlпосмотрите /etc/netctl. Есть примеры файлов конфигурации в /etc/netctl/examples.

Чтобы быстро приступить к работе:

  1. Запишите имя устройства для вашего беспроводного адаптера. Замените все экземпляры wlan0в моих примерах именем, которое соответствует вашей настройке.
  2. Убедитесь, что вы установили необходимые пакеты.

    pacman -Syu wpa_supplicant dhcpcd

    1. wpa_supplicant требуется для точек доступа, защищенных WPA, а dhcpcd требуется для получения IP-адреса из любой сети, использующей сервер DHCP, как указано в вики Arch Arch.
  3. Скопируйте соответствующий пример:

    cp /etc/netctl/example/wireless-wpa /etc/netctl/somedescriptivename

  4. Отредактируйте новую конфигурацию в /etc/netctl/somedescriptivenameсоответствии с вашими настройками.
  5. Включите сервис netctl-auto для вашего беспроводного адаптера. Снова замените wlan0 именем устройства для вашей настройки.

    systemctl enable netctl-auto@wlan0.service

Несколько вещей, на которые стоит обратить внимание:

  • netctl автоматически подключится к любым профилям, которые у вас есть в / etc / netctl, когда вы перейдете в зону действия точки доступа
  • Эта настройка будет работать только с профилями, использующими Security=wpa-configsectionи Security=wpa.
  • Отключите все ранее включенные профили Wi-Fi, используя netctl disable profilenameиначе, netctl запустит их дважды при загрузке, как только включится netctl-auto.

Для получения дополнительной информации, пожалуйста, обратитесь к записи вики Netctl .

Джейкоб Вильтце
источник
что не netctl-auto listвозвращает профилей, тогда как 4 настроены и работа с ручным netctl ожидается или ненормальная? Как я могу использовать, netctl-auto switch-to Xесли, по-видимому, нет действительных значений X? Я считаю, что вики-запись по netctl-auto удивительно бесполезна, может быть, вы знаете, где найти лучший документ?
Nikana Reklawyks
Никана, я не netctl-autoочень много пользуюсь , но только несколько советов: 1. только netctl-autoдля беспроводных подключений. Если вы хотите использовать его для Ethernet, используйте netctl-ifplugd. 2. Убедитесь, что вы используете не wpa-configметод защиты, а вместо wpa-configsectionили wpa. Профили не будут отображаться при использованииwpa-config
Jacob Wiltse
Спасибо. К сожалению для будущих зрителей, моя установка работает сейчас, не то чтобы я вспоминал, что делал что-то особенное. netctl-auto listвозвращает кучу профилей, как и должно быть. Я думаю, что, возможно, один из моих профилей не был совместим с netctl-auto из-за этого wpa-configтребования, которое не позволило им всем появиться .
Никана Рекламикс
Как уже упоминалось в моем ответе, вам нужно удалить профили, созданные с помощью netctl, прежде чем включать netctl-auto. Затем, после запуска netctl-auto, добавьте их заново.
Джонни, почему
Вы не будете использовать wlan0, как показано здесь. Вы должны использовать свой правильный идентификатор WiFi.
Джонни, почему
5

Более простой способ, который устраняет некоторые догадки о том, как создавать профили netctl(взяты со netctlстраницы вики-арки):

Шаг 1. Настройте беспроводной интернет вручную, используя, wpa_supplicantкак описано в ОП. Если ваша система не установлена, сделайте $ pacman -S wpa_supplicant.

Шаг 2. Также вам понадобится dialogпакет $ pacman -S dialog. Затем вы можете перезагрузить систему или отключиться от беспроводной сети.

Шаг 3. Запустите $ wifi-menu -o, затем пройдите через очень простые настройки Windows / Mac-esque. Вы можете проверить предустановленное значение идентификатора сети вашей системы через $ sudo netctl list. Значение будет в формате wlan098-SSID. (где SSID = имя вашей WLAN)

Шаг 4. Наконец, запустите $ netctl enable wlan098-SSIDи перезагрузите систему$ reboot

Тем не менее, иногда вы можете получить сообщение об ошибке с чем-то вроде temporarily unable to resolve nameили что-то, но просто попробуйте снова пинговать, и это должно работать.

xdavidliu
источник
Без netctl-auto вы не сможете автоматически переподключиться, так как горячие точки находятся в пределах досягаемости. Смотрите мой ответ для настройки.
Джонни, почему
3

Я считаю, что все остальные ответы ошибочны, как объясняется в моих комментариях к ним.

Эти шаги будут автоматически подключаться к самой сильной точке доступа. Протестировано на стандартной установке с использованием systemd (может работать на других ОС):

Единовременная настройка:

  • Убедитесь, что установлено следующее: диалог, wpa_supplicant, dhcpcd, netctl, wifi-меню.

  • на xfce добавьте xfce4-wavelan-plugin. Это просто индикатор, который показывает, когда вы подключены. У него нет другой цели.

  • Убедитесь, что все другие сетевые менеджеры и службы удалены или отключены. https://wiki.archlinux.org/index.php/Netctl#Wireless

  • удалить все ранее созданные сетевые профили. https://www.ostechnix.com/fix-job-netctl-service-failed-error-arch-linux/

  • Получите ваш идентификатор устройства WiFi basename $(ls -d /sys/class/net/w*)

  • включить сервис netctl-auto. Это сервис, который будет автоматически подключаться. systemctl enable netctl-auto@YourWifiDeviceID.service

Подключитесь к точке доступа в первый раз:

  • Беги wifi-menu. Требуется root. pkexec wifi-menu -o или sudo wifi-menu -o

Отключите, -oчтобы увидеть сетевые пароли при вводе.

  • Стрелка вниз, выберите желаемое соединение, нажмите Enter, примите имя соединения, введите пароль.

Добавьте больше горячих точек по мере необходимости. После этого netctl-auto автоматически переподключится к самой сильной доступной точке доступа.

Джонни почему
источник
Ответ улучшился
Джонни, почему