[HN Gopher] Operating System Development Tutorials in Rust on th...
       ___________________________________________________________________
        
       Operating System Development Tutorials in Rust on the Raspberry Pi
        
       Author : loose11
       Score  : 172 points
       Date   : 2021-09-26 13:54 UTC (9 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | nmz wrote:
       | This is such a bad idea, like putting a lawn mower engine on a
       | monster truck.
        
         | xondono wrote:
         | What? That analogy doesn't make sense, the RPi is not the
         | development machine, it's the target.
        
       | lbj wrote:
       | Absolutely fantastic tutorial, thats going straight to bookmarks.
        
       | Decabytes wrote:
       | Tangentially related are there any hobbyist operating systems
       | built on top of the linux kernel, that work radically different
       | from your standard run of the mill OSes like Ubuntu?
        
         | phendrenad2 wrote:
         | In theory it should be possible to use the Linux kernel and
         | create an OS that doesn't resemble Linux distros like Ubuntu.
         | You could strip out systemd and put in a custom init system
         | that doesn't conform to the typical Unix daemon startup
         | expectations. You could write your own X11/wayland-like display
         | server thing (like Android does). You could replace BASH with
         | some other terminal (even something like PowerShell).
         | 
         | Some things are baked into the kernel and are tricky to work
         | around. Like the execute bit. If you wanted to make a Linux
         | distro that can run arbitrary binaries downloaded from the
         | internet (like Windows) you'll have to contend with the kernel
         | refusing to execute a binary that doesn't have the x bit set at
         | the filesystem level. (Can you even execute files from fat32 or
         | NTFS? Hmmm...)
         | 
         | Another example is the Unix file system layout. If you wanted
         | to show the user a DOS-style drive-based layout (I.E. no /mnt
         | or /bin or /etc, but instead C:\ and D:\\) then you have to
         | fork GTK and GNOME to know how to obfuscate the file system
         | like that.
        
         | [deleted]
        
         | rackjack wrote:
         | NixOS is abnormal, though I don't know if it's hobbyist. But at
         | some level OSes built on the Linux kernel will all have the
         | same "flavor", since the kernel is THE abstraction between
         | hardware and software. So if you want something REALLY radical
         | (I know this is deviating from your original premise), you'll
         | want to look at other kernels. Google's Fuchsia comes mind, as
         | does PhantomOS.
        
       | teleforce wrote:
       | This is an excellent textbook on operating system based on
       | Raspberry Pi:
       | 
       | https://www.arm.com/resources/education/books/operating-syst...
        
       | amelius wrote:
       | I hope they can make the Pi boot faster ... It's the one thing
       | keeping the Pi from being useful in most of my embedded projects.
       | 
       | I like to compare it to webpage load time. In the beginning of
       | the web, 5 seconds used to be ok, but nowadays the user wants
       | sub-second load times or they literally walk away. Similarly,
       | devices that don't turn on instantly lose points on UX as well.
        
         | magicalhippo wrote:
         | Clearly you're after a suspend/deep sleep mode rather than
         | power-off. Have you looked at the alternatives such as the i.MX
         | family?
        
         | pc86 wrote:
         | I'm not super familiar with RP, what is the typical boot time?
        
           | amelius wrote:
           | It depends on who you ask, but usually it's more than 10
           | seconds, which is too much if you want to embed it into a
           | device that must have an "instantly on" experience.
           | 
           | Even the 4 seconds mentioned by the sibling commenter would
           | be too much (e.g. if a page load of 4 seconds is considered
           | "long", then turning on a device should be shorter as well).
        
             | detaro wrote:
             | I very much doubt another OS on the Pi is going to save you
             | then. (and what the best solution is depends very much on
             | your actual use case and problem)
        
           | detaro wrote:
           | hardware/bootloader stage take around ~2s. After that it's on
           | the OS, a stripped down Linux can get down to also ~2s on top
           | of that if you don't need all the hardware. The more IO you
           | need ready, the longer it takes.
        
             | sitzkrieg wrote:
             | depends on the version of the bootloader and board too. it
             | varies a LOT and often times will sit for over 5 seconds
             | before even starting linux
        
         | jeroenhd wrote:
         | It honestly sounds like you shouldn't be using a raspberry pi
         | if this level of responsiveness is what you need. Get an ESP32
         | instead if you want instant response times, or leave the Pi
         | running at all times.
        
         | PragmaticPulp wrote:
         | This isn't really relevant to booting Linux faster because it's
         | about bare-metal programming a toy operating system. More of a
         | learning tutorial than a practical replacement for standard
         | Linux.
         | 
         | There are plenty of guides for speeding up Raspberry Pi Linux
         | boot: http://himeshp.blogspot.com/2018/08/fast-boot-with-
         | raspberry...
         | 
         | If you're developing a true embedded product then you'll be
         | making a customized Linux distribution anyway, which will only
         | include the minimum features needed during boot for your
         | application.
        
           | amelius wrote:
           | I just wish Linux booting could be done in a lazy manner,
           | such that stuff is only booted when it is needed.
        
       | jlalfonso21 wrote:
       | Don't know if someone in HN have cookie tracking but just a
       | minutes ago I was looking for this
        
         | rmorey wrote:
         | https://www.google.com/search?q=baader+meinhof+phenomenon
        
       | clone1018 wrote:
       | I love hobbiest operating systems! In a world of billions of
       | software projects, it's sad only a small handful are OSes. I
       | really love to watch what the Serenity[0] project is working on
       | and I've been working to get it running on an older computer.
       | However parts are harder to find & the spec requirements are very
       | specific (drivers are hard).
       | 
       | I love the idea of doing more operating system experiments on
       | RPIs just because of the availability & consistency of the
       | platform. You don't have to worry about thousands of drivers for
       | the most part, plus if you're using the RPI 400[1], basically
       | everything is included in the keyboard!
       | 
       | Rust seems like a good way to get people involved as well,
       | because of it's innate following. Excited to give this tutorial a
       | try.
       | 
       | [0] https://github.com/SerenityOS/serenity [1]
       | https://www.raspberrypi.org/products/raspberry-pi-400/
        
         | BrightGlow wrote:
         | I tried really hard to like SerenityOS but I think the decision
         | to make it a UNIX-like POSIX system is a mistake. The POSIX API
         | is outdated and broken in a lot of ways. I wish people would
         | stop making UNIX-like operating systems, we have enough of
         | those to deal with considering just the Linuxes and the BSDs.
        
         | userbinator wrote:
         | What do you think of the notoriously closed/proprietary
         | attitude of Broadcom and the near unavailability of
         | documentation?
         | 
         | I think the standard PC is a far better platform for OS
         | development --- decades of backwards compatibility mean
         | documentation is plentiful, and so is sample code.
        
           | smorgusofborg wrote:
           | When I did OS development we used MacBooks for x86
           | development. If a "standard PC" exists the Apple fell far
           | from it, but they have to keep their OS running more than
           | they need to save a buck on the next 10000 units.
        
       ___________________________________________________________________
       (page generated 2021-09-26 23:01 UTC)