Commit graph

72 commits

Author SHA1 Message Date
Bobby The Builder
b341018d89
main/posmarketos-mkinitfs: add -f parameter to parted (MR 3355)
[ci:skip-build]: already built successfully in CI
2022-08-15 17:42:39 +02:00
Anton Bambura
feb91937c1
main/postmarketos-mkinitfs: support mounting with UUIDs (MR 3298) 2022-07-24 16:58:55 +02:00
Laar3
fca17c6e08 postmarketos-mkinitfs: add option to disable splash (MR 3305)
Add PMOS_NOSPLASH as a kernel command line option to disable
the splash screen to show the logs on the screen for debugging.

See https://wiki.postmarketos.org/wiki/Initramfs_development
on how to use it.
2022-07-23 17:51:37 +00:00
Richard Acayan
20c7501b50
main/postmarketos-mkinitfs: resize_root_partition: resize dm-* devices (MR 3216)
Prior to this commit, the initramfs was unable to resize the root
partition if it was on a device backed by the device mapper. This commit
fixes that now that it is possible for the root partition to lie on a
device mapper device.
2022-06-16 10:12:07 +02:00
Minecrell
16c9892a8f
main/postmarketos-mkinitfs: load file system modules dynamically (MR 3166)
At the moment, mkinitfs loads some file system modules always (ext4),
some dynamically (brtfs) and some not at all (f2fs, vfat), expecting
them to be built-in.

To support generic kernels (e.g. from Alpine) properly, use the
partition type detection for both boot and root partition and always
load the necessary modules before mounting.
2022-06-06 10:11:51 +02:00
Johannes Marbach
aa0f96edb9
main/postmarketos-mkinitfs: Correctly set up udev (MR 3146)
This replaces the previous `udevadm test` hack with a combination of
`udevd`, `udevadm trigger` and `udevadm settle` in order to coldplug all
available devices and make them available for use via libinput / unl0kr.

Relates to: #1411

[ci:skip-build] already built successfully in CI
2022-05-29 12:03:04 -07:00
Richard Acayan
36ff86f895
main/postmarketos-mkinitfs: dynamic partitioning support (MR 3088) 2022-05-12 09:43:57 +02:00
Johannes Marbach
26c2085d81
main/postmarketos-mkinitfs: support unl0kr (MR 2687)
[ci:skip-build] already built successfully in CI
2022-02-03 15:59:13 -08:00
Marian Stramm
0922ff0fdd
main/postmarketos-mkinitfs: basic support for btrfs, upgrade to 1.4.1 (MR 2841)
[ci:skip-build] already built successfully in CI
2022-01-24 21:34:24 -08:00
Clayton Craft
d1a6daca20
main/postmarketos-mkinitfs: replace udhcpd with unudhcpd (MR 2698)
unudhcpd is a lightweight dhcp server that effectively implements static
assignment of a single IP on an interface regardless of client MAC, with
no lease. The end result is that a system connected to a pmOS device via
usb networking should always get an IP, and always get one very quickly.

This adds a new dependency on this dhcp server, and starts it in initfs.

Fixes #1199

[ci:skip-build] already built successfully in CI
2022-01-04 22:22:49 -08:00
Nikita Travkin
316745a171
main/postmarketos-mkinitfs: Center splash images on the screen (MR 2662)
Alpine patches busybox to support image alignment in [1].
So far we don't need to align the spalshes in postmarketOS as those are
generated per device. However with generic images it becomes impossible
to support multiple resolutions with this approach.
Set the alignment to "Center" in fbsplash config so generic system
images can reuse the splash on multiple resolutions.

[1] - https://gitlab.alpinelinux.org/alpine/aports/-/blob/master/main/busybox/0008-fbsplash-support-image-and-bar-alignment-and-positio.patch

