воскресенье, 21 апреля 2013 г.

Ubuntu 13.04 + Bumblebee + Lenovo Y580

    Не дожидаясь недели до выхода Ubuntu 13.04 решил попробовать нового зверя. В основном благодаря куче багов в 12.10 и лестным отзывам по 13.04 на LOR.
    Т.к. терять особо было нечего, да и диск надо было с виндой поделить немного иначе я остановился на чистой установке.
    Ещё на Live-USB меня напрягло то, что подсветка экрана ноута после GRUB автоматом выставляется в 0, но хорошо, что это только подсветка, на Fedora 18 с ядром 3.8.x вообще на экране ничего не отображается.
Но вернёмся в установке шмеля и радостям высокопроизводительной графики, которая кушает батарейку только тогда, когда ей это позволяют.

    Установка Bumblebee производилась по инструкции http://help.ubuntu.ru/wiki/bumblebee , но, т.к. у меня ноут с особенностями, а эти особенности на уровне ядра будут поддерживаться только начиная с 3.8.5 и выше, то для текущего убунтовского ядра 3.8.0 надо собрать модуль.
   Чотобы это сделать надо выполнить в терминале следующую последовательность комманд:

git clone git://github.com/Bumblebee-Project/bbswitch.git -b hack-lenovo
cd bbswitch/

 
В файле acpi-handle-hack.c заменить код функции dev_set_acpi_handle с:

static void dev_set_acpi_handle(struct pci_dev *pdev, acpi_handle handle) {
        pdev->dev.archdata.acpi_handle = handle;
}


на: 

static void dev_set_acpi_handle(struct pci_dev *pdev, acpi_handle handle) {
    #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)
        pdev->dev.acpi_node.handle = handle;
    #else
        pdev->dev.archdata.acpi_handle = handle;
    #endif
}


mkdir /usr/src/acpi-handle-hack-0.0.2
sudo cp Makefile acpi-handle-hack.c /usr/src/acpi-handle-hack-0.0.2/
sudo cp dkms/acpi-handle-hack.conf /usr/src/acpi-handle-hack-0.0.2/dkms.conf
sudo dkms add acpi-handle-hack/0.0.2
sudo dkms build acpi-handle-hack/0.0.2
sudo dkms install acpi-handle-hack/0.0.2
sudo echo acpi-handle-hack | sudo tee -a /etc/modules
sudo update-initramfs -u


Перезагрузить компьютер, либо выйти и войти.
Епосле всех этих манипуляций Optirun не заработал, надо в файле /etc/bumblebee/xorg.conf.nvidia добавить:

BusID "PCI:01:00:0"

в Section "Device", где 01:00:0 - id вашей дискретной видеокарты, который можно узнать выполнив команд lspci.

2 комментария:

  1. Простите за глупый вопрос, но на вики (https://wiki.ubuntu.com/RaringRingtail/TechnicalOverview#Linux_kernel_3.8.8) написано "Ubuntu 13.04 includes the 3.8.0-19.29 Ubuntu Linux kernel which was based on the v3.8.8 upstream Linux kernel.". Значит ли это, что там баг уже исправлен? Или с нумерацией ядер всё намного сложнее?

    ОтветитьУдалить
    Ответы
    1. Про то, что убунтовское ядро 3,8,0-19 построено на 3.8.8 я не дочитал :)
      Попробую сегодня вечером отключить модуль и посмотреть как будет работать NVidia без него и будет ли вообще работать. Помню, что со включённым модулем, но без строки BusID "PCI:01:00:0" в /etc/bumblebee/xorg.conf.nvidia дискретная карта не работала.

      Удалить