https://wiki.archlinux.org/api.php?action=feedcontributions&user=Davidhaller&feedformat=atomArchWiki - User contributions [en]2024-03-29T16:00:05ZUser contributionsMediaWiki 1.41.0https://wiki.archlinux.org/index.php?title=Lenovo_ThinkPad_T480&diff=568932Lenovo ThinkPad T4802019-03-16T22:42:50Z<p>Davidhaller: UEFI section only applies to GRUB, not other bootloaders</p>
<hr />
<div>[[Category:Lenovo]]<br />
[[ja:Lenovo ThinkPad T480]]<br />
{| class="wikitable" style="float: right;"<br />
| '''Device''' || '''Status''' <br />
|-<br />
| [[Intel graphics]] || {{Yes}} <br />
|-<br />
| [[Wireless]] || {{Yes}}<br />
|-<br />
| [[ALSA]] || {{Yes}}<br />
|-<br />
| [[TrackPoint]] || {{Yes}}<br />
|-<br />
| [[Touchpad]] || {{Yes}}<br />
|-<br />
| [[Webcam]] || {{Yes}}<br />
|-<br />
| [[Bluetooth]] || {{Yes}}<br />
|-<br />
| [[ThinkPad_mobile_internet|Mobile internet]] || {{Yes}}ยน<br />
|-<br />
| Fingerprint Sensor || <br />
|- <br />
|colspan=2 style="font-size: 70%; border: none;" |<ol><li> No working Linux driver for Fibocom L850-GL. See [https://forums.lenovo.com/t5/Linux-Discussion/X1C-gen-6-Fibocom-L850-GL-Ubuntu-18-04/m-p/4078413 this thread] and [https://forums.lenovo.com/t5/Linux-Discussion/Linux-support-for-WWAN-LTE-L850-GL-on-T580-T480/td-p/4067969 this thread] for more info.</li><br />
|}<br />
<br />
This article covers the installation and configuration of Arch Linux on a Lenovo T480 laptop. Everything seems to work pretty much out the box.<br />
<br />
For a general overview of laptop-related articles and recommendations, see [[Laptop]].<br />
<br />
== Hardware ==<br />
<br />
Using kernel 4.16.8-1-ARCH<br />
<br />
Version: ThinkPad T480<br />
SKU Number: LENOVO_MT_20L5_BU_Think_FM_ThinkPad T480<br />
Product Name: 20L5CTO1WW<br />
<br />
{{ic|lspci}} returns something like:<br />
<br />
00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers (rev 08)<br />
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 620 (rev 07)<br />
00:04.0 Signal processing controller: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem (rev 08)<br />
00:08.0 System peripheral: Intel Corporation Xeon E3-1200 v5/v6 / E3-1500 v5 / 6th/7th Gen Core Processor Gaussian Mixture Model<br />
00:14.0 USB controller: Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller (rev 21)<br />
00:14.2 Signal processing controller: Intel Corporation Sunrise Point-LP Thermal subsystem (rev 21)<br />
00:15.0 Signal processing controller: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #0 (rev 21)<br />
00:16.0 Communication controller: Intel Corporation Sunrise Point-LP CSME HECI #1 (rev 21)<br />
00:1c.0 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #1 (rev f1)<br />
00:1c.6 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #7 (rev f1)<br />
00:1d.0 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #9 (rev f1)<br />
00:1d.2 PCI bridge: Intel Corporation Device 9d1a (rev f1)<br />
00:1f.0 ISA bridge: Intel Corporation Device 9d4e (rev 21)<br />
00:1f.2 Memory controller: Intel Corporation Sunrise Point-LP PMC (rev 21)<br />
00:1f.3 Audio device: Intel Corporation Sunrise Point-LP HD Audio (rev 21)<br />
00:1f.4 SMBus: Intel Corporation Sunrise Point-LP SMBus (rev 21)<br />
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (4) I219-V (rev 21)<br />
03:00.0 Network controller: Intel Corporation Wireless 8265 / 8275 (rev 78)<br />
3d:00.0 Non-Volatile memory controller: Lenovo Device 0003<br />
<br />
{{ic|lsusb}} returns something like:<br />
<br />
Bus 002 Device 005: ID 0bda:0316 Realtek Semiconductor Corp. <br />
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub<br />
Bus 001 Device 004: ID 06cb:009a Synaptics, Inc. <br />
Bus 001 Device 003: ID 04f2:b604 Chicony Electronics Co., Ltd <br />
Bus 001 Device 002: ID 8087:0a2b Intel Corp. <br />
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
<br />
and for Product Name: {{ic|20L50007GE}} something like:<br />
<br />
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub<br />
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub<br />
Bus 002 Device 002: ID 0bda:0316 Realtek Semiconductor Corp. <br />
Bus 001 Device 006: ID 06cb:009a Synaptics, Inc. <br />
Bus 001 Device 005: ID 13d3:56a6 IMC Networks <br />
Bus 001 Device 004: ID 8087:0a2b Intel Corp. <br />
Bus 001 Device 003: ID 2cb7:0210 <br />
Bus 001 Device 002: ID 058f:9540 Alcor Micro Corp. AU9540 Smartcard Reader<br />
<br />
ID {{ic|2cb7:0210}} is the 4G modem Fibocom L830-EB.<br />
Noted that devices come with 4G modem Fibocom L850-GL may not work.<br />
<br />
== Suspend / Hibernation ==<br />
<br />
Suspend and Hibernation work out of the box. The T480 does not have the same issues as the [[Lenovo_ThinkPad_X1_Carbon_(Gen_6)#Suspend_issues|X1 Carbon Gen 6]]<br />
<br />
== TrackPoint and Touchpad ==<br />
<br />
TrackPoint and Touchpad work out of the box and do not seem to have the same issues as the [[Lenovo_ThinkPad_X1_Carbon_(Gen_6)#TrackPoint_and_Touchpad_issues|X1 Carbon Gen 6]]<br />
<br />
== Power management/Throttling issues ==<br />
<br />
See<br />
* X1 Carbon Gen 6 [[Lenovo_ThinkPad_X1_Carbon_(Gen_6)#Power_management.2FThrottling_issues|Power management/Throttling issues]]<br />
* ThinkPad T480s [[Lenovo_ThinkPad_T480s#Thermal_Throttling_Fix|Thermal Throttling Fix]]<br />
* https://github.com/erpalma/throttled<br />
<br />
== UEFI and GRUB ==<br />
<br />
Lenovo T480 is tied in with Microsoft and will only boot to Windows EFI file or default EFI fallback file. Verified on firmware version 1.14.<br />
<br />
When GRUB is used, it is needed to rename the GRUB .efi to one of these specific file names. Please remember to repeat these steps (or use a pacman hook) when the GRUB package was updated.<br />
<br />
mount /dev/sdXY /mnt # replace XY with the letter & number of the Arch EFI system partition<br />
<br />
# Windows .efi file<br />
<br />
mkdir -p /mnt/EFI/Microsoft/Boot<br />
cp /mnt/EFI/grub/grubx64.efi /mnt/EFI/Microsoft/Boot/bootmgfw.efi<br />
<br />
# EFI fallback .efi file (as defined in the EFI standard.)<br />
<br />
mkdir -p /mnt/EFI/BOOT<br />
cp /mnt/EFI/grub/grub64.efi /mnt/EFI/BOOT/bootx64.efi<br />
<br />
Source: http://www.rodsbooks.com/efi-bootloaders/installation.html#alternative-naming<br />
<br />
Alternatively, systemd-boot can be used as a bootloader. systemd-boot already configures the EFI fallback file name as a default, so no further measures are required after installation.<br />
<br />
== Screen backlight ==<br />
<br />
Without the intel driver (xf86-video-intel), neither xbacklight or xrandr brightness control are working.<br />
<br />
== Encryption and keyboard ==<br />
Assuming encrypted installation, during boot process you are prompted to enter password to decrypt disk. In some cases you may not be able to enter password, because at this time keyboard driver is not loaded yet.<br />
<br />
To fix this simply put {{ic|atkbd}} module into {{ic|MODULES}} in [[mkinitcpio]] config file:<br />
<br />
{{hc|/etc/mkinitcpio.conf|<nowiki><br />
MODULES = (... atkbd)<br />
</nowiki>}}<br />
<br />
And generate new ramdisk environment:<br />
<br />
# mkinitcpio -p linux<br />
<br />
== Special buttons ==<br />
Some special buttons are not supported by X server due to keycode number limit.<br />
<br />
{| class="wikitable" style="text-align:center"<br />
|-<br />
! Key combination !! Scancode !! Keycode<br />
|-<br />
| {{ic|Fn+F11}} || {{ic|0x49}} || {{ic|374}} {{ic|KEY_KEYBOARD}}<br />
|-<br />
| {{ic|Fn+F12}} || {{ic|0x45}} || {{ic|364}} {{ic|KEY_FAVORITES}}<br />
|}<br />
<br />
You can remap unsupported keys using [[Map scancodes to keycodes|udev hwdb]]:<br />
<br />
{{hc|/etc/udev/hwdb.d/90-thinkpad-keyboard.hwdb|<nowiki><br />
evdev:name:ThinkPad Extra Buttons:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*<br />
KEYBOARD_KEY_45=prog1<br />
KEYBOARD_KEY_49=prog2<br />
</nowiki>}}<br />
<br />
Update hwdb after editing the rule.<br />
# udevadm hwdb --update<br />
# udevadm trigger --sysname-match="event*"<br />
<br />
Their names will be "XF86Launch2" (KEY_KEYBOARD) and "XF86Launch1" (KEY_FAVORITES)</div>Davidhallerhttps://wiki.archlinux.org/index.php?title=Migrate_installation_to_new_hardware&diff=568544Migrate installation to new hardware2019-03-13T08:44:12Z<p>Davidhaller: /* What software? */ simplify pacman backup commands</p>
<hr />
<div>[[Category:System recovery]]<br />
{{out of date|Mentions rc.conf and uses links to wiki articles that don't exist anymore.}}<br />
This article discusses the steps required for moving an Arch Linux system to new hardware. The goal is to achieve the same ArchLinux installation, as far as installed software and configuration is concerned.<br />
<br />
There are two different approaches to migrating an installation:<br />
# ''Bottom to Top'': Install a fresh Arch Linux system on the new hardware, afterwards restore the installed packages and configuration files.<br />
# ''Top to Bottom'': Clone the old harddrive to the new harddrive, or place the old harddrive into the new system; modify configuration files where necessary.<br />
Which way you choose depends heavily on how the new system differs from your old and how exact you want to reproduce the system.<br />
{{Warning|Some of the following instructions can be dangerous: you are advised to backup all of your important data on the old system before continuing.}}<br />
<br />
== Bottom to Top ==<br />
=== On the old system ===<br />
==== What software? ====<br />
$ pacman -Qqen > Packages<br />
$ pacman -Qqem > Packages.aur<br />
gives you a nice list of explicitly installed packages. Don't forget the software ''not'' installed through pacman (also see [[Arch_User_Repository#Why_has_foo_disappeared_from_the_AUR.3F|AUR FAQ]]). You may also use the following script to give you a better overview of the binaries and libraries installed unbeknownst to pacman (e. g. installed via Steam, Desura or using their own install methods):<br />
<br />
find / -regextype posix-extended -regex "/(sys|srv|proc)|.*/\.ccache/.*" -prune -o -type f \<br />
-exec bash -c 'file "{}" | grep -E "(32|64)-bit"' \; | \<br />
awk -F: '{print $1}' | \<br />
while read -r bin; \<br />
do pacman -Qo "$bin" &>/dev/null || echo "$bin"; \<br />
done<br />
<br />
==== Copy to some backup space. ====<br />
* You can consider backing up /var/cache/pacman/pkg if you do not change architectures (example: from x86 to x86_64)<br />
* /etc should be backed up, in order to peek if necessary.<br />
<br />
=== On the new system ===<br />
==== Wiki articles ==== <br />
* Read some Wiki articles concerning new hardware, for examples your new [[SSD]].<br />
* Stick to the well-written installation guidelines here in this wiki. Since you are experienced, the [[Installation guide]] could be enough. <br />
* Try to configure as much as possible sticking to ''current'' wiki articles and forum posts. <br />
<br />
==== Copy from backup space ====<br />
* Copy the pacman cache to var/cache/pacman/pkg<br />
* Don't forget to edit /etc/pacman.d/mirrorlist<br />
<br />
==== Install software ====<br />
As root, grab a cup of coffee and execute:<br />
# xargs -a Packages pacman -S --noconfirm --needed<br />
<br />
== Top to Bottom ==<br />
{{Merge|Migrating Between Architectures Without Reinstalling}}<br />
*See these forum threads:<br />
**https://bbs.archlinux.org/viewtopic.php?id=71038<br />
**https://bbs.archlinux.org/viewtopic.php?pid=543214<br />
<br />
=== Move the system to the new HDDs ===<br />
{{Note|If you are planning to keep the hard drive where the system is already installed, you can skip this section.}}<br />
There are two fundamental methods for copying data between two disks, cloning an entire disk, and copying single files. For details see [[Disk cloning]]. If you want to clone the entire disk, it is required to use a live cd to do so.<br />
<br />
At the same time there are many different methods for how to transport the data between the two drives:<br />
*Connect origin and destination HDDs to the same computer, either the old or the new one. Data link: old HDD -> computer -> new HDD.<br />
*Make use of temporary storage devices like external HDDs, or cloud backups. Data link: old HDD -> old computer -> storage -> new computer -> new HDD.<br />
*Transfer data over network, for example with [[rsync]]. Data link: old HDD -> old computer -> network -> new computer -> new HDD.<br />
For the first two options, consider that you might need adapters to connect the HDDs (PATA->SATA, USB-HDD-Cases, etc.), and choose a connection that is sufficiently fast.<br />
The last two options require you to use a live system on the new computer, as it is not possible to boot from the new harddrive at this point. It is also worth to clean up your system before cloning it. See [[List of applications#Disk usage display]] for useful tools.<br />
<br />
=== Update fstab ===<br />
{{Warning|Before doing this step please make sure that you do not wish to use this drive in the old system, as removing/altering the [[fstab]] file will likely prevent the system from booting in the old configuration}}<br />
If you are using an Arch Linux Installation Image, mount the new root partition to {{ic|/mnt}}, and any other partitions required like you would in a normal install (see [[Installation guide#Mount the file systems]]). Next remove the old fstab file using the following command {{bc| # rm /mnt/etc/fstab}} and then generate a new one as indicated on [[Installation guide#Fstab]].<br />
{{Note|Make sure to check that no unnecessary partitions are mounted. This can be checked by running {{ic|mount -l}} and checking all the partitions that are mounted under {{ic|/mnt}} (either directly or under a subfolder of {{ic|/mnt}}). If there are any partitions mounted that are unnecessary you can unmount them using {{ic|umount devname}} where {{ic|devname}} is the name of the device you with to unmount (most likely in the from {{ic|/dev/sdxn}} with {{ic|x}} a letter indicating the device and {{ic|n}} a number indicating the specific partition)}}<br />
<br />
Alternative methods to alter the fstab file are:<br />
*using /dev paths: this should change depending on how the new drives are connected to the mainboard, on the BIOS and on the new partitions scheme<br />
*using fs labels: should be safe<br />
*using UUIDs<br />
<br />
=== Reconfigure the bootloader ===<br />
Reasons you might need to reconfige the bootloader:<br />
*new HDD and partitions configuration<br />
*new BIOS configuration<br />
*update framebuffer mode (if new gpu)<br />
*USB to SATA/NVMe migration?<br />
**often UEFI doesn't boot [[EFISTUB]] of a non-removable medium without explicit configuration, use f.e. {{Ic|efibootmgr}}<br />
{{Note|If you are using an Arch Linux Installation Image make sure that you have set changed you root to the new boot partion (preferably using {{ic|arch-chroot}})}}<br />
If you are using [[GRUB]] simply run install procedure as indicated for you setup (BIOS vs UEFI) and then generate the main config as indicated on [[GRUB#Generate the main configuration file]].<br><br />
Alternatives are:<br />
*GRUB allows to edit entries with 'e'<br />
*use a live system?<br />
<br />
=== Regenerate kernel image ===<br />
*initially the Fallback image could work<br />
*regenerate image<br />
**{{Ic|mkinitcpio -p linux}}<br />
<br />
=== Update the graphic drivers ===<br />
*if changed driver (e.g. from ATI to NVIDIA) can uninstall the old drivers<br />
<br />
=== Reconfigure audio ===<br />
*alsamixer volume<br />
**save settings<br />
<br />
=== Reconfigure network ===<br />
*if need to change hostname:<br />
**[[Network configuration#Set the hostname|hostnamectl]]<br />
**/etc/hosts<br />
**other apps using hostname: synergy, nut (network ups tools)<br />
***{{Ic|# grep -Ri 'hostname' /etc}} should give some hints on the files to be updated<br />
*if using [[dhcpcd]] with named network interfaces:<br />
** {{Ic|$ dmesg <nowiki>|</nowiki> grep 'renamed from eth'}} might help to find the new interface name<br />
** remove old {{Ic|# systemctl remove dhcpcd@enp''X''s0.service}}<br />
** activate new {{Ic|# systemctl start dhcpcd@enp''X''s0.service}}<br />
<br />
== See also ==<br />
*[[Disk cloning]]<br />
*[[Migrating Between Architectures Without Reinstalling]]<br />
*[[Moving an existing install into (or out of) a virtual machine]]<br />
*[http://positon.org/clone-a-linux-system-install-to-another-computer Howto clone a linux system]</div>Davidhaller