Если инфорация оказалась интересна и/или полезна, не побрезгуйте, оставьте комментарий ;)
Показаны сообщения с ярлыком Debian. Показать все сообщения
Показаны сообщения с ярлыком Debian. Показать все сообщения

воскресенье, 6 декабря 2020 г.

Wi-Fi-адаптер на чипе Realtek в OSMC (Debian, Ubuntu). Как заставить работать

-------------------------------------

2021-09-14

В августовском обновлении системы пришло новое ядро 5.10.32. С ним драйвер из указанного ниже репозитория Гитхаба не собирается. Очень надеюсь, что автор репозитория модифицирует код под новое ядро. Пока приведенная ниже схема не работает (на этапе компиляции).

Это обновление принесло и еще одну проблему - сломался SSH-доступ к OSMC. Даже чистая установка не исправляет проблему. А без доступа по SSH драйвер можно собирать только локально подключив клавиатуру, монитор и кабель с интернетом.

 Поэтому перешел на LibreElec. В нем драйверы Realtek есть в базе, и автор не грозится их удалить. Есть у системы и свои особенности, например, слабые возможности командной строки. Отключена команда apt-get. Нельзя доставить пакеты, например, редактор vim. 

-------------------------------------

Моя Малинка дала сбой. Перестала загружаться. Печальный смайлик и дальше всё. Логи ясности не внесли. Не нашел даже подходящей строки для поиска в Гугле. Абстрактные запросы тоже ничего не дали. fsck криминала не нашел. Принял решение обновить систему. Пришлось побороться с неразрешенными зависимостями и невозмжностью обновить некоторые файла. Склоняюсь к тому, что либо флешка уже начала дохнуть, либо файловая система накопила ошибки от периодических выключений без "мягкого" выключения.

Не относится напрямую к настройке Wi-Fi. как запустить fsck для корневого раздела:

1. Можно сделать файл в корне и перегрузить устройство:

osmc@osmc:~$ sudo touch /forcefsck
osmc@osmc:~$ sudo reboot

2. Подправить /etc/fstab, заменив для раздела 0 на 1:

osmc@osmc:~$ sudo nano /etc/fstab
osmc@osmc:~$ /dev/mmcblk0p1  /boot    vfat     defaults,noatime    0   0
osmc@osmc:~$ /dev/mmcblk0p2  /    ext4      defaults,noatime    0   1

Теперь к основной теме статьи. Тут я писал, что в новом ядре для OSMC 4.19 был удален драйвер для чипов беспроводных адаптеров Realtek. Тогда моим предложением было откатиться на старую версию ядра 4.14. Но в этот раз у меня такой возможности не было. Система была полностью обновлена.

Итак. Подключаем Raspberry к проводной сети.

Точка старта. Общий ход сборки и установки драйвера:
https://discourse.osmc.tv/t/usb-wifi-device-wth-rtl8812au-chipset-is-not-working/84070

Прямое следование инструкции мне не помогло.

1. Устанавливаем необходимые пакеты:

osmc@osmc:~$ sudo apt-get install  rbp2-headers-$(uname -r)
osmc@osmc:~$ sudo apt-get install  rbp2-source-$(uname -r)
osmc@osmc:~$ sudo apt install libc6-dev libc-dev make binutils
osmc@osmc:~$ sudo apt install gcc
osmc@osmc:~$ sudo apt install git
osmc@osmc:~$ sudo apt install usbutils
osmc@osmc:~$ apt-get install build-essential dkms

Одной командой поставить не получилось. Система писала, что не ясно, какой GCC ставит

2. Выясняем, какой драйвер нам нужен. В моем адаптере чип RTL8192EU. Именно для него и надо искать драйвер

osmc@osmc:~$ lsusb
Bus 001 Device 005: ID 05ac:0256 Apple, Inc.
Bus 001 Device 004: ID 0bda:818b Realtek Semiconductor Corp. RTL8192EU 802.11b/g/n WLAN Adapter
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

 3. Делаем каталог, в котором будем работать:

osmc@osmc:~$ cd ~
osmc@osmc:~$ mkdir ~/realtek
osmc@osmc:~$ cd ~/realtek

4. Теперь ищем и копируем драйвер. У автора исходной статьи был адаптер на чипе RTL8812AU. По его ссылке лежит драйвер, работающий именно с этим чипом. Я не обратил на это внимание, собрал драйвер, и у меня ничего не заработало. Потратил время на поиск причины.

Да, можно открыть Makefile и отредактировать его, выбрав сборку драйвера для другого чипа. Но в моем случае это приводило к ошибке сборки. Поэтому рекомендую просто искать правильный драйвер. Моя ссылка поиска (ключевые слова “RTL8192E linux arm”)
https://github.com/search?q=RTL8192E+linux+arm 

Прежде чем собирать драйвер, изучите Makefile, чтобы не тратить время на сборки впустую:

 а. Должен быть выбран правильный чип. Только напротив него должен стоять "y":

CONFIG_MULTIDRV = n
CONFIG_RTL8188E = n
CONFIG_RTL8812A = n
CONFIG_RTL8821A = n
CONFIG_RTL8192E = y
CONFIG_RTL8723B = n
CONFIG_RTL8814A = n
CONFIG_RTL8723C = n
CONFIG_RTL8188F = n
CONFIG_RTL8188GTV = n
CONFIG_RTL8822B = n
CONFIG_RTL8723D = n
CONFIG_RTL8821C = n
CONFIG_RTL8710B = n
CONFIG_RTL8192F = n

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

б. Проверяем тип интерфейса, в моем случае это USB:
######################### Interface ###########################
CONFIG_USB_HCI = y
CONFIG_PCI_HCI = n
CONFIG_SDIO_HCI = n
CONFIG_GSPI_HCI = n

в. Платформа, для которой будет сборка:





