Alpine linux установка wifi

Обновлено: 06.07.2024

В наше время проводное подключение ноутбука к интернету используется всё реже. Наиболее распространенный вариант - провод подключён к роутеру, а он уже раздает Wifi на весь дом. Технологию Wifi поддерживают большинство современных ноутбуков, и это удобно - можно взять его с собой на кровать, не боясь переломить шнур, или очень легко перенести его в другую комнату.

Но тут кроется одна проблема: не всегда и не на всех устройствах Wifi поддерживается из коробки. Да, есть такие ноутбуки Linux, в которых настройка Wifi в Ubuntu не нужна: после установки всё работает, вы можете подключаться к сетям или даже создавать точки доступа. Но это не так уж часто. В этой статье будет рассмотрена настройка Wifi в Ubuntu. Мы возьмём самую последнюю версию дистрибутива Ubuntu 16.04 с ядром Linux 4.4. Тут самую важную роль играет ядро, поскольку именно оно отвечает за поддержку оборудования. Я буду предполагать, что у вас не работает Wifi Ubuntu из коробки, если же вас интересует, как подключиться к сети, листайте ниже.

Установка драйвера Wifi

Если вы попробовали подключиться к сети Wifi, и у вас не получилось, хотя пароль был правильный, или у вас даже не определяется системой присутствие сетевой карты Wifi, становится понятно, что из коробки не работает Wifi Ubuntu и нужна дополнительная настройка. Wifi-адаптеров и их производителей очень много. В этой статье мы будем рассматривать только Broadcom, потому что всё не охватить. Но я попытаюсь объяснить так, чтобы вы смогли разобраться, даже если у вас другой производитель адаптера Wifi Ubuntu.

Для начала, давайте посмотрим какой у вас производитель сетевой платы, для этого выполните:

sudo lspci | grep Network

wifi11

wifi

Для нашего Broadcom-адаптера есть четыре драйвера, смотрим только те, для которых в последней колонке есть PCI; наш адаптер подключён через эту шину. Это b43, b43-legasy и brcmfmac и brcmcmac.

wifi1

Дальше выбираем лучший драйвер: смотрим на колонки cfg80211, AP, IBSS, mesh, monitor, PHY modes. Собственно, поддержка протокола сап80211, поддержка режима точки доступа, поддержка IBSS, Mesh, поддержка режима прослушивания (для перехвата пакетов) и поддержка расширений протокола b/g/n/a.

Для нас сейчас лучший драйвер по этим параметрам - b43. Открываем его и смотрим, поддерживает ли он нашу карту:

wifi2

Кроме названия, здесь приводится PCI ID карты, чтобы точно определить совместимость. Для Broadcom его можно посмотреть командой:

lspci -nn -d 14e4:

wifi12

Находим нашу карту BCM4313 и в колонке Supported видим No - жаль, но этим драйвером она не поддерживается. Такого PCI ID здесь тоже в помине нет. Но настройка Wifi в Ubuntu ещё не закончена. Возвращаемся назад, и смотрим другой драйвер. Следующий по возможностям драйвер brcmsmac, он не поддерживает Mesh и IBSS, но нам и не нужно.

Открываем, смотрим и видим, что в первой же строчке есть наша карта:

wifi3

Вот теперь мы нашли нужный драйвер и уже даже знаем, какие режимы он поддерживает. Подобным образом можно подобрать драйвер для любого другого адаптера.

Обратите внимание, что перед тем, как запускать драйвер, для него, возможно, необходимо будет установить прошивки. Установка драйвера Wifi Ubuntu не нужна, поскольку он вшит в ядро. Информация о прошивке находится ниже на странице:

wifi4

В нашем случае нужно скачать и скопировать файлы brcm/bcm43xx-0.fw и brcm/bcm43xx_hdr-0.fw to в отдельную папку. Вот они - эти файлы, на вкладке tree, скачиваем и копируем в папку, которая указана в инструкции:

wifi5

sudo cp bcm43* /lib/firmware/brcm/

Как видите, всё немного сложно, но на самом деле там все действия описаны, и все ссылки есть, нужно только внимательно смотреть. Теперь осталось установить драйвер Wifi Ubuntu, для этого мы просто загрузим модуль ядра. Но перед этим нужно добавить в чёрный список все другие модули, которые ядро может загружать автоматически:

sudo modprobe -r wl
$ sudo modprobe -r b43
$ sudo modprobe -r b43-legaxy

