• 7 Posts
  • 47 Comments
Joined 1 year ago
cake
Cake day: June 11th, 2023

help-circle
  • One thing you could do that I don’t see mentioned here is to install Virtual Box in Windows and create a Linux Mint Virtual Machine. It’s basically installing a computer within a computer. You should be able to find some tutorials online.

    This would let you try Linux Mint in a sandbox within Windows so that you could experiment a bit with everything before changing anything.

    Just keep in mind that within the VM, things will be less performant, especially graphically, and certain peripherals, etc. might not work. But it would let you test out installing the software you want, the cloud storage solution you want, browsing around, etc.

    Speaking of graphics, you’ll want to do some research about how well supported your GPU is. It will almost certainly “work” out of the box, but if you want to get the most performance out of it, like Windows, you’re going to need special drivers. I’ve heard Nvidia can be a bit of a pain, but I think it varies by model.

    I wouldn’t be too worried about the touch screen as that will probably work - or at least has on every laptop I’ve tried. I’ve had more issues with things like fingerprint scanners generally speaking. Definitely check out everything you can think of when you install, like Bluetooth, cameras, microphone, peripherals, etc. Oh and when using the laptop definitely manually knock yourself down out of performance mode using the upper-righthand corner in gnome. For me at least, it makes a huge difference in battery life if I’m in performance vs balanced vs power saver. Windows is better at automatically making those adjustments.

    I’ve also heard that lately Microsoft is making dual-boot harder - notably that Windows updates will just casually break your dual-boot and revert it to just Windows. I don’t know the details since it’s been years since I’ve done it myself, but something to keep in mind.

    Finally I’ll throw out there to make sure you have a recovery plan if the install goes south. Have all your files backed up. Have a copy of Linux and Windows installers ready. It honestly should be fine, but especially if this is your only PC you don’t want to be stuck if you have some kind of issue, accidentally blow away your laptop’s SSD, etc . Not trying to scare you or anything, but better safe than sorry, right?


  • More of a debugging step, but have you tried running lsinitrd on the initramfs afterwards to verify your script actually got added?

    You theoretically could decompress the entire image to look around as well. I don’t know the specifics for alpine, but presumably there would be a file present somewhere that should be calling your custom script.

    EDIT: Could it also be failing because the folder you are trying to mount to does not exist? Don’t you need a mkdir somewhere in your script?




  • Doubling what Klaymore said, I’ve seen this “just work” as long as all partitions have the same password, no key files necessary.

    That said, if you needed to use a key file for some reason, that should work too, especially if your root directory is one big partition. Keep in mind too that the luks commands for creating a password-based encrypted partition vs a keyfile-based encrypted partition are different, so you can’t, for example, put your plaintext password into a file and expect that to unlock a LUKS partition that was setup with a password.

    But the kernel should be trying to mount your root partition first at boot time where it will prompt for the password. After that it would look to any /etc/crypttab entries for information about unlocking the other partitions. In that file you can provide a path to your key file, and as long as it’s on the same partition as the crypttab it should be able to unlock any other partitions you have at boot time.

    It is also possible, as one of your links shows, to automatically unlock even the root partition by putting a key file and custom /etc/crypttab into your initramfs (first thing mounted at boot time), but it’s not secure to do so since the initramfs isn’t (and can’t be) encrypted - it’s kind of the digital equivalent of hiding the house key under the door mat.





  • I’ll also throw out: aging infrastructure, build systems, coding practices, etc.

    I looked into contributing to the kernel - it’s already an uphill battle to understand such a large, complex piece of software written almost entirely in C - but then you also need to subscribe to busy mailing lists and contribute code via email, something I’ve never done at 30 and I’m betting most of the younger generation doesn’t even know is possible. I know it “works” but I’m really doubting it’s the most efficient way to be doing things in 2024 - there’s a reason so many infrastructure tools have been developed over the years.

    The barriers to entry for a lot of projects is way too high, and IMO a lot of existing “grey” maintainers, somewhat understandably, have no interest in changing their processes after so much time. But if you make it too hard to contribute, no one will bother.



  • Maybe I am not thinking of the access control capability of VLANs correctly (I am thinking in terms of port based iptables: port X has only incoming+established and no outgoing for example).

    I think of it like this: grouping several physical switch ports together into a private network, effectively like each group of ports is it’s own isolated switch. I assume there are routers which allows you to assign vlans to different Wi-Fi access points as well, so it doesn’t need to be literally physical.

    Obviously the benefits of vlans over something actually physical is that you can have as many as you like, and there are ways to trunk the data if one client needs access to multiple vlans at once.

    In your setup, you may or may not benefit, organizationally. Obviously other commenters have pointed out some of the security benefits. If you were using vlans I think you’d have at a minimum a private and public vlan, separating out the items that don’t need Internet access from the Internet at all. Your server would probably need access to both vlans in that scenario. But certainly as you say, you can probably accomplish a lot of this without vlans, if you can aggressively setup your firewall rules. The benefit of vlans is you would only really need to setup firewall rules on whatever vlan(s) have Internet access.





  • To add on to this answer (which is correct):

    Your “of” can also just be a regular file if that’s easier to work with vs needing to create a new partition for the copy.

    I’ll also say you might want to use the block size parameter “bs=” on “dd” to speed things up, especially if you are using fast storage. Using “dd” with “bs=1G” will speed things up tremendously if you have at least >1GB of RAM.


  • I ran into this exact situation at work - though for me it was more the case that getting approvals for new software / installing new dependencies in our system is a massive pain.

    So I went with Python since it’s already installed on basically any Linux system. It was fine - I mean Python is a good language and can certainly handle string processing and data manipulation with relative ease.

    I still think the Python docs are pretty bad, and I wasn’t thrilled with the options for calling a subprocess in Python - they all felt kinda clunky, though I was barred from using the newest versions since I had to run an older version of Python.

    But I ultimately got something that worked and it was certainly better executed / shorter than the bash equivalent it was replacing.



  • To expand on this a bit, git pull under the hood is basically a shortcut for git fetch (get the remote repository’s state) and git merge origin/main main (merge to remote changes to your local branch, which for you is always main).

    When you have no local changes, this process just “makes a line” in your commit history (see git log --graph --decorate), but when you have local changes and the remote has changed too, it has to put those together into a merge commit - think a diamond shape with the common ancestor at the bottom, the remote changes on one side, your changes on the other side, and the merge of the two at the top.

    Like the above comment says, normally this process is clarified at the command line - VSCode must be handling it automatically if there are no code conflicts.


  • You offered a lot of suggestions, and I’m sure people will disagree over the specifics, but I think your overall point is excellent and not talked about enough. I wonder if anyone has ever even attempted a survey on the ages of maintainers/contributors? I bet it’s skewing older fast.

    Nothing wrong with that of course, especially given the project’s age, complexity, and being written in C - but you’re right, at some point you have to attract new talent - people can’t maintain forever.

    I’m a 29 year old developer - I didn’t even know you could do git patches via email until recently. And while it’s super cool, it also sounds kinda terrible, especially at the volume they must be receiving? Their own docs are saying the mailing lists receive some 500 emails per day and I can’t imagine the merge process is fun.

    So many doc pages are dedicated to how to submit a patch - which is great that it’s documented, and I’m sure it will always be somewhat complicated for a large project - but it also feels like things that are all automatically handled by newer tools / bots which can automatically enforce style checks, etc.

    I guess they could argue that the complicated process acts as a filter to people submitting PRs who don’t know what they are doing, but I’d argue it also shuts out talented engineers who don’t have 40 hours to learn how to submit a patch to a project on top of also learning the kernel and also fixing the bug in question.

    From what little I read of their git process, does anyone know if there’s anything preventing the maintainer of a subsystem from setting up a more modern method for receiving patches? As long as the upstream artifact to the kernel has the expected format?


  • Oh man, I actually like the language, but you made me think of my own hot take:

    Python has inexcusably poor docs.

    Just a smattering of examples, which aren’t even that good, while failing to report key information like all the parameters a function can take, or all the exceptions it can throw. Any other popular language I can think of has this locked down and it makes things so much easier.