ThinkPad X220: Arch Linux Notes
UNDER 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 |
Then edit the tlp config file to setup your TLP profile. You can see a copy of mine here (TODO: Insert link to GitHub)
# sudo vim /etc/defaults/tlp |
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 |
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 |
SSD
First if you want to enable TRIM on boot, create a systemd service. Also create a systemd service for adjusting the governor on system boot-up.
# sudo vim /etc/systemd/system/ssd-trim.service |
[Unit] Description=Runs fstrim on the SSD Requires=multi-user.target After=multi-user.target [Service] Type=oneshot RemainAfterExit=no ExecStart=/usr/bin/fstrim -v / [Install] WantedBy=multi-user.target |
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 |
Enable and start the smartd systemd service to enable SMART monitoring for all disks.
# sudo systemctl enable smartd |
We can also have SMART email us and run a script for notifications on SMART errors.
# sudo sed -i 's/^DEVICESCAN/DEVICESCAN -m address\@domain.com -M exec \/usr\/bin\/smartdnotify/' /etc/smartd.conf |
Then create the /usr/bin/smartdnotify script (replacing both instances of kyau with your username).
# sudo vim /usr/bin/smartdnotify |
#!/bin/sh sudo -u kyau DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/kyau/bus notify-send "S.M.A.R.T Error ($SMARTD_FAILTYPE)" "$SMARTD_MESSAGE" --icon=dialog-warning |
# sudo chmod +x /usr/bin/smartdnotify |
Then you can start the service.
# sudo systemctl start smartd |