Ubuntu 14.04 LTS на HP Probook 4540s

Дата Автор cdb13 комментариев


Уже пол года я пользуюсь Ubuntu на ноутбуке HP 4540s. Недавно обзавелся SSD и перетащил все «пожитки» на него. Параллельно решил записать свою возню сюда, чтобы потом было проще повторить установку, если SSD внезапно выйдет из строя по причине брака. Ubuntu я поставил 14.04 по причине LTS, и «деревянности» родного Open SuSe Enterprice 11sp2. Все ниже описанное в какой-то мере может быть повторено в 14.10 и других дистрибутивах.

Перед установкой настоятельно рекомендую обновить версию BIOS своего HP Probook 4540s до F.60. В этой версии исправлены ошибки безопасности UEFI.

 

Установка Ubuntu на ноутбуке HP 4540s


Здесь нет ничего сложного и подробно я этот пункт расписывать не буду, предполагаю что Linux вы когда-нибудь ставили — здесь все то же самое. Но, как говориться, есть нюанс.
Предполагается, что Ubuntu вы ставите на чистый диск с загрузочной флешки (как создать загрузочную флешку Linux dd). В BIOS ставим boot режим UEFI Hybride, порядок загрузки: USB HDD, все остальное. Отключаем Fast Boot, Secure Boot. Сохраняем настройки на выходе и перезагружаемся с флешки.
Запускаем установку ubuntu, выбираем разбиение диска вручную. Бъем диск. Диск я разбивал под SSD, оперативной памяти у меня достаточно, т.ч. место расположения swap мне не принципиально — расположил в конце. Получилось примерно так:

  • sda1 — EFI — 64mb
  • sda2 — / — 65536mb
  • sda4 — /home — (все что осталось)
  • sda3 — swap — (размер оперативки)

Загрузчик ставим в /dev/sda.

Для магнитных дисков я бы разбил так:

  • sda1 — EFI — 64mb
  • sda2 — swap — (размер оперативки — размер оперативки * 3)
  • sda3 — / — 65536mb
  • sda4 — /home — (все что осталось)

Загрузчик ставим в /dev/sda.
Делал бы это по причине более быстрого доступа к swap в начале диска, хотя Linux довольно хорошо пользуется оперативной памятью и использование swap случается крайне редко.

Ок, ставим Ubuntu далее, соглашаемся на все подряд и доводим установку до завершения, после чего Reboot и ничего не загружается. Все дело в кривизне BIOS HP4540s, а конкретно в EFI boot manager. Ubuntu пытается прописаться в загрузчик EFI и получает «ОК» но BIOS игнорирует эти записи (и вправду, зачем они нужны?), хотя Windows туда прописывается более удачно и работает.
Я довольно много вариантов испробовал чтобы прописать Ubuntu в OS Boot Manager нормально, но заработал исключительно кастыльный вариант:
1. Reboot — F9 — Boot Options — Boot From EFI File — выбираем не нашу флешку, а HDD и на нем /EFI/ubuntu/grubx64.efi, загружаем Ubuntu.
2. Открываем терминал, с правами юзера в /efi/boot/EFI создаем папку BOOT и копируем в нее содержимое из /efi/boot/ubuntu. Переименовываем shimx64.efi в BOOTx64.efi, далее Reboot.
3. BIOS — включаем FastBoot, Secure Boot, включаем UEFI native. Порядок загрузки — OS Boot Manager, но это вообщем и не важно. Save -> Reboot.
После этого Ubuntu Linux загружается «нормально». Если вы ставите Ubuntu рядом с Windows, то UEFI native вызывает BSOD на загрузке Windows (можно поставить UEFI hybride без Secure Boot).
Сетевые карты на Atheros и Intel поднимаются без плясок с бубном (других не было чтобы проверить), т.ч. после загрузки подключаемся к WiFi и обновляем все что можно из репозитария Ubuntu:

sudo apt-get update
sudo apt-get upgrade

 

Настройка энергопотребления HP Probook 4540s на Ubuntu 14.04 LTS

Теперь самое веселое — часть оборудования на ядре 3.13 не подхватилось как следует и придется указать его явно в параметрах конфигурации ядра в загрузчике grub.

sudo -e /etc/default/grub

Ищем параметр GRUB_CMDLINE_LINUX и вносим в него следующую строку:

acpi_osi=’!Windows 2012′ pcie_aspm=force intel_pstate=enable clocksource=acpi_pm notsc i915.lvds_downclock=1 nmi_watchdog=0

сохраняем файл и обновляем grub.

