ThinkPad:ArchLinux: Difference between revisions

From Wiki³
Line 16: Line 16:


= Hardware =
= Hardware =
=== Battery ===
=== Battery/CPU ===
Install [[archwiki:TLP|TLP]] and related packages. Although it is automatically enabled in systemd you can start it manually without rebooting.
Install [[archwiki:TLP|TLP]] and related packages. Then enable it with systemd, don't forget to mask the required services (skip NetworkManager if you use this).
{{Console|1=yaourt -S tlp tp_smapi acpi_call|2=sudo tlp start}}
{{Console|1=yaourt -S tlp tp_smapi acpi_call|2=sudo systemctl enable tlp|3=sudo systemctl enable tlp-sleep}}<br/>
{{Console|1=sudo systemctl mask NetworkManager.service|2=sudo systemctl mask systemd-rfkill.service|3=sudo systemctl mask systemd-rfkill.socket}}
TLP status can be shown with the following:
TLP status can be shown with the following:
{{Console|1=sudo tlp-stat}}
{{Console|1=sudo tlp-stat}}

Revision as of 00:29, 16 July 2017

IconUNDER CONSTRUCTION: The document is currently being modified!

Customization

Keeping the Boot Log on TTY1

In order to stop Arch Linux from clearing the screen on boot we can add the i915 module to MODULES inside of /etc/mkinitcpio.conf and then regenerate our kernel images.

# sudo sed -i -r 's/^MODULES="([a-z0-9 _-]+)"/MODULES="\1 i915"/' /etc/mkinitcpio.conf
# sudo mkinitcpio -p linux

Then create a directory for getty overrides and create one with the following.

# sudo mkdir /etc/systemd/system/getty@tty1.service.d
# sudo vim /etc/systemd/system/getty@tty1.service.d/noclear.conf


[Service]
TTYVTDisallocate=no

Traditional Device Node Names

To translate the predictable device node names back into traditional ones, can create the following. You can use the vim command :r !cat /sys/class/net/wlp3s0/address, replacing the device node respectively, in order to get the MAC Address of each device.

# vim /etc/udev/rules.d/10-network.rules


SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="MAC_ADDRESS_FOR_NIC", NAME=="eth0"
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="MAC_ADDRESS_FOR_WIFI", NAME=="wlan0"

Hardware

Battery/CPU

Install TLP and related packages. Then enable it with systemd, don't forget to mask the required services (skip NetworkManager if you use this).

# yaourt -S tlp tp_smapi acpi_call
# sudo systemctl enable tlp
# sudo systemctl enable tlp-sleep


# sudo systemctl mask NetworkManager.service
# sudo systemctl mask systemd-rfkill.service
# sudo systemctl mask systemd-rfkill.socket

TLP status can be shown with the following:

# sudo tlp-stat

It is also a good idea to install PowerTOP in order to monitor power usage.

# yaort -S powertop

CPU

First begin by installing cpupower and upower.

# yaourt -S cpupower upower

Create udev rules for automatically changing the governor when the system is running.

# sudo vim /etc/udev/rules.d/powersave.rules


SUBSYSTEM=="power_supply", ATTR{online}=="1", RUN+="/usr/bin/laptopmode AC"
SUBSYSTEM=="power_supply", ATTR{online}=="0", RUN+="/usr/bin/laptopmode BAT"

Create a systemd service for adjusting the governor when returning from suspend.

# sudo vim /etc/systemd/system/root-resume.service


[Unit]
Description=Local system resume actions
After=suspend.target

[Service]
Type=simple
ExecStart=/usr/bin/laptopmode

[Install]
WantedBy=suspend.target

Also create a systemd service for adjusting the governor on system boot-up.

# sudo vim /etc/systemd/system/power_management.service


[Unit]
Description=Sets the CPU governor on boot according to AC mode
Requires=multi-user.target
After=multi-user.target

[Service]
Type=oneshot
RemainAfterExit=no
ExecStart=/usr/bin/laptopmode

[Install]
WantedBy=multi-user.target

Finally create the script itself to switch modes.

# sudo vim /usr/bin/laptopmode


# #!/usr/bin/bash

STATE=""
BAT="BAT1"

if [[ "$1" == "BAT" || "$1" == "AC" ]]; then
STATE="$1"
fi

if [[ $STATE == "" ]]; then
if [[ $(upower -i /org/freedesktop/UPower/devices/battery_$BAT | grep state | grep discharging) == "" ]]; then
STATE="AC"
else STATE="BAT"
fi
fi

echo $STATE

if [[ $STATE == "BAT" ]]; then
echo "Discharging, set governor to powersave and disabled Turbo Boost"
cpupower frequency-set -g performance
cpupower frequency-set -f 2500MHz
echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo
elif [[ $STATE == "AC" ]]; then
echo "AC plugged in, set governor to performance and enabled Turbo Boost"
cpupower frequency-set -g performance
cpupower frequency-set -f 3500Mhz
echo 0 > /sys/devices/system/cpu/intel_pstate/no_turbo
fi

Fan Control

Install thinkfan, default configuration is installed into /usr/lib/modprobe.d/thinkpad_acpi.conf.

# yaourt -S acpi lm_sensors thinkfan

Then detect the hardware monitors chips that are available. Then re-enable the thinkpad_acpi kernel module to update with the new config.

# sudo sensors-detect
# sudo modprobe thinkpad_acpi

To show the current thermal and cooling information use acpi.

# sudo acpi -V

To show the current fan speed and level.

# sudo cat /proc/acpi/ibm/fan

Make the changes to point it to the right temperature reading, you can use :r !sudo find /sys/devices -type f -name "temp*_input" in order to paste all the monitors into the file.

# sudo vim /etc/thinkfan.conf

When finished it should look something like this:

hwmon /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp1_input
hwmon /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp2_input
hwmon /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp3_input
hwmon /sys/devices/virtual/hwmon/hwmon1/temp1_input
tp_fan /proc/acpi/ibm/fan

(0, 0, 35)
(1, 33, 38)
(2, 36, 45)
(3, 39, 49)
(4, 46, 58)
(5, 50, 62)
(7, 56, 32767)

You can verify the config is written correctly with the following command.

# sudo thinkfan -n

Finally enable and start thinkfan.

# sudo systemctl enable thinkfan
# sudo systemctl start thinkfan

HDD/SSD

To monitor the HDD or SSD installed you need to install the smartmontools package.

# yaourt -S smartmontools

You can view an overall health assessment with the following:

# sudo smartctl -H /dev/sdX