[ci:skip-build] already built successfully in CI
2021-11-07 19:33:56 -08:00
DolphinChips
df9d656df5
main/postmarketos-mkinitfs: fix showing custom splash after running osk-sdl (MR 2647)
Support for custom "Loading..." splashes was added in MR 1776, but
`unlock_root_partition` function is still hardcoding default "Loading..."
splash. Fix this behaviour by replacing usage of `show_splash` function with
`show_splash_loading`, which accounts for presence of custom splash.

Closes #759
2021-11-01 15:34:39 +05:00
Jami Kettunen
ea7d9007a4
main/postmarketos-mkinitfs: support more modular kernels (MR 2590)
* xts, libaes & aes are required for root partition FDE unlocking
* evdev is required by osk-sdl for input

[ci:skip-build] already built successfully in CI
2021-10-23 14:03:28 -07:00
Caleb Connolly
34623c4a0a
postmarketos-mkinitfs: fix charging-sdl for kmsdrm devices (MR 2098)
This fix was pending since before charging-sdl was deprecated and still
provides value should anyone wish to pickup and improve charging-sdl
again.

charging-sdl currently does not check for devices using mesa, even
though it supports it in the same way as osk-sdl. Check for msa support
and set SDL_VIDEODRIVER in that case.

Also fix the font path, as it was reading both keyboard-font and
keyboard-font-size from osk.conf.
2021-09-01 11:41:50 +03:00
Luca Weiss
58eaa90874
main/postmarketos-mkinitfs: change wait for subpartitions (MR 2432)
Previously it was assumed that with the counter and the sleep 0.1 the
process would take about 10 seconds to complete. On newer devices with
tens or even hundreds of partitions going through all partitions already
takes a significant amount of time, so change the logic to measure the
time elapsed instead.
2021-08-22 20:15:40 +02:00
Clayton Craft
2283190a93
main/postmarketos-mkinitfs: move dev node creation to initfs (MR 2407)
There should be no reason that this has to be done by mkinitfs, and
moving it to initfs simplifies mkinitfs (and the creation of a
replacement)
2021-08-16 19:04:38 +02:00
Oliver Smith
7139a82837
main/postmarketos-mkinitfs: support pmOS_i_boot (MR 2337)
Support the shorter label for the installer's boot partition, that works
with the 11 character limit of fat32 partitions.
2021-07-12 07:34:56 +02:00
Clayton Craft
c6a5e885c0
postmarketos-mkinitfs: disable correct shellcheck test (MR 2260)
Shellcheck 0.7.2 has a change that gives many error conditions their own
SC30** codes, instead of including them in SC2039. This updates the
scripts in this package that "disable SC2039" to disable the new code.

New codes added in shellcheck: cfd68ee0c2ebfd0ab08a1d4bf628162b454dc207
2021-06-17 18:09:44 -07:00
Clayton Craft
9088fbb6b9
postmarketos-mkinitfs: disable ps2mouse module when running directfb (MR 2201)
On my librem 5 when using directfb in initfs, touch input is really
inconsistent... the cursor seems to jump around and it's hard to enter
keys in osk-sdl. This is completely 'fixed' by disabling the ps2mouse
input module in dfb.

I guess this might cause mice to stop working (?), but I can't think of
any situation where someone would run osk-sdl in initfs on a device that
has a ps2 mouse but no keyboard (which would make more sense to use for
entry than the mouse..)
2021-05-27 22:28:57 +02:00
Martijn Braam
e0136b2abc
main/postmarketos-mkinitfs: allow osk-sdl user overrides (MR 2184) 2021-05-27 22:24:00 +02:00
Luca Weiss
70173bde87
main/postmarketos-mkinitfs: disable charging-sdl (MR 2111)
See also #1064
2021-04-17 22:53:10 -07:00
Bobby The Builder
9ea2e7e828
main/postmarketos-mkinitfs: show resizefs splash (MR 1996)
[ci:ignore-count] [ci:skip-build]
2021-04-11 20:03:33 +02:00
Bobby The Builder
c4f050ffcd
main/postmarketos-mkinitfs: add f2fs (MR 1850) 2021-04-11 19:43:23 +02:00
Bobby The Builder
9eb97c73df
main/postmarketos-mkinitfs: avoid unneeded resizefs (MR 1850) 2021-04-11 19:43:23 +02:00
Clayton Craft
4243b95bd0
main/postmarketos-mkinitfs: refactor osk-sdl config/running (MR 1870)
- Simplified logic for setup/running osk-sdl in initfs
- include libGLESv2 when running osk-sdl w/ mesa
- depends on osk-sdl >=0.62
2021-02-22 15:40:44 +03:00
Oliver Smith
e8c76175f6
main/postmarketos-mkinitfs: add pmOS_inst_boot (MR 1820)
Find partitions with the label "pmOS_inst_boot" too, and prefer using
them as boot partition over ones with label "pmOS_boot". (I'd use
"pmOS_install_boot", but there is a character limit in the label.)

