Skip to content

Instantly share code, notes, and snippets.

@dlangille
Last active December 17, 2018 22:29
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save dlangille/435cea43911e7e508f809b4a84e8fd87 to your computer and use it in GitHub Desktop.
Save dlangille/435cea43911e7e508f809b4a84e8fd87 to your computer and use it in GitHub Desktop.
Let's upgrade one ezjail to iocage
The list of 'symlink has no referent' ... those all have to be created by hand, with no easy way to know what they should be.
We want [most of?] them to persist in the new jail.
How do to that?
based on https://iocage.readthedocs.io/en/latest/install.html#migrating-from-ezjail-to-iocage
[dan@knew:~] $ sudo pkg install py36-iocage
[dan@knew:~] $ sudo iocage create -e -n snapshots
Setting up zpool [system] for iocage usage
If you wish to change please use "iocage activate"
********************************************************************************
fdescfs(5) is not mounted, performance may suffer. Please run:
mount -t fdescfs null /dev/fd
You can also permanently mount it in /etc/fstab with the following entry:
fdescfs /dev/fd fdescfs rw 0 0
********************************************************************************
Creating system/iocage
Creating system/iocage/download
Creating system/iocage/images
Creating system/iocage/jails
Creating system/iocage/log
Creating system/iocage/releases
Creating system/iocage/templates
snapshots successfully created!
[dan@knew:~] $ sudo rsync -a --copy-links /usr/jails/snapshots/ /iocage/jails/snapshots/root/
symlink has no referent: "/usr/jails/snapshots/sys"
symlink has no referent: "/usr/jails/snapshots/basejail/usr/include/c++/v1/tr1/__tuple_03"
symlink has no referent: "/usr/jails/snapshots/basejail/usr/lib/libreadline.so"
symlink has no referent: "/usr/jails/snapshots/basejail/usr/lib/libkvm.so"
symlink has no referent: "/usr/jails/snapshots/basejail/usr/lib/libcrypto.so"
symlink has no referent: "/usr/jails/snapshots/basejail/usr/lib/libipx.so"
symlink has no referent: "/usr/jails/snapshots/basejail/usr/lib/libcam.so"
symlink has no referent: "/usr/jails/snapshots/basejail/usr/libexec/ld-elf32.so.1"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/sys"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/etc/rmt"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/etc/unbound"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/usr/share/man/en.ISO8859-1/man2"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/usr/share/man/en.ISO8859-1/man8"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/usr/share/man/en.ISO8859-1/man5"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/usr/share/man/en.ISO8859-1/man1"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/usr/share/man/en.ISO8859-1/man6"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/usr/share/man/en.ISO8859-1/man4"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/usr/share/man/en.ISO8859-1/man9"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/usr/share/man/en.ISO8859-1/man3"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/usr/share/man/en.ISO8859-1/man7"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/usr/share/man/en.ISO8859-15/man2"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/usr/share/man/en.ISO8859-15/man8"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/usr/share/man/en.ISO8859-15/man5"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/usr/share/man/en.ISO8859-15/man1"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/usr/share/man/en.ISO8859-15/man6"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/usr/share/man/en.ISO8859-15/man4"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/usr/share/man/en.ISO8859-15/man9"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/usr/share/man/en.ISO8859-15/man3"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/usr/share/man/en.ISO8859-15/man7"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/usr/share/man/en.UTF-8/man7"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/usr/share/man/en.UTF-8/man4"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/usr/share/man/en.UTF-8/man9"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/usr/share/man/en.UTF-8/man3"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/usr/share/man/en.UTF-8/man1"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/usr/share/man/en.UTF-8/man6"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/usr/share/man/en.UTF-8/man2"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/usr/share/man/en.UTF-8/man8"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/usr/share/man/en.UTF-8/man5"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/usr/share/nls/en_US.US-ASCII"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/usr/share/nls/POSIX"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/usr/share/openssl/man/en.ISO8859-1/man3"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/usr/share/openssl/man/en.ISO8859-1/man1"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/usr/share/openssl/man/en.ISO8859-15/man3"
symlink has no referent: "/usr/jails/snapshots/basejail/var/db/etcupdate/current/usr/share/openssl/man/en.ISO8859-15/man1"
symlink has no referent: "/usr/jails/snapshots/usr/include/c++/v1/tr1/__tuple_03"
symlink has no referent: "/usr/jails/snapshots/usr/lib/libreadline.so"
symlink has no referent: "/usr/jails/snapshots/usr/lib/libkvm.so"
symlink has no referent: "/usr/jails/snapshots/usr/lib/libcrypto.so"
symlink has no referent: "/usr/jails/snapshots/usr/lib/libipx.so"
symlink has no referent: "/usr/jails/snapshots/usr/lib/libcam.so"
symlink has no referent: "/usr/jails/snapshots/usr/libexec/ld-elf32.so.1"
symlink has no referent: "/usr/jails/snapshots/var/db/etcupdate/old/sys"
symlink has no referent: "/usr/jails/snapshots/var/db/etcupdate/old/usr/share/man/en.ISO8859-1/man6"
symlink has no referent: "/usr/jails/snapshots/var/db/etcupdate/old/usr/share/man/en.ISO8859-1/man1"
symlink has no referent: "/usr/jails/snapshots/var/db/etcupdate/old/usr/share/man/en.ISO8859-1/man5"
symlink has no referent: "/usr/jails/snapshots/var/db/etcupdate/old/usr/share/man/en.ISO8859-1/man8"
symlink has no referent: "/usr/jails/snapshots/var/db/etcupdate/old/usr/share/man/en.ISO8859-1/man2"
symlink has no referent: "/usr/jails/snapshots/var/db/etcupdate/old/usr/share/man/en.ISO8859-1/man7"
symlink has no referent: "/usr/jails/snapshots/var/db/etcupdate/old/usr/share/man/en.ISO8859-1/man3"
symlink has no referent: "/usr/jails/snapshots/var/db/etcupdate/old/usr/share/man/en.ISO8859-1/man9"
symlink has no referent: "/usr/jails/snapshots/var/db/etcupdate/old/usr/share/man/en.ISO8859-1/man4"
symlink has no referent: "/usr/jails/snapshots/var/db/etcupdate/old/usr/share/man/en.ISO8859-15/man6"
symlink has no referent: "/usr/jails/snapshots/var/db/etcupdate/old/usr/share/man/en.ISO8859-15/man1"
symlink has no referent: "/usr/jails/snapshots/var/db/etcupdate/old/usr/share/man/en.ISO8859-15/man5"
symlink has no referent: "/usr/jails/snapshots/var/db/etcupdate/old/usr/share/man/en.ISO8859-15/man8"
symlink has no referent: "/usr/jails/snapshots/var/db/etcupdate/old/usr/share/man/en.ISO8859-15/man2"
symlink has no referent: "/usr/jails/snapshots/var/db/etcupdate/old/usr/share/man/en.ISO8859-15/man7"
symlink has no referent: "/usr/jails/snapshots/var/db/etcupdate/old/usr/share/man/en.ISO8859-15/man3"
symlink has no referent: "/usr/jails/snapshots/var/db/etcupdate/old/usr/share/man/en.ISO8859-15/man9"
symlink has no referent: "/usr/jails/snapshots/var/db/etcupdate/old/usr/share/man/en.ISO8859-15/man4"
symlink has no referent: "/usr/jails/snapshots/var/db/etcupdate/old/usr/share/man/en.UTF-8/man6"
symlink has no referent: "/usr/jails/snapshots/var/db/etcupdate/old/usr/share/man/en.UTF-8/man1"
symlink has no referent: "/usr/jails/snapshots/var/db/etcupdate/old/usr/share/man/en.UTF-8/man5"
symlink has no referent: "/usr/jails/snapshots/var/db/etcupdate/old/usr/share/man/en.UTF-8/man2"
symlink has no referent: "/usr/jails/snapshots/var/db/etcupdate/old/usr/share/man/en.UTF-8/man8"
symlink has no referent: "/usr/jails/snapshots/var/db/etcupdate/old/usr/share/man/en.UTF-8/man7"
symlink has no referent: "/usr/jails/snapshots/var/db/etcupdate/old/usr/share/man/en.UTF-8/man9"
symlink has no referent: "/usr/jails/snapshots/var/db/etcupdate/old/usr/share/man/en.UTF-8/man3"
symlink has no referent: "/usr/jails/snapshots/var/db/etcupdate/old/usr/share/man/en.UTF-8/man4"
symlink has no referent: "/usr/jails/snapshots/var/db/etcupdate/old/usr/share/nls/POSIX"
symlink has no referent: "/usr/jails/snapshots/var/db/etcupdate/old/usr/share/nls/en_US.US-ASCII"
symlink has no referent: "/usr/jails/snapshots/var/db/etcupdate/old/usr/share/openssl/man/en.ISO8859-1/man3"
symlink has no referent: "/usr/jails/snapshots/var/db/etcupdate/old/usr/share/openssl/man/en.ISO8859-1/man1"
symlink has no referent: "/usr/jails/snapshots/var/db/etcupdate/old/usr/share/openssl/man/en.ISO8859-15/man3"
symlink has no referent: "/usr/jails/snapshots/var/db/etcupdate/old/usr/share/openssl/man/en.ISO8859-15/man1"
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1211) [sender=3.1.3]
[dan@knew:~] $
I populated /iocage/jails/snapshots/config.json
* I think the instructions should mention that directory
[dan@knew:/iocage/jails/snapshots] $ sudo iocage start snapshots
********************************************************************************
fdescfs(5) is not mounted, performance may suffer. Please run:
mount -t fdescfs null /dev/fd
You can also permanently mount it in /etc/fstab with the following entry:
fdescfs /dev/fd fdescfs rw 0 0
********************************************************************************
* Starting snapshots
+ Started OK
+ Starting services OK
[dan@knew:/iocage/jails/snapshots] $
$ jls | grep snapshots
19 10.55.0.70 snapshots /iocage/jails/snapshots/root
Let's compare old and new. For this test, we have:
* ezjail jail stopped
* iocage jail running
iocage basejail mounted in the old jail:
[dan@knew:~/tmp] $ sudo mount -a -F /etc/fstab.snapshots
[dan@knew:~/tmp] $ mount | | grep /usr/jails/snapshots/basejail
/usr/jails/basejail on /usr/jails/snapshots/basejail (nullfs, local, read-only)
[dan@knew:~/tmp] $
Don't let the old jail boot:
ezjail-admin config -r norun snapshots
Set the new jail to start on boot:
iocage set boot=on snapshots
review /usr/local/etc/ezjail/snapshots and add settings to iocage:
export jail_snapshots_zfs_datasets="system/backups-by-snapshot"
export jail_snapshots_parameters="enforce_statfs=0 allow.mount=1 allow.mount.zfs=1"
Checking another symlink from the ezjail jail:
[dan@knew:~/tmp] $ ls -l /usr/jails/snapshots/basejail/usr/lib/libcam.so
lrwxr-xr-x 1 root wheel 16 Jul 26 2013 /usr/jails/snapshots/basejail/usr/lib/libcam.so -> /lib/libcam.so.6
... this does not exist in the iocage jail:
[dan@knew:~/tmp] $ ls -l /iocage/jails/snapshots/root/usr/lib/libcam.so
ls: /iocage/jails/snapshots/root/usr/lib/libcam.so: No such file or directory
Let's create that:
[dan@knew:~/tmp] $ sudo do ln -s /iocage/jails/snapshots/root/usr/lib/libcam.so /lib/libcam.so.6
ln: /lib/libcam.so.6: File exists
Oh yea, that's the wrong way around, we need to do it this way:
[dan@knew:~/tmp] $ sudo ln -s /lib/libcam.so.6 /iocage/jails/snapshots/root/usr/lib/libcam.so
[dan@knew:~/tmp] $ ls -l /iocage/jails/snapshots/root/usr/lib/libcam.so
lrwxr-xr-x 1 root wheel 16 Dec 17 13:30 /iocage/jails/snapshots/root/usr/lib/libcam.so -> /lib/libcam.so.6
[dan@knew:~/tmp] $
Confirming from within the iocage jail:
[dan@snapshots ~]$ ls -l /usr/lib/libcam.so
lrwxr-xr-x 1 root wheel 16 Dec 17 13:30 /usr/lib/libcam.so -> /lib/libcam.so.6
Yes, that is what we need.
I think I can build a shell script for this.
I created this one manually
[dan@knew:~/tmp] $ ls -l /iocage/jails/snapshots/root/var/db/etcupdate/old/sys
lrwxr-xr-x 1 root wheel 11 Jan 19 2015 /iocage/jails/snapshots/root/var/db/etcupdate/old/sys -> usr/src/sys
The same thing, from within the iocage jail:
[dan@snapshots ~]$ ls -ld /var/db/etcupdate/old/sys
lrwxr-xr-x 1 root wheel 11 Jan 19 2015 /var/db/etcupdate/old/sys -> usr/src/sys
This is the objective.
rsync -a --links --exclude-from=~/tmp/jails-newjail-symlinks /usr/jails/snapshots/ /iocage/jails/snapshots/root/
rsync -a --copy-links --include-from=~/tmp/jails-newjail-symlinks /usr/jails/snapshots/ /iocage/jails/snapshots/root/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment