From Gentoo Wiki
Jump to:navigation Jump to:search

My personal list of Gentoo stuff to do in order to get Gentoo stuff done.


Anything in the Todo category, but especially Open discussions in the Handbook namespace.

Catch up on all open discussions in the Handbook namespace

As I continue to clean up our docs in 2021, I am working to catch up with and hopefully close out all open discussions in the Handbook: namespace. Will move this section to Completed tasks when caught up to this point. Aiming for January, 2021 and plan to tackle (at least) one discussion per week, but hopefully multiple per day.


Wikidata implementation.

See {{Wikidata}}.

Add a "Fund me" link to developer and community wiki pages

Add a optional field to the developer template and form that will enable a "fund me" link on wiki profiles. Link can point to an arbitrary location (GitHub, Patreon, etc.). Consider also adding crypo wallet endpoints as well.

For example, as of 2022-01-17 marcan still uses Gentoo as a developer environment as he hacks on getting the Linux kernel to run on Apple's M1 Mac hardware. His links are as follows:

Link developer nickname to developer map on www.g.o

This will require some investigation into the possibility of linking a name to a coordinate on www.g.o.

Preferable to link to a location with using an id tag such as #nickname on the ending.

Convert home directories to systemd homed

homed support became available in Gentoo around 2021-02-01[1].

Follow the upstream guide. Determine how it applies to our users and the systemd article:

Rebuild sys-auth/pambase and sys-apps/systemd with homed support. systemd will also require cryptsetup as well. Alternatively, add USE="cryptsetup homed" in /etc/portage/make.conf, which may help prevent additional USE flag maintenance in the future.

FILE /etc/portage/package.use/systemd-homedAdd homed support to pambase and systemd
sys-auth/pambase homed

# The following REQUIRED_USE flag constraints are unsatisfied:
# homed? ( cryptsetup )
sys-apps/systemd cryptsetup homed
root #emerge --ask --update --changeduse @world

Enable the systemd-homed service:

root #systemctl enable --now systemd-homed

Unless specifically assigned at user creation time, most single user Gentoo systems will have the primary user's ID set as 1000. Very using the following commands (according to upstream):

user $getent passwd larry
user $getent group 1000

Create backups of important files to be modified:

root #cp /etc/passwd /etc/passwd.bak
root #cp /etc/shadow /etc/shadow.bak
root #cp /etc/gshadow /etc/gshadow.bak
root #cp /etc/passwd /etc/passwd.bak

Backup the user(s) home directories:

root #cp --archive --recursive /home/larry /home/larry.saved

(Re)create the home directory (optionally entering the same password as the user account had before the migration):

root #homectl create larry --uid=1000 --real-name="Larry the Cow" --member-of="wheel,audio,docker,kvm,video,plugdev,portage,users,vboxusers,libvirt"
🔐 Please enter new password for user foobar:
🔐 Please enter new password for user foobar (repeat):

Move the old files into the new home directory:

root #homectl with larry -- rsync -aHAXv --remove-source-files /home/larry.saved/ .

When the rsync command finishes, all files will be moved into the new home directory; only empty directories will be left inside the /home/larry.saved location. It can be finally removed with:

user $rmdir /home/larry.saved

Display managers


Although no notification is displayed on the greeter, Gnome Display Manager will prompt users to login twice...

For the time being, the best answer as to why is likely describing in bug #808993. One password to authenticate the user via, which will leave the home directory unactivated. The password is needed a second time to activate the home directory (via If the user does not enter the password a second time (presses Enter past the second prompt; needs testing to confirm), the user will login, but HOME will be set to Template:Path/, which is not expected or desired.

auth	[success=2 default=ignore] nullok try_first_pass
auth	[success=1 default=ignore]

Manual mount and repair

In case a filesystem is marked as dirty, which can happen due to disk corruption, the filesystem can be manually mounted and fsck'd. Use homectl inspect <username> in order to determine filesystem is dirty.

root #losetup -fP /home/larry.home
root #cryptsetup open /dev/loop0p1 /dev/mapper/home-larry
root #btrfs check /dev/mapper/home-larry

Moving a home directory to a new system

TODO: Verify both private.local and public.local files are needed for proper home migration...

Home directories can be moved between systems by the following steps.

  1. Copy the home directory from the homed directory (/home by default) on the old system to the homed directory on the new system.
  2. Copy the private.local and public.local files found under the /var/lib/systemd/home directory on the old system to the new system.
  3. Restart the systemd-homed service on the new system.
    root #systemctl restart systemd-homed
  4. Login on the new system.
Although moving home directories are portable with this approach, moving the /var/lib/portage/world file and Portage configuration files under the /etc/portage directory may be needed to ensure all applications used / references in the users' home directory are available on the system.

pam.d configuration changes

With the homed flag set on pambase, three files change to add homed support. This section simply provides an overview of what changes are needed in the pam files in order to properly integrate authentication when using homed.

The /etc/pam.d/system-services file:

FILE /etc/pam.d/system-services
auth		sufficient
account		include		system-auth
session         optional
session		required
session		required
session         [success=1 default=ignore]
session		required

The /etc/pam.d/passwd file.

FILE /etc/pam.d/passwd
auth		sufficient
auth		include		system-auth
account		include		system-auth
password	include		system-auth
password	optional use_authtok

The /etc/pam.d/system-auth file.

