Commit Graph

70 Commits (e42f10051c7d0e3a11c31edcc9dbc7f5f608f2fd)

Author SHA1 Message Date
Dustin a8ccbe45a0 Improve handling of circular dependencies
Several packages end up with circular dependencies, depending on which
Portage profile is selected.  The default profiles have a circular
dependency between *sys-libs/pam* and *sys-libs/libcap*.  Systemd and
SELinux profiles have even more issues.

We can break the circular dependencies by explicitly building *libcap*
with`USE=-pam` first, which happens to be the default configuration
generated by `crossdev`.  Then, we need to switch to a more complete
profile in order to build *glibc* and *util-linux*.  At this point, the
build root should be complete enough to build anything without circular
dependencies.
2023-02-21 09:58:18 -06:00
Dustin 50b20eee8c Add start-container.sh script
This will make it easier to manually create a container for development
and debugging.
2023-02-21 09:58:18 -06:00
Dustin b19c0941a7 squashfs: Omit /usr/lib/udev/hwdb.d
This path is redundant and not necesssary on the installed system.
2023-02-14 21:09:13 -06:00
Dustin c91bff6f6d Makefile: Allow rebuilding just the squashfs image
This way we can rebuild the image even if nothing changed in the root
filesystem, but the excluded path list did.
2023-02-14 21:08:27 -06:00
Dustin 3980daefd3 firmware: Fix WiFi firmware file path
The kernel expects the `.txt` file to end with the `.xz` extension.
2023-02-14 21:07:35 -06:00
Dustin fe3cc25f6b fstab: Only overlay /etc/ssh
There's really no sense in creating a writable copy of the whole `/etc`
hierarchy at `/run/etc/rw`.  Instead, let's just mount overlays at the
paths we want to make writable (which for now is only `/etc/ssh`).
2023-02-14 21:05:54 -06:00
Dustin f182a4329b Remove unused locales
This reduces the size of the (compressed) image by a few megabytes.
2023-02-14 19:51:27 -06:00
Dustin e99049e462 portage: Fix typos 2023-02-14 00:50:13 -06:00
Dustin a776a5aa96 install-update: Use Gentoo shell functions 2023-02-14 00:31:42 -06:00
Dustin e0d873bbf0 Makefile: Fix recipe dependencies 2023-02-14 00:31:26 -06:00
Dustin d4fdb36d45 Exclude more extraneous files from rootfs image 2023-02-14 00:30:32 -06:00
Dustin 0b6edeeed7 build-rootfs: Add missing busybox du symlink 2023-02-14 00:03:42 -06:00
Dustin 41891a1be6 Disable unnecessary media drivers
These were adding over 60 MB to the rootfs image, and they'll never be
used.
2023-02-14 00:02:52 -06:00
Dustin 5a1b007fd7 build-kernel: Avoid creating /lib directory
In a "merged-usr" system, `/lib` is a symlink to `/usr/lib`.  When
installing *sys-apps/systemd*, Portage checks to ensure this is the
case.  If this happens after `make modules_install` is run, `/lib` is
a directory, which causes the installation to fail.  To avoid this, we
need to explicitly install the modules into `/usr/lib` so that the
symlink can be created later.
2023-02-13 23:24:36 -06:00
Dustin 0b1aed0080 podman-build: Mount /mnt/gentoo as a volume
Using a bind-mount instead of an overlay should marginally increase
performance.
2023-02-13 23:24:36 -06:00
Dustin 1687e615b4 Add top-level Makefile
Building the OS is now as simple as running `make` on a Gentoo system.

Interestingly, when `make` is executed as a (grand)child process of
another `make` process, it always prints an `Entering directory ...`
message.  This breaks the `make kernelversion` command, by adding
extraneous text to the output.
2023-02-13 23:24:36 -06:00
Dustin f32c6d37a4 build-rootfs: Avoid spurious boot errors
The *ldconfig.service* fails because `/etc` is not writable and thus
`/etc/ld.so.cache` cannot be generated.

The files specified in the `provision.d` *tmpfiles.d(5)* configuration
are unnecessary, and many of them cannot be created at runtime because
the root filesystem is immutable.
2023-02-13 23:24:36 -06:00
Dustin fef78afa31 build-rootfs: Create /lib and /lib64 symlinks 2023-02-13 23:24:36 -06:00
Dustin b9696ab003 uboot: Apply patches outside container
When running inside a rootless Podman container on a SELinux-enabled
host, the `patch` command fails because it cannot copy SELinux labels
from the original file to the patched file.  This only happens patching
files that are located in a bind mount.
2023-02-13 23:24:36 -06:00
Dustin 025b7c6115 Initial commit 2023-02-13 23:24:36 -06:00