Initial commit: HPR Knowledge Base MCP Server
- MCP server with stdio transport for local use - Search episodes, transcripts, hosts, and series - 4,511 episodes with metadata and transcripts - Data loader with in-memory JSON storage 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
732
hpr_transcripts/hpr4321.txt
Normal file
732
hpr_transcripts/hpr4321.txt
Normal file
@@ -0,0 +1,732 @@
|
||||
Episode: 4321
|
||||
Title: HPR4321: Crux Linux
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4321/hpr4321.mp3
|
||||
Transcribed: 2025-10-25 22:59:42
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio episode 4321 from Monday the 24th of February 2025.
|
||||
Today's show is entitled Crocs Linux.
|
||||
It is hosted by Clot 2 and is about 53 minutes long.
|
||||
It carries a clean flag.
|
||||
The summary is Tri-Crocs Linux.
|
||||
Hey everybody, this is Clot 2 and recently I tried a distribution that I've been meaning
|
||||
to give a go for ages literally over 10 years.
|
||||
Just tried it recently.
|
||||
It's called Crocs Linux and it's located at Crocs.inu.
|
||||
I'll spell it out.
|
||||
Charlie Romeo Uniform X-ray dot November uniform.
|
||||
Crocs.inu.
|
||||
This is a distribution that got started back in the year 2000.
|
||||
Their first public release of an ISO was back in 2001.
|
||||
So they've been going strong for good 24, 25 years at the time of this recording.
|
||||
And I discovered them.
|
||||
I believe around 2011 or 12.
|
||||
And at that time I just kind of thought that it could be interesting to give this sort
|
||||
of minimal Linux distribution a try because it looked fascinating.
|
||||
It looked like the installer was pretty manual.
|
||||
You had to use Cherute to get the thing installed on your computer.
|
||||
That's exciting.
|
||||
That's not something that you see every day.
|
||||
So I thought this could be of interest to me.
|
||||
And I did give it a go back then, but it was a real cursory glance.
|
||||
It was kind of like I did download it.
|
||||
I did try to get it installed on a computer.
|
||||
I messed up one of the install steps.
|
||||
I think I know why.
|
||||
And then I just kind of that is what kind of fell apart for me.
|
||||
I just I didn't get it done in the time I lauded and then I never went back to it.
|
||||
But it's been in the back of my mind for a good decade now.
|
||||
I just should try that and and finally I have tried it.
|
||||
I have tried it about a month ago.
|
||||
So I've been using it on a spare laptop for about 30 days now.
|
||||
And I'm going to talk about the experience so far.
|
||||
I will also admit, not beneath admitting that one of the appeals of Crux Linux
|
||||
is the cute little baby blue penguin that they use for their logo.
|
||||
And it being a blue penguin is significant to me now because I live in New Zealand
|
||||
where there are baby blue penguins.
|
||||
So I mean, it's it kind of fits.
|
||||
Is it going to replace Slackware for me?
|
||||
No, I'm not looking to replace Slackware.
|
||||
Happy with Slackware.
|
||||
Perfectly happy using Slackware.
|
||||
It's comfortable.
|
||||
I love it.
|
||||
Still using Slackware on my main machine.
|
||||
Is Crux going to stay on this spare laptop?
|
||||
Who knows?
|
||||
I don't know.
|
||||
I don't use as many computers as I used to.
|
||||
I have my main computer set up on my desk.
|
||||
I have a work computer and an array of Raspberry Pi's.
|
||||
And they're just they just kind of all sit in there in a place.
|
||||
And I just don't really have the occasion to swap out computers all that often
|
||||
because I'm usually just here at my desk.
|
||||
And it's actually a little awkward to put a laptop in front of my keyboard.
|
||||
You know, it just kind of doesn't, doesn't quite fit.
|
||||
So like physically it doesn't fit.
|
||||
So so yeah, who knows the future of me and Crux in terms of sort of like
|
||||
is this a new blooming blossoming relationship?
|
||||
I don't know that.
|
||||
But it has been a lot of fun.
|
||||
And that's kind of what I think that that sometimes is justification enough.
|
||||
Just have fun with Linux.
|
||||
So let's talk about Crux.
|
||||
Crux has a very manual install process.
|
||||
It there is a very good handbook, very free BSD style.
|
||||
Like you click on the handbook and it has basically all of the information
|
||||
you need to install it and then all of the all of the distribution specific tools.
|
||||
Those tools include a relatively custom as far as I can tell in net system.
|
||||
It is BSD style though.
|
||||
So you're looking at a slash at C slash RC dot D folder full of just custom
|
||||
shell scripts that start and stop a service.
|
||||
So that's nice.
|
||||
If you're looking for something without system D sort of pre baked in,
|
||||
then Crux is a valid option.
|
||||
It is it the right option for you.
|
||||
I don't know, but it is a distribution that does not ship with system D.
|
||||
So if you don't, you know, if you like the BSD style in it system,
|
||||
you could just run it as is.
|
||||
If you want to try something else like run it or open RC or whatever,
|
||||
then you could try that on Crux.
|
||||
I mean, for the record, you could try that on Slackware as well.
|
||||
So and frankly, it's probably easier to do over on Slackware.
|
||||
So I'm classifying I guess mentally Crux being a quote unquote harder than Slackware.
|
||||
And I guess I'll try to get into why I say that.
|
||||
As I go, I'll sum it up at the end as well.
|
||||
It is a very, I want to emphasize this is a very manual style Linux distribution.
|
||||
You're going to be doing a lot of your own things to set Crux up and to maintain Crux.
|
||||
It has a packaging system, however.
|
||||
It's called a it's it calls it package utles PKG UTA ILS.
|
||||
And that's a series of commands that you use to interact with the packaging system.
|
||||
A package add PKG add is what you use to install a package,
|
||||
but getting a package in the first place is a series of commands in itself.
|
||||
It does have a series of ports that it provides.
|
||||
And you can query that that or you can interact with that the port system with package make PKG MK.
|
||||
A PKG make or package make that's how you go into a port source and you use package make.
|
||||
I think dash D for download and it downloads the source code and builds the package.
|
||||
And then you end up with a package and then you do PKG add and that adds the package to your system.
|
||||
It's pretty pretty simple.
|
||||
There's PKG remove as well to remove a package and PKG info to query for information about a package.
|
||||
So if you're at all used to using either Slackware or a BSD,
|
||||
then this is all going to sound pretty familiar to you.
|
||||
There's a certain feel to this distribution where it definitely has taken a lot of notes from BSD probably.
|
||||
That's what I'm guessing.
|
||||
I mean, certainly it's a knit system and it's packaging sensibilities feel very BSD or very Slackware to me,
|
||||
which I quite enjoy.
|
||||
It feels kind of refreshing or not refreshing, but it just it feels comfortable, I guess.
|
||||
This is differentiating it from something that feels a little bit more, let's say like Debian,
|
||||
where you're using a packaging system that has a specific a robust packaging format,
|
||||
where you're installing that and making entries into a literal database.
|
||||
That kind of stuff, this won't feel like that to you.
|
||||
It's a knit system won't feel like that at all.
|
||||
Whether that's good or bad, who knows, it depends on your preferences.
|
||||
Okay, so let's just kind of talk through a little bit about the install process,
|
||||
because that's one of the things that you'll notice pretty early on.
|
||||
Installing Crux is obviously a matter of first downloading the official ISO image.
|
||||
You do that from crux.inu.
|
||||
There's a download link somewhere on that page.
|
||||
There's a lot of data on the site, but you just read, you'll find the link.
|
||||
You get the ISO on your drive and then you need to copy it over to a USB drive.
|
||||
I use Balena etcher.balena.io.
|
||||
That's B-A-L-E-N-A.io.
|
||||
It's an easy little open source and cross-platform imaging tool.
|
||||
It makes it super simple to flash an ISO onto a USB drive.
|
||||
Once the image is on the drive, you can use D-D or whatever you prefer.
|
||||
I just find the etcher.balena.io, etcher just makes it really a no-brainer and it's pretty
|
||||
quick as well.
|
||||
Anyway, once you got the image on the drive, attach the drive to your target computer, reboot,
|
||||
and use whatever keyboard shortcut your computer requires for you to use to boot to something
|
||||
other than the internal drive, and that's usually a message on the initial screen when
|
||||
you turn on your computer.
|
||||
Sometimes it's F2, sometimes it's the DEL key, sometimes F8.
|
||||
You can never tell you just have to read or look it up online.
|
||||
On some computers, you might also need to enter into UEFI or BIOS to deactivate any number
|
||||
of locks designed to prevent you from booting from an external drive.
|
||||
If you don't know all of that, what I've just said, if that's news to you, then crux
|
||||
may not be the best starting point for you.
|
||||
That's a warning.
|
||||
If you're just trying to figure out how to boot into some non-standard location and you're
|
||||
learning something new from what I've just said, don't start with crux, probably, okay,
|
||||
because crux doesn't have an installer as such.
|
||||
You have to manually partition your drive using Partid or FDisk or CFDisk, I think they
|
||||
have CFDisk as well.
|
||||
Then you mount the internal drive, you extract the packages to it from the USB drive to your
|
||||
hard drive, and then you trute into the target drive, presumably your internal drive, to install
|
||||
a bootloader and add configuration files.
|
||||
Now, the good news is that crux doesn't exactly make you do it all manually.
|
||||
There are some helpful scripts, including a setup script, which installs packages and
|
||||
a setup-chirute command to perform the steps required to establish a charute environment.
|
||||
The handbook also tells you the steps of the charute, like what setup-chirute.
|
||||
It tells you what it's doing, so for some reason you need to do it manually, you can.
|
||||
The thing to know is that these little setup scripts aren't very robust.
|
||||
If you skip a step accidentally and try to run a script before the drive is ready, then
|
||||
the script might fail and then leave you in a state of complete uncertainty.
|
||||
This is where I was several times during the process.
|
||||
It's not irrecoverable.
|
||||
You can detect that something has failed, usually when you reboot your computer and nothing
|
||||
happens, and then you can go back, you can boot back to the install environment, you can
|
||||
mount the internal drive, you can try to figure out where something went wrong, or you
|
||||
can just start over, and sometimes that's the easier thing to do.
|
||||
It's just to start back at the beginning and try again.
|
||||
I think the first time I ever tried installing crux back in whatever it was, 2012, let's
|
||||
say, I believe that was my solution.
|
||||
I just kept something failed, I went back to the beginning, and still didn't get it
|
||||
right.
|
||||
This time around, I didn't have really a deadline, so I just sat down, really thought about
|
||||
what I was doing.
|
||||
When something failed, I would reboot back to the install environment, figure out what
|
||||
I'd missed, fill that in, and then continue from there, or whatever.
|
||||
You can work on this, but it is easy to miss a step, and part of the reason there is
|
||||
that the handbook itself is not formatted all that well.
|
||||
A lot of times, what you're supposed to do is described to you instead of proscribed
|
||||
to you.
|
||||
The instructions are formatted sometimes as like a bullet list, which for me that suggests
|
||||
an unordered list, I mean, that's literally what a bullet list is, it's an unordered
|
||||
list.
|
||||
When really, it should have been a numbered list.
|
||||
There are numbered lists in there, but sometimes you'll come across a series of steps that
|
||||
are bullet lists.
|
||||
You think you're being given a choice or something.
|
||||
It's a numbered list, except they didn't give it numbers, they just gave it bullets.
|
||||
You're not clear that a certain array of steps, you don't realize that you're supposed
|
||||
to do them all or something like that.
|
||||
In other cases, there's a series of choices under a subheading that's actually just a series
|
||||
of choices dependent upon your system configuration, like one choice for UEFI or one choice for
|
||||
BIOS.
|
||||
It becomes very confusing when you're just kind of reading and you think you're on one
|
||||
path and then you realize, oh no, no, this isn't for me because there was like a conditional
|
||||
that I missed or that they didn't write down.
|
||||
I missed a step more than once because I had a difficult time differentiating instructions
|
||||
that were optional or conditional from instructions that were absolutely mandatory.
|
||||
If you don't do this, everything else will fail.
|
||||
You have to just read very, very carefully.
|
||||
Read ahead frequently.
|
||||
Don't follow the instructions as you're reading.
|
||||
Read them and then follow the instructions.
|
||||
Even then, even once you've read it once and you're going back to the top to now you're
|
||||
going to read and do, don't do that.
|
||||
Read like two paragraphs in front of where you are because it can be very, very confusing.
|
||||
I would love to contribute fixes for this particular issue.
|
||||
I'm still navigating how crux sort of structures, its contribution, invitation.
|
||||
I haven't proposed any changes yet, but that's on my list of things to do.
|
||||
The other thing you get to do for crux is compile your own kernel.
|
||||
As you may or may not know, my daily distribution, my daily driver is Slackware has been for a
|
||||
long time.
|
||||
What?
|
||||
2008?
|
||||
I think something like that has been a long time.
|
||||
Slackware ships with a few kernel configurations and binary kernel packages.
|
||||
You don't really have to compile your own kernel on Slackware.
|
||||
It so happens that when I first tried Slackware, there was a driver that wasn't included in
|
||||
the binary package for the kernel.
|
||||
I ended up having to compile a kernel from my very first Slackware experience.
|
||||
It was a Wi-Fi driver.
|
||||
That was an interesting experience.
|
||||
That was a very great learning experience.
|
||||
Even since then, I used to compile real-time drivers into Slackware.
|
||||
Really, I can't say I can't honestly say I've stopped compiling kernels because I still
|
||||
do compile kernels, just not as frequently as I used to, but ever since 2.3.8, no, 2.38.6,
|
||||
the kernel release that gave basically low latency kernel performance.
|
||||
I don't compile kernels quite as often as I used to.
|
||||
I am running a custom kernel on my current Slackware box, but I think that might have
|
||||
just been because I felt like updating a kernel one day.
|
||||
It wasn't needed.
|
||||
It wasn't necessary.
|
||||
But Crux requires you to compile a kernel.
|
||||
Unless you're very, very thorough, you're probably going to do this more than once.
|
||||
I have now compiled the kernel.
|
||||
It must have been eight times in one day.
|
||||
That wasn't for the initial install, though.
|
||||
I think for me, in my mind, there are two ways to manage how you're going to handle the
|
||||
installation, the compilation and installation of a kernel.
|
||||
Actually first of all, let's really quickly talk about why you would even need a kernel.
|
||||
The kernel is the thing that tells your computer what to do.
|
||||
It tells your computer what the computer consists of, like literally what components the
|
||||
computer is because the computer doesn't know inherently about any other component other
|
||||
than basically the CPU.
|
||||
Something has to bring up all of those things like your keyboard and your monitor and your
|
||||
mouse and a hard drive and internet connect or network interface card and so on.
|
||||
So that's the primary job of the kernel is to just handle the hardware components of
|
||||
your computer.
|
||||
So you need that because your computer needs is hardware.
|
||||
So to my mind, there are two ways to attack this.
|
||||
One is to be very, very methodical, do lots and lots of research, figure out exactly what
|
||||
you need in your kernel based on what computer is sitting in front of you that you are installing
|
||||
Crux onto and you compile like the perfect kernel for your setup.
|
||||
That's front loading it.
|
||||
There's nothing wrong with it.
|
||||
I took a little course a long time ago now on Linux to learn more at a little weekend
|
||||
get away at a community college.
|
||||
It was great.
|
||||
It was really cool.
|
||||
It was in California, I think.
|
||||
And that was fantastic.
|
||||
It takes a lot of time, takes a lot of effort and you sort of don't get the satisfaction
|
||||
of having a compiled kernel until the very end.
|
||||
I think the danger here is twofold.
|
||||
One is that you don't get instant satisfaction.
|
||||
It takes a lot of work up front and some people do that well, some people don't do that
|
||||
well.
|
||||
And then secondly, there's the danger of even after you've done all that research and
|
||||
that work and you compiled your kernel, but if you didn't do it right, but if you got
|
||||
something wrong, then you've spent all that time and you still don't have the system
|
||||
of your dreams.
|
||||
So the second option and the way that I did this was to just do it good enough to get
|
||||
a bootable system and then just keep recompiling your kernel as you discover things that your
|
||||
kernel doesn't know about yet.
|
||||
So that's the second one, the second option is the tactic.
|
||||
I took, I think for me, that's the one that I recommend to be perfectly honest.
|
||||
But if that's not how you do things, then obviously you can do it your own way.
|
||||
But you do have to compile the kernel for crux and it's really, really easy.
|
||||
Crux does not install its kernel through the package add system.
|
||||
So you just compile the kernel and copy the kernel image over to your slash boot partition.
|
||||
You copy your system map and then now your kernel is installed.
|
||||
The process of compiling a kernel is the classic way.
|
||||
It's the traditional canonical way of compiling a kernel.
|
||||
Like it's the instructions that you get when you download the kernel source code.
|
||||
It isn't the new stuff like on Fedora or Debian where you invoke some kind of special packaging
|
||||
things so that you can package up the kernel and integrate it into your system and add
|
||||
it to your grub and stuff like that.
|
||||
It isn't like that.
|
||||
It's just you just go in and you do a make menu config and that brings up the little
|
||||
funky little interface for choosing all of the different modules and things that you're
|
||||
going to compile into your kernel.
|
||||
If you've done your research and you know what your computer has in it, then you can look
|
||||
through there and find all the modules that you'll need, all the drivers that you need
|
||||
to include and make sure those get included.
|
||||
If you can't be bothered to do that, then you can kind of just go for the basics.
|
||||
I have compiled enough kernels on Slackware to know, you know, the important stuff like
|
||||
well, file system drivers are really, really important.
|
||||
I think EXT4 is probably auto included, but I just like to include all the file system
|
||||
drivers, network card, nix, network interface cards.
|
||||
Those are important.
|
||||
Wi-Fi drivers, I think I did at least look at what the Wi-Fi driver was on the computer
|
||||
before compiling the computer, the kernel, and that worked out well.
|
||||
I didn't have to recompile for that.
|
||||
Then there are some obvious things, obvious, I say obvious, I forgot to include it, but
|
||||
I was installing it on a spare, like this is a Dell, something or another laptop.
|
||||
I don't even know where I got it from, and it's like a rescue computer.
|
||||
It's a Dell laptop, and so you would think that I would have thought to include the
|
||||
drivers or the driver package called Dell underscore laptop.
|
||||
I didn't.
|
||||
I did not think of that.
|
||||
And frankly, the menu config interface of compiling, of prepping a configuration is
|
||||
a little bit not great for discovery, and so what I like to do is I do the make menu
|
||||
config command to bring up that kernel configuration.
|
||||
This is in slash usr slash slash linux version number.
|
||||
You do make menu config, or actually I think I had to do, no, yeah, make menu config.
|
||||
You might have to do pseudo make menu config if you're doing this after install.
|
||||
I do that, and that creates a dot config file in that directory, in your source code
|
||||
directory of the kernel, and that is really great for discovery.
|
||||
I open that up in nano, I do a control W to search, or I guess it's a where is command.
|
||||
And then I search for a thing that that I'm looking for.
|
||||
This again, this is kind of what you can do this before you compile to.
|
||||
I do it like later later, like when I'm when I'm realizing, oh, the fans keep turning
|
||||
on, you know, at a really not very high temperature, how can I control that?
|
||||
Oh, well, I need to go install the drivers for the various sensors in the laptop.
|
||||
Okay, well, that means I have to find all the I2C drivers.
|
||||
So, so then you just do a control W, I2C, or I see two, and I think it's I2C.
|
||||
And then you get to find all the options that have probably not been set at all,
|
||||
but they're commented out.
|
||||
And it just says, you know, I2C underscore, blah, has not been set.
|
||||
And then you can just set it yourself.
|
||||
You race the part that says has not been set and put in equals why, or equals M for module.
|
||||
And now you're modifying your configuration, but in a way that you don't have to like hunt
|
||||
through a menu.
|
||||
So whether you use menu config, whether you just do a config file by hand, I don't know
|
||||
why you do that, or maybe you borrow one, like a known good configuration from like Slack
|
||||
where maybe just throw that in there, see what happens.
|
||||
Lots of different ways to compile your kernel.
|
||||
And once you're kind of done the configuration, you do your make all, and then you do your
|
||||
make modules underscore install.
|
||||
I think that's it.
|
||||
Then you copy the, from the arch x86 underscore 64 slash whatever slash, what, what, what
|
||||
beat BZ image to slash boot slash VM, the news.
|
||||
And then you copy system map from your current directory over to slash boot.
|
||||
And you've got a kernel installed.
|
||||
And as I say, if you're going to do it the lazy way, like I do, you'll be doing that
|
||||
sequence of steps frequently later on as well.
|
||||
You have to do it once to get your computer bootable in the first place, but you don't
|
||||
have to necessarily do everything right.
|
||||
You do, you need the basics, you, you'll need a file system support.
|
||||
Like without that, then yes, you'll have a kernel, but your kernel can't recognize,
|
||||
you know, like the rest of your computer cannot recognize the file system upon which
|
||||
you've installed your operating system.
|
||||
So that's not a great idea.
|
||||
You do want the basics, but when I say basics, I think file support might be practically
|
||||
the only basic you really, really need.
|
||||
I mean, other than just all the other defaults that the kernel provides anyway.
|
||||
So yeah, if you've never compiled a kernel, that's a great learning experience.
|
||||
If you've compiled a kernel, it's still a good learning experience because there's always
|
||||
something.
|
||||
There's always something you've, I forget, you know, it's just, it's silly, but you
|
||||
just, you realize how complex it can be.
|
||||
Okay.
|
||||
Anyway, once you get like the kernel installed, then you need to do the install of the boot
|
||||
loader and the boot loader is in theory pretty simple for you to do, but it is kind of
|
||||
difficult sometimes to understand what, what you, which of the options you need to choose.
|
||||
The first of all, crux uses grub as a boot loader, it's not, I don't love grub.
|
||||
I'm learning to love it a little bit more, but, but I don't love it, but it is better
|
||||
than syslinics.
|
||||
So realistically, it's probably easiest to install and use grub, but then you have to choose
|
||||
between two different paths in the documentation.
|
||||
You can do grub on UEFI or grub on BIOS.
|
||||
The difference between these two options is that UEFI requires grub to be located in
|
||||
slash boot slash EFI, while BIOS expects grub to be in the master boot record or the
|
||||
MBR of the drive.
|
||||
It explains all of this in the handbook.
|
||||
You just want to read it really thoroughly, as I've said before actually doing it.
|
||||
Once you've done all of those steps and I'm assuming you're not following along with
|
||||
my vague description here and that you're following along with the crux handbook, once
|
||||
you've done all of the steps that you, that it is told you have been required, you have
|
||||
to configure your language and your network settings and eventually you can reboot your
|
||||
computer and boot from the internal drive and assuming you got everything right, then
|
||||
you get a grub screen allowing you to boot into your new crux system.
|
||||
As I've said, I didn't get that far the first time.
|
||||
Instead of grub, I got an error message on my screen and so I had to go back and reread
|
||||
the documentation and I realized that yes, I had installed grub, but I had not configured
|
||||
grub.
|
||||
At this point, this was the third or the fourth major mistake I'd made during the process,
|
||||
but it was like many of these errors.
|
||||
Once you figure out what you've missed, it's pretty easy to fix and it's kind of hard
|
||||
to know whether it's just overwhelming or whether it's overwhelming and poorly written.
|
||||
I lay a lot of the blame on the handbook, the style of writing in the handbook.
|
||||
It is just sometimes not clear about what you need to do next and when to do it, it's
|
||||
just I don't know.
|
||||
Maybe it's just me, I'm not a huge fan of the passive voice and kind of vague description
|
||||
of things that could be done on a computer when you're when installing crux, but don't
|
||||
tell me what could be done, tell me what to do or tell me why I don't need to do the
|
||||
next step so that I can skip to the next section and the instructions.
|
||||
Anyway, it's not an episode about documentation, so I rebooted to the installer to fix this
|
||||
particular grub issue.
|
||||
I mounted the internal drive using mount and then I used the setup dash trute script, which
|
||||
is just so handy to make it my active environment and then ran grub make config, which is the
|
||||
step that I had missed.
|
||||
So grub make config, redirect into slash boot slash grub slash grub.cfg, because after
|
||||
you run setup dash trute, your environment, you just pretend you're on the drive, that's
|
||||
your new environment, you don't have to change the paths of anything, it's all active,
|
||||
it's all mounted as the active environment.
|
||||
So a lot of the things that you'll run into may be fixable by just using the setup dash
|
||||
trute, you don't have to necessarily go through the install process again, you just have
|
||||
to boot to a thing that allows you to use setup dash trute and from there you can do whatever
|
||||
you need to do, whether you, whether that is recompiling your kernel, because you got
|
||||
something completely wrong or running grub make config, because you didn't do that or
|
||||
whatever little error, I mean sometimes it will be easier to just go back and start over,
|
||||
but don't feel like you absolutely have to, if it's, if you think you know the problem.
|
||||
Okay, so I rebooted again at this point and had an operational and operating crux system.
|
||||
When you first boot into crux, you have, you have to log in as root and then you continue
|
||||
configuring your system.
|
||||
So for me, this meant installing the Wi-Fi drivers, because I've forgotten those and then
|
||||
creating a normal user and then eventually I had to install the sensors for the, so
|
||||
that the fans would stop going on all the time and so on.
|
||||
So there's a lot of things that you can kind of, like I say, if you take my style of doing
|
||||
it, my tactics, we're just to get it bootable and then adjust as needed as you go.
|
||||
And again, the recompiling of the kernel is just a matter of going back to user source,
|
||||
Linux, whatever the version number was, and then editing the .config file and then recompiling
|
||||
and just copying the BZ image over to VM Linus in slash boot and the system map and then
|
||||
rebooting and you're good, you don't ever, you don't, there's no, there's no trick to
|
||||
that.
|
||||
It's just, it's the same process over and over again.
|
||||
I mean, you could keep an old kernel around and, you know, kind of switch between kernels
|
||||
and stuff if you wanted to.
|
||||
I didn't need to do that in this case.
|
||||
I'm just, I'm just replacing the kernel because the first one that I did wasn't right,
|
||||
the second one that I did wasn't right, the third one and so on.
|
||||
Okay, so installing software, let's talk about that.
|
||||
Now you're using crocs, you've got your normal user setup, you've got most of the environment
|
||||
set up the way you want it.
|
||||
Now you want to add to your bootable system and get more applications.
|
||||
This is, this is cool that they're, they're packaging system.
|
||||
I really, I quite like, I say that with a note of hesitation because the biggest problem
|
||||
with their packaging system is that there's not enough packages in it, like there's, there's
|
||||
just not.
|
||||
They're, they're, their ports system is really nice that they're, they've got some cool
|
||||
little tools.
|
||||
It feels very slackwareian.
|
||||
I think probably if I had been crocs, I'd have just stolen slackware as packaging system.
|
||||
Like just honestly, that's what I would have done because they're, they're, the package
|
||||
is available from crocs and even from their contributors, just, it's not sufficient.
|
||||
It just isn't sorry.
|
||||
So the good news is, well, there's lots of good news.
|
||||
One good news is that it's super easy to make your own package.
|
||||
You can, the packaging script formats such as it is, it's really easy.
|
||||
You basically give it a URL to download the source code from and then you give it the, the
|
||||
instructions of what, of how to compile the, the source code, which it's, it's no different
|
||||
than what you do anyway.
|
||||
It's like a, you know, if you did .slash configure, make, make install, that's what you put in
|
||||
your script.
|
||||
That's it.
|
||||
There's, there's no magic here.
|
||||
Now, there's the opportunity for magic if you need more out of your script, you can make
|
||||
it do more, but pretty much like the, the, if it's, if it's just, if it's a super simple
|
||||
install that you'd have done anyway, just with a .slash configure, make, make install,
|
||||
you can make a package out of that simply by, by, by making a, a package file for it and
|
||||
then running package, make dash D on your own package file.
|
||||
It produces a package, then you use package add, the name of your package and it's installed.
|
||||
It's, you're, you're done.
|
||||
Really, really easy, possibly, possibly even easier than Slack builds.
|
||||
I hesitate to say that because Slack builds is more, well, it's a little bit more structured,
|
||||
I guess.
|
||||
There are conventions that have risen up around Slack builds formatting, which handles a bunch
|
||||
of different, different edge cases, whereas I have a feeling that with crux, that's those
|
||||
same conventions don't exist.
|
||||
So you might be re-implementing some things, some hacks here and there because you, you
|
||||
know, like, oh, this package needs this weird adjustment made.
|
||||
Well, I guess I'll do that this way and someone else has the same adjustment that they need
|
||||
me, need to make two different package and they're doing it a different way because as
|
||||
far as I know or at least as far as I've found, there's no template for like, this is
|
||||
how you should do these things.
|
||||
So I don't know, it's probably half a dozen one of one, six of the other, but my point
|
||||
is it's really easy to make your own packages and I have a feeling it would be super easy
|
||||
to adapt packages from other sources like Slackware or Arch Linux.
|
||||
I don't see why there would be any problem with doing that.
|
||||
And I haven't done it yet, but I have a feeling you could also just run Slackware packages
|
||||
or rather Slackware build packages here on crux, like I don't see anything that would
|
||||
stand in the way, the one thing would be that the Slackware packages assume or I should
|
||||
say, Slackware build scripts assume that you have Slackware and so it just makes blind
|
||||
assumptions about whether you have, I don't know, Perl installed because of course you
|
||||
would have Perl installed because that's part of Slackware.
|
||||
But if you're running crux, maybe Perl isn't installed, that's not true, Perl is installed.
|
||||
Let's just say Foo.
|
||||
So if it wants Foo, then it assumes that it has Foo because it knows Foo is on Slackware
|
||||
whereas on crux, maybe Foo isn't installed.
|
||||
And so running a build thing that was designed for Slackware, you might run into an error,
|
||||
a surprise error because, and it might not even tell you what the error directly is, you'll
|
||||
have to look through the log, the output of the compiler to realize, oh right, okay Foo
|
||||
is on Slackware, Foo is not here, so I need to install that first.
|
||||
So that could like run into a quote unquote problem, meaning it wouldn't just be sort of
|
||||
a press return and then go have a cup of coffee, you'd have to sit there and kind of babysit
|
||||
it and figure out what the problems are and then go back and solve them.
|
||||
But to a point, I don't even think that would be that big of a deal.
|
||||
I feel like, especially if you know some, a lot of the package that you're installing,
|
||||
you kind of, after a while, I think you kind of build up a sort of a mental list of dependencies
|
||||
anyway.
|
||||
And so you kind of think, I think this is probably going to fail, but I think it's going
|
||||
to fail because I think this needs Foo and Bar and Baz, and I don't think, I don't know
|
||||
for sure that crux has that, I mean you could also just check before running.
|
||||
So yeah, you can use other packages or other rather build scripts.
|
||||
I think you could probably easily hack other packaging systems into crux, like again,
|
||||
Slackware.
|
||||
I don't see why I wouldn't be able to run Slack PKG on crux.
|
||||
I've run it on Debian, so why wouldn't I be able to run it on crux?
|
||||
I think if I really, really wanted to and started using crux, really seriously, I think
|
||||
I would probably do that.
|
||||
I would probably just port Slack PKG over to it.
|
||||
I mean, I say port.
|
||||
I mean, it would be, like I say, it's a super simple process.
|
||||
It's not that hard.
|
||||
It's just a bunch of shell scripts and some temporary, or not a temporary file, but some
|
||||
log files.
|
||||
So those are all options.
|
||||
And then there's the other universal global option of PKG source or package source.
|
||||
However, you're supposed to say that.
|
||||
The thing from netBSD, which I, which I tend to enjoy trying.
|
||||
And I say it that way because sometimes I try it and it doesn't work as well as I wanted
|
||||
it to work.
|
||||
But I'll talk about that after I talk about the PKG utles on crux.
|
||||
Okay.
|
||||
So I've talked about how easy it is to make a package on crux.
|
||||
But let's just back up and figure we've just booted into crux.
|
||||
We've created our standard user.
|
||||
We've gotten some things configured.
|
||||
Now we want more software.
|
||||
So it's as either as a root user or using sudo, you do a ports dash U. This is a ports
|
||||
command for crux and the dash U stands for upgrade.
|
||||
What that does in this case is it triggers ports to create a directory in slash usr.
|
||||
So now it's slash usr slash ports.
|
||||
And then it downloads the ports tree, which is, you know, all of the text files included
|
||||
in the in the ports system from crux servers down to your computer.
|
||||
All that really is is a directory for each software package.
|
||||
And in that directory is a PKG file, PKG file has a URL of where to get the source code.
|
||||
And then maybe some special instructions for the ports system on on what it needs to
|
||||
do to compile that package successfully on crux.
|
||||
As I've said, usually that is a matter of just dot slash configure, make, make install.
|
||||
But sometimes you'll run into a package that also needs, I don't know, auto-con for
|
||||
auto-recon for, you know, auto-gen.sh or AC local or something like that run first.
|
||||
And then a dot slash configure and then a make and then a make install so on.
|
||||
So there's usually some kind of, well, I guess probably always, some kind of instructions
|
||||
in the PKG file of what crux needs to do.
|
||||
But it is pretty much a straightforward sort of shell script that you'd be doing anyway,
|
||||
whether it was a package or not.
|
||||
Now, you can find a port on your system using standard system tools like L.S. or GREP or
|
||||
FIND or the special crux command PRT-GET.
|
||||
The PRT-GET command searches your port's tree and gives you information about what it
|
||||
finds.
|
||||
So you can do port GET, search, I don't know, TCSH.
|
||||
And then you can do port GET info TCSH and it tells you where that package is located.
|
||||
So you know that TCSH exists in your port tree.
|
||||
You don't know where yet.
|
||||
So port GET info TCSH tells you the name.
|
||||
The path is in this case user port opt, the version available and so on.
|
||||
Now to install a port, you change directory to the location of that port, which we just
|
||||
got with port GET info.
|
||||
So CD slash usr slash ports slash opt slash TCSH and then you use the package make command
|
||||
along with dash d for download to create this thing into a package.
|
||||
Now, the first time I tried this, I got an SSL error from curl, a package make uses curl
|
||||
to download the source code.
|
||||
And I got an error message because you've probably seen this yourself.
|
||||
Curl and SSL are kind of having issues right now and have had issues for a while.
|
||||
It's sort of the integration of it.
|
||||
So to tell curl where to find the certs, the SSL certs on your system, what I did was
|
||||
I issued a ca underscore cert underscore bundle equals slash ETC slash SSL slash certs.
|
||||
.pm space package add dash d and that that that fixed it strangely that fixed it forever.
|
||||
I thought, well, I'm going to have to add that to some kind of environment variable
|
||||
or something.
|
||||
And I don't remember actually doing that.
|
||||
So I don't know if curl is now sort of logging where the SSL certs are or or what happened
|
||||
there, but it hasn't been a problem since.
|
||||
So yeah, ca cert bundle your your certs are in Etsy SSL it's the certs.pm that that curl
|
||||
is looking for.
|
||||
And so if you do that before package add, then curl inherits that environment variable
|
||||
and it's good to go.
|
||||
So once you've gotten the package built, then in your current directory, you have a package
|
||||
TCSH in this case hash the version number, the build number, and then dot pkg dot tar dot
|
||||
gz, which is a really weird format for a package name.
|
||||
I can't get used to a hash being in the package name, but there it is.
|
||||
That's how package add knows that you're giving it a the package and not just any old
|
||||
random tar ball.
|
||||
The package add is completely silent upon success.
|
||||
So as long as you see no output from your package add command, then your package has been
|
||||
added to your system successfully.
|
||||
Now by default, crux provides you with core opt and zorg package sets.
|
||||
That's over 750 ports ready to install, it's kind of nice.
|
||||
However, there are yet more in the contrib collection.
|
||||
So if you want to enable the contrib collection, which I recommend doing, just rename a configuration
|
||||
file.
|
||||
It's sudo move slash ETC slash contrib dot rsync dot inactive to slash ETC slash contrib dot
|
||||
rsync.
|
||||
Makes sense.
|
||||
You see what's going on there.
|
||||
And then you update your ports tree ports dash you or sudo ports dash you.
|
||||
And now when you do a port get, you'll find a bunch of more packages.
|
||||
The contrib collection currently has about a thousand additional ports.
|
||||
So total, you've got a good one thousand seven hundred and fifty or, you know, in that
|
||||
ballpark number of software packages that you can build and install on crux.
|
||||
That was not quite enough for me.
|
||||
And so I did install package source as well from net VSD.
|
||||
So if you go to package source PKGS RC dot org, probably I would imagine package source.
|
||||
Yeah, dot org.
|
||||
You can find out more information on how to install package source on Linux.
|
||||
It's not terribly difficult.
|
||||
There is a bootstrapping process that you must do.
|
||||
And then from there, you must use be make rather than just make when building things.
|
||||
And you do run into problems there are there are weird little issues with package source
|
||||
sometimes or rather there are there are problems with package source sort of and yours and
|
||||
your system like recently I ran into a problem installing.
|
||||
I think ghost script, which was a dependency for image magic because I'm pretty sure
|
||||
crux doesn't have image magic in its ports collection.
|
||||
That doesn't seem believable, but why else would I have been doing it?
|
||||
Anyway, I was installing image magic and it needed ghost script and ghost script needed.
|
||||
I don't know, something else.
|
||||
And it turns out that that something else was already installed on my system.
|
||||
I think it was a Python script or something.
|
||||
And and package source was looking in user include and finding the thing that it thought
|
||||
it needed, but it was the wrong version.
|
||||
And so it wasn't it never worked.
|
||||
So I had to go in and kind of modify the setup.py install script for this thing such that
|
||||
it wouldn't look in user include and it wouldn't look in user local include or wherever
|
||||
else it was looking and that it would only look in like some other prescribed place.
|
||||
I think slash opt slash PKG source.
|
||||
So there are sometimes some surprises about what what package source sort of it you know
|
||||
like is programmed to do and what it really ought to be doing through no fault of its own.
|
||||
It's just sometimes it is not you know the system and package source don't know each other.
|
||||
And so sometimes there's a little bit of confusion.
|
||||
Another thing about package source is that sometimes frequently you basically feel like
|
||||
you're just installing a new system like a whole new operating system.
|
||||
You're just you're installing a lot of stuff that you that you already have on your system.
|
||||
And that again is because just like with with slack builds or really anything like the
|
||||
packaging system no matter how simple or complex that there are just assumptions that
|
||||
that's that we have to set down we have to make assumptions.
|
||||
So package source can assume either that you have that any time you need something new
|
||||
on your system that you either already have it and that it should find it or that you
|
||||
don't already have it and that it should install it.
|
||||
You can choose what package source assumes you you get to make that choice in your I
|
||||
don't know mk.com for something like that probably not that but some configuration file within
|
||||
package source you get to choose whether it prefers package source or or not.
|
||||
And if if you tell it to prefer package source then it's going to any time it needs food
|
||||
and and it knows it needs food and it's going to install food into its little package
|
||||
source sub system into like a you know into slash opt package source or wherever you
|
||||
have package source installed.
|
||||
And if you if you tell it not to prefer package source then it'll check your system
|
||||
to see if any version of food has been installed and that is a little bit dangerous as you
|
||||
can imagine because now you're you're just randomly saying yes or whatever I've got installed
|
||||
just just take that and use it that doesn't always work.
|
||||
So you have to make a choice and the choice that I typically make is to prefer package
|
||||
source. So if there's something that package source needs on my system I tell it not
|
||||
to assume you know to to assume that anything that's already on my system is not isn't
|
||||
say it has to have its own copy of whatever it needs and that does very frequently mean
|
||||
that you are compiling basically a whole new OS into package source.
|
||||
So that's that's kind of a downside I mean I'm being hyperbolic it's not a whole OS
|
||||
but it's a lot of stuff and a lot of that stuff you're going to think I already have that
|
||||
over here but do you have that version and maybe you do today but are you still going
|
||||
to be that version tomorrow like how are you going to synchronize these things.
|
||||
So I do just kind of keep a whole package source sort of subdirectory on on crux so far
|
||||
and that that's one way of doing it a different there are different ways a different way
|
||||
could be to to not prefer package source and just risk risk at all just go for it honestly
|
||||
I who knows I might try that I might try that myself soon just just for fun but another
|
||||
way is to just use slackware packaging or arch building you know art the arch whatever
|
||||
they call it a you are whatever the arch thing or you steal from arch and slackware package
|
||||
definitions like their build scripts adapt them for crux and build it that way you know
|
||||
so lots of different options I think that they're all basically equally realistic probably
|
||||
the right one is whatever brings more packages into crux's ports system I mean I mean quote
|
||||
unquote right meaning that it's the right way because that's the now you're you're adding
|
||||
to crux's repository of of packages you do have to figure out how to become like an official
|
||||
package or whatever which I haven't looked into yet but you're also just you're only dealing
|
||||
with one port system then because if you do the package source option now every time you install
|
||||
a package you have to you have to search two places your ports tree and your package source tree
|
||||
and then if if the thing exists in both places you have to decide which place are you going to
|
||||
install it from keeping in mind that if you do it in the crux port system and you're preferring
|
||||
package source then you might be installing it again later if it becomes a dependency of
|
||||
something that you install with package you know it becomes very confusing potentially if you
|
||||
overthink it or if you're trying to be too precise about it so that can be kind of a danger so
|
||||
probably the the right way is to just try to optimize or rather bolster crux ports as much as
|
||||
you can with your own custom scripts maybe contribute back if you can if you do that and then you've
|
||||
got a nice sort of personal setup for for all the for all the things that you need on crux and
|
||||
that's kind of where I am with crux right now is just kind of building up my own environment adding
|
||||
packages to it and just kind of enjoying the the minor differences here and there and between crux
|
||||
and sort of like slackware basically and there are minor differences that you know it does it's
|
||||
rc.d and it scripts a little bit differently not terribly differently but the the you know there are
|
||||
certain I mean they don't all start with rc. for instance that's one difference um I mean they
|
||||
are basically all just case statements or you know with a couple of fancy if then statements thrown
|
||||
in for for fun but I mean it's it's it it is different um there's not as much stuff pre sort of
|
||||
installed and sort of pre configured on crux as there is on slackware um which I mean technically
|
||||
I guess could be a good bet thing could be a bad thing depends on what you're looking for so um I
|
||||
think probably I would hazard to say like if you're if you're maybe looking for a BSD like
|
||||
experience but you're you're just really really comfortable with the way Linux does things as I
|
||||
am then then crux could be something to take a look at there's there's a lot of manual labor here
|
||||
but if that's what you're looking for then then crux could be a very cool um sort of project
|
||||
to endeavor upon I mean or you could just use a BSD like net BSD I mean there's there's a lot
|
||||
of stuff to learn there as well so it's kind of whatever you're feeling like I guess um but I've
|
||||
had a lot of fun with crux it's been a it's been a real pleasure to experience it to try it out
|
||||
finally to get it installed to to really get back into to to just fiddling with a kernel like that
|
||||
that has been you know it's it's weird it's it's like it isn't that I couldn't do more with my
|
||||
kernel on slackware it's just that I guess I don't feel like I know what I would like to bother with
|
||||
and also you know certainly I don't really want to break anything on slackware like it's my
|
||||
daily computer now I could just install slackware on a different laptop mess around with the kernel
|
||||
and do but but with crux or with something new a lot of times like the reason you explore more
|
||||
is because you kind of have to because something isn't working and so like there's a different
|
||||
sense of urgency and purpose when when just when you encounter something that's just like oh I
|
||||
have to do this I have no interest in fixing this I don't actually care about what sensors are on
|
||||
my motherboard I don't care about how to detect the different sensors and what hardware monitor
|
||||
inputs trigger you know to monitor for those sensors but I guess I have to learn about that now
|
||||
because this stupid fan won't shut off if I don't do that um so it it's almost like the the the
|
||||
thing that that is broken has a a different sense of it has a different drive behind it
|
||||
than just sitting down with a computer and looking for something that you could say optimize or
|
||||
or something that you could break and then refix it's just I don't know it's different
|
||||
so it's kind of fun to try crux and see what what little details of computer functionality you
|
||||
may have missed because of because of a really someone else is really hard work you know someone
|
||||
else is configured your kernel already to do that for you but what if what if they hadn't so yeah
|
||||
it's kind of fun kind of it's kind of an interesting experiment and at the end of the day I mean
|
||||
crux is a really nice little Linux distribution like this would be a really fun and usable Linux
|
||||
distribution if there wasn't any other minimal Linux distribution out there this would definitely be
|
||||
that this is a great fallback option if nothing else and I don't mean that in a bad way I mean
|
||||
it's great to find a Linux distribution that's been around for a quarter of a century now uh and
|
||||
that has you know that that's that's got support it's it's it feels steady it feels like it's it knows
|
||||
exactly what it is and it it is it just continues to be that so if you're curious give crux Linux
|
||||
a try it's a lot of fun thanks for listening you have been listening to hacker public radio
|
||||
at hacker public radio does work today's show was contributed by a hbr listener like yourself
|
||||
if you ever thought of recording podcast you click on our contribute link to find out how easy it
|
||||
is hosting for hbr has been kindly provided by an honest host.com the internet archive and
|
||||
our things.net on the satellite status today's show is released under creative comments
|
||||
attribution 4.0 international license
|
||||
Reference in New Issue
Block a user