====== Bootloader ====== **linux boot process tricks** ==== howto clone harddisc and boot new system ==== **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 \\ ==== howto boot from grub2 rescue console ==== 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 ===== Bugs ===== 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 ===== Crypto Bugs ===== 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!