UP | HOME

Gentoo

Table of Contents

Site officiel

Distribution orientée sécurité: Pentoo.

1. Ma configuration

1.1. Overlays

gentoo-zh
localsend
guru
tokei, raylib, slstatus
hamari
cutter, radare2, rz-ghidra
joecool
netbird
pentoo
logiciels de cyber (GHidra, apktool, jdx-bin…)
lanodanOverlay
grammalecte

1.2. Configuration Kernel

debianutils et installkernel pour pouvoir installer le noyau avec make install.

Liste de paramètres acivés pour une raison particulière connues.

  • HIGH_RES_TIMERS : pour activer KVM pour Qemu
  • UDF_FS et ISO9660_FS : pour distrobuilder
  • POSIX_MQUEUE : pour Docker
  • pour pouvoir dechiffrer le disque :
    • CONFIG_MD
      • BLK_DEV_DM
      • DM_CRYPT
    • BLK_DEV_INITRD

1.3. Paquets installés

media-gfx/graphviz (cairo pdf) latexmk imagemagick (svg png) media-fonts/dejavu dev-texlive/texlive-xetex dev-python/sphinx
documentation noyau
dev-util/android-tools
outils android (abd)
dev-util/apktool
outil android pour ouvrir les fichiers APK.
dev-util/jadx
décompilation Java
cc65
pour crosscompiler pour la NES

2. Luminosité

2.1. Wayland

Avec acpilight.

2.2. X11

besoin de dev-libs/light (mais plus maintenu, à changer un jour)

2.2.1. Configuration DWM

Fichier /etc/portage/savedconfig/x11-wm/dwm-6.5:

/* some lines */

static const char *lightdec[] = { "light", "-U", "5", NULL };
static const char *lightinc[] = { "light", "-A", "5", NULL };

static Key keys[] = {
  /* some keys */
  { 0, XF86XK_MonBrightnessUp, spawn, {.v = lightinc} },
  { 0, XF86XK_MonBrightnessDown, spawn, {.v = lightdec} },
}

/* some lines */

3. Installation cross-compilateur pour Arduino et ESP32

  • etre dans le groupe dialout
  • suivre la page pour Arduino ou crossdev
  • pas besoin de changer le groupe pour portage:portage si tout a été créé en root et que les autres dossiers le sont aussi
  • si le dépôt ne s'appelle pas crossdev, il faut le préciser en rajoutant -oO /path/to/repo dans la commande

esptool pour pouvoir flasher le firmware.

Installer emerge -1a dev-embedded/esp-idf.

4. Distcc

Distcc dans Docker

/etc/init.d : liste des services openrc

equery a repository ${overlay_name} pour lister les paquets installés depuis un dépot

5. virt manager

Permet de manager ses VMs Qemu via une interface graphique. J'ai modifié le fichier /etc/dnsmasq.conf pour pouvoir avoir un pont réseau. J'ai activé les options bind-interfaces et interface. Un test sans ces changements est à faire dans un premier temps.

6. LXD / Incus

6.1. Incus

