37 lines
1.3 KiB
Markdown
37 lines
1.3 KiB
Markdown
# How to pivot_root
|
|
1. Stop all uneeded services
|
|
`systemctl isolate rescue-ssh.target`
|
|
|
|
1. Create the new / on ramdisk
|
|
`mkdir /tmp/tmproot && mount none /tmp/tmproot -t tmpfs`
|
|
|
|
1. Create all the base directories
|
|
`mkdir /tmp/tmproot/{proc,sys,usr,var,run,oldroot,root}`
|
|
1. Copy the base symlink
|
|
`cp -ax /{bin,etc,mnt,sbin,lib} /tmp/tmproot/`
|
|
1. Copy /dev
|
|
`cp -a /dev /tmp/tmproot/dev`
|
|
|
|
1. Copy the libs for services
|
|
`lsof -Fn / | grep ^n/ | cut -c2- | sort -u | grep /usr | rsync --files-from=- / /tmp/tmproot/`
|
|
1. Copy other libs and binaries needed
|
|
|
|
`ldd /usr/bin/{wget,gzip,dd,mount,ls,cp,cat} | grep -o '/lib[^ ]*' | sed 's/^/\/usr/' | xargs -n1 readlink -f | rsync -v --files-from=- / /tmp/tmproot/`
|
|
|
|
`ldd /usr/bin/{wget,gzip,dd,mount,ls,cp,cat} | grep -o '/lib[^ ]*' | sed 's/^/\/usr/' | rsync -lv --files-from=- / /tmp/tmproot/`
|
|
|
|
`rsync -v /usr/bin/{wget,gzip,dd,mount,ls,cp,cat} /tmp/tmproot/usr/bin/`
|
|
|
|
|
|
systemctl switch-root /tmp/tmproot/
|
|
|
|
## OLLLD WAY NOT WORKING ANYMORE
|
|
`unshare -m`
|
|
`pivot_root /tmp/tmproot/ /tmp/tmproot/oldroot`
|
|
`mount none /proc -t proc`
|
|
`mount none /sys -t sysfs`
|
|
`mount none /dev/pts -t devpts`
|
|
|
|
|
|
`wget -O - https://github.com/YunoHost/arm-images/releases/download/v2020.10/internetcube_4.0.8_v2020.10_lime2.img.gz | gzip -cd | dd iflag=fullblock bs=1M oflag=direct status=progress of=/dev/mmcblk0`
|