The Raspberry Pi Pico Can’t Run Linux. But It Can Run Fuzix.

The great divide in terms of single board computers lies between those that can run some form of Linux-based distribution, and those that can not. For example the Raspberry Pi Zero is a Linux board, while the Raspberry Pi Pico’s RP2040 processor lacks the required hardware to run everybody’s favourite UNIX-like operating system. That’s not to say the new board from Cambridge can’t run any UNIX-like operating system though, as [David Given] shows us with his Fuzix port.

Fuzix is a UNIX-like operating system for less capable processors, more in the spirit of those original UNIXes than of a modern Linux-based distribution. It’s the work of the respected former Linux kernel developer and maintainer [Alan Cox], and consists of a kernel, a C compiler, and a set of core UNIX-like applications.

The RP2040 port maybe needs a little more work to be considered stable. For now, the multitasking support isn’t quite there and NAND flash support is broken, but it does have SD card support for a proper UNIX filesystem and the full set of core tools. Perhaps most interestingly, it only occupies a single core of the dual-core chip, leaving the possibility of the other core and those PIOs to be used for other purposes.

Fuzix has made the occasional appearance here over the years, but perhaps not as often as it should. If you’d like to learn a little more about the genesis of UNIX, we took a look in 2019.

Header: Michiel Henzler (CC BY-SA 4.0).

92 thoughts on “The Raspberry Pi Pico Can’t Run Linux. But It Can Run Fuzix.

      1. I like it because it doesn’t waste power on floating point hardware that is unnecessary in most applications.

        Do you place any value on your own time? Parts with heavy community involvement can save you a Lot of time which translates to a lot of money.

        1. Stuff to do with quadcopters or data acquisition and processing do rely on FPUs to make the program much faster to run, so anything data based can probably perform better with a FPU

          1. “anything data based can probably perform better with a FPU”

            Totally false, text data does not undergo floating point operations.

            In fact software floating point provides perfectly acceptable performance in most applications. Faster is not better if it consumes more power.

          2. Even numeric things don’t need an FPU. Real time, real world control systems don’t need floating point if you’re using 32-bit numbers, because you have a dynamic range of FOUR BILLION to one. If the code scales each input properly, there is no risk of overflow or underflow. Floating point is only needed for general purpose computing where you have no idea what orders of magnitude you will be working with. That, or lazy coding.

          3. BrightBlueJim is right! Fixed point in 32 bits can get it done. Just watch your intermediate values and keep everything close to 1.0, scale was needed on the way in and out, and you’re golden.

            And even if you’re using floating point, it’s a good idea to have a handle on those things. E.g., plain old addition/subtraction of doubles only gives you all 16 digits of accuracy when the inputs are of the same order of magnitude.

    1. Whether this is satire or not, you sparked some interesting conversation.

      There’s a lot of different MCUs on the market offering nearly every combination of hardware. Different speeds, number of cores, FPU, MPU, MMU, WiFi, Bluetooth, cryptography, etc.

      It’d be cool to put together a webpage that tabulates all these options and lets you whittle down to chips that have just what you need and nothing you don’t.

        1. You can already do that with ARM chips. Ever look at the selection guides for any of the big ARM makers? Not QUITE a la carte – you don’t generally see miniscule CPU cores paired with megabytes of RAM. So assuming RISC-V makes it into the big time, it’s sure to happen.

    2. Clearly, the Pi Foundation are a bunch of incompetent idiots for designing this overpowered waste of silicon when my project only needs a single NAND gate. I’ll never forgive them for releasing a product without extensive personal consultation regarding my requirements and feelings.

      1. Only one NAND gate.. we aren’t talking about BSD here are we?
        How dare you insinuate such a high level of waste in resources. We can just use a rheostat and an LED to get all the interactivity we need to calculate PI…

      1. Not, it most assuredly is not. It’s a microcontroller development board since it does not have a microprocessor.

        Apparently you don’t know the difference between a microcontroller and a microprocessor.

          1. Do you? A computer is something that is COMPLETE. The original Pi through the 4b and 400 are all complete computers – literally just plug in a keyboard, mouse, monitor, and power supply. The Pico is verly little more than just a breakout board for the RP2040 chip. Which is exactly what I need sometimes, but it is emphatically NOT a single board computer.

            Although I have no idea what “does not have a microprocessor” is supposed to mean.

      2. Sure is..
        “Designing a sub-$5 computer involves several tough decisions”
        “As this is a dual Cortex-M0+ chip, it’s entirely possible to have one processor dedicated to bit banging, and the other dedicated to application code.”

        -https://www.arm.com/blogs/blueprint/raspberry-pi-rp2040

        1. This is the wrong argument. The microprocessor vs. microcontroller issue is not what makes or does not make this an SBC. In fact, microcontrollers usually have MORE resources than microprocessors, because MCUs are designed to be used with minimal additional hardware, while MPUs expect to need more external interfacing.

          But like I said, wrong argument. The question is what makes a computer. Yes, you can have a single-board computer based on a microcontroller, BUT, this single board is little more than a breakout for the RP2040 chip. It does not include any of the interface logic, especially things like level shifters and differential line drivers, needed to connect directly to peripherals such as HDMI. That should be the criterion: can you complete the system with nothing more than standard peripherals such as monitors, keyboards, and other basic I/O? I don’t believe this is the case with the Pico.

          1. You can connect your favourite little LCD to the pico, you can also connect a USB or PS/2 keyboard. There is a DVI implementation using one core and one PIO, which can output a decent color image. It can run Fuzix, a Unix-like OS. I think it meets all the the criteria for it to be called a computer.

            One small dilemma I have is: where do we draw the line between SOC and microcontroller nowadays? Microcontrollers are getting more and more powerful, and are starting to get more and more interfacing options. ST makes some STM32s with powerful ARM cores and rudimentary, but built in GPUs,which they call ‘microcontrollers’, while Espressif has always called the ESP range ‘SOCs”.

          2. Surprised this many people on Hackaday are disagreeing with you!

            Not sure about the SOC vs. microcontroller angle, but the Pico is obviously not an SBC! Fusix is not a complete OS – it doesn’t even have the TCP/IP stack implemented for the Pico hardware yet!

            Additionally, the argument of “you can connect a mouse, keyboard, and monitor” is not true for a Pico out-of-the-box. I see Fusix does have some work done on SSH, so perhaps you could run a headless unix-like OS on the Pico (once TCP/IP is sorted), but you’re just stretching all reasonable definitions of what a personal computer is.

          3. Yes, that’s right. That WOULD stretch the definition of a personal computer. But maybe you SHOULD stretch the definition of a personal computer, with emphasis on “personal”. Many people think of “personal computers” as generic appliances, but that’s stupid. I can make a personal computer out of a Pi Pico W, just by using a display that includes a controller with memory that doesn’t need to have a high-bandwidth pipe to the CPU. You probably wouldn’t accept that it qualifies as a personal computer, but you are not the person it’s made for. Speaking strictly for me, _I_ don’t need a multitasking OS to have a useful computer, so I don’t need all the extras that a Cortex-A has. And it’s exactly those extensions that make it really difficult to use a Cortex-A WITHOUT a multitasking OS, which is why I’m grateful for the recent development of really capable Cortex-M “microcontrollers”.

        2. It MIGHT be safe to say that you could MAKE an SBC out of the Pico, by using the Pico as a module on SBC. But unless you can tell me how to connect a Pico DIRECTLY to a display, it is not, on its own, an SBC.

          1. Yes, I’ve seen that. What it shows is that you CAN make an SBC with the RP2040. But there’s no HDMI connector on the Pico, so you DON’T have a complete computer. There’s a picture of the board he did this with. It was NOT a Pico.

            It seems like nobody understands what “single board” means, here.

          2. I will say it again: Yes,you CAN MAKE an SBC with the RP2040. But the PICO itself is just a breakout board. It does not have a connector to plug a monitor into, so it is NOT an SBC.

    1. By my books an SBC supports a full linux OS, atleast, gives me the ability to access ordinary files in an ordinary file system(FAT/NTFS/EXT4…) on some amount of easily accessed self-contained storage and can for all purposes be used as a very weak abysmally slow limited equivalent to a laptop (as a BCM2835 based Pi, even a zero W, can) or if there isn’t a readily available graphical output then atleast used broadly like a server which one handles solely by commandline. Microcontrollers are a whole other thing for a whole other type of purpose. The best way to work in big projects is use a microcontroller, or many as this is only Β£4, as slave devices handling realtime operations for an SBC acting as a master which does fancier software stuff, but slower. In small projects you won’t need the fancier software, so you just use an MCU alone.

  1. Not sure I see the point. If you want to use Linux on the cheap, use a Pi Zero.
    You’d choose the Pico or another microcontroller board when you don’t want to wait a lifetime for the thing to boot up.
    What am I missing here? Unless you want to use the Pico’s PIO capabilities, maybe?

    1. Personally, I like the fact that is not Linux.
      The *nix platform slowly disintegrates because of Linux, I think.
      Applications and frameworks became much too Linux centric in the past few years, making porting code to BSD and other Unix platforms unnecessarily difficult.
      Just think of systemd, for example.

        1. Thank god systemd isn’t on *BSD. I have for the most part switched over to BSD since nearly every popular Linux distro is infected by systemd now. Slackware is probably the last distro that you have at least heard of that hasn’t gone systemd yet.

        1. FYI, this has 8KB more memory than a PDP11/45, a faster processor, and more than enough I/O to drive a VT-100 terminal. Mass storage via USB; I think it would be plenty capable of running CB-Unix (that’s Columbus Branch Unix from Bell Labs in 1979, you weenies. Yes, I worked there, then).

      1. Everyone loves to hate on DOS, but it wasn’t completely horrible. Forward slashes for options, strings terminated with $ chars, and 8.3 filenames were details that sucked, to be sure. Horrible 64K limits sucked too but those were the 8088’s fault. But it didn’t have systemDerp so it had that going for it.

        But anyway yeah, Linux is getting waaaay overblown, even without the infectious rot perpetrated by RH. And while we’re at it, let’s not pretend that ‘UEFI’ and secure boot and IME are any kind of necessities either. This line of evolution is matching inexorably toward us ordinary individuals being given only simple, unconfigurable endpoints to rent scraps of actual computer from large centralized powers. Why?

        It could be refreshing to do without all these trappings of OS ‘as a service’. The idea of a single-user command shell, that works for the person sitting at the keyboard, with no stupid bloody logins or superusers or remote users — a body could work with that. Something like DOS. Just, not DOS.

  2. That’s neat, it reminds me of CP/M (Control Program/Monitor) from the good old days that I never lived in.
    Or Minix 1.x and MS Xenix on IBM PC/XT.
    They also ran on minimal computer systems.
    In fact, CP/M-80 still lives on in the SBC (single board computer) scene. ^^

    Additionally, there’s also Datalight ROM DOS for small x86 systems. In the late 80s, there also was PenDOS, DIPDOS running on handhelds. The Tandy 1000 also had DOS in ROM, I heard.

      1. I keep meaning to try out your vim clone for cp/m! My brain keeps intermittently locking up while text editing when I try to keep the vi and wordstar keyboard shortcuts in my head at the same time.

  3. Couple of things:
    1) he says it includes 2 MB NAND flash on chip. Not on chip, but on the Pico PCB, which means without much trouble you can upgrade it to 16 MB.
    2) EEEEEEEEK. Flash memory should NEVER be used for swap. Just look what happened to Tesla. (Just Google “tesla flash problem”.)

  4. No Linux? Into the trash it goes. I have no time for useless products like this. There’s a cheaper business card that runs Linux at just $3, but this at $1 more… Oof. That’s embarrassing.

    1. There are use cases wher you don’t WANT to run linux, much as linux is betetr than windows as a desktop OS there are such things as devices where having any OS at all is undesirable. There is and always will be a place for fast microcontrollers doing nothing more than running one C program that you’ve flashed on to them. By my books an SBC supports a full linux OS, atleast, gives me the ability to access ordinary files in an ordinary file system(FAT/NTFS/EXT4…) on some amount of easily accessed self-contained storage and can for all purposes be used as a very weak abysmally slow limited equivalent to a laptop (as a BCM2835 based Pi, even a zero W, can) or if there isn’t a readily available graphical output then atleast used broadly like a server which one handles solely by commandline. Microcontrollers are a whole other thing for a whole other type of purpose. The best way to work in big projects is use a microcontroller, or many as this is only Β£4, as slave devices handling realtime operations for an SBC acting as a master which does fancier software stuff, but slower. In small projects you won’t need the fancier software, so you just use an MCU alone.

      1. “By my books an SBC supports a full linux OS, ” So?
        By your book what ever that is it must run linux and access files in a normal file system. Guess what no SBC will “run” any OS until it is ported to it or gets and BSP.
        You have a very narrow idea of what a SBC is based just on your opinion.
        Probably the best description of and SBC or single board computer is a computer that has a processor, memory, and IO that all fits on a single board. You know a single board computer. Even some SOCs would fit it.
        Frankly the nit picking is a giant waste of time folks. Go grab the board of your choice and make something or learn something. Best of all do both.

  5. Soon(ish), OS9, no not Apple’s OS-9 but OS9 formerly from Microware and also the Unix-like OS used on the TRS-80 Color Computer and Dragon computers will appear on PI platform. This will be an exciting opportunity to run a great OS on a microcontroller. Who needs Linux then? ;-)

  6. To think we controlled Hydro dams with a little o’ 68000 series and 68332 running at a lowly 8mhz, then 16mhz and finally 25mhz as the brains….. The custom 68332 board did have more SRAM memory than 256K as a final product in that line. Want to say if memory serves, 1Meg SRAM on the final board with 1Meg of Flash for program. Could do a ‘lot’ with that with interrupt driven I/O with millisecond time stamping of events. Much like this little board there was only one program running but using a little RT kernel called VRTX to provide priority driven tasks (now called ‘threads’). VRTX/VRTX32 provided just the simple RT scheduling with 256 priority levels. BTW, VRTX runs the Hubble telescope I believe. Might have to look into building a simple RTOS library for this board (if not already there) for kicks… Now I like Linux and am Windows free… But for this board? … Naw I don’t think so… A tiny RTOS? Sure… But for a lot of cases probably not needed.

    Thinking back on my first job I had for 20+ years … Programs for the 68000 boards were first loaded on EPROMs… later Flash (uploaded via serial port which was awesome) …. How much even simpler it is today. I remember finding bugs in the code while in the field… then having to ‘wait’ for FedEx (next day) to deliver a new set of EProms… Extended ones time in the field! Those were the days… This little Pico is a dream to load in comparison!

    1. Interesting comment, most of the UK water/wastewater and Oli/Gas networks where monitored with custom 68340 and 68332 boards, 1mb NOR flash and 1mb SRAM, bunch of UART’s hanging of it. Most done 20+ years of service.

Leave a Reply to MDCancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.