From ae20a472288986093600b2354063041a7efbef3e Mon Sep 17 00:00:00 2001 From: Morten Linderud Date: Sat, 12 Oct 2019 17:03:48 +0200 Subject: [PATCH] [ArchConf2019] Added archive of all note pads --- content/notes/archconf2019/arch-infra.md | 90 ++++++++++ content/notes/archconf2019/base-package.md | 38 ++++ .../notes/archconf2019/golang-packaging.md | 19 ++ content/notes/archconf2019/gsoc.md | 56 ++++++ content/notes/archconf2019/main.md | 78 ++++++++ .../notes/archconf2019/package-standards.md | 35 ++++ .../notes/archconf2019/project-governance.md | 83 +++++++++ .../archconf2019/project-governance/idea1.md | 27 +++ .../archconf2019/project-governance/idea2.md | 5 + .../notes/archconf2019/svn2git-migration.md | 168 ++++++++++++++++++ content/notes/archconf2019/transitive-deps.md | 26 +++ .../archconf2019/versioned-kernel-installs.md | 27 +++ .../layouts/{lolkek => notes}/single.html | 5 +- 13 files changed, 653 insertions(+), 4 deletions(-) create mode 100644 content/notes/archconf2019/arch-infra.md create mode 100644 content/notes/archconf2019/base-package.md create mode 100644 content/notes/archconf2019/golang-packaging.md create mode 100644 content/notes/archconf2019/gsoc.md create mode 100644 content/notes/archconf2019/main.md create mode 100644 content/notes/archconf2019/package-standards.md create mode 100644 content/notes/archconf2019/project-governance.md create mode 100644 content/notes/archconf2019/project-governance/idea1.md create mode 100644 content/notes/archconf2019/project-governance/idea2.md create mode 100644 content/notes/archconf2019/svn2git-migration.md create mode 100644 content/notes/archconf2019/transitive-deps.md create mode 100644 content/notes/archconf2019/versioned-kernel-installs.md rename themes/arch/layouts/{lolkek => notes}/single.html (58%) diff --git a/content/notes/archconf2019/arch-infra.md b/content/notes/archconf2019/arch-infra.md new file mode 100644 index 0000000..871dd34 --- /dev/null +++ b/content/notes/archconf2019/arch-infra.md @@ -0,0 +1,90 @@ +--- +title: "Arch Infra" +date: 2019-10-12T16:53:24+02:00 +--- + +## done on 2019-10-06 + +- migrated forums to discourse using a public migration script +- set up keycloak with Terraform automation +- set up GitLab with saml2 + +## User management + +Explored managing the users using Ansible to manage LDAP. Flaws with LDAP: firstname/lastname should be set which some software does not handle, slow for searching. +KDE is moving to openid-connect. Start with gitlab, and extend from there. + +Services: + - Grafana + - BBS + - Zabbix + - Mediawiki + - AUR + - Patchwork (gitlab?) + - Archweb + - Mailman + - Kanboard (gitlab?) + - Gitlab + - Matrix + - Quassel + - Email (dovecot) => unix user + - SSH/unix users + +Databases: + - bbs: 94000 + - aur: 66531 + - bugs: 31075 + - wiki: 35000 + +* Questions +- To we put everyone in openid connect or not? +- How to do this gradually? +- How well does it scale? + +* Next Steps + +- Package freeipa +- Package keycloak +- Getting Arch Users in Keycloak and decide on the attributes +- Make Gitlab use keycloak + + +## Gitlab + +Replace https://git.archlinux.org + +* Restrict CI to master branches] +- why? + +Steps: + - reproduce the current repos + +## BBS Alternative + +- Retain old posts +- GDPR (or make it easier then the curent scenario) +- OAUTH or Plugin software +- Spam / signup protection such as we have now +- Moderation tools, mass removing posts. +- Theme-ability + +Possible alternatives: + - dfeed https://github.com/CyberShadow/DFeed + - discourse + https://meta.discourse.org/t/migrating-to-discourse-from-another-forum-software/16616 + https://github.com/discourse/discourse/blob/master/script/import_scripts/fluxbb.rb + http://docs.mailman3.org/en/latest/config-web.html + - https://flarum.org + +## Mailman 2 + +http://docs.mailman3.org/en/latest/config-web.html#configure-login-to-django +https://docs.mailman3.org/en/latest/migration.html +http://docs.mailman3.org/en/latest/config-web.html + + +## DNS Providers + +Have terraform provide dns + + diff --git a/content/notes/archconf2019/base-package.md b/content/notes/archconf2019/base-package.md new file mode 100644 index 0000000..264f659 --- /dev/null +++ b/content/notes/archconf2019/base-package.md @@ -0,0 +1,38 @@ +--- +title: "Base Package" +date: 2019-10-12T16:58:52+02:00 +--- + +# Base package + +# Current situation +base is a group, with a lot of stuff inside +some people assumed it installed, some don’t: as it’s a group, this is difficult + +# Proposal +New base meta-package (assumed installed): being a package means we can add/remove things later and propagate that : https://git.archlinux.org/svntogit/packages.git/tree/trunk/PKGBUILD?h=packages/base +See https://lists.archlinux.org/pipermail/arch-dev-public/2019-January/029435.html and https://lists.archlinux.org/pipermail/arch-dev-public/2019-March/029491.html for included packages and further discussion +Push the package to [core] +Done +Create a TODO list for base group removal +Sent +Update documentation +install base and linux in the default install +Installation Guide edited +https://git.archlinux.org/svntogit/packages.git/commit/trunk/PKGBUILD?h=packages/linux&id=f1c97a49a09b0fd8d7d1c3f6e8e635ef45974373 +explicit base as a mandatory package +News item +Sent + +# For later +Remove 'bzip2' 'gzip' 'xz' : they either are dependency for something else (e.g. pacman) or not useful by themselves: https://bugs.archlinux.org/task/64028 +Remove network tools, pciutils ? https://bugs.archlinux.org/task/64029, https://bugs.archlinux.org/task/64030 + + +News post: + +Following recent mailing list discussions, we have decided to replace the `base` group by a metapackage of the same name. We advise users to install this package, as it is effectively mandatory from now on. Users requesting support are expected to be running a system with the base package. + +We have decided to replace the `base` group by a metapackage of the same name, we advise users to install this package (`pacman -Syu base`), as it is effectively mandatory from now on. +Users requesting support are expected to be running a system with the base package. + diff --git a/content/notes/archconf2019/golang-packaging.md b/content/notes/archconf2019/golang-packaging.md new file mode 100644 index 0000000..817787a --- /dev/null +++ b/content/notes/archconf2019/golang-packaging.md @@ -0,0 +1,19 @@ +--- +title: "Golang Packaging" +date: 2019-10-12T16:59:12+02:00 +--- + +# Golang packaging + +Participants: + - Foxboron + - Felixonmars + + +golang package tooling: + https://github.com/Foxboron/gopkg + + +Fixing go packages: + https://git.archlinux.org/svntogit/community.git/commit/trunk?h=packages/glider&id=7b33bb1c722dd358557ed2158f6babf5f4cd94e9 + diff --git a/content/notes/archconf2019/gsoc.md b/content/notes/archconf2019/gsoc.md new file mode 100644 index 0000000..f351a26 --- /dev/null +++ b/content/notes/archconf2019/gsoc.md @@ -0,0 +1,56 @@ +--- +title: "GSoC" +date: 2019-10-12T16:57:12+02:00 +--- + +# GSoC ideas + +The idea is to make use of GSoC to get some projects done which require a lot of dedicated attention, which are self contained and where we have someone who wants to mentor. + +Below is a list of a brainstorm session: + +## Pacman + +- parallel transfers https://bugs.archlinux.org/task/20056 +- documentation +- secure packaging +- [pacman-dev] [RFC] Iterator interface for reading databases + +## archweb + +- pkgstats (official) + +## Infra + +- Arch Integration Test Framework +- Rebuild order script, generates a rebuild order for a package (ABI, C++) + +# Security tracker + +- Secure package checking +- ????? + +## Namcap + +- goformat for PKGBUILD +- Enhanche? + +## Reproducible builds + +- rebuilding infra +- making archiso reproducilbe + +## Installer + +- graphical installer +- "guided" installer giving you a terminal and walking you through install steps? I can get through an install unaided but it would be nice not to forget anything on the first try. + +## AUR / aurweb + +- Rewrite in Python + * Was done in django, declined by some contributors (relevant?) +- Support Pull Requests +- Support OAUTH +- Expose all data to clients (the web interface would just be another client) + + diff --git a/content/notes/archconf2019/main.md b/content/notes/archconf2019/main.md new file mode 100644 index 0000000..541eaa6 --- /dev/null +++ b/content/notes/archconf2019/main.md @@ -0,0 +1,78 @@ +--- +title: "Main note" +date: 2019-10-012T00:00:00+02:00 +--- +Arch Conf + +# Facts +When: 20191005 & 20191006 +Where: Native Space (Native Instruments GmbH), Schlesische Straße 29, 10997 Berlin +Website: https://conf.archlinux.org/2019 +Schedule: https://cloud.sleepmap.de/index.php/apps/calendar/p/DZ4ak7r5ryGE8zM3/Arch-Conf-2019 + +# Links +https://kanboard.archlinux.org/project/9 +https://pad.sleepmap.de/p/2019-arch-conf-cfp +https://pad.sleepmap.de/p/2019-arch-conf-sponsoring-request (external) +https://pad.sleepmap.de/p/2019-conf-sponsoring-mail (to devs) + +# Attendants +David 'dvzrv' Runge +Jelle 'jelly' van der Waa +Morten 'Foxboron' Linderud +Maxim 'maximbaz' Baz +Robin 'coderobe' Broda +Sven-Hendrik 'svenstaro' Haase +Sébastien 'seblu' Luttringer +Ran 'felixonmars' Yan +Andrew 'apg' Gregory +Filipe 'FFY00' Laíns +Jan Alexander 'heftig' Steffens +Daurnimator +Andreas 'andyrtr' Radke +Levente 'anthraxx' Polyak (sunday only) +Alad 'alad' Wenter +Konstantin 'kgizdov' Gizdov +Bruno 'Archange' Pagani +Jerome 'jleclanche' Leclanche +Laurent 'lordheavy' Carlier +Jonas 'diabonas' Witschel +Pierre + +# Food +hand out options during intro or order random pizzas (based on special dietary requirements) +https://pad.sleepmap.de/p/archconf2019-pizza + +# Hostels and Hotels Maybe we can remove this now? +Die Fabrik https://www.openstreetmap.org/node/5486308620 +Hostel X Berger https://www.openstreetmap.org/way/108607225 +baxpax https://www.openstreetmap.org/node/876726265 +Hostelboat Eastern/Western Comfort https://www.eastern-comfort.com/ https://www.openstreetmap.org/way/242254365 +East Side Hotel https://www.openstreetmap.org/node/60237649 +Ibis Berlin Ostbahnhof https://www.openstreetmap.org/way/42163095 +Moxy Berlin Ostbahnhof https://www.openstreetmap.org/way/404775652 +Hotel Schulz https://www.openstreetmap.org/node/5976573882 +Hotel nhow https://www.openstreetmap.org/way/86813081 +A & O Hotel and Hostel Berlin-Mitte: https://www.openstreetmap.org/node/3235827767 + +# Meetings and planning + + +# Session + + diff --git a/content/notes/archconf2019/package-standards.md b/content/notes/archconf2019/package-standards.md new file mode 100644 index 0000000..18bed1a --- /dev/null +++ b/content/notes/archconf2019/package-standards.md @@ -0,0 +1,35 @@ +--- +title: "Package Standards" +date: 2019-10-12T16:53:57+02:00 +--- + +Some issues that came up during previus TU application reviews that might be worth documenting e.g. in https://wiki.archlinux.org/index.php/Arch_package_guidelines: + +- use HTTPS for sources whereever possible, "git+https://" for Git +- don't use specific sourceforge mirror to download: https://bbs.archlinux.org/viewtopic.php?id=22200 +- use PGP signatures where possible (may need to build from Git tag instead of source tarball) +- rename sources to something unique for shared $SRCDIR + +- be consistent with the use of cd "$srcdir/..." (which is not needed anyway) +- don't use internal functions like msg2 + +- autoreconf/autogen.sh/bootstrap/... in prepare(), not build() +- always do autoreconf -if +- don't use sed as it fails silently +- upstream patches where possible + +- run tests whereever possible + +- don't build implicitly in package() +- use /usr instead of /etc where possible, e.g. /usr/lib/systemd/system +- only warnings, no documentation in install files + +- no need for provides=("$pkgname") +- use sysusers.d and tmpfiles.d instead of doing stuff manually, don't delete users on uninstall: https://www.archlinux.org/todo/usergroup-management/ + +Specific guidelines that should be improved: + - https://wiki.archlinux.org/index.php/Haskell_package_guidelines (completely empty) + - https://wiki.archlinux.org/index.php/Java_package_guidelines (suggests copying binaries instead of building from source is ok) + +Add experienced maintainers for Haskell, Go, Java, ... as contacts to the Wiki so people can look at "model" PKGBUILDs instead of random ones in the repos? + diff --git a/content/notes/archconf2019/project-governance.md b/content/notes/archconf2019/project-governance.md new file mode 100644 index 0000000..7347aa7 --- /dev/null +++ b/content/notes/archconf2019/project-governance.md @@ -0,0 +1,83 @@ +--- +title: "Project Governance" +date: 2019-10-12T16:58:12+02:00 +--- + +# Project governance + +# Problems +- Decision making process (who votes, how we count votes?) +- Hierachy between groups (is dev is the top management group?) +- No Arch Game Rules / RFC / PEP (we have no written rules and process to update them, like TU bylaws) + Review process: leadership? + +## Bus factor + +- lower bus factor by actively encouraging single-person projects to find co-maintainers + +## Project intransparency + +- share / publish / highlight SPI report + +## Developer intransparency + +- open up developer role +- encourage developers to (be able to) work on all internal projects + +## Dealing with finances + +- money spending is dealt with via Aaron + developer consent (which can take long) +- think about codified "allowance" for yearly events (e.g. Arch Conf) where community members get travel refunds +- delegation of spending, e.g. any developer can spend up to $500 without approval (e.g. a dinner); 3 developers required for up to $5000; all + Aaron required for more? +- allowing for e.g. infrastructure team to spend +- get Hetzner to bill SPI instead of Ionuţ (aka wonder) + +## Project management + +- encourage (and do!) online meetings, pair programming +- be mindful to opt out properly (not silently), if there's no time + +## Team + +- do (community centric) Arch Conf yearly! +- meet at FOSDEM (hackathon!) +- create a Conf, that is more user centric (requires sponsors) + +## Call for sponsors and proposals + +- page on wiki/news website +- twitter annoucement +- we're not really in need of sponsors for money, are we? + sponsors make it possible to pay for accomodation + also becomes necessary if we open things up to users. + I think we can get full reimbursement for all team members with our current situation, but getting other people to join will need sponsors. We don't really have the business connection that would get companies to send their employees to our conferences. +Foxboron: The donations can't keep up reimbursments for multiple events a year, even just once a year will take a hit if this is only internal. The monthly avg donations amount to around 200-400 USD in total. - https://spi-inc.org/treasurer/ + +## Arch Linux Project Leadership + +- Identify technical problems in Arch (esp. not social/behavioral problems) +- Conduct regular meetings in which to discuss problems and find resolutions to those (assign to subleaders, defer, close) +- Organize a list of ongoing processes/subprojects and keep track of those (regularly poll people involved) +- Leadership must have supreme decision making powers over technical domains (I think we should not give techincal decisions to a leadership/management role). How decisions are done should be defined in a decision process, which detail the way decisions have to be taken (majority, unanimity, condorcet) and by who (the dev, the tus, the whole statff, the team, the leader). + +## Leadership for subprojects + +- Appointed by project leadership during meetings to tackle a specific technical problem +- Identify issues and tasks in a specific technical domain +- Conduct regular meetings in which project specifics are discussed, progress is documented and shared with everyone afterwards +- Track progress on the subproject's tasks + +## Ideas +- https://pad.sleepmap.de/p/2019-arch-conf-project-governance-idea-1 +- https://pad.sleepmap.de/p/2019-arch-conf-project-governance-idea-seblu (technical council project leadership) +- $YOUR_IDEA_HERE + +## Actionables + +- Decide whether to have leadership be a group or a single person +- Decide whether to have a regular leadership rotation (with a pre-defined term) or defining criteria to remove a leader +- Talk to Aaron about this and get his sentiment (direct email) +- Explain to entire project why this is required and what we're planning to do (mailing list mail to arch-dev) +- Find people willing to take leadership roles +- Plan a follow up meeting + diff --git a/content/notes/archconf2019/project-governance/idea1.md b/content/notes/archconf2019/project-governance/idea1.md new file mode 100644 index 0000000..d11d0ef --- /dev/null +++ b/content/notes/archconf2019/project-governance/idea1.md @@ -0,0 +1,27 @@ +--- +title: "Idea1" +date: 2019-10-12T17:01:40+02:00 +--- +Election of a "Temporary dictator" + +Randomly select 3 people from pool of Developers+Trusted Users +They can opt-out, in which case a new person is selected (at random) to replace them +Alternatively, they may "campaign" for one of their opponents +Non-chosen Developers and TUs then vote for the new leader in an instant-run-off vote +They serve for 1 year +Rationale: anything more is too much to ask as a time commitment via random process + + +"Reluctant leaders are the best leaders" +More likely to delegate (good!) + +"I better run cause my I don't have confidence in my opponents" +The 2 people effectively have an effecitve way to "veto" an opponent + +"If I get elected I can just delegate to $UNAVAILABLE_CANDIDATE" +If you are elected and don't want the job, you are free to delegate your powers as you desire + +Why a dictator? +Reduce points of contact required to get approval/permission to do something + + diff --git a/content/notes/archconf2019/project-governance/idea2.md b/content/notes/archconf2019/project-governance/idea2.md new file mode 100644 index 0000000..1ae1525 --- /dev/null +++ b/content/notes/archconf2019/project-governance/idea2.md @@ -0,0 +1,5 @@ +--- +title: "Idea2" +date: 2019-10-12T17:01:43+02:00 +--- + diff --git a/content/notes/archconf2019/svn2git-migration.md b/content/notes/archconf2019/svn2git-migration.md new file mode 100644 index 0000000..3170625 --- /dev/null +++ b/content/notes/archconf2019/svn2git-migration.md @@ -0,0 +1,168 @@ +--- +title: "Svn2git Migration" +date: 2019-10-12T16:56:08+02:00 +--- + +# svn2git migration +https://github.com/archlinuxarch-repo-management + +Team members / participants: +heftig (Project lead) +alad +maximbaz +jleclanche +Pierre +daurnimator? + +Goals +Move our current svn approach for repository management to git +Include support for debug packages + +New implementation from scratch +dbscripts is old, difficult to understand and extend +Allows theoretical extensions for git (as of recent; no actual support included) +Documentation of dbscripts behavior +What does it do? +Handling of edge cases +What can it do? What can it not do? +Issues with any/x86_64 in split packages +Cannot properly (db-)move split packages +Possible languages +Python: easy to (unit-)test, library support - AGREED ON THIS +Bash: most people were against this (hard to test, general language difficulties) + +Monorepo approach +https://github.com/archlinux/arch-repo-management +Packages (pkgbase) are maintained in separate git repositories +Tags: pkgname-(epoch:)pkgver-pkgrel +Not tagged by arch (a PKGBUILD may work for several archictectures) +Signed tags + verification +Option (A) Tags can be force pushed until a "release" +Option (B) Do not allow force pushing tags - AGREED ON THIS +Split in subdirs by first two letters? +A seperate git repository is kept for management of the (binary) arch repos/mirrors +Layout proposals +arch -> repo -> pkgbase +https://github.com/dvzrv/arch-repo-management#git-repository-layout +arch -> repo -> pkgbase -> pkgname +Advantage: keep history of precise state of Arch Linux repositories at any given time +Possible mismatches between monorepo and built database? +Alternative: "repo-add" that works untarred tree, release == tar +Option (1) Keep a large monorepo with full copies of all packages +Only needed if requiring access to the source files +Has the nice side-effect of containing an ABS-style tree for users to clone +git submodule +Least amount of possible data +More difficult to use (but automated anyway by scripts) +git subtree +Hard to remove files a-posteri (example: distribution/legality issues) +git read-tree +"git-subtree with less history" +Option (2) Keep a monorepo with only metadata of packages - AGREED ON THIS +May offer performance improvements over full copy monorepo (1) +Lets us generate DB files directly from the repo state, without manipulating them using repo-add +replace repo-add (in dbscripts) with custom code that generates a DB file from the monorepo contents alone +folder structure: + +x86_64/ + community/ + foo.json (where foo is pkgbase) + bar.json (where bar is pkgbase) + community-staging/ + core/ + core-debug/ + +file format: pretty-printed with sorted keys JSON with fields: +version +makedepends (list) +checkdepends (list) +packages (list of objects with fields below) +filename +name +desc +groups (list) +csize (int) +isize (int) +md5sum +sha256sum +pgpsig +url +license (list) +arch (because can also be "any") +builddate (int) +packager +replaces (list) +conflicts (list) +provides (list) +depends (list) +optdepends (list) +files (list) + +Operations +Add/Update (integrate new .pkg.tar.xz for one or multiple pkgbases into the DB) +Collect packages from staging dir, parse .PKGINFO +Group by repo and pkgbase +{'extra': {'foo': data, 'bar': data}, 'testing': { ... }} +if pkgbase already seen but common fields (version, makedepends, checkdepends) differ, error out +do GPG verification? +For each repo to process: +Load repo JSON data +For each pkgbase: +Ensure version is increasing (pyalpm vercmp) +Shallow clone tag named "$version" from package repository named "$pkgbase" to get PKGBUILD +GPG-verify tag? +Run makepkg --packagelist to get list of expected packages +Verify against packages collected +Do other verification checks between PKGBUILD and packages? Check current dbscripts +Get rid of clone +Copy the packages into the FTP pool +Existing file is an error +Link the packages from the FTP repo dir +Existing file is an error +Copy package data into repo data +Write out JSON +Write out DB files +git commit +Remove old symlinks +Remove (remove existing pkgbases) +For each repo to process: +Load repo JSON data +For each pkgbase: +Remove pkgbase from data +Write out JSON +Write out DB files +git commit +Remove old symlinks +Move (move existing pkgbases from e.g. testing to extra) +For each repo to process: +Load repo JSON data +For each pkgbase: +Move data +Add new symlinks +Write out JSON +Write out DB files +git commit +Remove old symlinks + +Tasks +Code to load JSON and stream out a database - heftig +Generates a tar written to the foo.db.tar.gz +Code to load packages and write out JSON - maximbaz +For testing purposes, code to convert a foo.db.tar.gz into JSON - alad +Rewrite devtools' commitpkg to use git instead of svn + +(Unit) testing +All code should be properly tested +https://docs.python.org/3/library/unittest.html + +Performance testing +Currently ~10k packages in the official repositories +Initial testing with small amount of packages (100-500 packages) +Extend to multiple of packages to ensure scaling for the foreseeable future +Example: AUR (~55k packages) +Compare multiple approaches (and their different implementations like subtree vs submodule) + +Documentation +Let's document everything along the way +Avoid the dbscripts scenario where very few people actually understand the code + diff --git a/content/notes/archconf2019/transitive-deps.md b/content/notes/archconf2019/transitive-deps.md new file mode 100644 index 0000000..b55d038 --- /dev/null +++ b/content/notes/archconf2019/transitive-deps.md @@ -0,0 +1,26 @@ +--- +title: "Transitive Deps" +date: 2019-10-12T16:54:23+02:00 +draft: true +--- + +# transitive dependencies + +# Related +* https://lists.archlinux.org/pipermail/arch-projects/2017-August/004607.html + + +# Problems: +* packages break when a dependency they need is removed down the chain where they used to get it from +* Namcap doesn't care (e.g. it will suggest to remove “already included” dependencies) : https://bugs.archlinux.org/task/64022 +* Raises issues like https://bugs.archlinux.org/task/54887 +* Hard to grasp which packages actually depend on something just by looking at reverse dependencies + +# Solutions +* all NEEDED library requirements should be in depends/optdepends (change namcap) +* packaging guidelines need to be changed to make sure packagers add shared library names to provides array +-> can be automatic, at least the provides= (only if the soname is specific(?)) +* add symbols to provides (e.g. rpm)? +* patch projects using libtool to use as-needed (which apparently is discarded) +-> always use `autoreconf -vfi` to recreate `./configure` should be added to packaging guidelines + diff --git a/content/notes/archconf2019/versioned-kernel-installs.md b/content/notes/archconf2019/versioned-kernel-installs.md new file mode 100644 index 0000000..ff46f4a --- /dev/null +++ b/content/notes/archconf2019/versioned-kernel-installs.md @@ -0,0 +1,27 @@ +--- +title: "Versioned Kernel Installs" +date: 2019-10-12T16:54:46+02:00 +--- + +# Versioned kernel installs + +# Problems +Upon installing a new kernel, the module tree is removed, meaning that subsequent loading of modules fails (e.g. pluging an USB drive) +If there is an issue with the new kernel, no old one to boot on, while -lts or any other kernel might not be a suitable fallback + +# Issues with versioned kernel installs +Bootloader? Currently we install /boot/vmlinuz-linux and generate an associated /boot/initramfs-linux.img. How to handle versioned version without people having to rewrite their bootloader on each kernel update? +Symlinking seems nice (default names link to newest version), but does not work on FAT, e.g. systemd-boot +kernel-install from systemd can manage multiple kernels apparently, but then what about non-UEFI systems +Do all bootloaders have a way to specify glob pattern in kernel image/initramfs so that they grab all versioned kernels? +No, generating config is unavoidable + + +Changes planned regarding the port to Dracut would let us easily leave at least old kernels + initramfs around, making rescue boots possible: +/boot/* no longer packaged +Hooks in mkinitcpio and and Dracut (might use kernel-install, or not) copy kernels from /lib/modules to /boot/, in different naming schemes + +# Seblu versioned kernels with kernel-install and mkinitcpio: + - https://git.seblu.net/archlinux/linux-seblu-meta + - https://git.seblu.net/archlinux/kernel-install-poc + diff --git a/themes/arch/layouts/lolkek/single.html b/themes/arch/layouts/notes/single.html similarity index 58% rename from themes/arch/layouts/lolkek/single.html rename to themes/arch/layouts/notes/single.html index 9189506..1e6826c 100644 --- a/themes/arch/layouts/lolkek/single.html +++ b/themes/arch/layouts/notes/single.html @@ -1,10 +1,7 @@ {{ partial "header.html" . }} -
-
-

{{.Title}}

-
{{.Content}}
{{ partial "footer.html" . }} + -- GitLab