###################### Platform Related #######################
CONFIG_PLATFORM_I386_PC = n
CONFIG_PLATFORM_ARM_RPI = y
CONFIG_PLATFORM_ANDROID_X86 = n
CONFIG_PLATFORM_ANDROID_INTEL_X86 = n
CONFIG_PLATFORM_JB_X86 = n
CONFIG_PLATFORM_ARM_S3C2K4 = n
CONFIG_PLATFORM_ARM_PXA2XX = n
CONFIG_PLATFORM_ARM_S3C6K4 = n
CONFIG_PLATFORM_MIPS_RMI = n
CONFIG_PLATFORM_RTD2880B = n
CONFIG_PLATFORM_MIPS_AR9132 = n
CONFIG_PLATFORM_RTK_DMP = n
CONFIG_PLATFORM_MIPS_PLM = n
CONFIG_PLATFORM_MSTAR389 = n
CONFIG_PLATFORM_MT53XX = n
CONFIG_PLATFORM_ARM_MX51_241H = n
CONFIG_PLATFORM_FS_MX61 = n
CONFIG_PLATFORM_ACTIONS_ATJ227X = n
CONFIG_PLATFORM_TEGRA3_CARDHU = n
CONFIG_PLATFORM_TEGRA4_DALMORE = n
CONFIG_PLATFORM_ARM_TCC8900 = n
CONFIG_PLATFORM_ARM_TCC8920 = n
CONFIG_PLATFORM_ARM_TCC8920_JB42 = n
CONFIG_PLATFORM_ARM_TCC8930_JB42 = n
CONFIG_PLATFORM_ARM_RK2818 = n
CONFIG_PLATFORM_ARM_RK3066 = n
CONFIG_PLATFORM_ARM_RK3188 = n
CONFIG_PLATFORM_ARM_URBETTER = n
CONFIG_PLATFORM_ARM_TI_PANDA = n
CONFIG_PLATFORM_MIPS_JZ4760 = n
CONFIG_PLATFORM_DMP_PHILIPS = n
CONFIG_PLATFORM_MSTAR_TITANIA12 = n
CONFIG_PLATFORM_MSTAR = n
CONFIG_PLATFORM_SZEBOOK = n
CONFIG_PLATFORM_ARM_SUNxI = n
CONFIG_PLATFORM_ARM_SUN6I = n
CONFIG_PLATFORM_ARM_SUN7I = n
CONFIG_PLATFORM_ARM_SUN8I_W3P1 = n
CONFIG_PLATFORM_ARM_SUN8I_W5P1 = n
CONFIG_PLATFORM_ACTIONS_ATM702X = n
CONFIG_PLATFORM_ACTIONS_ATV5201 = n
CONFIG_PLATFORM_ACTIONS_ATM705X = n
CONFIG_PLATFORM_ARM_SUN50IW1P1 = n
CONFIG_PLATFORM_ARM_RTD299X = n
CONFIG_PLATFORM_ARM_LGE = n
CONFIG_PLATFORM_ARM_SPREADTRUM_6820 = n
CONFIG_PLATFORM_ARM_SPREADTRUM_8810 = n
CONFIG_PLATFORM_ARM_WMT = n
CONFIG_PLATFORM_TI_DM365 = n
CONFIG_PLATFORM_MOZART = n
CONFIG_PLATFORM_RTK119X = n
CONFIG_PLATFORM_RTK119X_AM = n
CONFIG_PLATFORM_RTK129X = n
CONFIG_PLATFORM_RTK390X = n
CONFIG_PLATFORM_NOVATEK_NT72668 = n
CONFIG_PLATFORM_HISILICON = n
CONFIG_PLATFORM_HISILICON_HI3798 = n
CONFIG_PLATFORM_NV_TK1 = n
CONFIG_PLATFORM_NV_TK1_UBUNTU = n
CONFIG_PLATFORM_RTL8197D = n
CONFIG_PLATFORM_AML_S905 = n
CONFIG_PLATFORM_ZTE_ZX296716 = n


 В некоторых репозиториях, найденных на GitHub, не было нужной мне платформы "ARM_RPI" (Raspberry PI 2)

Итак, мне подошел репозиторий https://github.com/lord2y/rtl8192eu-arm-linux-driver. Копируем его себе:
osmc@osmc:~$ git clone https://github.com/lord2y/rtl8192eu-arm-linux-driver

5. Нужно сделать ссылку на заголовки ядра:
osmc@osmc:~$ sudo ln -s /usr/src/rbp2-headers-$(uname -r) /lib/modules/$(uname -r)/build

6. Этот пункт потребуется, если будет та же ошибка, что у автора исходной инструкции (я не переделывал его вывод команды, на смысл это не влияет):

osmc@osmc:~/ rtl8812au$ make
make ARCH=arm CROSS_COMPILE= -C /lib/modules/4.19.55-6-osmc/build M=/home/osmc/rtl8812au modules
make[1]: Entering directory '/usr/src/rbp2-headers-4.19.55-6-osmc'
     CC [M] /home/osmc/rtl8812au/core/rtw_cmd.o
In file included from ./include/linux/compat.h:16:0,
                         from ./include/linux/ethtool.h:17,
                         from ./include/linux/netdevice.h:41,
                         from /home/osmc/rtl8812au/include/osdep_service_linux.h:35,
                         from /home/osmc/rtl8812au/include/osdep_service.h:41,
                         from /home/osmc/rtl8812au/include/drv_types.h:32,
                         from /home/osmc/rtl8812au/core/rtw_cmd.c:22:
./include/linux/if.h:28:54: fatal error: sys/socket.h: No such file or directory
 #include <sys/socket.h> /* for struct sockaddr. */
                                                                          ^
compilation terminated.


Ошибка в наличие файла заголовков socket.h. Если это произошло, то надо скачать  исходники ядра с kernal.org.

Нужно выбрать правильную версию исходников. В моем случае ядро 4.19.122. Проверить можно командой "uname -r".

