64bit-migration
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
64bit-migration [2019/01/15 13:49] – snarg | 64bit-migration [2019/01/15 17:48] – snarg | ||
---|---|---|---|
Line 36: | Line 36: | ||
mkdir /usr/lib32 | mkdir /usr/lib32 | ||
mkdir /usr/lib64 | mkdir /usr/lib64 | ||
+ | |||
+ | * If applicable, dont use distcc till its remerged: | ||
+ | |||
+ | rm -Rf / | ||
* possibly dont need to do this if using binary packages from donor VM | * possibly dont need to do this if using binary packages from donor VM | ||
Line 53: | Line 57: | ||
* change make.profile symlink to point to a multilib amd64 profile | * change make.profile symlink to point to a multilib amd64 profile | ||
- | * use quickpkg on source VM to grab and then PATH="/ | + | * use quickpkg on source VM to grab and then PATH="/ |
Of these, glibc needs to come first, then everything else will come good. | Of these, glibc needs to come first, then everything else will come good. | ||
in the process of deploying glibc, /lib needs to be a symlink to /lib64 which will break 32bit programs. ldconfig is your friend here with the above 99migration env file. Theres a couple other gotchas as well that need working through. | in the process of deploying glibc, /lib needs to be a symlink to /lib64 which will break 32bit programs. ldconfig is your friend here with the above 99migration env file. Theres a couple other gotchas as well that need working through. | ||
Line 59: | Line 63: | ||
* on donor pc or VM: | * on donor pc or VM: | ||
- | quickpkg glibc gcc zlib ncurses gmp mpfr util-linux acl attr sandbox coreutils procps binutils libcap mpc cracklib flex =db-5* pam pambase | + | quickpkg glibc gcc zlib ncurses gmp mpfr util-linux acl attr sandbox coreutils procps binutils libcap mpc cracklib flex =db-5* |
+ | |||
+ | * on target pc, mount or rsync / | ||
+ | |||
+ | USE=" | ||
- | * mount or copy / | ||
- | | ||
- | mv / | ||
- | mv /lib/gentoo /lib64 | ||
mv /usr/lib to /usr/oldlib and symlink lib to lib64 | mv /usr/lib to /usr/oldlib and symlink lib to lib64 | ||
- | * /usr/lib symlink creation will break python | + | * /usr/lib symlink creation will break python. |
+ | |||
+ | cd / | ||
+ | mv python-exec python3.6 libpython* portage gcc ../lib64 | ||
* remove crossdev packages (and crossdev) and check gcc sanity | * remove crossdev packages (and crossdev) and check gcc sanity | ||
- | * remove / | ||
- | * check for i686 compiler orphans with: qfile -o / | ||
+ | emerge --unmerge cross-x86_64-pc-linux-gnu/ | ||
+ | ldconfig | ||
- | dns was broken at this point (prob somethign to do with libnss_dns.so) | + | * fix 32bit toolchain and python in wrong directory by running: |
+ | |||
+ | emerge -1kav sys-devel/ | ||
+ | binutils-config 1 | ||
+ | | ||
+ | |||
+ | emerge -1av python-exec | ||
+ | emerge -1kav =python-3.6* --binpkg-changed-deps=n | ||
+ | |||
+ | mv / | ||
+ | mv /lib/gentoo /lib64 | ||
- | *for the lib and /usr/lib dir<-> switcheroo | + | *for the lib / lib64 link <-> switcheroo |
- | ** make sure busybox is functional | + | ** make sure busybox is functional. run this from busybox |
** have a few shells open, in case you break the one you're working from | ** have a few shells open, in case you break the one you're working from | ||
- | | + | |
+ | mv /lib/gentoo /lib64 | ||
+ | |||
+ | cd / | ||
+ | mv lib oldlib | ||
+ | ln -s lib64 lib | ||
+ | |||
+ | * Emerging gcc needs to be done now, but also acts as a sanity check to see what we've missed. Repeat the quickpkg / emerge -1k steps for missing things | ||
emerge gcc -1av | emerge gcc -1av | ||
- | FEATURES=" | + | |
+ | * copy over a valid / | ||
+ | |||
+ | * @system rebuild - adjust USE as needed | ||
+ | |||
+ | | ||
* remove -sandbox and -usersandbox from features | * remove -sandbox and -usersandbox from features | ||
+ | * check for i686 compiler orphans with: qfile -o / | ||
| | ||
emerge -eav --keep-going @world | emerge -eav --keep-going @world | ||
Line 92: | Line 122: | ||
== Things to do later == | == Things to do later == | ||
- | |||
- | * whatever is left over in /lib and /usr/lib can be deleted from /lib32 and /usr/lib32 as everything was originally copied. | ||
* uncomment LINGUAS from make.conf | * uncomment LINGUAS from make.conf | ||
Line 99: | Line 127: | ||
* remove / | * remove / | ||
* erase / | * erase / | ||
+ | * remove abi_x86_32 from package.use and profiles/ | ||
* clean up /lib.old and / | * clean up /lib.old and / | ||
64bit-migration.txt · Last modified: 2023/06/21 12:02 by snarg