sudo update-grub
  • acpi_osi=’!Windows 2012′ — если вы хотите, чтобы кнопки отключения wifi работали так же красиво как в windows и подсвечивались оранжевой лампочкой — стоит добавить этот параметр.
  • pcie_aspm=forceASPM не подхватывается по причине угадайте какой? Включаем принудительно. Если на вашем оборудовании после этого начались глюки — не ключаем.
  • intel_pstate=enable — для процессоров архитектуры SandyBridge \ IvyBridge в ядре доступен более продвинутый режим энергосбережения, но по какой-то причине он сам не включился — включаем.
  • clocksource=acpi_pm notsc — выбираем самый плохой таймер (на нем мне удалось достичь самое максимальное время работы), tsc отключаем. Так же на процессорах intel желающие могут попробовать hpet, но батарейка с ним отрабатывает чуть меньше.
  • i915.lvds_downclock=1 — по какой-то непонятной причине видеодрайвер отказывается управлять частотой шины lvds (поговаривают это может вызывать глюки), включаем принудительно, позволяет сэкономить немного батареи. Остальные параметры для i915 подхватываются автоматически и выставляются при переключении видеокарты в powersave режим (т.е. fbc rc6 и т.п. можно не включать).
  • nmi_watchdog=0 — по большей части отладочный таймер, если вы не знаете что это такое — стоит выключить.

Ставим дополнительные пакеты для процессора Intel:

sudo apt-get install thermald intel-microcode

Ок, теперь надо подкрутить энергосбережение. Есть 3 пути:

  • laptop-mode-tools — есть в репозитарии ubuntu, но древний — 1.64.
  • tlp — более простой в настройке, но ставит с собой консольный mail клиент, что немного настораживает…
  • pm-utils с допилкой — я выбрал этот вариант, хотя пробовал и предыдущие два.

В пользу pm-utils играет еще и то, что он устанавливается по умолчанию в ubuntu 14.04, против — то, что оно не будет работать в системах на демоне systemd. Не смотря на то, что проект «древний» и заброшен, его можно заставить работать ничуть не хуже tlp на ноутбуках HP Probook 4540s. 99% в нем уже готово из коробки, осталось допилить мелочи: intel_pstate и разрешить энергосбережение для SATA. Копируем пару подозрительных скриптов, написанных мной (да, я не знаю bash) к себе в /etc/pm/power.d и выставляем права.

Следующий скрипт переключает план работы процессора на powersave, отключает TurboBoost и ограничивает скорость работы процессора до 50% при работе от батареи, а так же возвращает настройки обратно при подключении зарядного устройства. При необходимости ограничитель можно задать другой.

sudo wget -O /etc/pm/power.d/intel-pstate http://daily-notes.ru/files/2014/11/intel-pstate
sudo chown root:root /etc/pm/power.d/intel-pstate
sudo chmod +x /etc/pm/power.d/intel-pstate
echo MAX_PREF_PCT_PM=50 | sudo tee /etc/pm/config.d/intel-pstate

Следующий скрипт включает энергосбережение в аудио контроллере intel HDA. В pm-utils есть скрипт для энергосбережения аудиокарты, но в ядре появился параметр энергосбережения контроллера, tlp им управляет, по этому я тоже его собезъяничал.

sudo wget -O /etc/pm/power.d/intel-audio-controller http://daily-notes.ru/files/2014/11/intel-audio-controller
sudo chown root:root /etc/pm/power.d/intel-audio-controller
sudo chmod +x /etc/pm/power.d/intel-audio-controller

Ну и наконец включаем ALPM:

echo SATA_ALPM_ENABLE=true | sudo tee /etc/pm/config.d/sata_alpm

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

USB autosuspend — если вы работаете от батареи, то обычно все лишние устройства отключаете, остается только камера и сканер отпечатка пальца. Не знаю как сканер отпечатка, но камера и все остальные USB устройства успешно засыпают сами (в т.ч. хабы), по этой причине городить дополнительных костылей не вижу смысла.

Кроме всего этого в BIOS стоит отключить все неиспользуемые устройства. Так же не забывайте отключать Bluetooth и wifi, если вы их не используете. Перезагружаем Ubuntu, который теперь обещает отработать 5:30 при полном заряде годовалой батареи. При закрытой крышке обещает так вообще 7:15 — наверно именно это подразумевал производитель во фразе «до 7 часов работы» 🙂

 

Драйвера устройств


99% драйверов устройств подхватывается без проблем, за исключением:

  • Сканер отпечатка пальца — у меня его нет, т.ч. узнать работает он или нет я не смогу.
  • Дискретная графика — у меня ее нет, но по слухам отлично работают опенсорсные драйвера. Если у вас есть какие-то мысли на этот счет — поделитесь в комментариях и я дополню этот пункт.
  • Лампочка на тачпанели — мне она очень нравилась, но пока проблему я с ней не решил ввиду того, что остро она не стоит.
  • HP drive guard — драйвер акселерометра есть в ядре, осталось поставить софтинку, которая будет парковать головки в момент падения ноутбука.

