Решения тех проблем, с которым мне приходилось сталкиваться.

четверг, 16 июля 2009 г.

32-bit приложения на x64 ubuntu

Чтобы был возможен запуск старых бинарных 32-битных приложений под 64-битной убунтой нужно доустановить мета-пакет ia32-libs.

среда, 15 июля 2009 г.

самосборные модули ядра

Пытался поставить ubuntu на сервер с Intel'овской платой (S5500BC), но оказалось, что имеющийся на плате soft-raid не поддерживается даже самой свежей версией ubuntu (не говоря уж о 8.04 LTS, которая не увидела даже DVD-дисковод).
На сайте Intel драйвера только для RedHat/SuSE. Однако, оказалось, что драйвер можно пересобрать и для другого конкретного ядра. Итак, вот такие шаги:


  1. Скачал и распаковал драйвер

  2. Прочитал The Linux Kernel Module Programming Guide откуда понял, что в прилагающемся Makefile не хватает собственно двух строк:

    all:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

    clean:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

  3. С первой попытки компиляция не удалась. Смысл я до конца не понял, но двух словах - версии ядра в убунту в пределах релиза не увеличиваются, хотя фичи в них встраивают новые, от свежих ядер. Нашел в исходниках директивы условной компиляции, где проверялась версия ядра, исправил циферки, чтобы "как бы старое" ядро распознавалось как "как бы новое". После этого все собралось.

  4. Копируем файл в модули (в моем случае /lib/modules/<kversion>/kernel/drivers/scsi/)

  5. Выполняем depmod -a


В-принципе, все. Если бы это был модуль не-дискового устройства. Для дисковых устройств нужно поместить модуль в initramfs. Для этого в /etc/initramfs-tools/initramfs.conf меняем MODULES=most, на MODULES=list, а в файл /etc/initramfs-tools/modules помещаем список все нужных модулей (можно посмотреть на работающей системе через lsmod).
Потом нужно пересобрать initramfs образ командой update-initramfs -u.

Комментарии:

  1. Собирать драйвер можно на уже работющей системе с таким же ядром (к счастью у меня такая машина была)

  2. Понятно, что если корневая система на изначально доступном блочном устройстве, то помещать модуль в initramfs не обязательно, можно просто прописать его загрузку в /etc/modules)

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

Программное перемещение в корзину

Нашел такой пакет - trash. Позволяет управлять корзиной из скриптов. Таким образом настроил автоматическое удаление старых файлов из downloads в корзину.