- Как в Linux установить пакет (драйвер) если нет Интернет-подключения
- 1. Использование проводного соединения
- 2.Подключить USB адаптер для которого драйвера присутствуют в ядре Linux
- 3. Офлайн установка пакетов
- 4. Установка пакетов с Live или установочного диска
- Процесс портирования драйверов устройств Linux
- Введение
- Постановка задачи
- Реализация
- Как написать свой первый Linux device driver
- Подготовительные работы
- Инициализация
- Удаление
- How to Install Nvidia Driver on Ubuntu 20.04
- Check hardware Information of GPU
- Install Nvidia drivers using from GUI
- Install Nvidia driver from the command line (CLI)
- Verify using nvidia-smi
- Configure the Nvidia Graphics driver
- How to uninstall the proprietary Nvidia driver
- Uninstall Nvidia Driver through GUI
- Conclusion
Как в Linux установить пакет (драйвер) если нет Интернет-подключения
В настоящее время при работе с операционными системами подразумевается, что она всегда подключена к Интернету. Поэтому диски с драйверами сетевых карт больше не входят в комплект при продаже. И может возникнуть ситуация, что невозможно установить драйвер устройства, поскольку нет сетевого соединения, а сетевого соединения нет, потому что невозможно установить драйвер устройства. Рассмотрим несколько способов, как вырваться из этого замкнутого круга.
1. Использование проводного соединения
Если вы не можете настроить Wi-Fi подключение, то соедините компьютер с роутером проводом. Обычно Ethernet кабели уже входят в комплект роутеров. Есть высокий шанс, что ваш Linux поддерживает чипсет Ethernet гнезда и он работает без дополнительных пакетов. Обычно проводные соединения не требуют особой настройки.
2.Подключить USB адаптер для которого драйвера присутствуют в ядре Linux
Подойдёт практически любой USB адаптер кроме самых экзотических — в ядре Linux есть драйвера практически для всего. То есть вы получите Интернет и сможете сделать обычную установку.
3. Офлайн установка пакетов
На Linux с Интернетом вы можете скачать пакеты вручную:
А затем установить их на компьютере без Интернета:
В теории это всего две команды, но на практике возможны следующие проблемы:
Чтобы пакеты подошли, дистрибутив, на котором вы скачиваете должен быть таким же и такой же версии, где вы затем будете устанавливать пакеты. Иначе вам нужно искать ссылки для каждого пакета для вашего дистрибутива и скачивать вручную
У каждого из этих пакетов могут быть зависимости, а у тех зависимостей могут быть другие зависимости…
В общем, посмотреть зависимости можно командой:
Или вариант попроще, запустите команду (делать установку необязательно):
и посмотрите, какие пакеты будут предложены для установки. Скопируйте названия этих пакетов и загрузите с помощью «apt download».
4. Установка пакетов с Live или установочного диска
В репозиториях в качестве источника пакетов нужно прописать CD диск.
Для этого выполните команду:
Если, например, вы добавляете образ Wheezy, будет сгенерирован следующий результат:
Источник
Процесс портирования драйверов устройств Linux
Введение
Иногда так случается, что возникает необходимость перейти на более новую версию ядра Linux и, соответственно, выполнить перенос уже существующих драйверов устройств.
Процесс переноса может занять от нескольких минут до более продолжительного промежутка времени. Зависит это не только от сложности драйвера, но и от того, с какой и на какую версию ядра вы собираетесь перейти (API имеет свойство меняться — отсюда лезут все проблемы), а также от качества реализации кода, бывает, что проще переписать, чем перенести, но об этом не будем.
К сожалению, я не могу прикрепить исходный код драйвера, но мы рассмотрим все проблемы, с которыми я и вы можете столкнуться в процессе переноса. Далее будет рассмотрен пример переноса простого драйвера c версии ядра 2.6.25 на 4.12.5, который расположен в drivers/serial/name_uart.c. Также нам очень поможет следующий ресурс 2.6.25 и 4.12.5, где можно посмотреть структуру ядра, а также исходные коды.
Постановка задачи
Постановка задачи крайне примитивна и проста — требуется перенести выше упомянутый драйвер с версии ядра 2.6.25 на 4.12.5.
Реализация
Первым делом, если вы не знакомы с драйвером который вам предстоит перенести, то я бы порекомендовал хотя бы поверхностно изучить его. Это может значительно упростить задачу. После этого можно приступать к переносу.
Наш драйвер имеет следующий путь в ядре 2.6.25: drivers/serial/name_uart.c
Теперь нам нужно найти подходящую директорию, куда можно его положить. И тут мы встречаем первую проблему — такой директории drivers/serial/ в ядре 4.12.5 нет.
Решается она очень просто: берем и кладем наш драйвер в drivers/tty/serial/name_uart.c
После этого, чтобы Linux смог включить наш драйвер в сборку, нам нужно добавить его в два файлика.
Первый файлик: drivers/tty/serial/Makefile
В него мы добавляем следующую строчку:
Второй файлик: drivers/tty/serial/Kconfig
В него мы пишем следующее:
Как только мы выполнили первые два шага, можно перейти к сборке.
Из корневой директории запускаем make menuconfig и включаем наш драйвер в сборку.
При выполнении команды открывается графический интерфейс и проблемы найти в нем наш драйвер быть не должно (поиск можно сделать следующим путем: жмем / и пишем полное или часть названия, далее enter).
Есть и иной способ — можно просто отредактировать .config файл и включить в сборку ваш драйвер там.
Далее можно попытаться собрать ядро с нашим включенным драйвером.
После того как мы попытались собрать ядро, скорее всего у нас посыпались ошибки, которые нужно решить, чтобы после выполнить успешную сборку ядра и обязательно проверить на работоспособность наш драйвер.
Ошибка, с которой столкнулся я — это устаревший интерфейс работы с proc системой, а также удаленный макрос.
Например, вызов функции irequest_irq в ядре 2.6.25 проходит успешно, НО
в ядре 4.12.5 макрос IRQF_DISABLED был удален, и поэтому драйвер не собирался.
Решение — возьмем и подставим 0 вместо IRQF_DISABLED.
Следующая ошибка заключалась в том, что в ядре версии 2.6.25 взаимодействие с proc системой происходило с помощью create_proc_entry, реализацию которой вы больше не найдете в 4.12.5.
Поэтому необходимо было немного переписать реализацию и в итоге получился следующий вариант:
Если обобщить все выше изложенное, то перенос драйвера разделяется на следующие этапы:
1. скопировать исходные коды драйвера предыдущей версии на новую версию ядра Linux;
2. добавить описание в Kconfig и в Makefile;
3. подцепить с помощью busybox в сборку ядра наш драйвер (или с помощью прямого редактирования .config файла);
4. пытаться устранить все ошибки при сборке, пока ядро не соберется.
Итак, мы рассмотрели основы того, как происходит процесс портирования драйвера устройства на более новую версию ядра Linux, а также проблемы, с которыми можно столкнуться.
В следующей статье мы напишем свой первый полноценный собственный драйвер по заданному техническому заданию для одной из новых версий ядра Linux, а также протестируем его не только с помощью стандартных утилит Linux, но и напишем свой тест для него.
Пожалуйста, если вы нашли неточности, или вам есть что добавить — напишите в ЛС или в комментарии.
Источник
Как написать свой первый Linux device driver
Здравствуйте, дорогие хабрачитатели.
Цель данной статьи — показать принцип реализации драйверов устройств в системе Linux, на примере простого символьного драйвера.
Для меня же, главной целью является подвести итог и сформировать базовые знания для написания будущих модулей ядра, а также получить опыт изложения технической литературы для публики, т.к. через полгода я буду выступать со своим дипломным проектом (да я студент).
Это моя первая статья, пожалуйста не судите строго!
Получилось слишком много букв, поэтому я принял решение разделить статью на три части:
Часть 1 — Введение, инициализация и очистка модуля ядра.
Часть 2 — Функции open, read, write и trim.
Часть 3 — Пишем Makefile и тестируем устройство.
Перед вступлением, хочу сказать, что здесь будут изложены базовые вещи, более подробная информация будет изложена во второй и последней части данной статьи.
Подготовительные работы
Спасибо Kolyuchkin за уточнения.
Символьный драйвер (Char driver) — это, драйвер, который работает с символьными устройствами.
Символьные устройства — это устройства, к которым можно обращаться как к потоку байтов.
Пример символьного устройства — /dev/ttyS0, /dev/tty1.
К вопросу про проверсию ядра:
Драйвер представляет каждое символьное устройство структурой scull_dev, а также предостовляет интерфейс cdev к ядру.
Устройство будет представлять связный список указателей, каждый из которых указывает на структуру scull_qset.
Для наглядности посмотрите на картинку.
Для регистрации устройства, нужно задать специальные номера, а именно:
MAJOR — старший номер (является уникальным в системе).
MINOR — младший номер (не является уникальным в системе).
В ядре есть механизм, который позволяет регистрировать специализированные номера вручную, но такой подход нежелателен и лучше вежливо попросить ядро динамически выделить их для нас. Пример кода будет ниже.
После того как мы определили номера для нашего устройства, мы должны установить связь между этими номерами и операциями драйвера. Это можно сделать используя структуру file_operations.
В ядре есть специальные макросы module_init/module_exit, которые указывают путь к функциям инициализации/удаления модуля. Без этих определений функции инициализации/удаления никогда не будут вызваны.
Здесь будем хранить базовую информацию об устройстве.
Последним этапом подготовительной работы будет подключение заголовочных файлов.
Краткое описание приведено ниже, но если вы хотите копнуть поглубже, то добро пожаловать на прекрасный сайт: lxr
Инициализация
Теперь давайте посмотрим на функцию инициализации устройства.
Первым делом, вызывая alloc_chrdev_region мы регистрируем диапазон символьных номеров устройств и указываем имя устройства. После вызовом MAJOR(dev) мы получаем старший номер.
Далее проверяется вернувшееся значение, если оно является кодом ошибки, то выходим из функции. Стоит отметить, что при разработке реального драйвера устройства следует всегда проверять возвращаемые значения, а также указатели на любые элементы (NULL?).
Если вернувшееся значение не является кодом ошибки, продолжаем выполнять инициализацию.
Выделяем память, делая вызов функции kmalloc и обязательно проверяем указатель на NULL.
Стоит упомянуть, что вместо вызова двух функций kmalloc и memset, можно использовать один вызов kzalloc, который выделят область памяти и инициализирует ее нулями.
Продолжаем инициализацию. Главная здесь функция — это scull_setup_cdev, о ней мы поговорим чуть ниже. MKDEV служит для хранения старший и младших номеров устройств.
Возвращаем значение или обрабатываем ошибку и удаляем устройство.
Выше были представлены структуры scull_dev и cdev, которые реализуют интерфейс между нашим устройством и ядром. Функция scull_setup_cdev выполняет инициализацию и добавление структуры в систему.
Удаление
Функция scull_cleanup_module вызывается при удалении модуля устройства из ядра.
Обратный процесс инициализации, удаляем структуры устройств, освобождаем память и удаляем выделенные ядром младшие и старшие номера.
С удовольствием выслушаю конструктивную критику и буду ждать feedback’a.
Если вы нашли ошибки или я не правильно изложил материал, пожалуйста, укажите мне на это.
Для более быстрой реакции пишите в ЛС.
Источник
How to Install Nvidia Driver on Ubuntu 20.04
As Linux getting more user friendly, game developers are adding more support thanks to Steam. The performance of graphics processing units (GPUs) mainly depends on drivers. Ubuntu by default use open source video driver Nouveau which has limited support and features when compared with proprietary Nvidia drivers.
The proprietary Nvidia driver is essential to Ubuntu users looking to play games. However, if you are a basic user, there is no need to have this driver installed, as the open-source one works just fine.
In this tutorial, we are going to learn different ways to install Nvidia drivers on Ubuntu 20.04 LTS.
Check hardware Information of GPU
Before installing Nvidia drivers on Ubuntu, ensure that you have Nvidia GPU in your system. There are lots of commands available to get Linux hardware details.
To confirm this, simply run the following hwinfo command.
You can check which card is being used by the prime-select command:
The lshw command can display hardware and driver details of the currently used Nvidia card.
The lspci command is another option to get the GPU hardware details.
If you have installed inxi tool, run the following command.
Install Nvidia drivers using from GUI
Lets first check how to install Nvidia driver from the graphical user interface. On the main menu, type «software update manager» and click on it to open.
On the software updater pop-up, click on the ‘Settings & Livepatch‘ button as shown.
This will launch the ‘Software and Updates‘ window as shown below:
At the top-most section of the ‘Software and updates’ windows, be sure to find a couple of options displayed which include Ubuntu software, other software, updates e.t.c. In this case, click on Additional Drivers, you can see there, the ‘Nvidia — driver -435’ (proprietary, tested) is set up as default driver used for Nvidia card, along with some proprietary divers listed.
Both, ‘Nvidia — drivers 430’ (proprietary) and ‘Nvidia — drivers 390’ (proprietary) are available for GeForce GTX 1080 Ti card. Select the first option to install Nvidia driver 430. When you are done, click on the Apply changes button to install the driver.
Then wait for the download to complete from the internet and click on the close button.
Reboot your computer for the changes to take effect. Run the following to reboot your PC.
Install Nvidia driver from the command line (CLI)
Then, run the following commands to check the list of driver devices available for the Nvidia card from the default Ubuntu repository.
There are four Nvidia drivers available for the GeForce MX130 model. They include the Nvidia driver -440 non-free (which is recommended for Ubuntu system), Nvidia driver -435, and -390 distro non-free and the nouveau distro free builtin opensource video driver (default). Now you can run the following commands to install the specific driver you want.
After the Nvidia diver has been installed, we have to reboot the computer in order to allow Nvidia prime (which is the technology) to switch in between the Intel Graphics and the Nvidia Graphics card.
Verify using nvidia-smi
The nvidia-smi command line is a utility that is used for providing monitor and management capabilities for each and every devices i.e Nvidia Tesla, GRID, Quadro, and GeForce from Fermi and other higher architect families. Open the Terminal application and run the following command to see the Graphics Processing Unit and the process that is using the Nvidia GPU.
Configure the Nvidia Graphics driver
The Nvidia settings command starts a Graphics User Interface(GUI) tool for configuration of Nvidia Graphics driver. This enables you to have a glance at all the GPU information and configure external monitors that are connected to your system.
Run the command below to launch the ‘Nvidia and Server Settings‘ window.
How to uninstall the proprietary Nvidia driver
From open forums, I have noticed many users end up issues with removing Nvidia drivers and reinstalling. Let me share the steps I have followed to successfully uninstall the Nvidia driver and switch to the nouveau driver.
Step 1: Run the following command to confirm Nvidia drivers are installed in your system.
Step 2: Run the following commands to uninstall the proprietary Nvidia driver.
Note that, the use of purge command will remove Nvidia diver together with all configurations that will be made. Run the flowing command to reinstall the Ubuntu desktop package.
Step 3: Run these commands to switch back to the nouveau driver.
Step 3: Remove the Xorg configuration file
Run the rm command to remove the Xorg configuration file
Step 4: After that, reboot your system.
Uninstall Nvidia Driver through GUI
Uninstalling the Nvidia driver using a GUI is quite easy. First, locate the ‘software & Updates’ app then click on it to open. Once it has opened, select on the Additional Drivers tab.
This will display all the Nvidia drivers that are available on Ubuntu. On the list under the ‘Nvidia Corporation,’ select » using X.Org X server — Nouveau display.» This option will pass up the Nvidia graphics diver and it will install Nouveau display driver. For changes to take effect, click on the Apply changes button, and wait for some minutes.
Once Nvidia driver is uninstalled, a message will display saying, «No proprietary drivers are in use» Now close the Software & Updates application and then reboot your computer.
Conclusion
In this tutorial, we have covered two ways that you can use to install Nvidia drivers on Ubuntu 20.04 LTS.
With that said, Nvidia is bringing Vulkan which is intended to offer higher performance and more balanced CPU/GPU usage driver to Linux, a replacement for OpenGL.
In recent years Redhat developers are adding extra code to Nouveau improve opensource code to make it much better, let’s hope the near future we could use it for the modern game.
From Ubuntu 19.10, proprietary Nvidia drivers are available on install media (ie in ISO), which will bring a better fresh install experience for ubuntu users.
If you have any questions or feedback, feel free to leave a comment.
Источник