FILE /etc/pam.d/system-auth
auth		required
auth		requisite preauth
auth		[success=2 default=ignore] nullok  try_first_pass
auth            [success=1 default=ignore]
auth		[default=die] authfail
account         [success=1 default=ignore]
account		required
account         required
password	required config=/etc/security/passwdqc.conf
password        [success=1 default=ignore]
password	required try_first_pass use_authtok nullok sha512 shadow
session		required
session		required
session         [success=1 default=ignore]
session		required

Create a community maintained disk space document

See this discussion. Handbook should reference basic disk space requirements, whereas community page can document in more specificity how much space is necessary for typical installations on a per-profile basis.

  • Profile space requirements
  • distfiles space requirements (btrfs) as of 2021/09/22: 282G
  • gentoo repository space requirements (btrfs) as of 2021/09/22: 562M

Should be able to hook this up to an automated export available via HTTPS somehow...

Since "desktop" profiles are becoming available, it should be possible nab uncompressed filesystem sizes from RelEng builds, this data can be used to generate a table that can be used on the main site.... alternatively link to my ~/dev space on pecker.


Packages required to be installed in Termux (GitHub) for Gentoo Prefix to run:

root #pkg


Packages required to be installed in Cygwin for Gentoo Prefix to run:

root #wget gcc-core make


  • Devmanual should be added to the sites drop down menu...

Bound to fail

Using too high a MAKEOPS value and --jobs set to 4 (or some other N), is a bad idea when compiling source in tmpfs or when Gentoo has been allocated only a small partition to PORTAGE_TMPDIR. In the example below the following default values are set in make.conf:

FILE /etc/portage/make.conf
EMERGE_DEFAULT_OPTS="--jobs=4 --keep-going=y"
root #emerge --update --deep --newuse --changed-deps=y --with-bdeps=y --verbose --keep-going=y --tree --backtrack=2000 --verbose-conflicts @world
>>> Emerging (1 of 205) www-client/firefox-72.0.2::gentoo
>>> Emerging (2 of 205) mail-client/thunderbird-68.4.2::gentoo
>>> Emerging (3 of 205) www-client/chromium-80.0.3987.87::gentoo
>>> Emerging (4 of 205) app-office/libreoffice-

The previous example is bound to result in job failure output similar to the following:

>>> Emerging (3 of 205) www-client/chromium-80.0.3987.87::gentoo
>>> Jobs: 0 of 205 complete, 4 running            Load avg: 21.0, 29.6, 38.7Exception in callback PipeLogger._output_handler(13)
handle: <Handle PipeLogger._output_handler(13)>
Traceback (most recent call last):
  File "/usr/lib64/python3.6/asyncio/", line 145, in _run
  File "/usr/lib64/python3.6/site-packages/portage/util/_async/", line 124, in _output_handler
OSError: [Errno 28] No space left on device
> /usr/lib64/python3.6/site-packages/portage/util/_eventloop/>None
-> pdb.set_trace()

Why does this happen?

The above occurs as explained in the OSError output from Portage: OSError: [Errno 28] No space left on device

In other words, space runs out in the directory Portage uses for compilation (PORTAGE_TMPDIR).

The fastest solution

Run CTRL+c to close the Python interpreter, then do whatever is appropriate to obtain more disk space. Typically this can look like running eclean and purging any failed compilations from Portage's TMPDIR:

root #eclean -d distfiles
root #eclean -d distfiles
root #rm -rfv /var/tmp/portage/*

Finally, resuming the emerge with a smaller MAKEOPTS or jobs value (or both!) should work around the build failure:

root #MAKEOPTS="-j8" emerge --resume --jobs=1

Building stages with clang

Reddit discussion here.

This Debian sites keeps a nice list of packages that are successfully built with LLVM/Clang.


Captive portals

Explain how to access Cisco (and other) captive portals.

Add information on enabling FreeSync on AMDGPU

Resolve PPC bootloader installation instructions

Handbook probably needs to be migrated from yaboot to GRUB2. See discussion on Handbook_Talk:PPC/Installation/Bootloader.

Pending testing with VOID Linux on a separate HDD. 11/16/2020

Add networking setup example to the Handbooks using ip command

Transision the Handbook to use the ip command with CIDR format rather than ifconfig.

Finish new Gentoo wallpapers

  • Add new wallpapers to www.g.o. and create a package for quick and easy installation on Gentoo.
  • Work on getting a resize script for common supported display resolutions. Start with 4K, resize down as appropriate per form factor.
    • Consider mobile device resolutions. What are they?
  • Upload wallpapers sources (with attribution) to maffblaster's GitHub.
    • Cut releases on GitHub.
  • Write imagemagick resize script for end user reproducibility?

Terminology update: Overlay -> ebuild repository

Figure out how to address the following articles (man pages will also need updated):

Layman references:

  • PORTDIR_OVERLAY variable.
  • layman-overlay-maker command.

Continue work on:

Add new recentchanges bot to #gentoo-wiki


Right now I'm researching mw-bot (source).

Code for a similar recentchanges output:

$wiki $encoded_wiki_page $action $fullurl - User: $username - Summary: $summary

Waiting on a response to issue 62 to add a new wiki to the bot's @recentchanges command.

TODO: write a module to watch recent changes for sopel.

In Unix, what do some obscurely named commands stand for?

Link this somewhere:

Someone please work on these. Someone. ANYONE?! PLEASE!!

  • GitLab - Clean up article: meld it into proper article layout/formatting according to wiki Guidelines, review for correctness.
    • Work on bringing GitLab to Gentoo. This would be of use to infra as a GitHub fall back (since GitHub isn't nicely open source).
    • Start with a Gentoo-based container (if necessary), and build from there.