Добавляем их в чёрный список:

blacklist b43
blacklist b43-legacy
blacklist wl

Теперь запускаем наш выбранный драйвер:

sudo modprobe brcmsmac

Вот и всё, теперь Wifi работает. Теперь вы знаете, как установить драйвер Wifi в Ubuntu, как его найти, как определить необходимую версию для вашей карты. Хотя мы рассмотрели способ для Broadcom, с другими адаптерами нужно работать похожим образом. Загружаем выбранный драйвер, запрещаем все остальные доступные. И не забудьте установить прошивку. Даже если Ubuntu не видит Wifi, вы сможете разобраться.

Подключение к Wifi в Ubuntu

После того, как установка драйвера Wifi Ubuntu завершена, подключиться к сети не составит труда, это намного легче, по сравнению с тем, через что вы уже прошли. На панели теперь появился такой значок:

wifi8

Когда не работает Wifi Ubuntu, его нет. Точнее он есть, но выглядит по-другому. Кликните по этому значку и выберите из списка нужную сеть. Осталось ввести пароль:

wifi9

Готово, подключить Wifi Ubuntu не так уж сложно, и вы можете пользоваться интернетом.

wifi10

Подключение к Wifi в Ubuntu через терминал

Иногда случаются ситуации, когда графический интерфейс не работает. Тогда тоже может понадобиться интернет. Дальше мы рассмотрим, как подключить Wifi Ubuntu через терминал. Как вы знаете, для обмена данными в сети Wifi используется шифрование, это WEB, WPA и WPA2. Мы не будем рассматривать WEP, потому что это слишком просто, и это шифрование не безопасное - его можно взломать за несколько минут.

Остановимся на WPA. Настройка Wifi в Ubuntu через терминал состоит из нескольких этапов:

  • Просканировать сеть и найти доступные точки
  • Подключиться к точке, используя wpa_supplicant
  • Получить IP-адрес по DHCP
  • Настроить DNS-серверы, чтобы сайты открывались корректно

В графическом интерфейсе всё происходит автоматически, но поскольку мы выбрали этот путь, нужно будет действовать вручную.

Сканируем сеть с помощью специальной утилиты:

sudo iwlist scan

wifi14

Была обнаружена одна сеть с ESSID H30_CE550. Отлично, теперь мы будем использовать эту точку, чтобы подключить Wifi Ubuntu. Выполните команду:

wifi15

wpa_passphrase H30_CE550 > wpa.conf

После этого введите пароль и нажмите Enter, утилита создаст файл конфигурации для подключения. Файл можно было создать вручную, но так ведь проще.

Для самого же подключения будем использовать утилиту wpa_supplicant. Рассмотрим её синтаксис:

$ wpa_supplicant -D драйвер -i интерфейс -c файл_содениения

Драйверов, которые задаются опцией -D всего два: это устаревший wext и новый драйвер Wifi Ubuntu nl80211. Не стоит путать эти драйверы с драйверами устройств. Это универсальная прослойка между этими драйверами и системой. Пробуйте сначала второй, а если не работает, то тогда уже первый. Интерфейс вы можете посмотреть из вывода утилиты iwlist scan, в моём случае это wlp3s0b1, но скорее всего у вас будет wlan0. А имя файла - это тот файл, который мы только что создали. Запускаем:

sudo wpa_supplicant -Dnl80211 -iwlp3s0b1 -cwpa.conf

wifi16

Готово, второй этап подключения Wifi в Ubuntu завершён: мы в сети. Осталось получить IP-адрес и DNS, чтобы полноценно работать. Оставьте этот терминал в покое и откройте новый. Вообще, можно было запустить wpa_supplicant с опцией -B, но тогда бы мы потеряли над ней контроль. Если бы настройка Wifi Ubuntu 16.04 пошла не так, нам бы пришлось искать и убивать процесс, к тому же, у нас не было бы вывода программы.

Для получения IP по протоколу DHCP воспользуемся утилитой dhclient. Сначала найдём все доступные DHCP-серверы в сети:

sudo dhclient -r

wifi17

Затем просто запросим адрес для нашего интерфейса:

sudo dhclient -i wlp3s0b1

wifi18

На получение IP-адреса уйдет несколько секунд. После этого, выполнив ifconfig, мы можем убедиться, что у нас уже есть IP:

sudo ifconfig wlp3s0b1

wifi6

А также проверить сеть с помощью ping:

wifi7

Готово. Подключение к Wifi в Ubuntu через терминал завершено. На случай, если вы надумаете тестировать это при запущенном NetworkManager, снимите галочку с управления Wifi в апплете, чтобы программа не мешала.

После этого интерфейс будет программно заблокирован, разблокировать его можно командой:

sudo rfkill unblock wlan

Теперь можете выполнять подключение Wifi в Ubuntu через консоль. Всё будет работать. При следующем подключении вам не нужно создавать файл конфигурации заново, вы можете даже написать небольшой скрипт, чтобы соединение выполнялось автоматически.

Выводы

Надеюсь, что после прочтения этой статьи вы стали лучше понимать, как работает Wifi в Ubuntu, как выполняется установка драйвера и что делать, если Ubuntu не видит Wifi. Настройка Wifi Ubuntu 16.04 - довольно сложная задача, особенные трудности может вызвать поиск прошивок и подбор драйвера. Если у вас остались вопросы, спрашивайте в комментариях!

This page will assist you in setting up networking on Alpine Linux.

Note: You must be logged in as root in order to perform the actions on this page.

Contents

To set the system hostname:

echo "shortname" > /etc/hostname

Then, to activate the change:

hostname -F /etc/hostname

If you're using IPv6, you should also add the following special IPv6 addresses to your /etc/hosts file:

Tip: If you're going to use automatic IP configuration, such as IPv4 DHCP or IPv6 Stateless Autoconfiguration, you can skip ahead to Configuring DNS. Otherwise, if you're going to use a static IPv4 or IPv6 address, continue below.

For a static IP configuration, it's common to also add the machine's hostname you just set (above) to the /etc/hosts file.

Here's an IPv4 example:

And here's an IPv6 example:

Tip: For users of IPv4 DHCP: Please note that /etc/resolv.conf will be completely overwritten with any nameservers provided by DHCP. If DHCP does not provide any nameservers, then /etc/resolv.conf will still be overwritten, but will not contain any nameservers!

For a static IP address and static nameservers, use one of the following examples.

For IPv4 nameservers, edit your /etc/resolv.conf file to look like this:
The following example uses Google's Public DNS servers.

For IPv6 nameservers, edit your /etc/resolv.conf file to look like this:
The following example uses Hurricane Electric's public DNS server.

You can also use Hurricane Electric's public IPv4 DNS server:

Tip: If you decide to use Hurricane Electric's nameserver, be aware that it is 'Google-whitelisted'. What does this mean? It allows you access to many of Google's services via IPv6. (Just don't add other, non-whitelisted, nameservers to /etc/resolv.conf — ironically, such as Google's Public DNS Servers.) Read here for more information.

If you use IPv6, do the following to enable IPv6 now and at each boot:

modprobe ipv6 echo "ipv6" >> /etc/modules

Loopback Configuration (Required)

Note: The loopback configuration must appear first in /etc/network/interfaces to prevent networking issues.

To configure loopback, add the following to a new file /etc/network/interfaces :

The above works to set up the IPv4 loopback address (127.0.0.1), and the IPv6 loopback address ( ::1 ) — if you enabled IPv6.

Wireless Configuration

Ethernet Configuration

For the following Ethernet configuration examples, we will assume that you are using Ethernet device eth0 .

Initial Configuration

Add the following to the file /etc/network/interfaces , above any IP configuration for eth0 :

IPv4 DHCP Configuration

Add the following to the file /etc/network/interfaces , below the auto eth0 definition:

By default, the busybox DHCP client (udhcpc) requests a static set of options from the DHCP server. If you need to extend this set, you can do so by setting some additional command line options for the DHCP client, via the udhcpc_opts in your interface configuration. The following example requests domain-search option:

For a complete list of command line options for udhcpc, see this document.

IPv4 Static Address Configuration

Add the following to the file /etc/network/interfaces , below the auto eth0 definition:

Since Alpine 3.13 must be:

Additional IP addresses

Since Alpine 3.13 must be:

IPv6 Stateless Autoconfiguration

Add the following to the file /etc/network/interfaces , below the auto eth0 definition:

IPv6 Static Address Configuration

Add the following to the file /etc/network/interfaces , below the auto eth0 definition:

Since Alpine Linux 3.13 must be as:

Example: Dual-Stack Configuration

This example shows a dual-stack configuration.

Take care since Alpine 3.13 must be as:

Install iptables/ip6tables

apk add iptables

apk add ip6tables

  • To install the man pages for iptables and ip6tables:

