User:Pavlix

From Gentoo Wiki
Jump to:navigation Jump to:search

Contact

The best way to contact me over Gentoo topics is to catch me in #gentoo or other channels on Freenode. Otherwise you can send e-mails to pavlix at pavlix.net. In very rare cases you may want to call me via phone number +420 775 996 256.

About

After learning a bit of programming, I was attracted by the networking world. I got from petty Pascal/C++ projects through web development using PHP and later Python, to years of freelancing work with most of the projects in server administration, network equipment configuration and a bit of programming. I was active in the community, wrote articles and spoke at conferences which finally led to my joining Red Hat in May 2012 to work on NetworkManager. I was already a Fedora user and package maintainer at that time. From August 2013 to November 2016 I was working on various network related packages and projects. Since December 2016 I am working on service containerization using Docker for Fedora Modularity and looking for a change.

I'm more of a pragmatic user of Gentoo. As an open source software developer digging into many projects, I'm taking advantage of portage, overlays, ebuilds and user patches. Gentoo serves the purpose of quickly turning my wishes into an installed package I can use for further testing or daily use. My motivation for being involved in Gentoo is simply to share my results with the community that shares so much with me.

My ebuilds and overlays

Overlays:

You can use gpo.zugaina.org to search the above overlays.

My suggestions and ideas

QA: Use sandbox to check dependencies

The sandbox already checks which files are written and protects the system from being tampered with whe building a package. It could also be used to check which files are read in order to ensure the following properties of the ebuild.

  1. When building, no files except those owned by the base system and packages explicitly stated in DEPEND should be read. Otherwise there's a hidden dependency.
  2. For each package in DEPEND, at least one file should be read that belongs to the package. Otherwise there's a redundant dependency.

Note that this setup is very strict and would be only applicable for selected known good packages.

Project: Kernel configuration

kernelconfig

I would like to configure kernel in a more sane and predictable way.

  1. I want to select a basic profile like generic for a best effort desktop/laptop configuration with a broad device support or minimal for a minimal Gentoo kernel configuration that needs to be tweaked to specific hardware.
  2. Then I want to develop a specific override for my hardware to be used with the minimal profile. I would share this override with fellow Gentoo users for example here in the Wiki. As a laptop user, I would generally use one override for the laptop and possibly also another override for extended support of external USB devices and stuff like that.
  3. Next I would like to be able to apply overrides for the purpose of the machine like advanced-router featuring routing and traffic control modules that are not normally needed on end user machines.
  4. Some of the features should also be triggered by overrides dropped by packages that require some kernel features like libvirt or qemu.
  5. When there would be still something to be configured, I would like to handle it using the last, user supplied, override to perform any remaining configuration changes.

Project: Convert systemd unit files to initscripts

systemd2rc

Hardware

The following is a list of hardware pages for hardware that I know something about.

(See also: Category:Laptops)

(See also: Category:Motherboards)

System

Base operating system topics I'm interested in.

PXE booting:

Tools

System

Developmnet / Testing

Desktop

Applications

Tips and tricks

I already moved some of them to the respective wiki pages:

Force --autounmask-write changes

CONFIG_PROTECT_MASK="${CONFIG_PROTECT_MASK} /etc/portage"

SSD

FILE /etc/sysctl.conf
vm.swappiness=10

Keyboard

US and Czech qwerty keyboard layouts, toggled with Alt+Shift, with AltGr+Menu as Compose/Multi key.

setxkbmap "us,cz(qwerty)" -option grp:alt_shift_toggle,compose:menu-altgr

Trackpoint

xinput set-int-prop "TPPS/2 IBM TrackPoint" "Device Accel Profile" 8 3
xinput set-float-prop "TPPS/2 IBM TrackPoint" "Device Accel Velocity Scaling" 30
xinput set-int-prop "TPPS/2 IBM TrackPoint" "Evdev Wheel Emulation" 8 1
xinput set-int-prop "TPPS/2 IBM TrackPoint" "Evdev Wheel Emulation Button" 8 2
xinput set-int-prop "TPPS/2 IBM TrackPoint" "Evdev Wheel Emulation Timeout" 16 200
xinput set-int-prop "TPPS/2 IBM TrackPoint" "Evdev Wheel Emulation Axes" 8 6 7 4 5

Portage: Restart emerge automatically after autounmask-write

