Hacker News new | past | comments | ask | show | jobs | submit login
Linux running on RISC-V emulated in Scratch (adafruit.com)
146 points by varun_ch on Oct 29, 2023 | hide | past | favorite | 34 comments



Kind of wild to think that you can run a newer Linux version in Scratch than on a lot of physical devices.

Also gives "Linux From Scratch" a new meaning.


In fairness, a lot of the friction on real devices is from it being a real device; VMs have fewer and simpler drivers to deal with.

(And nobody cares about stability in a PoC)


Indeed, for people who have never had to work with real hardware before, it is shocking how complex it is and the level of hackiness it sometimes takes to make it "work" (I say "work" because often times drivers are doing insanely hacky things to make it seem like it's working, even though it's duct tape and bubble gum under the hood). Not just when things are going right, but also when they go wrong (which can involve real-world physical things that break expectations, like damn voltage fluctuations or a physically damaged component for example!). When you only have "virtual" hardware to control, things are much, much, much more simple.


A lot of friction also comes from kernel modules not having a stable API they can target meaning they need to be updated for new versions.


There doesn't need to be a stable API. They should just upstream their drivers into the kernel tree.


Someone has to actually maintain the driver in the tree. Drivers that don't have maintainers end up being removed from the kernel.


Yes, but that's way less work than maintaining an out-of-tree one is. Since fixes for kernel API changes are then the responsibility of whoever changed the API, instead of the driver's maintainer, it's basically the same amount of work it would be if the kernel did have a stable API.


That is not always possible due to licensing like OpenZFS's kernel module. There may also be trade secrets in a kernel module that they do not want to reveal by upstreaming. Upstreaming code takes time and it is not guarenteed that your patches will be accepted where an out of tree module can be created instantly.

It may not be needed, but in practice kernel modules will exist and make upgrading Linux harder than it needs to be. A stable API is about providing value and saving time for driver developers and end users. It is no coincidence that successful operating systems like Windows, Mac, and Android have stable ABIs that you can use to make drivers.


> A stable API is about providing value and saving time for driver developers and end users.

At the expense of undermining the quality of the rest of the kernel and burning kernel dev time.

> It is no coincidence that successful operating systems like Windows, Mac, and Android have stable ABIs that you can use to make drivers.

It's also no coincidence that drivers for previous versions of NT/Darwin regularly break with new releases, leaving users stranded while the Linux versions stay maintained in-tree. (I suspect the same is true of Android but I'm not familiar enough to say for sure)


>At the expense of undermining the quality of the rest of the kernel and burning kernel dev time.

It shouldn't undermine quality and it could save dev time and make it more user friendly to write new drivers.

Yes, drivers break over time, but it is better if there is a clear expectation on how long things will be stable and what changes will be needed when you upgrade.


> That is not always possible due to licensing like OpenZFS's kernel module.

Aren't these sorts of hardware drivers generally written in-house by the company who makes the hardware? Can't they pick whatever license they want since they own the copyright?

> There may also be trade secrets in a kernel module that they do not want to reveal by upstreaming.

A company that asserts the existence of "trade secrets" in kernel modules deserves to have to do the extra work. All kernel modules should be open source.


>Aren't these sorts of hardware drivers generally written in-house by the company who makes the hardware? Can't they pick whatever license they want since they own the copyright?

I gave you an example of OpenZFS where this is not the case. The code in hardware drivers may not be owned entirely by the company. It could have even been done entirely by a third party which may not even still be in business. Even if they were willing to license there would be extra costs in making the code into a state that can be upstreamed. Even then it might just never be accepted.

>A company that asserts the existence of "trade secrets" in kernel modules deserves to have to do the extra work.

This is an unreasonable stance that hurts end users. If no one exists to maintain the kernel module end users will get stuck on old, insecure, kernel versions. Even if they get updated it prevents people from upgrading until there is a version all drivers support.

>All kernel modules should be open source.

That is your opinion. It is not true in practice meaning there is utility in having a stable ABI.


> I gave you an example of OpenZFS where this is not the case.

But that's not a hardware driver.

> It is not true in practice meaning there is utility in having a stable ABI.

That would benefit the people who are doing the wrong thing, at the expense of people who are doing the right thing.


>But that's not a hardware driver.

It is still a kernel module.

>That would benefit the people who are doing the wrong thing, at the expense of people who are doing the right thing.

People are going to make out of tree kernel modules regardless. It is only the wrong way because there is not a stable ABI for doing it.


>It could have even been done entirely by a third party which may not even still be in business.

That's not really a good basis for defending closed drivers.

Yes it happens, but it is a scenario we should be trying to avoid.


The real world is not as nice as you imagine. These things do happen. Sure it's in a businesses best interest to avoid things like this, but that doesn't mean it will never happen.


I don't imagine the world to be a nice place. I think we're coming from different philosophical view points.

Murder is going to happen, I would say we should try and prevent it, not just accept that it is going to happen. Yes, that attempt will never be 100% successful, but that isn't a reason not to try and prevent murders to start with.


Yes, bad things will happen, but we should be making them harder, not easier.



and here it's running in a hyper optimised mod of Scratch called Turbowarp. It's really surprising how much the Scratch community has made. :)

https://experiments.turbowarp.org/next/892602496


"that compiles projects to JavaScript to make them run really fast." - now I'm scared.


Huh. I thought the title might have been a grammar mishap ("from scratch" is how I read it first), but apparently Scratch is a kids-oriented visual programming tool: https://scratch.mit.edu/

Neat. Kind of reminds me of LOGO in days of yore.


Previous Scratch discussions:

+ Scratch is a big deal - https://news.ycombinator.com/item?id=32120445

+ Scratch is the world’s largest coding community for children - https://news.ycombinator.com/item?id=35373052


My first exposure to code was with Scratch, it's a really nice tool to let kids build games and little animations while learning principles like control flow, conditionals, etc.


Okay, I wasn’t taking scratch seriously but now it seems like the new basic.


If it's Turing-complete, someone will try to run Linux on it.


Will it run doom ?


crazy, I remember seeing some project 6 years back running linux on a excel sheet (each cell was considered as memory unit), nothing can beat that.


I can only find https://mrthefakeperson.github.io/Excel-Virtual-Machine/ so I'm curious if you can find the "linux in excel"


This should be illegal! This person could have cured cancer if they weren't building this kind of shit. (Only half joking)


It's really not very difficult to do this. RISC-V is deliberately quite a simple ISA. The Sail model for it is only a few thousand lines of code, and you don't need remotely that much to run Linux if you compile for a limited target ISA (no floating point, etc.).


it's kind of scary what you can do with a visual programming like scratch these days. but i'm not crazy about the site linked in the title.


What's wrong with adafruit?


nothing specific, i guess - i'm just not mad about the design.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: