diff --git a/README.md b/README.md new file mode 100644 index 0000000..7961720 --- /dev/null +++ b/README.md @@ -0,0 +1,37 @@ +# 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` + +Fuck I need sshd + +`wget -O - https://github.com/YunoHost/arm-images/releases/download/v2020.10/internetcube_4.0.8_v2020.10_lime2.img.gz | gzip -cd | dd bs=1M oflag=direct status=progress of=/dev/mmcblk0` diff --git a/Vagrantfile b/Vagrantfile new file mode 100644 index 0000000..b2ea281 --- /dev/null +++ b/Vagrantfile @@ -0,0 +1,30 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : + +# All Vagrant configuration is done below. The "2" in Vagrant.configure +# configures the configuration version (we support older styles for +# backwards compatibility). Please don't change it unless you know what +# you're doing. +# +# This script can test the internetcube image patching just do vagrant up +$script = <