osmc@osmc:~/ cd ~/realtek    
osmc@osmc:~/ wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.19.122.tar.xz
osmc@osmc:~/ tar xf linux-4.19.122.tar.xz

Убираем старый каталог ../include/linux и копируем туда содержимое соответствующего каталога распакованного архива.
osmc@osmc:~/ sudo mv /usr/src/rbp2-headers-4.19.122-2-osmc/include/linux/ /usr/src/rbp2-headers-4.19.122-2-osmc/include/linux-bak
osmc@osmc:~/ sudo cp -ar linux-4.19.122/include/linux /usr/src/rbp2-headers-4.19.122-2-osmc/include/

Проверяем, что всё на месте:
osmc@osmc:~/ ls /usr/src/rbp2-headers-4.19.122-2-osmc/include/linux

 7. Итак, наконец, сборка. Подробная инструкция есть в репозитории https://github.com/lord2y/rtl8192eu-arm-linux-driver:

osmc@osmc:~/ cd ~/realtek/rtl8192eu-arm-linux-driver/
osmc@osmc:~/ ls
osmc@osmc:~/ less Makefile
osmc@osmc:~/ make ARCH=arm
osmc@osmc:~/ make install
osmc@osmc:~/ sudo make install

Процедура сборки занимает некоторое время.

8. Проверяем, что модуль ядра поставился:

osmc@osmc:~$ lsmod |grep 8192
8192eu               1445888  0
cfg80211              651264  1 8192eu
snd                    81920  3 snd_timer,snd_bcm2835,snd_pcm

 

Обновление

---

Если в предыдущем выводе только последняя строка, то надо выполнить

osmc@osmc:~$ modprobe 8192eu

---

Проверяем, что появился новый интерфейс в ifconfig:

