The Funtoo Linux project has transitioned to "Hobby Mode" and this wiki is now read-only.
Difference between revisions of "Upgrade Instructions/1.4-release"
(57 intermediate revisions by 9 users not shown) | |||
Line 1: | Line 1: | ||
== Introduction == | |||
The goal of these instructions is to provide Funtoo Linux users with a reliable, consistent set of instructions for upgrading Funtoo Linux from 1.3 to 1.4. | |||
Note that while Portage has some ability to upgrade packages, it is not perfect at performing complex updates right now. One of the primary motivations to have official Funtoo releases is for the purpose of identifying these upgrade challenges and implement improvements to Portage and associated tools to make the process better. Before Portage can be made better, we need to start documenting the various commands required to perform these updates, and that is where these instructions come in. | |||
== Overview == | |||
With the intended purpose of these instructions in mind, it is recommended to perform a fresh install of Funtoo Linux 1.4 if possible. This is not practical or feasible, follow the steps in this documentation to upgrade Funtoo Linux. The process is straightforward. | |||
Please assist in ensuring that these instructions are complete, make changes to the page that are needed to make these instructions 100% reliable, and if the instructions seem to not work properly, please consider opening a bug at https://bugs.funtoo.org or asking for assistance at https://forums.funtoo.org or #funtoo on freenode. ''Do not make major changes to this document without first opening a bug related to the issue so your changes can be reviewed.'' Thank you! | |||
== Set Release and Sync == <!--T:15--> | |||
<!--T:16--> | |||
Use your favorite editor in {{f|/etc/ego.conf}}, set the release to 1.4: | |||
<!--T:17--> | |||
{{file|name=/etc/ego.conf|body= | |||
[global] | |||
<!--T:18--> | |||
release = 1.4 | |||
}} | |||
<!--T:19--> | |||
Then, run {{c|ego sync}}: | |||
<!--T:2--> | |||
{{console|body= | |||
# ##i##ego sync | |||
}} | |||
If you are seeing an error like | |||
{{console|body= | |||
ERROR: Malformed update entry 'move >=dev-lang/lua-5.3 dev-lua/lua' | |||
}} | |||
at the bottom of the ego sync output, that can be ignored. It is an expected error and caused by a new portage command that can't be handled by the installed portage version but will be resolved by the new version that is installed during the upgrade process. | |||
==Set gfxcard mix-ins and VIDEO_CARDS== | |||
In Funtoo Linux 1.4, the [[VIDEO_CARDS|{{c|VIDEO_CARDS}}]] {{c|make.conf}} setting has been updated and mix-ins have been created to allow you to easily choose common configurations. It is strongly recommended that you select your video hardware using Funtoo mix-ins, not {{c|VIDEO_CARDS}} directly, by choosing a mix-in from the following list: | |||
{{:Make.conf/VIDEO CARDS/Mix-ins}} | |||
Another important change for NVIDIA proprietary graphics users -- a new package {{c|nvidia-kernel-modules}} is now used to install the NVIDIA kernel modules. {{c|nvidia-drivers}} will only install the userland components. To emerge both, emerge {{c|nvidia-kernel-modules}} which will in turn pull in {{c|nvidia-drivers}}. This is set up this way because it is possible to set up an NVIDIA-accelerated container (see [[LXD/GPU Acceleration]]) that needs {{c|nvidia-drivers}} but not kernel modules. | |||
Here is an example of how to add a mix-in to your profile: | |||
<!--T:22--> | |||
{{console|body= | |||
# ##i##epro mix-ins +gfxcard-nvidia | |||
=== Enabled Profiles: === <!--T:23--> | |||
<!--T:24--> | |||
arch: ##c##x86-64bit | |||
build: ##c##current | |||
subarch: ##c##intel64-westmere | |||
flavor: ##c##desktop | |||
mix-ins: ##c##mediaformat-gfx-common | |||
mix-ins: ##c##gfxcard-nvidia | |||
<!--T:25--> | |||
>>> Set mix-in gfxcard-nvidia. | |||
Updating profiles at /etc/portage/make.profile/parent... | |||
}} | |||
==Upgrade Toolchain== | |||
Funtoo 1.4, {{c|gcc}} has been updated to 9.2.0 series by default, so lets take advantage of that, and also update {{c|binutils}} and {{c|glibc}}. Note that multiple versions of {{c|gcc}}, 9.2.0 and 7.4.1, may get pulled in in while upgrading {{c|gcc}}. Only 9.2.0 is needed in Funtoo 1.4, so once 9.2.0 is installed, you may cancel the emerge of older versions of {{c|gcc}} to save time. | |||
<!--T:32--> | |||
{{console|body= | |||
# ##i##emerge -u1 gcc | |||
# ##i##emerge -u1 binutils | |||
# ##i##binutils-config -l | |||
# ##i##binutils-config 3 (or whatever number corresponds to version 2.32) | |||
# ##i##source /etc/profile | |||
# ##i##emerge -u1 glibc | |||
}} | |||
==World Update== | |||
Before starting the world update, it is a good idea to upgrade python. Do so as follows: | |||
{{console|body= | |||
# ##i##emerge -u =dev-lang/python-3.7* | |||
}} | |||
Once this is done, we will temporarily want to tell emerge to build python modules for versions 2.7, 3.6 and 3.7. We are doing this so that dependencies resolve correctly for installed packages still using python-3.6, and will "undo" this setting and rebuild these packages later: | |||
{{console|body= | |||
# ##i##export PYTHON_TARGETS="python3_7 python3_6 python2_7" | |||
}} | |||
At this point, you should be all set to perform a world update. We will exclude perl from upgrading now as we will do that near the end of the install. | |||
{{console|body= | |||
# ##i##emerge -auDN @world --jobs=3 --exclude dev-lang/perl | |||
}} | |||
It seems that excluding perl can cause some issues with the dep graph currently. If that is the case you can try the complete world update. | |||
{{console|body= | |||
# ##i##emerge -auDN @world --jobs=3 | |||
}} | |||
== Perl Upgrade == | |||
If you have not excluded perl from the world update, you probably already have the current perl version installed. But you can verify that with | |||
{{console|body= | |||
# ##i##emerge -pv dev-lang/perl | |||
}} | |||
If there is no update available you are good. Otherwise you need to install it with | |||
{{console|body= | |||
# ##i##emerge dev-lang/perl | |||
}} | |||
followed by | |||
{{console|body= | |||
# ##i##perl-cleaner --all | |||
}} | |||
to make sure that there are no outdated perl packages left. | |||
If you have excluded perl from the world update you would have a complete but old perl installation. Now that things are upgraded, we can take care of perl, and rebuild all perl modules and perl-dependent things against the new perl: | |||
{{console|body= | |||
# ##i##emerge -u1 dev-lang/perl | |||
# ##i##perl-cleaner --all | |||
}} | |||
== Finishing Steps == | |||
Remove python-3.6 as it will no longer be used, and rebuild anything that has python-3.6 modules installed: | |||
{{console|body= | |||
# ##i##unset PYTHON_TARGETS | |||
# ##i##emerge -C =dev-lang/python-3.6* | |||
# ##i##emerge -auDN @world | |||
# ##i##eselect python cleanup | |||
}} | |||
If you are using {{c|debian-sources-lts}}, it has now been updated to 4.19.37_p6. Edit {{c|/etc/boot.conf}} as necessary and run {{c|ego boot update}} to ensure the new kernel is booted upon next system startup. | |||
{{console|body= | |||
# ##i##ego boot update | |||
}} | |||
== etc-update and Reboot == | |||
Before rebooting, it is a good idea to run {{c|etc-update}} to apply updates to any configuration files that require updating: | |||
{{console|body= | |||
# ##i##etc-update | |||
}} | |||
Now, you should be able to reboot into Funtoo Linux 1.4: | |||
{{console|body= | |||
# ##i##reboot | |||
}} | |||
Enjoy! | |||
[[Category:Official Documentation]] | [[Category:Official Documentation]] | ||
[[Category:Upgrade Instructions]] | [[Category:Upgrade Instructions]] | ||
Latest revision as of 18:54, October 1, 2019
Introduction
The goal of these instructions is to provide Funtoo Linux users with a reliable, consistent set of instructions for upgrading Funtoo Linux from 1.3 to 1.4.
Note that while Portage has some ability to upgrade packages, it is not perfect at performing complex updates right now. One of the primary motivations to have official Funtoo releases is for the purpose of identifying these upgrade challenges and implement improvements to Portage and associated tools to make the process better. Before Portage can be made better, we need to start documenting the various commands required to perform these updates, and that is where these instructions come in.
Overview
With the intended purpose of these instructions in mind, it is recommended to perform a fresh install of Funtoo Linux 1.4 if possible. This is not practical or feasible, follow the steps in this documentation to upgrade Funtoo Linux. The process is straightforward.
Please assist in ensuring that these instructions are complete, make changes to the page that are needed to make these instructions 100% reliable, and if the instructions seem to not work properly, please consider opening a bug at https://bugs.funtoo.org or asking for assistance at https://forums.funtoo.org or #funtoo on freenode. Do not make major changes to this document without first opening a bug related to the issue so your changes can be reviewed. Thank you!
Set Release and Sync
Use your favorite editor in /etc/ego.conf
, set the release to 1.4:
/etc/ego.conf
[global]
release = 1.4
Then, run ego sync
:
root # ego sync
If you are seeing an error like
ERROR: Malformed update entry 'move >=dev-lang/lua-5.3 dev-lua/lua'
at the bottom of the ego sync output, that can be ignored. It is an expected error and caused by a new portage command that can't be handled by the installed portage version but will be resolved by the new version that is installed during the upgrade process.
Set gfxcard mix-ins and VIDEO_CARDS
In Funtoo Linux 1.4, the VIDEO_CARDS
make.conf
setting has been updated and mix-ins have been created to allow you to easily choose common configurations. It is strongly recommended that you select your video hardware using Funtoo mix-ins, not VIDEO_CARDS
directly, by choosing a mix-in from the following list:
Funtoo Graphics Mix-Ins
gfxcard-intel
- This mix-in is equivalent to
gfxcard-intel-classic
orgfxcard-intel-iris
, depending on the release you're running. Currently, it defaults togfxcard-intel-classic
on 1.4-release and togfxcard-intel-classic
on Next release. Do not enable more than 1gfxcard-intel*
mix-in at the same time. The result is not what you might expect. gfxcard-intel-classic
- This mix-in enables Intel graphics support based on the older i915 mesa driver (not to be confused with the i915 kernel driver). Choose this if you have a Gen3 or older chipset.
gfxcard-intel-iris
- This mix-in enables Intel graphics support for cards with glamor modesetting support (drivers i965 or iris), including support OpenGL ES (>=Gen4) and OpenCL and Vulkan (>=Gen7) and video acceleration where available. If your card is >=Gen5, do an
emerge libva-intel-driver
oremerge media-libs/libva-intel-media-driver
(for >=Gen8) afterwards to ensure you have full video acceleration support. gfxcard-amdgpu
- This mix-in enables support for modern Radeon cards, Southern Islands -- GFX Core 6 (see this x.org reference) and greater. Includes Vulkan and video acceleration where available. Drivers are built for both the Gallium framework (modern replacement for DRI framework) and DRI framework. Glamor is used to accelerate 2D operations.
gfxcard-radeon
- This mix-in enables support for modern Radeon cards, R600 through Northern Islands -- GFX Core 4 and 5 (see this x.org reference). Drivers are built for the Gallium framework (modern replacement for DRI framework) as well as DRI framework. Glamor is used to accelerate 2D operations.
gfxcard-older-ati
- Use this mix-in to enable support for R300 up to (but not including) R600 Radeon cards -- -- GFX Core 3 (see this x.org reference). DRI as well as Gallium-based drivers are enabled.
gfxcard-ancient-ati
- Use this mix-in to enable support pre-R300 cards -- GFX Core 1 and 2 (see this x.org reference). These drivers are DRI-based.
gfxcard-nvidia
- Use this to enable support for proprietary NVIDIA drivers. You will also need to
emerge nvidia-kernel-modules
, blacklistnouveau
and add yourself to thevideo
group. See this documentation for more details. Note that Funtoo now has two catpkgs for NVIDIA proprietary graphics --nvidia-drivers
andnvidia-kernel-modules
-- to aid the use of NVIDIA acceleration on containers. gfxcard-nvidia-legacy
- Proprietary NVIDIA drivers like above, but the legacy version of the driver that supports older hardware. See https://www.nvidia.com/en-us/drivers/unix/ and browse the specific driver version that
emerge
is installing to get detailed compatibility information. gfxcard-nouveau
- Use this mix-in to enable support for Open Source nouveau drivers.
Another important change for NVIDIA proprietary graphics users -- a new package nvidia-kernel-modules
is now used to install the NVIDIA kernel modules. nvidia-drivers
will only install the userland components. To emerge both, emerge nvidia-kernel-modules
which will in turn pull in nvidia-drivers
. This is set up this way because it is possible to set up an NVIDIA-accelerated container (see LXD/GPU Acceleration) that needs nvidia-drivers
but not kernel modules.
Here is an example of how to add a mix-in to your profile:
root # epro mix-ins +gfxcard-nvidia === Enabled Profiles: === arch: x86-64bit build: current subarch: intel64-westmere flavor: desktop mix-ins: mediaformat-gfx-common mix-ins: gfxcard-nvidia >>> Set mix-in gfxcard-nvidia. Updating profiles at /etc/portage/make.profile/parent...
Upgrade Toolchain
Funtoo 1.4, gcc
has been updated to 9.2.0 series by default, so lets take advantage of that, and also update binutils
and glibc
. Note that multiple versions of gcc
, 9.2.0 and 7.4.1, may get pulled in in while upgrading gcc
. Only 9.2.0 is needed in Funtoo 1.4, so once 9.2.0 is installed, you may cancel the emerge of older versions of gcc
to save time.
root # emerge -u1 gcc root # emerge -u1 binutils root # binutils-config -l root # binutils-config 3 (or whatever number corresponds to version 2.32) root # source /etc/profile root # emerge -u1 glibc
World Update
Before starting the world update, it is a good idea to upgrade python. Do so as follows:
root # emerge -u =dev-lang/python-3.7*
Once this is done, we will temporarily want to tell emerge to build python modules for versions 2.7, 3.6 and 3.7. We are doing this so that dependencies resolve correctly for installed packages still using python-3.6, and will "undo" this setting and rebuild these packages later:
root # export PYTHON_TARGETS="python3_7 python3_6 python2_7"
At this point, you should be all set to perform a world update. We will exclude perl from upgrading now as we will do that near the end of the install.
root # emerge -auDN @world --jobs=3 --exclude dev-lang/perl
It seems that excluding perl can cause some issues with the dep graph currently. If that is the case you can try the complete world update.
root # emerge -auDN @world --jobs=3
Perl Upgrade
If you have not excluded perl from the world update, you probably already have the current perl version installed. But you can verify that with
root # emerge -pv dev-lang/perl
If there is no update available you are good. Otherwise you need to install it with
root # emerge dev-lang/perl
followed by
root # perl-cleaner --all
to make sure that there are no outdated perl packages left.
If you have excluded perl from the world update you would have a complete but old perl installation. Now that things are upgraded, we can take care of perl, and rebuild all perl modules and perl-dependent things against the new perl:
root # emerge -u1 dev-lang/perl root # perl-cleaner --all
Finishing Steps
Remove python-3.6 as it will no longer be used, and rebuild anything that has python-3.6 modules installed:
root # unset PYTHON_TARGETS root # emerge -C =dev-lang/python-3.6* root # emerge -auDN @world root # eselect python cleanup
If you are using debian-sources-lts
, it has now been updated to 4.19.37_p6. Edit /etc/boot.conf
as necessary and run ego boot update
to ensure the new kernel is booted upon next system startup.
root # ego boot update
etc-update and Reboot
Before rebooting, it is a good idea to run etc-update
to apply updates to any configuration files that require updating:
root # etc-update
Now, you should be able to reboot into Funtoo Linux 1.4:
root # reboot
Enjoy!