For current exports, it's some custom .csm/.csd file combo. Not sure if there's any tools for working with it, seems like it'd be more annoying than just using a normal archive format either way.
chameleon
It technically still exists in the game properties -> installed files tab, but it doesn't really work. The backup files you get require you to be online to meaningfully restore and will trigger a patch to the latest game version.
Practically speaking it's better to just make a copy of the game install directory manually, gives you a better chance of things working (even though most games require some kind of external tooling for that).
Dracut may have this functionality already built in via rd.luks.key, so a custom module would really only make sense if you're trying to do more than that. You can probably get away with just using that if you just want it to work, but if you want to customize stuff:
I suspect your module is running well after the device is already supposed to be cryptsetup open
ed. The way the default crypt module handles it is by setting up udev configuration in a very early phase, and then having udev request the password a little bit later when it finds the device it's trying to open, until all devices are ready. It's a complex mechanism compared to Alpine's straightforward script, but it's much more flexible when it comes to ordering of things like RAID/network devices/LUKS/etc.
The result of that is that your code would have to run much earlier. There's some documentation on how hooks work, and the builtin rd.luks.key
/ keydev handler runs at cmdline 10. That's well before your pre-mount, and probably where you'd want to run your code. Based on a cursory inspection of the other code, you could either cryptsetup open
it yourself if you use the name it expects (rd.luks.name=
cmdline parameter or luks-$luks_container_uuid
), or you could use that /tmp/luks.keys
mechanism (it's a dracut-internal thing so you won't find much documentation, but it lives in crypt-lib.sh, cryptroot-ask.sh and probe-keydev.sh).
As for debugging, the cmdline manpage has a few decent enough options. rd.break=cmdline
or similar can force a shell before Dracut goes through a specific phase of hooks. You should be able to manually test doing things similar to your script at that point.
Dracut may have this functionality already built in via rd.luks.key, so a custom module would really only make sense if you're trying to do more than that. You can probably get away with just using that if you just want it to work, but if you want to customize stuff:
I suspect your module is running well after the device is already supposed to be cryptsetup open
ed. The way the default crypt module handles it is by setting up udev configuration in a very early phase, and then having udev request the password a little bit later when it finds the device it's trying to open, until all devices are ready. It's a complex mechanism compared to Alpine's straightforward script, but it's much more flexible when it comes to ordering of things like RAID/network devices/LUKS/etc.
The result of that is that your code would have to run much earlier. There's some documentation on how hooks work, and the builtin rd.luks.key
/ keydev handler runs at cmdline 10. That's well before your pre-mount, and probably where you'd want to run your code. Based on a cursory inspection of the other code, you could either cryptsetup open
it yourself if you use the name it expects (rd.luks.name=
cmdline parameter or luks-$luks_container_uuid
), or you could use that /tmp/luks.keys
mechanism (it's a dracut-internal thing so you won't find much documentation, but it lives in crypt-lib.sh, cryptroot-ask.sh and probe-keydev.sh).
As for debugging, the cmdline manpage has a few decent enough options. rd.break=cmdline
or similar can force a shell before Dracut goes through a specific phase of hooks. You should be able to manually test doing things similar to your script at that point.
Dracut may have this functionality already built in via rd.luks.key, so a custom module would really only make sense if you're trying to do more than that. You can probably get away with just using that if you just want it to work, but if you want to customize stuff:
I suspect your module is running well after the device is already supposed to be cryptsetup open
ed. The way the default crypt module handles it is by setting up udev configuration in a very early phase, and then having udev request the password a little bit later when it finds the device it's trying to open, until all devices are ready. It's a complex mechanism compared to Alpine's straightforward script, but it's much more flexible when it comes to ordering of things like RAID/network devices/LUKS/etc.
The result of that is that your code would have to run much earlier. There's some documentation on how hooks work, and the builtin rd.luks.key
/ keydev handler runs at cmdline 10. That's well before your pre-mount, and probably where you'd want to run your code. Based on a cursory inspection of the other code, you could either cryptsetup open
it yourself if you use the name it expects (rd.luks.name=
cmdline parameter or luks-$luks_container_uuid
), or you could use that /tmp/luks.keys
mechanism (it's a dracut-internal thing so you won't find much documentation, but it lives in crypt-lib.sh, cryptroot-ask.sh and probe-keydev.sh).
As for debugging, the cmdline manpage has a few decent enough options. rd.break=cmdline
or similar can force a shell before Dracut goes through a specific phase of hooks. You should be able to manually test doing things similar to your script at that point.
You'd be looking for /usr/share/mkinitfs/initramfs-init
. I've never customized that myself, but it looks like there's already some support for a keyfile if you look for KOPT_cryptroot
and check that block of code. That looks like it's mostly set up for a keyfile embedded into the initramfs, but I guess it should be possible to replace that code with something that grabs the keyfile off an USB drive.
I suppose you'd make a copy of it, put it somewhere in /etc or whatever and change the mkinitfs.conf
to point to it. init="/etc/whatever/myinitramfs-init"
should do the trick since the config file just gets sourced in. That said you're definitively heading into unknown territory here. It might be easier to just use Dracut or the like instead.
You'd be looking for /usr/share/mkinitfs/initramfs-init
. I've never customized that myself, but it looks like there's already some support for a keyfile if you look for KOPT_cryptroot
and check that block of code. That looks like it's mostly set up for a keyfile embedded into the initramfs, but I guess it should be possible to replace that code with something that grabs the keyfile off an USB drive.
I suppose you'd make a copy of it, put it somewhere in /etc or whatever and change the mkinitfs.conf
to point to it. init="/etc/whatever/myinitramfs-init"
should do the trick since the config file just gets sourced in. That said you're definitively heading into unknown territory here. It might be easier to just use Dracut or the like instead.
mkinitfs
doesn't support running custom shell hooks. mkinitfs
is very, very, very bare-bones custom code and the whole features concept exists only to pull extra files and kernel modules into the initramfs, not for extra logic.
You'd either have to customize the init script itself (not impossible, it's 1000 lines) and pass -i
/set init=
in the .conf, or install Dracut/Booster instead (which should "just work" if you apk add
them, but I've had no need to do so).
mkinitfs
doesn't support running custom shell hooks. mkinitfs
is very, very, very bare-bones custom code and the whole features concept exists only to pull extra files and kernel modules into the initramfs, not for extra logic.
You'd either have to customize the init script itself (not impossible, it's 1000 lines) and pass -i
/set init=
in the .conf, or install Dracut/Booster instead (which should "just work" if you apk add
them, but I've had no need to do so).
That already happens constantly and I'd consider this the consequence of it, rather than the cause. You can only issue so many vetoes before people no longer want to deal with you and would rather move on.
The recent week of Wayland news (including the proposal from a few hours ago to restate NACK policies) is starting to feel like the final attempt to right things before a hard fork of Wayland. I've been following wayland-protocols/devel/etc from the outside for a year or two and the vibes have been trending that way for a while.
I'll freely admit I don't use that thing and was under the assumption it was feature complete. Regardless, the Android and iOS clients are also open, and I've found absolutely no indications that there's any blobs in the repo or the like.
I don't have Obsidian around, but this has been happening elsewhere lately too, almost certainly because of this underlying Electron issue: https://github.com/electron/electron/issues/43819
Unfortunately there's not much you can do about it. Electron decided to depend on functionality not yet in a released version, and that very interesting choice flows down to everything that updates their Electron on the regular.