apk add iptables-doc

Configure iptables/ip6tables

Save Firewall Rules

For iptables

rc-update add iptables

For ip6tables

rc-update add ip6tables

Changes made to /etc/network/interfaces can be activated by running:

If you did not get any errors, you can now test that networking is configured properly by attempting to ping out:

For an IPv6 traceroute ( traceroute6 ), you will first need to install the iputils package:

apk add iputils

Then run traceroute6 :

iproute2

You may wish to install the 'iproute2' package (note that this will also install iptables if not yet installed)

apk add iproute2

This provides the 'ss' command which is IMHO a 'better' version of netstat.

Show listening tcp ports:

Show listening tcp ports and associated processes:

Show listening and established tcp connections:

Show socket usage summary:

Show more options:

drill

You may also wish to install 'drill' (it will also install the 'ldns' package) which is a superior (IMHO) replacement for nslookup and dig etc:

Then use it as you would for dig:

To perform a reverse lookup (get a name from an IP) use the following syntax:

This page describes building a Wireless Access Point with two wired ethernet ports for building a home router that connects to the internet with one wired port, and an internal LAN with the second wired port and the on-board WiFi.

The intent is to provide this:

Overview

I generally run Debian and when forced by Red Hot Irons, Red Hat. This is my first foray into Alpine. So far I am very impressed. I mirrored the 3.12 armhf repos so I had things local when I needed them. Word to the wise, it comprises 13 GB of apk files.
One *really* nice feature of Alpine is apk, the yum/apt replacement:

  • It is simple and to the point.
  • The same tool provides *repo* level dependency reporting!
  • Install of single packages without repo signing (I never did get the signing correct, but I can install).

Prepare

  • Obtain a microSD card (or HDD) you can wipe the data from. We will assume it is /dev/sdc.
  • Make a 256M FAT16 partition (sudo mkfs.vfat -n ALPBOOT /dev/sdc1)
  • The rest of the device can be ext2 (ext3/4 on HDD) (sudo mke2fs -m1 -L alext3 /dev/sdc2).
  • Untar the alpine-rpi-3.12.3-armhf.tar.gz and copy all of the files to the fat16 partition which can be as large as 2G.
  • Make sure you have all the packages from the package list below installed on the SD card. This will save you lots of time.
  • Add this to usercfg.txt at the root of the FAT16 partition:
  • This is the contents of cmdline.txt:

First Boot

  • Put the SD into the pi zero
  • Connect the serial port
  • Run minicom with the parameters set to 115200,n,8,1, no flow control.
  • Power up the Pi.

Copy Root

  • mkdir /stage
  • mount /dev/sda2 /stage
  • for d in $(ls -1 /|grep -v 'media\|stage\|dev\|proc\|sys'); do cp -a /$d /stage; done
  • modules are loop mounted to /.modloop, and lib/modules is symlinked to that, so
  • rm /stage/lib/modules
  • cp -a /.modloop /stage/lib/modules
  • Fix cmdline.txt
  • reboot

Install

  • verify you are now operating from the ext2 filesystem where you copied the rootfs.
  • install openssh, openssh-server, openssh-client, openssh-server-common,
  • install dnsmasq, ethtool, hostapd*, busybox extras, iptables*, iw,net-tools, tree, wireless-tools.
  • edit all the configurations supplied here.
ssh config

The allowed users are not normal names since I want the names to be a little obfuscated. Not that it really matters, since this is a key driven setup
AddressFamily inet
ListenAddress 0.0.0.0
HostKey /etc/ssh/ssh_host_rsa_key
LogLevel INFO
LoginGraceTime 30
PermitRootLogin no
StrictModes yes
AllowUsers Som123X Extern4524User
PubkeyAuthentication yes
AuthorizedKeysFile /etc/ssh/authorized_keys
HostbasedAuthentication yes
IgnoreUserKnownHosts yes
IgnoreRhosts yes
PasswordAuthentication no
ChallengeResponseAuthentication no
AllowTcpForwarding yes
GatewayPorts yes
X11Forwarding no

dnsmasq.conf

/etc/dnsmasq.conf
This has two subnets. One for normal dhcp, the other for pseudo static - dhcp provided by MAC. One example here.
interface=br0
except-interface=eth0
dhcp-range=subnet0,192.168.0.10,192.168.0.100,255.255.255.0,24h
dhcp-range=subnet1,192.168.0.4,192.168.0.6,255.255.255.0,24h
bind-interfaces