Without this, the initramfs may choose the wrong boot partition if
postmarketOS is available once as install OS (on device installer) on
the SD card and once on the eMMC (installed).

I just had this problem with QEMU when simulating the install from SD to
eMMC use case with pmbootstrap qemu --second-storage. The pmOS initramfs
scripts would detect the previously created eMMC boot partition as the
proper one and mount it. It would boot into the right root partition,
because that already has a different label (pmOS_install instead of
pmOS_root), but because the wrong boot partition is already mounted,
during the install it would not be possible to run mkfs on it.
2021-01-27 16:12:27 +01:00
Oliver Smith
c108a5a8d1
main/postmarketos-mkinitfs: allow splash override (MR 1776)
Make it possible to set a custom splash screen by placing a
splash.ppm.gz file on the boot partition.
2020-12-03 11:30:25 +03:00
clayton craft
0e30c6f760
postmarketos-mkinitfs: fallback to directfb if osk-sdl fails w/ mesa (1625) (MR 1625) 2020-11-12 23:42:39 -08:00
clayton craft
13fbb3e501
main/postmarketos-mkinitfs: set no_supertile for osk with mesa (MR 1625)
This is needed by the librem 5, else the graphics are
distorted/unusable.
2020-11-12 23:41:29 -08:00
Luca Weiss
a6ec22b9a4
main/postmarketos-mkinitfs: use kmsdrm sdl backend for osk-sdl (MR 1625) 2020-11-12 23:41:28 -08:00
Oliver Smith
bfa705b745
main/postmarketos-mkinitfs: fix device sed regex (MR 1436)
The p? is not redundant. Without it, the p in mmcblk0p2 for example does
not get cut off, meaning the resulting device is not "mmcblk0" but
"mmcblk0p". My bad, sorry for the breakage.

Fixes: 9f6600ba ("main/postmarketos-mkinitfs: rm pmOS_deleteme")
Fixes: 9d86f6fe ("main/postmarketos-mkinitfs: resize: unallocated space check, even if forced")
2020-07-22 09:18:10 +02:00
Oliver Smith
9f6600ba18
main/postmarketos-mkinitfs: rm pmOS_deleteme (MR 1428)
Remove the "pmOS_deleteme" partition left behind by the on-device
installer, if it exists. Let the existing resize_root_partition() extend
the root partition over the newly gained space (and rest of the storage
device) right afterwards.
2020-07-21 22:53:03 +02:00
Oliver Smith
b55d95f3a9
main/postmarketos-mkinitfs: resize_root_partition: update comment (cosmetic) (MR 1428) 2020-07-21 22:53:02 +02:00
Oliver Smith
9d86f6fe92
main/postmarketos-mkinitfs: resize: unallocated space check, even if forced (MR 1428)
In resize_root_partition(), put the unallocated space check into an
extra function has_unallocated_space(). Run it even if
PMOS_FORCE_PARTITION_RESIZE is used, so we don't attempt to resize the
partition if there is no free space.