FILE /etc/portage/patches/sys-apps/portage-2.2.8-r1/autounmask.patch
Index: portage-2.2.8/pym/_emerge/depgraph.py
===================================================================
--- portage-2.2.8.orig/pym/_emerge/depgraph.py
+++ portage-2.2.8/pym/_emerge/depgraph.py
@@ -27,7 +27,7 @@ from portage.dep._slot_operator import i
 from portage.eapi import eapi_has_strong_blocks, eapi_has_required_use, \
        _get_eapi_attrs
 from portage.exception import (InvalidAtom, InvalidData, InvalidDependString,
-       PackageNotFound, PortageException)
+       PackageNotFound, PortageException, RetryEmerge)
 from portage.output import colorize, create_color_func, \
        darkgreen, green
 bad = create_color_func("BAD")
@@ -7349,6 +7349,8 @@ class depgraph(object):
                        for root in roots:
                                chk_updated_cfg_files(root,
                                        [os.path.join(os.sep, USER_CONFIG_PATH)])
+                       if autounmask_write:
+                               raise RetryEmerge("Re-try emerge")
                elif not pretend and not autounmask_write and roots:
                        writemsg("\nUse --autounmask-write to write changes to config files (honoring\n"
                                "CONFIG_PROTECT). Carefully examine the list of proposed changes,\n"
Index: portage-2.2.8/pym/_emerge/main.py
===================================================================
--- portage-2.2.8.orig/pym/_emerge/main.py
+++ portage-2.2.8/pym/_emerge/main.py
@@ -18,6 +18,7 @@ portage.proxy.lazyimport.lazyimport(glob
        '_emerge.is_valid_package_atom:insert_category_into_atom'
 )
 from portage import os
+from portage.exception import RetryEmerge
 from portage.util._argparse import ArgumentParser
 
 if sys.hexversion >= 0x3000000:
@@ -1029,6 +1030,8 @@ def emerge_main(args=None):
 
        try:
                return run_action(emerge_config)
+       except RetryEmerge:
+               return emerge_main()
        finally:
                # Call destructors for our portdbapi instances.
                for x in emerge_config.trees.values():
Index: portage-2.2.8/pym/portage/exception.py
===================================================================
--- portage-2.2.8.orig/pym/portage/exception.py
+++ portage-2.2.8/pym/portage/exception.py
@@ -74,6 +74,9 @@ class InvalidData(PortageException):
 class InvalidDataType(PortageException):
        """An incorrect type was passed instead of the expected one"""
 
+class RetryEmerge(PortageException):
+       """Re-try the emerge request"""
+
 class InvalidLocation(PortageException):
        """Data was not found when it was expected to exist or was specified incorrectly"""

Debugging

FEATURES="splitdebug installsources"

Notes

Fedora rawhide on LXC

NAME=rawhide
RELEASE=rawhide
VGNAME=vg

euse -E lua caps -p app-arch/rpm
emerge -v1 rpm

lxc-create -n $NAME -t fedora -B lvm --vgname $VGNAME -- -R $RELEASE

Notes:

  • With new LXC builds, LVM won't work.
  • LXC container's systemd breaks host's ttys

Systemd

From udev to systemd:

emerge --unmerge udev
emerge -v systemd

What you need to have a dual boot Gentoo with systemd and OpenRC:

app-emulation/libvirt >= 1.2.3
sys-fs/lvm2 >= ???

Network printing

Install the necessary packages:

euse -E zeroconf
emerge -av cups nss-mdns system-config-printer-gnome

Make sure nss-mdns is configured:

# grep hosts /etc/nsswitch.conf
hosts:       files mdns_minimal dns mdns

Start cups and avahi-daemon.

Find and configure the printer:

system-config-printer

Get rid of window tearing

compton -c --vsync opengl --backend glx --vsync opengl-swc

Screen lock using systemd

/etc/systemd/system/slock.service:

[Unit]
Description=Lock X session using slock
Before=sleep.target

[Service]
User=pavlix
Environment=DISPLAY=:0
Type=simple
ExecStart=/usr/bin/slock

[Install]
WantedBy=sleep.target
WantedBy=lock.target

A multi-user variant can be prepared with xautolock.

Pages

My pages:

  • /Install – How to install Gentoo a slightly different way
  • /Kernel – How to configure Gentoo kernel in a reproducable way
  • /Virtualization – How to configure Gentoo to provide virtualization service