/etc/hosts

dnsmasq provides DNS answers from the hosts file. Nice.
127.0.0.1 localhost localhost.localdomain

1 localhost localhost.localdomain

192.168.0.3 wireless
192.168.0.4 nas
192.168.0.5 mpd

hostapd.conf

/etc/hostapd/hostapd.conf
interface=wlan0
bridge=br0
hw_mode=g
channel=7
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
ssid=Whatever
wpa_passphrase=YouMakeItUp

interfaces

/etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp


iface eth1 inet manual
iface wlan0 inet manual

auto br0
iface br0 inet static

Permissive iptables

Do NOT use this connected to the internet! There is NO protection.
This is my stopopen in my replacement iptables
iptables -P INPUT ACCEPT
< iptables -F INPUT
iptables -P OUTPUT ACCEPT
iptables -F OUTPUT
iptables -P FORWARD ACCEPT
iptables -F FORWARD
iptables -F -t nat
iptables -F

О Alpine Linux

Распределение предназначено для использования в средах, где производительность и безопасность являются главными приоритетами:

Дистрибутив предлагает необычный набор функций. Во-первых, использование библиотеки musl C вместо более популярной библиотеки GNU C. Во-вторых, приложение Busybox для инструментов командной строки вместо инструментов GNU. В-третьих, управление службами через OpenRC вместо systemd или SysV init.

Распределение также обеспечивает некоторую дополнительную безопасность через независимые от позиции исполняемые файлы (PIE). Всем известно, как они затрудняют некоторые общие способы атаки на память.

Существует несколько сборок и выпусков Alpine.

Существует несколько сборок и выпусков

Во-первых, специальные загрузки для запуска дистрибутива на физическом оборудовании и в виртуальных средах. Во-вторых, различные сборки в зависимости от того, хотим ли мы полностью работающую серверную операционную систему или более минимальную базу. В-третьих, существует несколько вариантов архитектуры для процессоров x86 (32-разрядных и 64-разрядных), ARM, PPC64 и s390x.

Расширенная версия предлагает большинство инструментов из коробки и загружает себя в оперативную память, чтобы предложить лучшую производительность. Размер файла составляет 398 МБ.

Стоит отметить, что все выпуски дистрибутива довольно минимальны. Соответственно, предназначены для использования на серверах и встроенных устройствах, а не на рабочих станциях. Дистрибутив представляет собой скорее платформу для создания чего-либо, чем готовое решение или устройство.

Live media загружается практически сразу и представляет нам текстовую консоль. Мы можем войти в корневой аккаунт без пароля.

Консоль отображает несколько полезных советов, таких как, где найти документацию Alpine онлайн и что мы можем запустить установщик системы, запустив setup-alpine команда. На живых носителях не так много инструментов.

Впечатления

Локально установленная копия Alpine загружается в текстовую консоль, где мы можем войти в систему как пользователь root. Инструменты пользователя предоставлены Busybox, а программное обеспечение связано с облегченной библиотекой musl C.

Дистрибутив использует OpenRC в качестве менеджера сервисов и работает на версии 4.19 ядра Linux. Здесь нет графического отображения, страниц справочника и компилятора.

Начало работы с текстовой консолью Alpine

Alpine быстро загружается и выключается, время его запуска, вероятно, составляет менее четверти большинства распространенных дистрибутивов. Дистрибутив использует около 33 МБ ОЗУ с установкой по умолчанию расширенной версии и занимает всего 675 МБ дискового пространства. Еще 2 ГБ дискового пространства занимают пространство подкачки дистрибутива.

Подробная инструкция по установке Alpine Linux в данной статье.

Особенности

Alpine Linux отличается в некоторых важных отношениях по сравнению с большинством других дистрибутивов.

Вот основные из них:

Alpine необычайно мал и требует мало ресурсов. Даже для расширенной расширенной версии, требуется менее 100 МБ ОЗУ и менее гигабайта дискового пространства. Следует уточнить, это после того, как все мои службы были включены. Кроме того, дистрибутив поставляется с некоторыми функциями безопасности, такими как PIE. К тому же, отсутствуют службы, которые не нужны дистрибутиву для запуска.

Завершение

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

Это может сделать Alpine менее привлекательным для новичков или пользователей настольных компьютеров. Зато, это сильный аргумент в пользу использования Alpine Linux на серверах и встраиваемых устройствах, где надежность важнее, чем удобство.

Читайте также: