Best way to "mirror" existing EOS installation to a second laptop (Thinkpad T14 Gen 1)?

Now I’m running EOS/Cinnamon on an old laptop for a few months and have installed and fine-tuned lots of applications and system settings.

I came by a Thinkpad T14 for a real good price, and of course I’d like to set this up with EOS, ideally not losing any settings and apps I have on my original laptop. A “mirror” installation, so to say. I have installed from the ISO, it was a snap as usual, but what’s the best way to mirror all apps, app & system settings to the new machine?

I even used the same user name, so any saved paths into my home folder should continue to work.

I didn’t want to blindly clone the existing laptop using Clonezilla or such, because of machine ID. hostname and other things. Learning how to do it “the right way” is also a point. But of course I wouldn’t want to redo everything I’ve already done (and surely forget half of it). The process should also do “little things” like the memtest86+ I added to my boot menu.

I do keep current Timeshift and Back in Time snapshots on the first laptop, if that helps. Learning how to do without would probably be better, though.

P.S.: You wouldn’t believe how glad I am to have a machine with a good and backlit keyboard again—being a night owl, I really missed that.

1 Like

A few months ago I cloned my EOS and Solus installations to a new SSD with GPARTED.

Researched my a** off, asked questions like you are, hated all my options, then found a tutorial from a guy who did it. It would have never occurred to me. It’s much easier than it looks.

you do it live.
if the whole laptop gets EOS then make your gpt.
If the laptop is smaller SSD/HDD than it’s existing SSD/HDD home, then you will need to shrink the EOS to that size.

the only PITA was the SSID thing but that went fast.
Using Gparted was a cloning success story for me.

@Moonbase59 if by ‘mirror’ you don’t mean ‘clone’ then I will sheepishly remove my response. hopefully I understood you correctly.

No problem, you just show another way to clone w/o using Clonezilla.

But for some reason, I’d not like a “perfect clone” (which has same machine IDs, hostname, etc.) but instead just move all my apps & settings over from one machine to the other (which has a “naked” EOS/Cinnamon install now). Including stuff like my systemd-boot memtest86+, my /etc/, my .config, and whatever might be needed to “seamlessly” continue working on the new machine with just the same settings.

I think there must be some rather easy way with an Arch distro like EOS, maybe exporting the package list to reinstall on the other, moving over certain /etc and dotfiles… If only everything would store their params under ~/.config … sigh.

1 Like

What about timeshift?

the better way is to put HDD / SSD from the old to the new one ,
or you will have to do full backup / restore ( see https://wiki.archlinux.org/title/Rsync#Full_system_backup )

i have spent few days to migrate internal to an USB external and then restore USB external on the new computer , with change UUID & /etc/fstab, re install grub and videos drivers , and maybe microcode.

This is where e.g. NixOS shines, with its declarative and easy to reproduce environment.

I don’t think there’s a satisfying answer for Arch. Cloning would be the easiest way, but as you pointed out you duplicate some unwanted properties. So you could settle on a manually maintained solution, and that could be everything - from rsync with excludes to dot-file managers. Any recommendation feels that it is highly tailored to individual comfort level or preference.

Personally I just document my changes. If I need them applied to a different system I reproduce from that documentation on a need to have basis. In the end it’s maybe ten files/directories in /etc and ten in ~/.config, and 80% is just copying files over from an existing installation, a backup or online sync-place.

All done, up & running:

I went the path of least resistance, since I wanted the Thinkpad ready for work tomorrow (well, today actually, it’s 4:30 am here):

  • Started old laptop from my Ventoy stick, cloned SSD to an NFS share on my NAS.
  • Started Thinkpad from Ventoy stick, cloned the 256GB (122GB used) back from the NAS to the 512GB NVMe.
  • Started Ventoy stick with EOS live + persistence.
  • Used gparted to move swap partition to the end of the new drive, extended EOS partition to use rest of available space.
  • arch-chroot’ed into the new system, changed /etc/hosts & /etc/hostname.
  • Ran reinstall-kernels, which in turn created new machine ID and new entries in /efi/loader/entries.
  • Booted into new system (with new machine id), removed old entries in /efi/loader/entries, rebooted again.
  • All good so far, now for the rest:
    • Shut down Syncthing, deleted cert.pem & key.pem in ~/.local/state/syncthing/, restarted Syncthing (new ID), changed machine name, reconnected with other Syncthing devices.
    • Modified player name for squeezelite (Lyrion client) in Autostart.
    • Set base volume in alsamixer.
    • ha-battery-sensor needed no modification, since it takes the hostname to create a sensor for Home Assistant. (Which in turn shouts at me when I let my laptop battery drain too low.)
    • Installed intel-media-driver to get VAAPI support for hardware video decoding (Firefox!).
    • Reboot, start Lyrion music player, quick test, relax, photo, beer

No, wait! No more beer in the house, damn! Send me some… :wink:

3 Likes

Afterthoughts: Arch can sometimes be a little weird.

I thought I was getting Thinkpad touchpad problems, because tapping only worked sometimes, and usually with a rather hard tap. Tap-n-drag did not work at all (like tap-tap-drag a window, or mark some text).

Remember, I’m using Cinnamon (X11), so I thought let’s copy over /usr/share/X11/xorg.conf.d/30-touchpad.conf over to /etc/X11/xorg.conf.d/30-touchpad.conf and add a TappingDrag option to it:

Section "InputClass"
    Identifier "devname"
    Driver "libinput"
    Option "Tapping" "on"
    Option "TappingDrag" "on"
EndSection

This has absolutely no effect. But if I modify /usr/share/X11/xorg.conf.d/30-touchpad.conf directly (which I probably shouldn’t because of updates), the Thinkpad T14’s touchpad suddenly works superb, every single tap works, and tap-n-drag also!

I used xinput list to find the touchpad’s ID:

$ xinput list
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ Synaptics TM3471-020                    	id=10	[slave  pointer  (2)]
⎜   ↳ TPPS/2 Elan TrackPoint                  	id=11	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    ↳ Power Button                            	id=6	[slave  keyboard (3)]
    ↳ Video Bus                               	id=7	[slave  keyboard (3)]
    ↳ Lid Switch                              	id=8	[slave  keyboard (3)]
    ↳ Sleep Button                            	id=9	[slave  keyboard (3)]
    ↳ Intel HID events                        	id=12	[slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard            	id=13	[slave  keyboard (3)]
    ↳ ThinkPad Extra Buttons                  	id=14	[slave  keyboard (3)]

then xinput list-props 10 to see current settings, and in both cases it says Tapping Drag Enabled: 1. Even when I leave the option line out. Odd.

$ xinput list-props 10
Device 'Synaptics TM3471-020':
	Device Enabled (187):	1
	Coordinate Transformation Matrix (189):	1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
	libinput Tapping Enabled (322):	1
	libinput Tapping Enabled Default (323):	0
	libinput Tapping Drag Enabled (324):	1
	libinput Tapping Drag Enabled Default (325):	1
	libinput Tapping Drag Lock Enabled (326):	0
	libinput Tapping Drag Lock Enabled Default (327):	0
	libinput Tapping Button Mapping Enabled (328):	1, 0
	libinput Tapping Button Mapping Default (329):	1, 0
	libinput Natural Scrolling Enabled (330):	1
	libinput Natural Scrolling Enabled Default (331):	0
	libinput Disable While Typing Enabled (332):	1
	libinput Disable While Typing Enabled Default (333):	1
	libinput Scroll Methods Available (334):	1, 1, 0
	libinput Scroll Method Enabled (335):	1, 0, 0
	libinput Scroll Method Enabled Default (336):	1, 0, 0
	libinput Click Methods Available (337):	1, 1
	libinput Click Method Enabled (338):	1, 0
	libinput Click Method Enabled Default (339):	1, 0
	libinput Clickfinger Button Mapping Enabled (340):	1, 0
	libinput Clickfinger Button Mapping Default (341):	1, 0
	libinput Middle Emulation Enabled (342):	0
	libinput Middle Emulation Enabled Default (343):	0
	libinput Accel Speed (344):	0.000000
	libinput Accel Speed Default (345):	0.000000
	libinput Accel Profiles Available (346):	1, 1, 1
	libinput Accel Profile Enabled (347):	1, 0, 0
	libinput Accel Profile Enabled Default (348):	1, 0, 0
	libinput Accel Custom Fallback Points (349):	<no items>
	libinput Accel Custom Fallback Step (350):	0.000000
	libinput Accel Custom Motion Points (351):	<no items>
	libinput Accel Custom Motion Step (352):	0.000000
	libinput Accel Custom Scroll Points (353):	<no items>
	libinput Accel Custom Scroll Step (354):	0.000000
	libinput Left Handed Enabled (355):	0
	libinput Left Handed Enabled Default (356):	0
	libinput Send Events Modes Available (307):	1, 1
	libinput Send Events Mode Enabled (308):	0, 0
	libinput Send Events Mode Enabled Default (309):	0, 0
	Device Node (310):	"/dev/input/event8"
	Device Product ID (311):	1739, 0
	libinput Drag Lock Buttons (357):	<no items>
	libinput Horizontal Scroll Enabled (358):	1
	libinput Scrolling Pixel Distance (359):	15
	libinput Scrolling Pixel Distance Default (360):	15
	libinput High Resolution Wheel Scroll Enabled (361):	1

Can anyone explain that?

You can use Stow to clone your dotfiles from one machine to another. This video explains it very good.

I just copy all my dotfiles like .nvim .tmux .zshrc alacritty.conf .ssh, hotkeys etc with this. But it doesn’t copy all your packages and programs of course.

Well, exporting a package list with pacman or yay should be trivial. I’m only a bit unsure about what options to use on the new machine to re-install them. Some may be --needed, some installed explicit or --as-deps, and how would the new pacman know?

1 system: sudo pacman -Q > installed_packages.txt
copy installed_packages.txt to 2 system, then:
2 system: sudo pacman -rD installed_packages.txt
Pacman will do everything automatically

But why -r an alternative root, and its path missing?

Anyway, guess I get that managed, was just unsure about the flags.

Hmm. Now I need yet another PC to test that out, because the clone variant is already in productive use. :rofl:

-r for clearness of system.It’s delete unnessesary packets

1 Like

your list is all old-school and thought out even to cleaning the boot entries.
Congrats on the mirror.
Hope you acquired Beer.

1 Like

Darn! I knew I forgot something! Need more… COFFEE! :rofl:
Thanks for the kind words. In ~50 years of IT, one does learn a thing or two… :grin:

1 Like

Maybe try a higher number?
Often something like 99-mysettings.conf is used so it is loaded last.

Transfuse can handle package lists for you if you dont want to do it yourself.

    -p   --pkglists               create list of installed packages * 
    -pr  --pkgrestore                        install native pkglist * 
    -pra --pkgrestorealien                    install alien pkglist * 
1 Like

Cheers for the helpful info!

I found the “does nothing” in /etc/X11/xorg.conf.d/30-touchpad.conf was actually a dumb user error—I simply forgot to change the “devname” in that. :blush:

Nevertheless, the touchpad problems persisted. Whenever coming back from sleep mode, tap-clicking and tap-dragging were unreliable as hell again. It drives me absolutely mad when I can’t tap-click and tap-drag on laptops! — I could never adjust to the Thinkpad’s TrackPoint, and, besides, not all my machines are Thinkpads or Dells.

Since my EOS has X11 Cinnamon, which is GNOME-based, and GNOME has used libinput and xf86-input-libinput in favour of the xf86-input-synaptics for a long time, I tried another way, which seems to survive sleep mode (cross fingers!):

  • removed the faulty /etc/X11/xorg.conf.d/30-touchpad.conf
  • added a new “catchall” /etc/X11/xorg.conf.d/40-libinput.conf with following content:
    # Needed to make touchpad tapping work after sleep
    Section "InputClass"
            Identifier "libinput touchpad catchall"
            MatchIsTouchpad "on"
            MatchDevicePath "/dev/input/event*"
            Driver "libinput"
            Option "Tapping" "on"
            Option "ClickMethod" "clickfinger"
            Option "TappingDrag" "on"
            Option "ScrollMethod" "twofinger"
            Option "DisableWhileTyping" "on"
            Option "TappingButtonMap" "lmr"
    EndSection
    

I somehow have the suspicion the well-meaning seller did me a disservice by putting a fresh Windows 11 Pro including all Lenovo drivers and firmware updates on this machine… I mean, I’m grateful for the BIOS update already done (2025-02-10!), but chances are he introduced the buggy latest Windows Synaptic firmware, too… and of course that would stick. Besides, the first thing after running all diagnostics was to remove the Windows install and put EOS on it. Didn’t even bother to backup that Windows—it’ll never be used anyway.

Well, let’s see. In all other respects, I just love this laptop.

Oh, wait, no. I never understood why Lenovo decided to put the Fn key at the lower left of the keyboard, where the Ctrl key should be! Countless times now I have typed Fn+C and Fn+V instead of Ctrl+C and Ctrl+V

I mean, okay, they changed their BIOSes so we can swap these two keys again, but the key labelling is wrong now, and stickers don’t help much on a backlit keyboard.

I write. I’m a keyboard man. And this Thinkpad T14 Gen 1 definitely has one of the best keyboards I ever encountered on a laptop.

I guess I should change the thread title to mention “Thinkpad” now, so others can find it more easily…

Still fighting with intermittent touchpad problems, it recognizing tapping only every 3rd to 5th tap, and tap-n-drag not correctly. This does never happen when the laptop is freshly started, but usually after a suspend/resume.

I experimented with xf86-input-synaptics to no avail, and uninstalled it again. libinput is supposed to handle all that anyway.

I searched a lot, found something in a NixOS forum that pointed to an Ubuntu forum that pointed to the Arch wiki… and told me to try a kernel cmdline parameter psmouse.synaptics_intertouch=0. Still have to find out what exactly this does, but giving it a try.

Added it to /etc/kernel/cmdline, then did a reinstall-kernels and rebooted.

Let’s see if this can fix the problem permanently. A few suspend/resumes it survived already. Touchpad problems can be really hard to diagnose and fix, so I leave my experiences here for others to find.

It’s really horrible when you can’t mark something onscreen with the touchpad, or move a window!

yikes, it’s like you are hacking through the jungle with a machete for this project.

yep. good luck. hope the last arch psmouse trick sticks.

1 Like