While at it, change "sed 's/p?2$//'" to "sed 's/2$//' in an already
modified line, because it means the same thing and is less confusing
(? in regex means: 0 or 1 time).
2020-07-21 22:53:02 +02:00
Oliver Smith
863ec713ba
main/postmarketos-mkinitfs: mount /sysroot/boot (MR 1398)
Mount the boot partition at /sysroot/boot and keep it mounted, when
running the switch_root command. This way, OpenRC doesn't need to mount
it and possibly use the wrong partition. The OpenRC service does not use
the same logic to find the boot partition, in particular it does not
support the pmos_boot kernel parameter.

While at it, print the mountpoint and read-only/read-write arguments in
the mounting log message for both root and boot.

Fixes: #664
2020-07-08 18:02:49 +02:00
Oliver Smith
9be8b59a00
main/postmarketos-mkinitfs: support pmOS_install (MR 1296)
Prefer booting from a pmOS_install partition if it exists, but do not
resize it.

Related: https://wiki.postmarketos.org/wiki/On-device_installer
2020-06-17 21:41:06 +02:00
Martijn Braam
ec83ab9a06
postmarketos-mkinitfs: fix unlocking with pmos_root (!943)
Fix --fde on the PinePhone (actually it fixes it for devices that
uses the pmos_root cmdline).
2020-03-01 00:43:08 +01:00
Pops Dylan
8760409717
main/postmarketos-mkinitfs: enable profiling with bootchart (!852)
If (a) the kernel command line parameters include PMOS_BOOTCHART2 and
(b) /sbin/bootchartd exists (i.e., the bootchart2 package has been
installed), run /sbin/bootchartd instead of /sbin/init.
2020-01-13 15:44:51 +03:00
Martijn Braam
cfcf1e6d7d
main/postmarketos-mkinitfs: added pmos_boot and pmos_root (!756) 2019-11-24 20:16:41 +01:00
Danct12
dd028490c4
main/postmarketos-mkinitfs: make android_usb attrs customizable (!734)
ConfigFS USB attrs are customizable based on the `deviceinfo_usb_*` variables,
however some downstream kernels (e.g: msm-3.18) doesn't use configfs, instead
uses the traditional Android USB Gadget.

Based on `deviceinfo_usb_{idVendor/idProduct}` variables, we can change the USB
vendor and product.

So that on these devices, we can make it appear on USB bus as the correct USB
vendor/product ID, not "Google Inc. Nexus 4 (fastboot)"

Signed-off-by: Danct12 <danct12@disroot.org>
2019-11-11 13:56:47 +07:00
lambdadroid
803b8dcec9
main/postmarketos-mkinitfs: stop forcing full fsck on every boot (!723)
At the moment, a full file system check is forced even if the
file system is marked clean (i.e. it was properly unmounted the
last time it was used). On large file systems with slow I/O
(e.g. SD cards), this can take a significant amount of time.

Removing the -f option of e2fsck allows skipping the full
file system check if it is marked clean, speeding up the boot time.
2019-11-06 00:08:50 +01:00
Alexey Min
68821d2cb2
main/postmarketos-mkinitfs: make USB configfs attrs customizable (!706)
Some devices' downstream kernels may have different RNDIS/functionfs
drivers (ex. QCRNDIS) that require different values for some
configfs gadget attributes. Make it possible to customize with
deviceinfo file from device- package.

The idea is that each device- package can optionally specify a
bunch of `deviceinfo_usb_*` variables to customize the way it is
visible on USB bus. The ability to override
`deviceinfo_usb_rndis_function` is essential to make downstream
sdm660 based device to appear on USB bus.

While at it, make `idVendor`, `idProduct` and `serialnumber` also
customizable. So that we can make, for example, PineTab appear on
USB bus as PineTab, not as "Google Inc. Nexus 4 (fastboot)".
2019-11-05 23:33:22 +01:00
lambdadroid
0c76dd4ce3
main/postmarketos-mkinitfs: configure USB gadget serialnumber (!684)
Currently, the USB networking setup using configfs does not configure
a "serialnumber" for the USB gadget. This means that an empty
serial number will be sent during USB enumeration.