HP Drive Guard

Пойти тут можно следующими путями:

  • Поставить сервис HP Drive Guard, скомпилированный из исходников OpenSuSe. Например его уже скомпилировал под Ubuntu 12.04 Олжас Адиятов. Скачать можно тут: HP Drive Guard для Ubuntu.
  • Поставить стороннюю утилиту, работающую с виртуальным устройством /dev/freefall. Я экспериментировал с HDAPSD (надо компилировать, т.к. в репозитарии она очень старая), но особых успехов не добился.

 

Вспомогательные настройки для Ubuntu 14.04

1. Запоминание яркости. Я не люблю, когда яркость изменяется без моего желания (затемнение при отключении-подключении питания можно отключить в настройках «Яркость и блокировка», но следующий глюк одной галочкой не правится). В Ubuntu по какой-то непонятной причине яркость «слетает» на максимум при каждой перезагрузке. Чтобы избавиться от подобного эффекта я написал небольшой «кастыль» на тему:

sudo mkdir /usr/lib/brightness /var/lib/brightness
sudo wget -O /usr/lib/brightness/brightness http://daily-notes.ru/files/2014/11/brightness
sudo chmod +x /usr/lib/brightness/brightness
sudo wget -O /usr/lib/brightness/udev.rules http://daily-notes.ru/files/2014/11/udev.rules
sudo ln -s /usr/lib/brightness/udev.rules /etc/udev/rules.d/90-brightness.rules

Яркость сохраняется при изменении и восстанавливается при загрузке системы.

2. Если вам не нужен ipv6, то я бы его рекомендовал отключить. Сделать это довольно просто, открываем конфиг sysctl:

sudo -e /etc/sysctl.conf

и вносим несколько строк про ipv6:

# IPv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

сохраняем файл и далее перечитываем настройки:

sudo sysctl -p

3. Отключаем внешние линзы Ubuntu, чтобы они не лезли в интернет и не помогали поисковым системам знать о вас слишком много. Сделать это можно вручную через настройки: Защита и приватность — поиск — Отображать результаты поиска в интернете. Так же можно воспользовавшись скриптом с сайта https://fixubuntu.com/

4. Устанавливаем дополнительные кодеки и шрифты:

sudo apt-get install ubuntu-restricted-extras
sudo apt-get install libavcodec-extra

5. Устанавливаем браузер Chromium и Flash от Google Chrome.

sudo apt-get install chromium-browser
sudo apt-get install pepperflashplugin-nonfree
sudo update-pepperflashplugin-nonfree --install

Так же сразу ставим AdBlock, чтобы красочные баннеры не расходовали батарею зря.

6. Если вы занимаетесь фотографией, то вам пригодится RAW thumbnailer, который создает превьюшки фотографий для raw файлов изображений в наутилусе:

