This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
linux:filesystems:boot [2012/04/25 12:18] tkilla created |
linux:filesystems:boot [2022/11/06 21:39] (current) tkilla |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== | + | ====== |
**linux boot process tricks** | **linux boot process tricks** | ||
- | === howto clone harddisc and boot new system === | + | ==== howto clone harddisc and boot new system |
- | **To get the system-files transfered,** it's best to get a live USB-stick or CD and boot into it \\ | + | **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). \\ | (all live-distros from ubuntu to systemrescuecd are ok). \\ | ||
- | In a livesystem, you can mount the partitions and transfer the data anyway you like: | + | In a livesystem, you can mount the partitions and transfer the data anyway you like (as root user): |
- | 1. rsync: | ||
- | parameters: " -a -v -z -h --perms -E -o -g --times --compress --update --delete " | ||
- | excludes: " --exclude="/ | ||
- | 2. copy with " | + | 1. **rsync** needs params and data must be excluded, (but works f&f in a running system), eg., : |
- | $ sudo cp -afv /to/source/* /to/target/ | + | |
- | 3. dd - can only be used, if both partitions have exactly the same size! | + | rsync -a -v -z -h --perms -E -o -g --times --compress --update --delete \ |
+ | --exclude="/ | ||
- | 4. gparted | + | -> may cause strange bugs, like permissions in /var/run/, maybe /dev probs |
+ | |||
+ | 2. simple **copy** with " | ||
+ | cp -afv / | ||
+ | [ or ] | ||
+ | cp -ax / | ||
+ | |||
+ | |||
+ | 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... | etc... | ||
Line 24: | Line 32: | ||
---- | ---- | ||
\\ | \\ | ||
+ | **Fix partition-identifier UUIDs in fstab** of the new system. | ||
+ | The UUIDs need to be replaced by the new UUIDs in **/ | ||
+ | This shows 'em all: :) | ||
+ | ls -l / | ||
- | **Fix fstab** by mounting the new disc and editing /etc/fstab in there. | + | ---- |
- | The UUIDs need to be replaced by the UUIDs of the new disc's partitions. | + | \\ |
- | $ 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 " | ||
+ | mount -o bind /dev /mnt/newsys/ | ||
+ | mount -t proc none / | ||
+ | mount -t sysfs none / | ||
+ | |||
+ | |||
+ | **Enter** the new (virtual) root system: | ||
+ | chroot / | ||
+ | |||
+ | |||
+ | Now inside this future system, grub2 installer scripts will work - \\ | ||
+ | **generate a new (/ | ||
+ | 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! | ||
- | .. shows 'em all :) | ||
---- | ---- | ||
\\ | \\ | ||
- | **Install grub2 - make the fresh harddisc bootable** | + | ** initramfs ** |
+ | the step after the bootloader needs all (fs, rais,..) modules to mount root, check: / | ||
+ | |||
+ | 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 / | ||
+ | raid0 | ||
+ | raid1 | ||
+ | md | ||
+ | |||
+ | \\ | ||
+ | References: http:// | ||
+ | |||
+ | |||
+ | \\ | ||
+ | ==== 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: | ||
+ | |||
+ | set prefix=(hd0, | ||
+ | insmod (hd0, | ||
+ | |||
+ | if this works, the console gets upgraded to standard grub console. | ||
+ | |||
+ | if it doesn' | ||
+ | |||
+ | This boots arch linux: | ||
+ | |||
+ | set root=(hd0, | ||
+ | linux / | ||
+ | initrd / | ||
+ | boot | ||
+ | |||
+ | This is required to boot debian - unfortunately the filenames contain versionnumbers :( | ||
+ | set root=(hd0, | ||
+ | linux / | ||
+ | initrd / | ||
+ | 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 / | ||
+ | mount --bind /run/udev / | ||
+ | mount --bind /run/udev / | ||
+ | |||
+ | |||
+ | ===== Crypto Bugs ===== | ||
+ | |||
+ | |||
+ | Grub complains root device couldn' | ||
+ | |||
+ | Fix: | ||
+ | - set | ||
+ | GRUB_ENABLE_CRYPTODISK=y | ||
+ | |||
+ | apt install cryptsetup-initramfs lvm2 | ||
+ | |||
+ | |||
+ | - if it is a brtfs, set in / | ||
+ | btrfs | ||
+ | |||
+ | |||
+ | Commands to execute in chroot to reinstall grub: | ||
+ | |||
+ | update-initramfs -c -k all | ||
+ | grub-install /dev/sdX | ||
+ | update-grub | ||
- | $ grub-install --root-directory=/to/ | + | If update-grub echos: " |
+ | mount -o " | ||
+ | is required to mount the @ subvol! | ||