This is usually not a problem, but it seems to cause issues under
special circumstances (on asus-me176c on one of my PCs).

The USB Gadget configfs documentation also suggests setting
the "serialnumber":
  https://www.kernel.org/doc/Documentation/usb/gadget_configfs.txt
It can be any string, so we can just set it as "postmarketOS" like
the manufacturer.
2019-10-23 23:27:16 +02:00
Oliver Smith
8c34ea6f81
main/postmarketos-mkinitfs: make shellcheck happy (!636)
We'll switch from whatever version of shellcheck is packaged in Debian
stretch to the newer version in Alpine edge in the next commit. Adjust
postmarketos-mkinitfs first, so it doesn't report any errors.
2019-09-26 21:27:58 +02:00
Luca Weiss
7699f8d537
main/postmarketos-mkinitfs: set pmOS-specific firmware path (!515)
Currently we rely on the fact, that the kernel asks user space to load
the firmware for it, so we can use the /lib/firmware/postmarketos
directory for firmware.

As the kernel has support for loading the firmware itself since
v3.7, and the parameter for adding an additional path to the search
paths was added with v3.10, we can use that to not rely on
CONFIG_FW_LOADER_USER_HELPER being set.
2019-07-25 20:30:04 +02:00
Martijn Braam
74ac6819c9
main/postmarketos-mkinitfs: verbose network log (!468)
Make the initfs show better errors in the network setup part.
2019-06-30 11:49:03 +02:00
Martijn Braam
d72923dcd5
main: linux-postmarketos-allwinner: PinePhone updates
- main: postmarketos-mkinitfs: Add /run
  Create the /run directory in the initramfs so that cryptsetup doesn't
  crash on not being able to create /run/cryptsetup for lockfiles

- device: pine-dontbeevil: Remove workaround for touchscreen

- main: linux-postmarketos-allwinner: Implemented supplies for touchscreen
  This uses a slightly newer commit from the kernel repo that implements
  requesting a regulator in the touchscreen driver

- device: pine-dontbeevil: Remove ethernet from initramfs
  This actually makes debugging more complicated since networkmanager wont
  touch the ethernet adapter afterwards and the initramfs can be debugged
  over uart

- temp/u-boot: sync APKBUILD with upstream and update to 2019.04

- main: linux-postmarketos-allwinner: Use 20190521 git version
2019-05-23 14:39:21 +02:00
Zhuowei Zhang
2a4d30e52a
main/postmarketos-mkinitfs: fix USB idVendor/idProduct values for ConfigFS (!190)
ConfigFS expects idVendor and idProduct values to be prefixed with 0x.

Without this change, google-crosshatch shows as a device with 0:0 as the
idVendor/idProduct in lsusb:

Bus 001 Device 004: ID 0000:0000

This confuses VirtualBox: it has trouble detaching this device from
a virtual machine, so one must manually use ifconfig to bring down the
old USB network connection before reattaching.

With this change, the idVendor/idProduct is correct:

Bus 001 Device 004: ID 18d1:d001 Google Inc.

This issue also seems to affect other devices with ConfigFS, such as the
Nexus 5:

https://matrix.to/#/!clcCCNrLZYwdfNqkkR:disroot.org/$15487159511194991apGpy:matrix.org
2019-02-05 10:07:21 +01:00
Daniele Debernardi
a98b900b65
postmarketos-mkinitfs: skip fbsplash for deviceinfo_no_framebuffer (!108)
Also noticed that the debug-shell hook wasn't sourcing the deviceinfo
and still showing the splashscreen even with
deviceinfo_no_framebuffer="true", now is fixed and tested.

Additionally, fix a typo in the existing
"NOTE: Skipping framebuffer setup..." message.
2018-12-26 20:21:55 +01:00
pinoaffe
0188930f21
main/postmarketos-mkinitfs: iterate over all block devices and partitions in init_functions.sh:mount_subpartitions() 2018-11-27 07:47:11 +01:00