osmc@osmc:~$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.102  netmask 255.255.255.0  broadcast 192.168.1.1
        ether b8:27:eb:01:e6:26  txqueuelen 1000  (Ethernet)
        RX packets 1921  bytes 282385 (275.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1087  bytes 206934 (202.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 144  bytes 7228 (7.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 144  bytes 7228 (7.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.3  netmask 255.255.255.0  broadcast 192.168.1.1
        ether 40:a5:ef:07:da:44  txqueuelen 1000  (Ethernet)
        RX packets 38  bytes 6940 (6.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 63  bytes 16454 (16.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

9. Если всё хорошо, драйвер установился и наша карта заработала, надо настроить автоматическую пересборку модуля при обновлении ядра.

Удаляем модули:

osmc@osmc:~$ dkms uninstall rtl8192eu/1.0 
osmc@osmc:~$ dkms remove rtl8192eu/1.0 --all

И заново собираем через dkms. Первая команда копирует код в дерево, вторая собирает и устанавливает модуль ядра:
osmc@osmc:~$ dkms add .
osmc@osmc:~$ dkms install rtl8192eu/1.0

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

https://gist.github.com/kylemanna/6930087 

Сканируем сети:

osmc@osmc:~$ sudo connmanctl scan wifi
Scan completed for wifi

Обновление

---

Во второй раз у меня выскочила такая ошибка
Error /net/connman/technology/wifi No carrier


Лечение найдено тут

osmc@osmc:~$ sudo connmanctl en
able wifi
osmc@osmc:~$ sudo connmanctl technologies
osmc@osmc:~$ sudo rfkill unblock wifi
osmc@osmc:~$ sudo ip link set wlan0 up
osmc@osmc:~$ sudo connmanctl
> disable wifi
> enable wifi
> agent on

Программа rfkill скорее всего не установлена. Ее надо установить через apt get

После этого повторяем команду

osmc@osmc:~$ sudo connmanctl scan wifi
Scan completed for wifi

---

Смотрим, что нашли:

osmc@osmc:~$ sudo connmanctl services
*AO Wired                ethernet_b827eb01e626_cable
    Mgts10               wifi_40a5ef07da44_4d6774733130_managed_psk
    MGTS_GPON_BEDD       wifi_40a5ef07da44_4d4754535f47504f4e5f42454444_managed_psk
    MGTS_GPON_0777       wifi_40a5ef07da44_4d4754535f47504f4e5f30383235_managed_psk
    NETGEAR              wifi_40a5ef07da44_4e455447454152_managed_psk
    Keenetic-8888        wifi_40a5ef07da44_4b65656e657469632d33393234_managed_psk
    MGTS_16              wifi_40a5ef07da44_4d4754535f3136_managed_psk
    MGTS_GPON_9999       wifi_40a5ef07da44_4d4754535f47504f4e5f38353136_managed_ps

Смотрим информацию какой-нибудь сети:

osmc@osmc:~$ sudo connmanctl services wifi_40a5ef07da44_4d6774733130_managed_psk
/net/connman/service/wifi_40a5ef07da44_4d6774733130_managed_psk
  Type = wifi
  Security = [ psk ]
  State = idle
  Strength = 68
  Favorite = False
  Immutable = False
  AutoConnect = False
  Name = Mgts10
  Ethernet = [ Method=auto, Interface=wlan0, Address=40:A5:EF:07:DA:44, MTU=1500 ]
  IPv4 = [  ]
  IPv4.Configuration = [ Method=dhcp ]
  IPv6 = [  ]
  IPv6.Configuration = [ Method=off ]
  Nameservers = [  ]
  Nameservers.Configuration = [  ]
  Timeservers = [  ]
  Timeservers.Configuration = [  ]
  Domains = [  ]
  Domains.Configuration = [  ]
  Proxy = [  ]
  Proxy.Configuration = [  ]
  mDNS = False
  mDNS.Configuration = False
  Provider = [  ]
osmc@osmc:~$


Редактируем настройки подключения к выбранной сети:

osmc@osmc:~$ sudo nano /var/lib/connman/wifi_40a5ef07da44_4d6774733130_managed_psk.config
  [wifi_40a5ef07da44_4d6774733130_managed_psk]
  Type = wifi
  Name = wifi_40a5ef07da44_4d6774733130_managed_psk
  Passphrase = <passphrase>

Подключаемся:
osmc@osmc:~$ connmanctl connect wifi_40a5ef07da44_4d6774733130_managed_psk
Connected wifi_40a5ef07da44_4d6774733130_managed_psk

11. Всё можно идти в графический интерфейс и настраивать систему. 

 Если есть вопросы, пишите, если что-то пошло не так, вы нашли как это исправить, тем более пишите. 

P.S.

Скомпилированные драйверы под разные ядра. К сожалению, с текущим 5.10.32-2-osmc у меня не завелся. Ссылка на будущее.

http://downloads.fars-robotics.net/wifi-drivers/8192eu-drivers/

Найдено тут.

воскресенье, 23 февраля 2014 г.

Не грузится Ubuntu после обновления с ошибкой "Filesystem check or mount failed"

Наступил на грабли. Случайно выключил сервер, когда обновление ОС не было завершено. При перезагрузке стал получать следующее сообшение:

Filesystem check or mount failed. A maintenance shell will now be started. CONTROL-D will terminate this shell and continue booting after re-trying filesystems. Any further errors will be ignored root@ubuntu-computername:~#

Выполнение команды:
fsck -f

к успеху не приводит. Ошибок нет. А результат загрузки тот же.

Реальная причина к файловой системе отношения не имеет. На самом деле слетела база менеджера пакетов. Хочу обратить внимание - корневая файловая система находится в режиме "Только для чтения". Для исправления нужно всего несколько команд:

Переводим файловую систему в режим чтение-запись:
mount -o remount,rw /

Основная команда для исправления проблемы:
dpkg --configure -a

Возвращаем ФС в исходное положение. У меня не сработала, появилось сообщение, что ФС занята. Но на результат это не влияет:
mount -o remount,ro / 

Вот эту команду лучше выполнить (сбрасываем кэши на диски):
sync

Ну кто ж ее не знает:
reboot

Подсмотрено здесь.

четверг, 17 декабря 2009 г.

Перенаправление вывода на консольный порт

Столкнулся с задачей. Есть модуль для межсетевого экрана - обычный компьютер со специализированным ПО. Надо поставить Linux и некоторое ПО. Из доступных портов:
2 Ethernet 1000Gb/s
1 консольный порт
1 VGA порт.

Мышь и клавиатуру подключить некуда. Что делать? ни одного открытого USB порта (DVD-привод не подключить).

Вытаскиваем винчестер. Подключаем его к другому компьютеру (я использовал EeePC 701) и тихо-спокойно ставим Linux (я брал Debian).

После установки кое-что надо исправить. В модуле только один диск. Соответсвенно это будет sda. Правим /etc/fstab.

Исправляем настройки загрузчика grub (/boot/grub/menu.lst)
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.18-6-686 root=/dev/sda1 ro

Теперь думаем о консоли. При загрузке биоса скорость порта высталена на 9600. Это очень неудобно для работы (медленно). Поэтому я выбрал скорость 38400, пожертвовав выводом БИОСа.

Необходимые правки.

1. Вывод меню Grub
В файле /boot/grub/menu.lst после секции с паролем вставляем следующие две строки:

## password ['--md5'] passwd
# If used in the first section of a menu file, disable all interactive editing
# control (menu entry editor and command-line) and entries protected by the
# command 'lock'
# e.g. password topsecret
# password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/
# password topsecret
serial --unit=0 --speed=38400 --word=8 --parity=no --stop=1
terminal --timeout=10 serial console
Все параметры и цифры должны быть понятны. Это то, что потом выставим в терминальном клиенте. Если все в порядке, перед меню Grub будет появлять предложение нажать любую клавишу, чтобы система могла определить, через какой интерфейс идет с ней общение.

2. Вывод процесса загрузки и всего остального, что следует за меню Grub.
Все в том же файле в свойствах пуктов меню в строку с kernel вписываем параметры консоли:
title           Debian GNU/Linux, kernel 2.6.18-6-686
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.18-6-686 root=/dev/sda1 ro console=tty0 console=ttyS0,38400n8
initrd          /boot/initrd.img-2.6.18-6-686
savedefault

Если железо поддерживает режим одновременной работы через монитор и консольный порт, то вывод будет перенаправляться на оба устройства. Поэтому вам не придется что-либо перенастраивать при переподключении диска к другой машине, либо при удалении/добавлении монитора.

3. Аутентификация через консоль (вывод запроса логина и пароля в консоль).

Открываем файл /etc/inittab и вписываем (а скорее всего просто раскомментируем строки)
T0:23:respawn:/sbin/getty -L ttyS0 38400 vt100
T1:23:respawn:/sbin/getty -L ttyS1 38400 vt100
На этом настройка завершена. Перезагружаемся и проверяем.

Адаптированный вариант этой статьи

Установка драйверов сетевой карты Intel Corporation 82572EI Gigabit Ethernet Controller в Debian/Ubuntu

Debian Etch карту не распознал.
После установки без сетевого интерфейса команда lspci показывала следующую информацию об адаптере:

02:00.0 Ethernet controller: Intel Corporation 82572EI Gigabit Ethernet Controller (rev 06)

Для этого адаптера подходит драйвер e1000e. Взять можно с его домашней страницы на sourceforge.net.

Так как предполагается, что сети на сервере нет, то драйвер надо скачать и положить на сервер, например в домашнюю директорию (~) или в /tmp.

Далее несколько простых команд.
1. Устанавливаем необходимые для сборки пакеты (необходимо вставить установочный диск Debian в привод):
# aptitude install module-assistant build-essential

2. Проверяем, что все на месте:
# m-a update
# m-a prepare

3. Распаковываем архив:
# cd ~/
# tar -xzvf e1000e-x.x.x.x.tar.gz
Вместо x.x.x.x будет номер текущей версии драйвера

4. Собираем драйвер
# cd ~/e1000e-x.x.x.x/src
# make install
# modprobe e1000e

Перегружаемся. Карты должны работать.

Хочу отметить, что мне потребовалось добавить в черный список драйвер для предыдущих поколений этих сетевых адаптеров, так как он загружался первым и мешал новому драйверу. Что надо сделать. Открываем файл черного списка:

# vim /etc/modprobe.d/blacklist

И добавляем в его конец строку
blacklist e1000

По мотивам этой ветки форума

Настройка NAT

Интересная статья (и дискуссия) о настройке NAT (для чайников).
И еще одна

среда, 16 декабря 2009 г.

Список установленных пакетов (Debian/Ubuntu)


Список всех установленных пакетов:

$ dpkg --get-selections
adduser install
alsa-base install
alsa-utils install
apache2 install
apache2-mpm-prefork install
apache2-utils install
apache2.2-common install
apt install
apt-utils install


Можно перенаправить в файл (package.list):
$ dpkg --get-selections > ~/package.list

Или сразу вывести в удобном для просмотра виде:

$ dpkg --get-selections |  less


Фильтрация (в примере ищем установленные php-модули)
$ dpkg --get-selections | grep php
libapache2-mod-php5 install
php-db install
php-pear install
php-sqlite3 install
php5 install
php5-cli install
php5-common install
php5-gd install
php5-memcache install
php5-mysql install
php5-sqlite install
php5-sqlite3 install
php5-xsl install

Информация о конкретном пакете (в примере это php5-gd):

$ dpkg -L php5-gd
/.
/usr
/usr/lib
/usr/lib/php5
/usr/lib/php5/20060613
/usr/lib/php5/20060613/gd.so
/usr/share
/usr/share/doc
/etc
/etc/php5
/etc/php5/conf.d
/etc/php5/conf.d/gd.ini
/usr/share/doc/php5-gd



Источник

вторник, 14 июля 2009 г.

Альтернативный драйвер WiFi для EeePC

После очередного обновления (в том числе и ядра) системы у меня перестал корректно работать WiFi. Если грузиться с включенным модулем, все отлично. Но если загрузиться с отключенным или выключить/включить его функциональными клавишами - все. Работать перестает. На несколько секунд лампочка загорается и гаснет. Если проверит ACPI-скрипт, обнаруживается следующее. Скрипт подгружает модули. Ждет немного и смотрит, загрузились ли они. Если нет, модули выгружаются и лампочка гаснет. Статус "Выключено".

Опианные на сайте проекта танцы с бубном не помогли. Найденно решение - альтернативный драйвер ath5k. У меня работает без нареканий. Драйвер понравиться любителям СПО. Он полностью свободный. Лично для меня это не аргумент.

Драйвер работает на ядре 2.6.29 в Sid и Lenny (как обратный порт).


Мое ядро 2.6.26. И на нем все работает. Итак, что делать.
  1. Ставим build-essential и linux-headers-2.6-686 (или linux-headers-2.6-486, если у вас стоит ядро 486). Как поставить (выполнять из-под root):

    # apt-get install build-essential linux-headers-2.6-686

  2. Загрузить последнюю версию compat-wireless-old.tar.bz2 и распаковать

    $ tar -jxvf compat-wireless-old.tar.bz2

  3. Автор применял патч http://thread.gmane.org/gmane.linux.kernel.wireless.general/27753. Мне этого делать не потребовалось.

  4. Переходим в директорию с распакованными исходниками. Выполняем команду make. Не из-под root.

  5. Из-под root выполяем команду make install.

  6. The latest ath5k modules are now installed. Все. Новые модули стоят

Далее надо либо удалить из системы пакет madwifi-tools, либо подправить /etc/modprobe.d/madwifi.conf, закомментировав (символ # в начале строки) все модули от madwifi.


Клавиши Fn+F2 работают с eeepc-acpi-scripts версии 1.1.0. Так что проверьте, стоит ли она.

Если настройка интерфесов ручная - подравьте файл /etc/network/interfaces, заменив ath0 на wlan0. Если используете NetworkManager или его альтернативу, ничего не добавляйте в указанный файл.

После этого у меня все заработало.

Не удаляйте pciehp из /etc/modules. Нужно для работу Fn-включения..

Да. Еще. Я использую Wicd. Чтобы он корректно видел новый интерфейс (имя интерфейса сменилось), надо в закладке настройки интерфейсов вписать правильное новое название wlan0

вторник, 24 июня 2008 г.

Установка Debian на eee-pc

Основной документ, из которого взяты знания: http://wiki.debian.org/DebianEeePC Стастья дополняется и исправляется по мере настройки системы...

1. Как ставить:

http://wiki.debian.org/DebianEeePC/HowTo/Install Скачиваем образ для сетевой установки http://eeepc.debian.net/images/debian-eeepc.img Заливаем его на флешку (делается на большом брате):
dd if=debian-eeepc.img of=/dev/<YOUR-USB-DEVICE>
Команда dd убьет все данные на флешке (как, впрочем и существующую на ней файловую систему). Так что не забудьте сохранить с нее все ценное. Не знаю, как быть Windows-пользователям, наверное можно попробовать syslinux (http://freshmeat.net/projects/syslinux/). Но у меня нет опыта общения с этой чудо-программой. Образ debian-eeepc.img занимает всего 16 мегабайт. Соответственно, чтобы поставить Debian вам не потребуется искать гиговые флешки или usb-приводы. Вставляем флешку в eee, включаем его. Он сам загрузиться с флешки, ничего нажимать не надо. В приглашении загрузчика в первый раз попробуйте просто нажать Enter. У меня возникли проблемы с изображением. весь экран был в полоску, прочитать сообщения программы установки было невозможно. Если у вас такая же проблема, перегрузите компьютер и в приглашении загрузчика введите команду install vga=771 <enter>. В этот раз загрузка через некоторое остановиться и попросит выбрать разрешение экрана, либо запустить scan (что это мы и делаем). После этого в повторном приглашении вводим 0. В моем случае проблемы с графикой исчезали. Далее ничего сложно. Программа установки определит сетевые интерфейсы и предложит выбрать тот, что будет использоваться при установки. Качать придеться много. Вся система придет из сети. Я выбирал проводной интерфейс, но думаю, с wifi проблем быть не должно. Драйверы для обоих устройств есть в загрузочном образе. С диском я предпочел не мудрить, предоставил инсталлятору самому все сделать. Следующие грабли на которые я наступил - это выбор пакетов для установки. В первый раз я заказал поставить рабочий стол пользователя. Пару часов ожидания, и система была установлена. Gnome - как рабочай среда. На SSD осталось свободных 150 МБ. Малова-то. Поэтому в следующий раз я выбрал только "Базовую систему" и "переносной компьютер". Занято оказалось около 500 МБ. Совсем другое дело. Что касается swap-раздела. Я его оставил. Может я и не прав, но мало ли что решит открыть openoffice, или firefox. лучше минимизировать использование этого раздела, чем отказаться от него совсем (по моему, прямо скажем, не очень просвященному мнению). В первоисточнике есть ссылки на мнения о swap-разделе. Оно расходится с моим. Может, я и не прав.

2. Доустановка нужного ПО.

Я ставил себе несколько оболочек на пробу ICEWM, XFCE, OpenBox. Жизнеспособной для меня показалась только XFCE. Совсем избежать установки библиотек и приложений Gnome мне не удалось. Часть тянет за собой xfce4, часть iceweal, часть gxmms и pidgin Что я ставил:
1. localepurge - удаляет лишние файлы локализации (французские, чешские и т.д.), причем не только на момент своей установки но и в дальнейшем для каждого интернационального приложения. Вы будете замечать время от времени сообщения от localepurge - сэкономлено столько-то МБ за счет локализаций.
2. xorg - X-сервер
3. xfce4 - графическая оболочка.
4. openoffice.org2 - кто-то может предпочесть Abiword. Так как офис требует 500 МБ места на диске.
5. vlc - смотреть видео. тут все на любителя. есть Xine, есть Gnome-приложения.
6. xmms2 + графическая оболочка gxmms2. Слушать музыку. К нему можно доставить плагинов на все случаи жизни. Подробнее смотрите
sudo aptitude seach xmms2 |grep ^p
7. pidgin - не люблю его, но что делать. Пока SIM в очередной раз мертв, а QIP на linux не портировали. Хорошо хоть, что нет проблем с русским.
8. luvcview - работа с web-камерой.
9. gdm - графический логин.
10. wifi-radar - работа с wi-fi сетями.
$ visudo -f sudoers
Добавляем строку:
username localhost = NOPASSWD: /usr/sbin/wifi-radar
11. Iceweasel - очередная инкарнаци firefox.
12. Gqview - просмотр изображений
13. MC - ну это понятно... Если у кого есть идеи, какое ПО ставить (аудио, видео, кодеки, просмотр изображений, аська), пишите. очень интересно будет узнать, попробовать. В идеале, хочется создать список минимального набора ПО на все случаи жизни, оптимального по удобству и занимаемому месту на диске. Возможно, уже есть готовый, но мне он не попадался.

3. Подкрутить...

Я привык к Ubuntu. Там нет открытого root'a. Все через sudo. В debian root есть, но вот авттодополнение для apt-get и aptitude работают из под sudo, но не из под root. Думаю, это где-то настраивается (если кто знает, напишите). К чему это я. Да к тому, что я не работал по привычке из под sudo. Если кто все делает под root'ом, sudo впереди команд писать не надо. Подразумевается, что все конфигурационные файлы Вы правите с правами root. Мест для творчества с linux и eee-pc предостаточно, я бы даже сказал слишком. Данная краткая статья - не полный перевод http://wiki.debian.org/DebianEeePC. Я пишу только о том, что делал сам. Многое остается за кадром, так как мне это пока не требовалось. Если я решу потом испробовать еще пару советов, то добавлю в данный отчетец.

sudo

Да. чуть не забыл. Ваш пользователь изначально не может это самое sudo использовать. Поэтому надо подправить файл настройки: запускаем из-под root'а visudo (хоть и написно vi, на самом деле это nano). Добавляем строку:
username ALL=NOPASSWD: ALL
Либо добавьте своего пользователя в группу sudo:
# adduser username sudo
А затем раскомментируйте строку
# %sudo ALL=NOPASSWD: ALL
Перелогиньтесь.

Веб-камера.

Я вначале проделал указанные здесь действия, а потом обнаружил, что уже стоит пакет с модулем uvcvideo. Так что, действия могут быть излишними.
sudo apt-get install linux-uvc-source

На этом этапе у вас загрузиться пачка пакетов.
sudo m-a a-i linux-uvc
и на этом этапе еще пачка пакетов
sudo modprobe uvcvideo
Если модуль не подгрузился после перезагрузки компьютера, в /etc/modules добавляем строку uvcvideo Теперь надо проверить, что это еще и работает. Ставим программу для работы с web-камерой:
sudo apt-get install luvcview
Запускаем (не из под root'a)
luvcview -f yuv

Камера может быть выключена по-умолчанию, после установки (у меня была вкючена ;) ). Активируем так:

sudo echo 1 /proc/acpi/asus/camera

Проверям, глядя вывод команды:

dmesg | tail

После того как все заработало, и вы не планируете в ближайшее время обновлять ядро, Вы можете со спокойной душой удалить пакет linux-uvc-source. С ним будут удалены и использованные для сборки пакеты. Для избавления от второй части пакетов разработчика я выбирал удаление g++.

Wi-Fi

Включение и выключение Wi-Fi сродни установке и удалению Express wifi card. Чтобы быть уверенным, все работает правильно, надо указать параметр "pciehp_force=1" для модуля ядра pciehp. Создайте файл /etc/modprobe.d/pciehp и и добавьте в него строку:
options pciehp pciehp_force=1
Затем впишите 'pciehp' (без кавычек) в конец файла /etc/modules. Чтобы изменения вступили в силу немедленно, выполните команду
sudo rmmod pciehp; sudo modprobe pciehp
Для поиска и соединения с беспроводными сетями я использую WiFi-Radar
sudo aptitude install wifi-radar.
Если есть желание работать из командной строки, то здесь Вы найдете подробное описание, как это сделать:
http://wiki.debian.org/DebianEeePC/HowTo/Wifi?highlight=(DebianEeePC/HowTo)

ACPI

Проверьте, установлен ли пакет eeepc-acpi-scripts.
sudo aptitude search eeepc-acpi-scripts |grep ^i
Если нет, установите:
sudo aptitude install eeepc-acpi-scripts

Если стоит пакет acpi-support, его надо удалить, он конфликтует с eeepc-acpi-scripts
sudo apt-get purge acpi-support.

Так вы удалите все скрипты из acpi-support, которые могли остаться в /etc. Если этого не сделать, будут конфликты.

Часы RTC

При загрузке у меня появлялись сообщения о проблемах с HW-часами. Что-то вроде:

select() to /dev/rtc to wait for clock tick timed out

Исправить это можно сменив модуль ядра с rtc на genrtc.

Чтобы заблокировать загрузку rtc, добавляем его в черный список /etc/modprobe.d/blacklist:

# Buggy on eeepc blacklist rtc

И грузим другой genrtc, вписав его в файл /etc/modules. Просто строка:

genrtc

Не выкючался

У меня eee-pc не выключался до конца. Причина - неверно выгружается модульзвуковой карты. Исправить ситуацию можно, выгрузив модуль вручную. Вписываем в конец файла /etc/default/halt строку:

rmmod snd_hda_intel

Все.

SSD - tmpfs and so on

Теперь надо перенести /tmp и директории с логами в оперативку. Это не сервер. Сохранять логи за прошлый год смысла нет. Итак:

sudo vim /etc/fstab

Добавляем в конец файла строки:

tmpfs /tmp tmpfs defaults 0 0

tmpfs /var/tmp tmpfs defaults 0 0
tmpfs /var/lock tmpfs defaults 0 0

tmpfs /var/log tmpfs defaults 0 0
Строку с монтированием корневого раздела правим (у Вас может быть не sda1) c
/dev/sda1 / ext3 defaults,errors=remount-ro 0 1
на
/dev/sda1 / ext3 defaults,noatime,nodiratime,errors=remount-ro 0 1

Перенос кеша firefox в оперативку.

Первый способ, стянутый из инета:

sudo mkdir /ramdisk sudo chmod -R 777 /ramdisk
В файле /etc/fstab после строчки монтирования корневой системы добавляем:
/dev/ram0 /ramdisk tmpfs size=50m 0 0
В firefox, в адресной строке пишем: about:config, находим browser.cache.disk.enable, щелкаем правой кнопкой по строчке, выбираем New String, в появившемся oкошке пишем browser.cache.disk.parent_directory, во втором появившемся окошке - /ramdisk, перезагружаемся. Ну и что бы проверить результат наберите
sudo df /ramdisk
и если в выводе обнаружите нечто похожее на:
/dev/ram0 102400 46636 55764 46% /ramdisk
то все получилось.

Второй способ:
Собственно, а зачем плодить файловые системы. У нас уже есть две директории, созданные в памяти - /tmp и /usr/tmp. В firefox укажите в переменной browser.cache.disk.parent_directory ссылку на одну из них. Тогда память будет отбираться, только если firefox действительно запущен и использует свой кеш.

Еще про Firefox:

Я поставил достаточно компактную схему iFox Smooth и дополнение Personal Menu. это дополнение позволяет спрятать под кнопку все главное меню (file, edit и т.д.). Сразу же создаются отдельные кнопки для чаще всего используемых меню - Избранные и История. Все. Одной строкой стало меньше.

Touchpad Scrolling

Скроллинг у меня не работал. Исправляется это так (/etc/X11xorg.conf):
Section "InputDevice"
Identifier "Synaptics Touchpad"
Driver "synaptics"
Option "CorePointer"
Option "SendCoreEvents" "true"
Option "Device" "/dev/input/mice"
Option "Protocol" "auto-dev"
Option "HorizEdgeScroll" "1"
EndSection
Section "Server Layout"
Identifier "Default Layout"
Screen "Default Screen"
InputDevice "Generic Keyboard"
InputDevice "Synaptics Touchpad"
EndSection

Второй предлагаемый вариант, установить переменную HorizScrollDelta в 1 (не пробовал)

Запуск простым смертным программ root'a без запроса пароля.

На примере wifi-radar. В принципе, если Вы поступили так, как описано в пункте sudo, то для вашего пользователя и так все будет работать. Более общее решение (если sudo настроен запрашивать пароль) вписывать для каждой программы строку строку в /etc/sudoers: Запускаем visudo:
sudo visudo -f sudoers
Добавляем строку
username localhost = NOPASSWD: /usr/sbin/wifi-radar

Сохраняемся. Теперь на рабочем столе или в меню "Пуск" (уж не знаю как его правильно назвать), можно создавать ярлык с командой
sudo /usr/sbin/wifi-radar

Hibernate

Я предпочитаю, не выключать компьютер а переводить его в спящий режим (hibernate). Просыпается он куда быстрее, чем загружается. Для этого правим скрипты: /etc/acpi/powerbtn.sh /etc/acpi/powerbtn-acpi-support.sh Надо закомментировать самую последнюю строку (вызов команды shutdown) и вписать новую: /usr/sbin/s2disk Внимание! 1. Должен существовать swap раздел или swap-файл. 2. Место на swap-разделе должно быть достаточно, чтобы сохранился весь дамп памяти. У меня размер swap-раздела 256 МБ, поэтому я выгружаю большие приложения (Iceweasel) перед переходом в спящий режим.

Создаем резервную копию системы (образ).

Нам потребуется флешка с инсталляционным образом (те 16 МБ), большой брат с Linux на борту, связь по сети между eee-pc и ББ.

Резервное копирование

Метод использует программы dd и nc, присутсвующие на установочном образе:

  • Загружаемся с USB-флешки.
  • Проверьте что настроена сеть и выбран корневой раздел (не переразметье его заново!)
  • Откройте консоль (Alt+F2 или из меню программы установки Debian)
  • На ББ:
    • узнайте, если еще не успели :) , его ip-адрес (ifconfig)
    • запустите прослушивание порта командой nc, порт 9000:

 nc -l -p 9000 | gzip -1 -c > ./eeepc.img.gz
  • Если используется netcat-openbsd, то строка чуть видоизменится:

 nc -l 9000 | gzip -1 -c > ./eeepc.img.gz
  • На EeePC выполните:

dd if=/dev/sda | nc -w 5 <computer_ip_adress> 9000
  • Подождите эндцать минут, и у вас готов образ вашего любимого eee-debian. Храниться он в файле eeepc.img.gz

Это все здорово. Образ мы создали. Как же восстановить ОС с его помощью?

Восстановление

Опять нам потребуется наша загрузочная USB-флешка:

  • На Asus EeePC запускаем программу установки, настраиваем сеть, определяем диски и переходим в командную строку.
  • Запускаем команду восставноления:
    nc -l -p 9000 | dd of=/dev/sda
  • На Юольшом Брате, где лежит образ, выполняем команду:
    zcat ./eeepc.img.gz | nc <eeepc_ip_adress> 9000
  • Ождем немного...
  • Перегружаем eee-pc !

Удаляем пакеты установки.

Чтобы освободить место, занятое загруженными установочными пакетами, выполните команду:

  • sudo apt-get clean

Ускорение процесса загрузки

  • Установите dash и сделайте его основным интерпретатором команд (ссылка /bin/sh будет указывать на dash) командой 'sudo dpkg-reconfigure dash' (сам этого не делал)
  • Удаляем nfs-common, так как он стартует демон portmap. Врядли с такой малышки придется цепляться к NFS.
  • В файле /etc/init.d/hwclock*.sh переменной HWCLOCKPARS присваиваем значение "--directisa"

  • Выключение интерфейсов eth0 и ath0 в /etc/network/interfaces уменьшает время загрузки на 4 секунды (я этого не делал).
  • Удаляем некоторые стандартные сервисы вроде cron, sysklogd и т.д.:

sudo apt-get remove cron logrotate sysklogd cupsys

  • В файле /lib/udev/net.agent перед первой строкой, не являющейся комментарием ставим exit.

  • Ускорение загрузки на 10 секунд:
sudo chmod -x /sbin/hwclock Чуть подробнее о настройках тут: http://wiki.debian.org/DebianEeePC/Boot

Ускоряем X11

На EeePC 2D-ускорение работает лучше по старому методу XAA, а не по новому EXA. Так что открываем в редакторе /etc/X11/xorg.conf и добавляем в секцию Device строку

Option "AccelMethod" "XAA".

Рабочий стол

Если диалоговое окно не умещается на экране, его можно двигать мышкой за любую точку, если нажать кнопку Alt. Само собой в Xfce обе панели настроены, чтобы они автоматиски убирались с экрана. Боремся за каждый миллиметр экрана. Если вы запустите редактор меню "Пуск", то обнаружите, что не можете отредактировать большую часть этого самого меню. На самом деле, ярлыки лежат в каталоге /usr/share/applications. Чтобы создать новый пункт меню, копируете существующий ярлык и исправляете в нем описание программы, путь к запускаемому файлу и положение в меню.

Text Mode

Настройка разрешения в текстовом режиме (сам этого еще не делал!). Для любителей покопаться в настройках поглубже рекоменду сайт http://nathancoulson.com/proj_eee.shtml:
  • Обновиться до grub-pc (может это и не требуется).

  • Загрузить исходники grub-1.96 и патч 915resolution (см. сайт выше).
  • Пропатчить исходники grub этим самым патчем 915resolution.
  • скомпилировать и установить grub.
  • Запустить 915resolution -l

eee01:~# 915resolution -l | grep 800x480
Mode 3c : 800x480, 8 bits/pixel
Mode 4d : 800x480, 16 bits/pixel
Mode 5c : 800x480, 32 bits/pixel
  • Добавить следующие строки в /boot/grub/grub.cfg. Вписываем их в конец секции 00_header:

insmod 915resolution
915resolution 3c 800 480
#915resolution 4d 800 480
#915resolution 5c 800 480
  • Чтобы посчитать vga-число надо к режиму добавить 0x200, например для 8-битного режима: 0x200 + 0x3c = 0x23c = 57210

  • добавляем vga=572 в строку ядра файла /boot/grub/grub.cfg file. Пример:

### BEGIN /etc/grub.d/10_linux ###
menuentry "Debian GNU/Linux, linux 2.6.24-1-686" {
linux (hd0,1)/vmlinuz-2.6.24-1-686 root=/dev/sda3 ro vga=572
initrd (hd0,1)/initrd.img-2.6.24-1-686
}
menuentry "Debian GNU/Linux, linux 2.6.24-1-686 (single-user mode)" {
linux (hd0,1)/vmlinuz-2.6.24-1-686 root=/dev/sda3 ro vga=572 single
initrd (hd0,1)/initrd.img-2.6.24-1-686
}
### END /etc/grub.d/10_linux ###