An Architectural Overview of QNX (1992) [pdf]
cseweb.ucsd.edu
cseweb.ucsd.edu
> we implemented this: http://swain.webframe.org/squeak/floppy/
> (using Linux and modifying Squeak to work with SVGALib instead of X)
> in just 900mb
"Just" 900MB?
That is, er, not very comparable. Nearly a gigabyte, versus a single floppy? (Circa 1.4MB albeit very heavily compressed, so over 2MB of code, maybe 3.)
That is a difference of approximately 2 orders of magnitude, heading towards 3 OOM: 1000x bigger.
Am I misreading?
You definitely did not get 900MB on a floppy. It wouldn't even fit on a CD (~700MB uncompressed).
http://swain.webframe.org/squeak/floppy/
900 kB. Quite a big difference. 1,024 times smaller, in fact. :-)
Crazy, compared with the storage devices I could attach to my Timex 2068 in 1986.
And they are only useful on some computers and phones. Cars and measuring equipment are usually limited.
They had a pretty nasty bug back in the day... https://www.juliandunn.net/2006/08/21/on-hacking-the-unisys-...
It basically went like: "I am root" "Yes, you are root" :)
Are there any working examples still out there?
From there it was possible to trackball-and-ACTION-key my way to administrator permissions which is maybe what the bug referred to in GP was referring to?
Anyways my big mistake was sharing this information with my classmates — it was fun to change the login message for everyone to a kind of “so long suckers” just before we graduated, but apparently someone changed the admin password and (presumably due to not being aware of the bug) locked them out.
The vice principal had me come back to school after graduating to be chewed out and told that they nearly charged me with mischief :-/
When I got to high school I mostly just had fun finding a way to drop into the command line and playing around with that instead of working around access controls…
The ICONs were way more fun from the aging Commodore Pets that had populated Ontario high-schools, and the big trackballs felt futuristic.
I vaguely remember a mysterious “other room” where ICON-related things happened - this must have been where the LEXICON server was located.
I do remember this "unix" variant being particularly painful to work with. One might even say spectacularly painful.
> It basically went like: "I am root" "Yes, you are root" :)
How prescient! Advanced AI, way back then!It's been a significant embedded OS since the late 1980s, with many millions of deployed systems.
It is also used in roles with a customer-facing UI and indeed GUI. It's in several car media players, for instance, including from Toshiba I believe.
And of course it was the basis of Blackberry 10.
https://crackberry.com/blackberry-10
It was in the Playbook, the cancelled Folio, and a lot of smartphones, such as the Passport I used to own. (A lovely device, sadly crippled as messaging app vendors removed support. I could use Android apps on it, but they didn't integrate into the Blackberry Hub.)
It was also very nearly the next-gen Amiga, which I suspect is why it has a GUI and multimedia support.
https://www.trollaxor.com/2005/06/how-qnx-failed-amiga.html
I suspect that between routers, switches, engine control units, traffic signals, smartphones, car entertainment units, and doubtless many other things we don't hear about, it's in more devices in production than all of seL4, Fiasco, etc. put together.
Minix 3 is arguably also a true microkernel, and it's present in industry, embedded in millions of Intel Xeon and Core iX CPUs' management units, but it never reached a state of much completeness. No SMP support, for instance, and a lot of missing functionality.
And it now seems to be dead:
What's the Folio?
https://en.wikipedia.org/wiki/Palm_Foleo
Mistake on my part: I thought it was a cancelled Blackberry device, but it wasn't -- it was a cancelled Palm device.
Before the rise of netbooks, it was a netbook-sized terminal to a smartphone that let you use a laptop-style UI to your email and so on, by being tethered to a smartphone.
It was the inbox that sold me on it. I had to occasionally manually kill background apps; I could feel the phone getting hot in my pocket sometimes, as something burned CPU and battery. It was a bit version-1-point-zero.
But, a good UI, most Android apps worked... but slowly, over time, Whatsapp dropped support, FB Messenger dropped support, and while the Android clients worked, they no longer integrated with the unified inbox, making it all a bit pointless.
For those who never saw it:
BB10 was QNX with a Qt-based GUI on top. It had a global inbox, part of the home screen, and all messages appeared in it. Work emails, personal emails, all chat systems, app notifications -- all in one place, sortable and searchable. It sounds like a lot to deal with but it wasn't; it was much easier than handling notifications and messages on iOS or Android, where they are spread over a dozen different apps.
Android "native" apps are actually Java apps in a customised Java runtime, a modified JVM. This has been completely replaced several times over the lifetime of Android.
BB10 had its own Android-compatible JVM, so Android apps ran on BB10, at peer level with native apps. The big snag was that there were no Google apps, and Android apps assume those are present. So, if an app displays a map, it assumes Google Maps and blindly calls it, and if that app is not there, the exception is unhandled and you get a blank area on screen where the map should be.
Sadly sideloading the Google Apps did not fix this. They worked but they were not where expected, or sandboxed, or something. Some, e.g. Google Translate, worked badly because it assumes an onscreen keyboard but the Blackberries didn't have one because they have permanent hardware keyboards.
I seem to recall that one was fixed down the road and displayed the native map.
> Blackberries didn't have one because they have permanent hardware keyboards
Not the Z10, which was fully touch. This gave a good experience for these Android apps, especially if you sideloaded the Amazon app store and picked from that.
I suspect app developers aren't really a fan of this as half the reason they're building such a tool is to have a branded environment to capture your attention in....
Of course WebOS also died in an ignoble fashion as BB10. Its UI DNA does live on at Google in some ways though as the head of UX at Palm (Mathias Duarte) eventually became VP of design at Google. When Android & iOS eventually rolled out multitasking gestures it looked a lot like WebOS.
The deal that nearly happened between PalmSource and Symbian when Palm was moving to Arm processors is one of the great might-have-beens of the IT industry.
Symbian was a superb OS, with a choice of UIs not of which matched its greatness.
Palm had a very good, widely-loved UI, but a poor kernel underneath.
The combination could have been industry-beating, but the deal never completed.
Now Symbian is FOSS but nobody cares, and PalmOS is buried inside Access Corp, never to be seen again.
I think WebOS survives as the UI of some LG smart TVs...
The software keyboard was incredibly reactive and tactile; I bet QNX played its part on that.
Had to stop using it because of stupid (Android) bank apps deciding to check for root and refused to run.
> doubtless many other things we don't hear about
It’s entirely possible many of those embedded devices running QNX haven’t rebooted since the late 80’s.
I would not be altogether surprised. This was one of the promises of microkernels in general and Minix 3 in particular...
No, this was because Quantum Software thought that they were going to compete with Windows on its own turf somewhere around 1991.
For the three years (2002-2005) I worked on a DARPA Grand Challenge vehicle, my main desktop machine ran QNX. I could build and run the real time software on it, connected to either a simulator or cabled to the actual vehicle up on jacks.
QNX gave up on the desktop a few years ago.
[1] https://www.qnx.com/developers/docs/6.5.0SP1.update/com.qnx....
It's gotta be creeping up on QNX numbers slowly!
Last I checked, seL4 was in the firmware of a lot of phones.
Or was it not yet considered a microkernel by then?
Category:Microkernel-based operating systems: https://en.wikipedia.org/wiki/Category:Microkernel-based_ope...
- redox (rust-based) https://en.wikipedia.org/wiki/Redox_(operating_system)
- Nintendo Switch runs a microkernel OS
- Linux started in 1999 as a clone of MINIX and was initially developed on MINIX, which is a microkernel OS: https://en.wikipedia.org/wiki/History_of_Linux
Earlier versions were not. IIRC, Linux was bootstrapped on Minix 1.x.
https://en.wikipedia.org/wiki/Nintendo_Switch_system_softwar...
https://www.reddit.com/r/emulation/comments/hygtnx/mesospher...
https://github.com/Atmosphere-NX/Atmosphere/tree/mesosphere-...
Er, what? Why would a 3rd-party reimplementation allow Nintendo to use their work?
Do you have a link to your version? How compatible was it?
In my experience Linux has been pretty awful at this.
isn't the problem these days just crappy random hardware more than anything else; Linux itself, especially with rt patches, together with jack should have good enough rt perf for audio use. I've seen reports of <5ms roundtrip audio latency on linux even with usb hardware.
Could be wrong, but I think it has been default on Ubuntu Studio and alike for at least a year now.
I seem to remember eagerly grabbing a copy from Github around 2010-2011, but unfortunately that was on a work laptop from a previous job.
According to http://minix3.org and https://en.wikipedia.org/wiki/Minix Minix is a microkernel.
https://wiki.osdev.org/Microkernel also lists Mach and AmigaOS and Wikipedia lists a few more: https://en.wikipedia.org/wiki/Microkernel#Examples
Minix 3 totally is, but it's also incomplete, and as Dr Tanenbaum has retired, it probably always will be.
Mach was valid, but the only successful version, Apple's macOS, has a huge in-kernel "Unix server" derived from FreeBSD code, so it's not a microkernel any more.
The OSF's OSF/1 is long gone. So is MkLinux.
IPC performance killed Mach, which led to L4, seL4 and many others, none of which have ever gone mainstream or been widely deployed in production, AFAIK.
AmigaOS does not count, because it has no memory protection: all code runs in a single memory space, which makes a microkernel-like design simple, as there are no barriers to interprocess communication -- but also no use of an MMU chip whatsoever and as a result it was and is as unstable as classic MacOS or Windows 3.x.
Actually, iOS/macOS itself isn't a monolithic OS anymore as many of the important hardware drivers like wifi have moved to userland processes. Of course, it was never fully monolithic because it does upcalls for things like NFS mounts and disk images.
Source: https://web.archive.org/web/20120211210405/http://www.ok-lab..., via https://en.wikipedia.org/wiki/L4_microkernel_family#Commerci...
We ran our POS systems on it (server-thin dumb client) - the server was a 64MB 486 and the POS terminals ran a simple client program that emulated an NCR1255 POS terminal.
It just sent keystrokes or print a line on a receipt printer or display a message.
The server was a C program with a giant state machine of up to 64 POS terminals and it hardly broke out in a sweat and used shared memory to talk to other programs that did the card payments and data storage.
Good times.
Such a cool fast kernel / operating system.
In my understanding it promises correctness of scheduling not speed.
XR itself is mostly the same codebase - it’s just the platform- and OS-specific code that had to be changed. Also, I believe endianness-dependent code had to be ifdef’d.
Source: worked as a dev on the IOS-XR team.
[1] https://www.cisco.com/c/en/us/products/collateral/routers/as...
at work I built a system to run Python scripts on various network devices, with a HAL abstracting the APIs. supporting IOS-XR, IOS-XE and NX-OS was quite a bit of work. plus there were so many modes.. netconf-YANG? or show run/config syntax? and so many changes between revisions. meanwhile, the HALs for Juniper and Arista devices were pretty easy.
Now? Just madness I guess
I have zero knowledge about NX-OS. But I can say that the XR and XE teams were quite isolated from one another. For instance, as an XR dev, I had no visibility into XE development.
It kind of makes sense: XE and XR target different device segments, which means the feature sets and scale and availability requirements were different. But both were spun off from IOS, which is why the “base” is common.
I don’t have any visibility into what they’re doing now, but I wouldn’t be surprised if they’re working to unify XE and XR at some level.
- https://code.qt.io/cgit/qt/qtbase.git/log/?qt=grep&q=QNX
- https://code.qt.io/cgit/qt/qtdeclarative.git/log/?qt=grep&q=...
Since then, for newer models, the manufacturer has moved the nav+infotainment to Apple's iOS CarPlay. I don't know if QNX is still used for other stuff (like reporting the oil level / warning messages etc.).
My Ford has had both. As a 2015 model it shipped with MyFordTouch which ran on whatever Microsoft was calling the automotive branch of Windows CE at the time (AutoPC?) with a UI built in Adobe Flash.
2016 and newer models got a QNX-based platform with a HTML5 UI under the name SYNC 3, and the newer SYNC 4 variants are derived from that.
I upgraded my car with parts from a 2016 model a few years ago because Sync 3 could do Android Auto and CarPlay where MyFordTouch could not.
Brings back good memories.
Instead of going unix-ish and using QNX we eventually went windows-ish and used Phar Lap ETS, which was quite nice and civilized.
Do we know how modern QNX compared to this?