Chroot
From Christoph's Personal Wiki
A chroot on Linux operating systems is an operation that changes the apparent root directory for the current running process and its children. The modified environment is called a "chroot jail".
Copy files while in Rescue Mode
Note: The following section shows how to copy files from a Rackspace Cloud Server while in Rescue Mode.
- Find out which is your "real" root device (i.e., the one that is not the Rescue Mode's root device / the one already mounted):
$ fdisk -l
- Mount "real" root device and required filesystem dirs:
$ mount /dev/xvdb1 /mnt $ mount -o bind /dev /mnt/dev $ mount -o bind /sys /mnt/sys $ mount -o bind /dev/shm /mnt/dev/shm $ mount -o bind /proc /mnt/proc #***** OR *****: $ mount /dev/xvdb1 /mnt $ mount -t proc none /mnt/proc $ mount --rbind /sys /mnt/sys $ mount --rbind /dev /mnt/dev
- Set up networking for your chrooted jail:
$ ln -s /etc/resolv.conf /mnt/etc/resolv.conf
- Chroot into your jail:
$ chroot /mnt /bin/bash
- Copy the files to a remote/destination server (using rsync):
$ rsync -e 'ssh -p 22' -avl --stats --progress /path/to/data/dir user@x.x.x.x:/path/to/dest/data/dir
- Exit the chrooted jail
$ sync $ exit $ umount -lf /mnt/{dev,sys,proc} $ umount /mnt
Finally, exit "Rescue Mode" and you are done.
Converting a root filesystem to ext4
Note: The following section shows how to convert the root filesystem from ext3 to ext4 on a Rackspace Cloud Server while in Rescue Mode.
- Assuming your root device is
/dev/xvda1
, before you enter Rescue Mode, change your/etc/fstab
entry for root from:
/dev/xvda1 / ext3 errors=remount-ro,noatime,barrier=0 0 1
to:
/dev/xvda1 / ext4 errors=remount-ro,noatime,barrier=0 0 1
then enter Rescue Mode (do not reboot your server before entering Rescue Mode).
- While in Rescue Mode, find out which device is your "real" root device (i.e., not the Rescue Mode's root device):
$ fdisk -l
- Then run a filesystem check on the "real" root filesystem:
$ fsck.ext3 -pf /dev/xvdb1
- Enable all the ext4 features on the root filesystem:
$ tune2fs -O extents,uninit_bg,dir_index /dev/xvdb1
- Run another filesystem check on the root filesystem (it will most likely find and fix errors. This is completely normal):
$ fsck.ext4 -yfD /dev/xvdb1
You should now be able to exit Rescue Mode and your root filesystem will be using ext4.