sudo apt-get install gnome-raw-thumbnailer
Если вам понравилась моя статья, пожалуйста, не поленитесь кликнуть любую кнопочку ниже, или кинуть ссылку на статью в свой блог или форум. Всегда рад ответить на ваши вопросы в комментариях. Спасибо 🙂

  1. Хорошая статья, спасибо. Ровно тот же ноутбук, и те же предпочтения по ОС.
    Установил Runtu 14.04 XFCE . По-умолчанию имею частоту процессора «по запросу» (1200Mhz в покое). При отключении питания вентиляторы перестают шуметь, время оставшейся работы показывает 4 ч. 31 м.
    Параметры pcie_aspm=force и intel_pstate=enable не трогал. Что даст их установка если частота процессора и так меняется? Имеет смысл?
    Когда стояла официальная Xubuntu х64, процессор молотил постоянно на полную, не переходя в энергосбережение.
    Сейчас у меня потребление памяти с файрфоксом с восемью вкладками, несколькими файлововыми менеджерами м парой терминалов на Runtu х32 — 400 Мб, в Xubuntu x64 в таком случае было в районе 750 Мб. Но это предмет другой темы.
    С яркостью обошёлся менее изящно: в rc.local вписал «echo 2077 > /sys/class/backlight/intel_backlight/brightness», что соответствует 4 шагам вниз от максимальной яркости. Смотреть текущую яркость можно в том же файле brightness. Теперь при перезагрузке всегда одна и та же яркость.

    • Ну если ubuntu сама смогла включить pcie_aspm (Active-State Power Management) то pci-express будет сам притормаживаться ядром в моменты покоя, если нет — будет работать по полной. Проверить можно поглядев что-нибудь типа /sys/module/pcie_aspm/parameters/policy — если переключить удается, то вроде работает. Обычно бывают проблемы что ядро как-то не может подхватить фичу из-за каких-то кривых таблиц устройств в BIOS. Т.е. исходя из производителя и BIOS или везет и все сразу работает или требуются допилы. Специально для большинства придумали кастыль force.
      intel_pstate на сколько помню сам не включался. Можно поглядеть есть ли папка /sys/devices/system/cpu/intel_pstate — если есть, то подрубился. Вообще штука относительно прогрессивная, притормаживает процессор в режиме простоя, особенно хорошо заметно когда просто текст с экрана читаешь — время работы растягивается офигенно… как только шевельнул мышкой, проц сразу просыпается. Есть всего 2 режима работы у него: powersave и performance. Если включить powersave то как только ты простаиваешь, он сразу скидывает частоту к минималке (у меня это 1.2). Ессно всякие таймеры и прочая ерунда его будят, поглядеть кто и сколько можно в powertop. Но работает это только на sandy\ivy и далее.
      По яркости я думал о таком кастыле, но я, бывает, перемещаюсь из помещеня в помещение с разной освещенностью и кручу яркость … и иногда ребучусь там и т.п. Вообщем удобно когда все запомнено как надо 😉 Первый вариант был просто какой-то скрипт в init.d, но случилось «весело» — после очередного обновления при загрузке дисплей периодически стал подключаться к виртуальным путям позже, чем запускался скрипт в rc, после чего пришлось сделать скриптом к udev. Так даже правильнее.

      • Насчёт pcie_aspm: что там такого в ноутбуке работает на PCI Express? Дискретной графики в моём ноуте нет.
        Попробовал загружаться с intel_pstate: частота процессора в покое в районе 2100-2300 Mhz, при нагрузке поднимается до всех 2400 — это в режиме perfomance. В режиме powersave 1200, и выше не поднимается даже под нагрузкой, и всё притормаживает соответственно. Если у меня без pstate адекватно регулируется частота в зависимости от нагрузки, то смысла не вижу. Или, может, помимо частоты есть ещё какие-то параметры работы процессора, которые pstate меняет?
        А так — температура работы одинаковая при любом раскладе (41-45 град.), ноут неприятно тёпленький под левой рукой, хотя из сопел выдувается холодный воздух.
        Про яркость: в итоге сделал по Вашему варианту. Дописка в rc.local сыграла злую шутку, система примерно 1 из 5 раз недозагружается. Появляются иксы, среда, но не запускается network manager, не работает sudo, и вообще всё какое-то глючное и требует ребута. Убрал лишнее из rc.local, и всё прошло.

        • чтобы узнать что там на pci — попробуйте lspci, там довольно много всего.
          У intel_pstate есть ограничитель, не позволяющий разгоняться процессору выше чем указано в режиме powersave. Я указал это как:
          echo MAX_PREF_PCT_PM=50 | sudo tee /etc/pm/config.d/intel-pstate
          в % от частоты. Там еще есть минимальная, ниже которой он не опустится, у меня это 1.2. Хотите, поставьте 100%.
          intel-pstate позволяет управлять turbo boost, я в powersave его отключаю. В powersave у меня была задача максимально продлить работу от батареи без ущерба для здоровья. На 4х ядрах 1.2ghz мне достаточно, т.к. в игры не играю.
          Под левой рукой wifi карта. Она греется лучше всего.
          Я в rc.local не рекомендовал, я ж вообще сказал что надо через udev.

    • Не знаю, все работает как часы, по этому ничего не трогал. Думаю на ivi вряд ли можно что-то сильнее сберечь. Flash там вроде без акселерации и вроде бы она в хроме не работала, но как ее править я не знаю.

    • У меня 53-56, пропеллер отключается только на ребуте между началом старта диагностики биоса и загрузкой. Но это после обновления BIOS какого-то у меня случилось, уже фиг знает сколько лет прошло. Это при la 0.15 и температуре в комнате ~+25.

      • У меня убунта 32 бит. Ну значит, наверное, зря я беспокоюсь…
        Ubuntu XFCE или LXDE нагревало при средней нагрузке до 43-45. Unity без обозначенных в этой статье настроек нагревалась до 53-55. С настройками из твоей статьи средняя температура 47-50.

        • И вообще я пришёл к выводу, что на данном ноутбуке лучше иметь 32-битную систему.

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

  2. поставил на hp 4510s не работает hdmi выход подскажите пожалуйста что может быть

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *