linux boot process tricks
To transfer all system files, it's best to get a live USB-stick or CD and boot into it
(all live-distros from ubuntu to systemrescuecd are ok).
In a livesystem, you can mount the partitions and transfer the data anyway you like (as root user):
1. rsync needs params and data must be excluded, (but works f&f in a running system), eg., :
rsync -a -v -z -h --perms -E -o -g --times --compress --update --delete \ --exclude="/proc/*" --exclude="/sys/*" --exclude="/mnt/*" --exclude="/media/*" / /mnt/newsys/
→ may cause strange bugs, like permissions in /var/run/, maybe /dev probs
2. simple copy with “cp” (untested):
cp -afv /from/sourcesystem/* /mnt/newsys/ [ or ] cp -ax /from/sourcesystem/* /mnt/newsys/
3. dd - clones each sector - can only be used, if both partitions have exactly the same size!
4. parted - no ext4, only from livesystems
etc…
Fix partition-identifier UUIDs in fstab of the new system.
The UUIDs need to be replaced by the new UUIDs in /mnt/newsys/etc/fstab
This shows 'em all: :)
ls -l /dev/disk/by-uuid/
Install grub2 bootloader to the new disc -
unfortunately a complete change-root environment is required to fool grub-install:
mount dev, proc, sys via “bind”-option into the new root / chroot:
mount -o bind /dev /mnt/newsys/dev mount -t proc none /mnt/newsys/proc mount -t sysfs none /mnt/newsys/sys
Enter the new (virtual) root system:
chroot /mnt/newsys/
Now inside this future system, grub2 installer scripts will work -
generate a new (/mnt/newsys) /boot/grub/grub.cfg:
update-grub
In case of error “no such disc” run
grub-mkdevicemap
Install to the MBR (no partition number) of the new disc, finally:
grub-install /dev/sdX
reboot & good luck!
initramfs the step after the bootloader needs all (fs, rais,..) modules to mount root, check: /etc/initramfs-tools/modules
update existing initramfs:
update-initramfs -u -k all
RAID if you changed your raid setup, you need to update initramfs:
dpkg-reconfigure mdadm
make sure these modules are in /etc/initramfs-tools/modules
raid0 raid1 md
References: http://unix.stackexchange.com/questions/5297/debian-grub2-moving-root-partition-to-new-drive
If you drop to the grub rescue after cloning a system disc or something, it's possible to boot an existing system.
Enter this, to start a system on sda3 for example: sda = hd0 + partition 3 = (hd0,3)
set prefix=(hd0,3)/boot/grub insmod (hd0,3)/boot/grub/linux.mod
if this works, the console gets upgraded to standard grub console.
if it doesn't work, try another partition. grub counts partitions from 1 (not 0), btw.
This boots arch linux:
set root=(hd0,3) linux /boot/vmlinuz26 root=/dev/sda5 initrd /boot/kernel26.img boot
This is required to boot debian - unfortunately the filenames contain versionnumbers :(
set root=(hd0,3) linux /boot/vmlinuz-3.1.0-1-amd64 root=/dev/sda3 initrd /boot/initrd.img-3.1.0-1-amd64 boot
This should boot your system. Just re-install grub:
update-grub grub-install /dev/sdX
Inside a chroot, grub complains
# update-grub Generating grub configuration file ... WARNING: Device /dev/ram0 not initialized in udev database even after waiting 10000000 microseconds. ...
Fix:
Outside chroot /debian/:
mkdir /debian/run/udev mount --bind /run/udev /debian/run/udev mount --bind /run/udev /mnt/run/udev
Grub complains root device couldn't be found
Fix: - set
GRUB_ENABLE_CRYPTODISK=y
apt install cryptsetup-initramfs lvm2
- if it is a brtfs, set in /etc/initramfs/modules
btrfs
Commands to execute in chroot to reinstall grub:
update-initramfs -c -k all grub-install /dev/sdX update-grub
If update-grub echos: “cannot find device for / in fstab” and you have a btrfs rootsys:
mount -o "subvol=@" /dev/mapper/vgubuntu-root
is required to mount the @ subvol!