Utilisation de Incus pour tester les paquets de Gentoo (wiki). Je me suis rajouté dans les groupes incus et incus-admin (même si cela n'est pas recommandé par le wiki).

6.2. LXD

echo app-emulation/qemu virtfs | doas tee /etc/portage/package.use/package.use
echo app-arch/wimlib fuse | doas tee /etc/portage/package.use/package.use
# vérifier les fannions du noyau avant !
doas emerge distrobuilder lxd hivex wimlib gtk-vnc qemu

Avant la 3.1 de distrobuilder, il faut mettre ce patch afin de pouvoir utiliser mkisofs au lieu de genisoimage.

doas mkdir -p /etc/portage/patches/app-containers/distrobuilder
doas cat <<EOF
From 91ab435f54d1665e5f5c0497568ae7985c6b8b38 Mon Sep 17 00:00:00 2001
From: rick <rick@gnous.eu>
Date: Wed, 25 Oct 2023 15:49:14 +0200
Subject: [PATCH] change genisoimage for mkisofs

---
 distrobuilder/main_repack-windows.go | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/distrobuilder/main_repack-windows.go b/distrobuilder/main_repack-windows.go
index 76735f2..cbeae34 100644
--- a/distrobuilder/main_repack-windows.go
+++ b/distrobuilder/main_repack-windows.go
@@ -327,17 +327,17 @@ func (c *cmdRepackWindows) run(cmd *cobra.Command, args []string, overlayDir str
          logger.Info("Generating new ISO")
          var stdout strings.Builder

-       err = shared.RunCommand(c.global.ctx, nil, &stdout, "genisoimage", "--version")
+       err = shared.RunCommand(c.global.ctx, nil, &stdout, "mkisofs", "--version")
          if err != nil {
-               return fmt.Errorf("Failed to determine version of genisoimage: %w", err)
+               return fmt.Errorf("Failed to determine version of mkisofs: %w", err)
          }

          version := strings.Split(stdout.String(), "\n")[0]

          if strings.HasPrefix(version, "mkisofs") {
-               err = shared.RunCommand(c.global.ctx, nil, nil, "genisoimage", "-iso-level", "3", "-l", "-no-emul-boot", "-b", "efi/microsoft/boot/efisys.bin", "-o", args[1], overlayDir)
+               err = shared.RunCommand(c.global.ctx, nil, nil, "mkisofs", "-iso-level", "3", "-l", "-no-emul-boot", "-b", "efi/microsoft/boot/efisys.bin", "-o", args[1], overlayDir)
          } else {
-               err = shared.RunCommand(c.global.ctx, nil, nil, "genisoimage", "--allow-limited-size", "-l", "-no-emul-boot", "-b", "efi/microsoft/boot/efisys.bin", "-o", args[1], overlayDir)
+               err = shared.RunCommand(c.global.ctx, nil, nil, "mkisofs", "-l", "-no-emul-boot", "-b", "efi/microsoft/boot/efisys.bin", "-o", args[1], overlayDir)
          }

          if err != nil {
@@ -413,7 +413,7 @@ func (c *cmdRepackWindows) modifyWim(path string, index int) error {
 }

 func (c *cmdRepackWindows) checkDependencies() error {
-       dependencies := []string{"genisoimage", "hivexregedit", "rsync", "wimlib-imagex"}
+       dependencies := []string{"mkisofs", "hivexregedit", "rsync", "wimlib-imagex"}

          for _, dep := range dependencies {
                  _, err := exec.LookPath(dep)
-- 
2.42.0

EOF

7. Pentoo

  • aiosmb,dropbox-sdk -> changer keywords
  • django-guardian -> recheck pour faire la documentation
  • appmon
  • androdguard

8. Ebuild

Paquets à installer:

  • gentoolkit
  • pkgdev
  • pkgcheck (installé avec pkgdev)

8.1. Maintenance ebuild Python

distutils eclass et guide Python.

à installer: sphinx et pytest (de base pour la doc et les tests)

8.1.1. Exemples

python_install_all() {
    if use examples; then
        dodoc -r examples
        docompress -x /usr/share/doc/${PF}/examples
    fi
    distutils-r1_python_install_all
}

8.2. Test

Lorsque le paquet a des dépendances de test et que l'on doit les rajouter avec le flag test, il faut restreindre ces derniers.

RESTRICT="!test? ( test )"

#...

BDEPEND="
    ${RDEPEND}
    test? (
        sci-ml/tokenizers
    )
"

Lorsque les tests sont ajoutés avec distutils_enable_tests (par exemple), pas besoin de rajouter cette indication.

Lorsque de dossiers tests présents mais qu'aucun test n'est fait (à cause de bugs par exemple), il est possible de cacher ces messages en restreingnant les tests avec RESTRICT"test"=.

Author: rick

Email: rick@gnous.eu

Created: 2025-12-02 Tue 21:15

Validate