среда, 31 мая 2017 г.

Мой Ноутбук и Линукс

Так получилось, что у меня по весне случается кризис. Несильный, но случается. Творческий кризис - работать не хочется совсем, руки опускаются. Даже если знаешь что надо делать, все равно работа стоит. В качестве спасения я иногда менял по весне работу. Но однажды придумал ставить себе линукс. Ну и вот с тех пор как бы повелось и теперь у меня почти всегда почти везде линукс стоит.
Недавно купил себе ноутбук для работы. Чтоб ездить с ним и чтоб можно было на кухне на диване в очередной раз развалиться во время работы. Давно хотел 17 дюймовый 4К ноут взять, а тут у ASUS появились не такие дорогие, вот и взял. ASUS VivoBook Pro N752VX, который с 4К дисплеем. Вот официальный сайт. Доставил памяти до 32Гб и поставил SSD. У него оказалось есть внутри настоящий SSD на 128, на котором винда установлена, скорее всего с интерфейсом PCI-E, но я его не нашел (не сильно и хотелось) и трогать не стал. Так что я SATA HDD заменил на SATA HDD и начал ставить на него линукс. Xubuntu. Я ее везде ставлю - она мне больше импонирует своей минималистичностью.
Установка линукс на самое новое железо это не всегда приятное занятие. Ubuntu 14.04 LTS загрузилась с флешки, но без поддержки тачпада и с плохой графикой. Ubuntu 16.04 LTS с флешки как-то совсем не загрузилась и я решил попробовать самую последнюю версию, 17.04. Не LTS. 17.04 загрузилась. И поставилась. Но в процессе загрузки с установленной версии не грузилась.
Я добавил в grub параметры для загрузки nosplash, чтоб было видно в какой момент она падает. (Для добавление параметра надо в процессе загрузки выбрать нужную строчку, нажать e и вбить параметр). И вроде как каким-то мифическим способом выяснил, что падает она в процессе загрузки иксов. Погуглил, нашел предложенный на форумах параметр загрузки nouveau.modeset=0, включил его и система загрузилась. Что странно поскольку этот параметр отключает KMS - aka Kernel mode setting - переключение режимов дисплея не в user-space, а в kernel-space. Но якобы этот параметр должен быть выпилен начиная с 2010-01-10. Ну да и пес с ним. Загрузилось, пошли странные сообщения в консоли. (Что-то типа pcieport 0000:00:1c.5:    [ 0] Receiver Error). Погуглил, добавил параметр pci=nomsi. MSI, как я понял, это возможность устройствам использовать один номер запроса на прерывание (IRQ) и должно негативно сказываться на работе системы если устройств много и на все устройства IRQ не хватает.
После успешного начала работы со своим линуксом на своем ноутбуке я поставил проприетарные драйвера nvidia. Потом поставил более свежие драйвера nvidia из ppa. В настройках ubuntu (Дополнительные драйверы aka Additional Drivers) включил параметр для использования некоего микрокода интел - Using processor microcode firmware for Intel CPUs from intel-microcode (proprietary).
Потом заметил, что система малость сильно греется. Попытался поставить TLP – Linux Advanced Power Management. Не заметил изменений, снес, поставил laptop-mode-tools. После установки laptop-mode-tools система перестала грузиться. Снес.
Потом нашел, что в ноуте установлены две видеокарты - дискретная (медленная) intel и nvidia. И типа в винде или при работе проприетарного драйвера nvidia он автоматом переключается на использование карты intel. Переключился на видеокарту intel, комп завис и отказался загружаться. Я перепугался, похимичил. Но выяснил, что переключиться обратно можно используя команду sudo prime-select nvidia. Переключился, попробовал пару других версий драйверов nvidia, выяснил, что со всеми ими система виснет при попытке переключения графики на использование карты intel. Поставил последние интеловские драйвера для видео. Изменений не произошло.
В какой-то момент выяснилось, что система не грузится при выборе пункта "Ubuntu" в grub - просто черный экран. Грузится при выборе пункта "Загрузка ubunu с дополнительными параметрами" при выборе последнего или предпоследнего ядра. Так и не понял в чем соль - разницы вроде нет никакой.
В какой-то момент выяснилось виснет при закрытии иксов (во время shutdown, что само по себе неприятно, во время Ctrl+F1). Полечилось выключением в настройках ubuntu (Дополнительные драйверы aka Additional Drivers) параметра для использования микрокода интел - Using processor microcode firmware for Intel CPUs from intel-microcode (proprietary).
Ну и еще настроил в терминале xfce Ctrl+C / Ctrl+V вместо используемых по умолчанию Ctrl+Shift+C/Ctrl+Shift+V - редактированием файла ~/.config/xfce4/terminal/accels.scm. Почему то изначально пришлось еще дополнительно сменить Ctrl+C -> Ctrl+K (например) - stty intr ^K.
Почему-то не включался NumLock по умолчанию. Не стал морочиться с lightdm, просто прописал numlockx on в .xinitrc.
Смапил клавишу отключения тачпада (touchpad disable) на клавишу XF86TouchpadToggle -
#!/bin/bash
if synclient | grep --quiet 'TouchpadOff             = 0'; then
  synclient TouchpadOff=2
  notify-send Touchpad Disabled
else
  synclient TouchpadOff=0
  notify-send Touchpad Enabled
fi
TouchpadOff=2 - это когда работает перемещение мышки тачпадом, но не работает скроллинг и клик по тапу - тачпад не мешает, но в принципе его можно использовать.
Как ни странно все остальные клавиши уже работали - даже включение подсветки клавиатуры.

Ну и еще меня раздражало отсутствие клавиши End - Home есть, а End нет. Поэтому я смапил fn+Cursor Move, которые по умолчанию используются для управления медиаплеером. Есть засада - клавиши срабатывают не на нажатие, а на отжатие - немного раздражает - xmodmap ~/.Xmodmap в файле .xinitrc. И ~/.Xmodmap
keycode 171 = End
keycode 172 = Next
keycode 173 = Home
keycode 174 = Prior
Еще есть проблемы с просыпанием после перехода в спячку. Если шнур питания подключен, то комп просыпается. Если нет, то сбрасывается и начинает загружаться.
Со скроллингом традиционный в линуксе пиздец. В каждой программе он работает по-своему. В каждом направлении он работает по-своему. Единственное, что мне понравилось в маке - это направление скроллинга. То есть на мой тупорылый взгляд он там сделан логично - ты тащишь страницу, а не ползунок и страница "следует" за твоими пальцами. Окей. В среднем на линуксе если я делаю reverse mouse для тачпада, то вверх-вниз работает как надо, влево вправо наоборот. Если я не делаю reverse, но все работает наоборот. То есть похоже горизонтальный скроллинг всегда работает наоборот и не настраивается. В хроме все наоборот, ему насрать на системные настройки. У него влево-вправо работает как надо, а вверх-вниз наоборот. Хотя не уверен по поводу хрома и горизонтальной прокрутки - так с ходу не нашел сайтов без специальной поддержки, чтоб проверить.
Такие дела. Надеюсь, что в будущем появится нормальная поддержка всего без шаманских плясок с бубном. Хотя судя по мизерному числу пользователей линукса на десктопе нормальной поддержки не будет никогда.