site  contact  history  index

Fix broken video entry in Limine menu

September 27, 2022 — BarryK

After moving from rEFInd and Syslinux boot managers, to Limine, the "Fix broken video" menu entry got left out. I introduced this here:

https://easyos.org/user/how-to-fix-broken-video.html

There are menu entries in the 'initrd'; however, "Fix broken video" requires the "nomodeset" kernel commandline parameter, so has to be an entry in the boot-loader, before the kernel is started.

Have added it to Limine:

img1

Want to think about it some more, but that will do for now.     

Tags: easy

Kernel 5.15.70 with simplefb

September 27, 2022 — BarryK

A very interesting discovery was made. Easy 4.4 was released with Limine 3.25, and Reynaldo reported got a black screen at bootup:

https://forum.puppylinux.com/viewtopic.php?t=6881

I recalled a change that was made last year:

https://bkhome.org/news/202111/kernel-51078-with-legacy-framebuffers.html

...I did decide to keep the legacy framebuffers, using the rather vague logic that it might be better for older hardware. At least, I think that was my reasoning at the time.

Limine developer mintsuki fixed it. But, tested with an older kernel that has "simple framebuffer" not legacy-framebuffers, and the problem I had with black screen on my old "HP motherboard" PC, just went away -- it booted.

So, it is looking like simplefb is the way to go, and I have compiled the 5.15.70 kernel, with the entries in bold enabled (builtin):

> Device Drivers > Graphics support > Frame buffer Devices > Support for frame buffer devices ── 
┌──────────────────────────── Support for frame buffer devices ─────────────────────────────┐
│ Arrow keys navigate the menu. <Enter> selects submenus ---> (or empty submenus ----). │
│ Highlighted letters are hotkeys. Pressing <Y> includes, <N> excludes, <M> modularizes │
│ features. Press <Esc><Esc> to exit, <?> for Help, </> for Search. Legend: [*] built-in │
│ [ ] excluded <M> module < > module capable │
│ ┌────────^(-)───────────────────────────────────────────────────────────────────────────┐ │
│ │ <M> VIA VT8623 support │ │
│ │ <M> Trident/CyberXXX/CyberBlade support │ │
│ │ <M> ARK 2000PV support │ │
│ │ <M> Permedia3 support │ │
│ │ <M> Fujitsu carmine frame buffer support │ │
│ │ DRAM timing (Eval board timings) ---> │ │
│ │ <M> Silicon Motion SM501 framebuffer support │ │
│ │ <M> SMSC UFX6000/7000 USB Framebuffer support │ │
│ │ <M> Displaylink USB Framebuffer support │ │
│ │ < > Framebuffer support for IBM GXT4000P/4500P/6000P/6500P adaptors │ │
│ │ < > Virtual Frame Buffer support (ONLY FOR TESTING!) │ │
│ │ <M> E-Ink Metronome/8track controller support │ │
│ │ <M> Fujitsu MB862xx GDC support │ │
│ │ GDC variant (Carmine/Coral-P(A) GDC) ---> │ │
│ │ [*] Support I2C bus on MB862XX GDC │ │
│ │ < > Simple framebuffer support CONFIG_FB_SIMPLE │ │
│ │ < > Solomon SSD1307 framebuffer support

Also:

> Device Drivers > Firmware Drivers ──────────────────────────────────────────────────────────── 
┌──────────────────────────────────── Firmware Drivers ─────────────────────────────────────┐
│ Arrow keys navigate the menu. <Enter> selects submenus ---> (or empty submenus ----). │
│ Highlighted letters are hotkeys. Pressing <Y> includes, <N> excludes, <M> modularizes │
│ features. Press <Esc><Esc> to exit, <?> for Help, </> for Search. Legend: [*] built-in │
│ [ ] excluded <M> module < > module capable │
│ ┌───────────────────────────────────────────────────────────────────────────────────────┐ │
│ │ ARM System Control and Management Interface Protocol ---- │ │
│ │ < > BIOS Enhanced Disk Drive calls determine boot disk │ │
│ │ [*] Export DMI identification via sysfs to userspace │ │
│ │ < > DMI table support in sysfs │ │
│ │ < > iSCSI Boot Firmware Table Attributes module │ │
│ │ < > QEMU fw_cfg device support in sysfs │ │
│ │ [ ] Mark VGA/VBE/EFI FB as generic system framebuffer CONFIG_SYSFB_SIMPLEFB │ │
│ │ [ ] Google Firmware Drivers ---- │ │
│ │ EFI (Extensible Firmware Interface) Support ---> │ │
│ │ [ ] Load custom ACPI SSDT overlay from an EFI variable │ │
│ │ Tegra firmware driver ---- │ │

That CONFIG_SYSFB_SIMPLEFB is named CONFIG_X86_SYSFB in the 5.10.x kernel.

Note, CONFIG_FB_SIMPLE is also deprecated, it is missing in the 5.16 kernel, replaced with CONFIG_DRM_SIMPLEDRM. Will cross that bridge when I get to it.      

Tags: easy

Rust Hello World reduced to 31KB

September 26, 2022 — BarryK

A criticism that I have of Rust is that it creates very large binaries. Yes, there are websites that explain how to reduce the size, but have to go through a lot of steps.

This evening I was looking at this site, and compiled the first example:

https://stevedonovan.github.io/rust-gentle-intro/1-basics.html

..."Hello World!" was 315KB after stripping. Actually, that is better than last time I tried it. But, if I am going to write lots of utility programs in Rust, then they will need to be smaller.

Nim "Hello World!" binary is 19KB, with some simple optimizations. Create file 'nim.cfg' in same folder as the 'hello.nim', with this content:

--mm:orc
--define:useMalloc
--d:release
--opt:size
--passC:"-flto"
--passL:"-flto"

Then compile and strip:

# nim c hello.nim
# strip hello

So the question is, can we, without too much difficulty, bring the Rust Hello World down to a comparable size? I found this site:

https://github.com/johnthagen/min-sized-rust

...it explains a series of steps to progressively reduce the size. The optimizations down to "Abort on panic" requires a configuration file 'Cargo.toml' with this in it:

[package]
name = "min-sized-rust"
version = "0.1.0"
authors = ["johnthagen <johnthagen@gmail.com>"]
license-file = "LICENSE.txt"

[dependencies]

[profile.release]
opt-level = "z" # Optimize for size.
lto = true # Enable Link Time Optimization
codegen-units = 1 # Reduce number of codegen units to increase optimizations.
panic = "abort" # Abort on panic
strip = true # Automatically strip symbols from the binary.

...disappointing though, Hello World! became 271KB, still rather large.

The next two sections "Optimize libstd with build-std" and "Remove panic String Formatting with panic_immediate_abort" reduce the binary to 31KB.

Beyond that, looks like it is compromising what Rust is all about, so went no further. 31KB is acceptable.

The execution line that produced the 31KB binary:

# cargo +nightly build -Z build-std=std,panic_abort -Z build-std-features=panic_immediate_abort --target x86_64-unknown-linux-gnu --release
...which is not too onerous. If compiling apps can be setup with these optimizations, then it does increase the attractiveness of Rust as a systems-programming language.     

Tags: easy

EasyOS version 4.4 released

September 25, 2022 — BarryK

The previous release was version 4.3.4, on August 15, 2022:

https://bkhome.org/news/202208/easyos-dunfell-series-64-bit-version-434-released.html

Version 4.4, 64-bit Dunfell-series, brings lots of little fixes and enhancements. Plus, a big-ticket item; apps now able to run in containers as user "spot", an extra security layer above "crippled root".
As this is the Dunfell-series, almost completely compiled from source in "meta-quirky" (OpenEmbedded), the package repository is small compared with mainstream Linux distributions; however, this situation is being greatly ameliorated by additional SFS mega-packages -- with more to come.

Please read the release notes here:

https://distro.ibiblio.org/easyos/amd64/releases/dunfell/2022/4.4/release-notes.htm

EasyOS is available as image-files in English, French and German, download from here, courtesy of ibiblio:

https://distro.ibiblio.org/easyos/amd64/releases/dunfell/2022/4.4/

Or, if you want fast download in Europe, mirrored courtesy of NLUUG:

https://ftp.nluug.nl/os/Linux/distr/easyos/amd64/releases/dunfell/2022/4.4/

If you need assistance with writing an image file to a USB-stick, there are various tutorials at easyos.org, including this:

https://easyos.org/install/how-to-install-easyos-on-a-new-ssd.html

Of course, if you already have EasyOS running, just click on the "update" icon to update to the latest version. The difference-file to update from 4.3.4 to 4.4 is only 84MB. This simple updating is introduced here:

https://easyos.org/user/how-to-update-easyos.html

Some extra release notes:

It is planned to change the Chrome SFS to run as user spot. Currently it runs as crippled-root. Will probably do that tomorrow.

One of my old computers has a radeon video card, and the 'radeon' Xorg driver loads, but mouse doesn't work. I was able to use the keyboard; from memory, I think ALT-F1 brought up the menu and was able to exit to the commandline and run the 'xorgwizard'. The Xorg 'vesa' driver will probably work, which is not satisfactory. I have had the mouse working with previous releases of EasyOS, so this needs looking into.

If there is anything that you would like to contribute, you are welcome at the EasyOS section of the Puppy Forum:

https://forum.puppylinux.com/viewforum.php?f=63

Extra links:

The kernel source, with patches and build scripts, is here:

https://distro.ibiblio.org/easyos/source/kernel/5.15.x/5.15.69-20220920/

The meta-quirky layer for OpenEmbedded/Yocto is available as a tarball:

https://distro.ibiblio.org/easyos/project/oe/dunfell/2022/dunfell-20220924.tar.gz

woofQ, the project that imports binary packages from meta-quirky and builds EasyOS:

https://distro.ibiblio.org/easyos/project/woofq/2022/woof-project-20220924.tar.gz

Have fun!        

Tags: easy

Firefox running in container as user spot

September 24, 2022 — BarryK

Up until now, apps running in a container run as "crippled root". Which is fine, very secure. Some apps though, are not happy; they think that they are running as root and will complain, or require special parameter on the commandline, even refuse to run.

That is annoying, as "crippled root" is very secure. However, I have finally fixed running apps non-root in containers. This adds an extra layer of security; if somehow an attacker manages to elevate themselves out of spot to root, they are still in "crippled root". This is great.

Inherited from Puppy Linux is user "spot". The logo for spot is a drawing of my daughter's little dog Vincent. You can see the logo here:

You can also see the logo in a running EasyOS, at /home/spot

To prove the concept, I have configured Firefox to run as user spot in a container. This is the default in the upcoming EasyOS 4.4. You can see the checkbox "user spot" in the Easy Containers GUI (via the Filesystem menu):


img1

I also fixed Firefox able to save to /files/shared, so anything you download will appear at the same location /files/shared outside the container. All other paths under /files in the container are not available outside.

First tests, working great, but more testing revealed a couple of issues, that I know how to fix. Expect to do so tonight or tomorrow morning. So EasyOS 4.4 is not far away.

One clarification: Firefox running as spot is only in the container. Firefox on the main desktop runs as user "firefox". So, any app running non-root on the main desktop will run as its own user, but any app running non-root in a container will run as user spot.

In theory, could have firefox running as user firefox in a container; however, that makes the coding a but more complex. And besides, there is no need. Firefox is running all on its own in the container, so no problem with just run as spot.       

Tags: easy

Limine 4.1.2 black screen

September 23, 2022 — BarryK

I posted about Limine 4.1.2 fixing a black screen:

Limine showstopper bug fixed — September 20, 2022

I have built EasyOS 4.4, for final testing, and tested it on some of my small collection of computers. Unfortunately, get a black screen on one of the computers. Have reported it:

https://github.com/limine-bootloader/limine/issues/222

Previous versions of Limine work on that computer. One step forward, one step back!

EDIT 2022-09-24:
As reported in the above link, the problem is fixed. I have tested Limine 3.25 on my small collection of computers and it works great. This will be in the upcoming EasyOS 4.4.
 

Tags: easy

PKGget package manager freeze fixed

September 21, 2022 — BarryK

Rick C sent me an email recently reporting this. I know about this problem, it has been there since the very early days of the Puppy Package Manager. If you try to drag the divide between "Package" and "Description", as shown by the red arrows, another windows appears, then the entire desktop becomes unresponsive, requiring the power button to be held down to power-off. Photo:

img1

The offending code is in /usr/local/petget/ui_Classic (also in ui_Ziggy):

  <tree column-resizeable=\"0\">
<label>$(gettext 'Package')|$(gettext 'Description')</label>
<height>280</height><width>668</width>
<variable>TREE1</variable>
<input${APPICONXMLINSERT}>cat /tmp/petget/filterpkgs.results.post</input>
<action signal=\"button-release-event\">/usr/local/petget/installpreview.sh</action>
<action signal=\"button-release-event\">/usr/local/petget/finduserinstalledpkgs.sh</action>
<action signal=\"button-release-event\">refresh:TREE2</action>
</tree>

...I fixed it with the bold text, which disables column-divider drag.

An alternative fix would be to change signal "button-release-event" to "button-press-event", which does avoid the hang, but causes other problems.

Another fix is to change the signal to "row-activated", but that then requires a double-click on an entry to choose it, which I would rather not do.      

Tags: easy

Global IP TV Panel MK5 PET released

September 21, 2022 — BarryK

Steve (ETP in the forum) has released "MK5" of his Global IP TV Panel. Forum thread here, currently only has MK4:

https://forum.puppylinux.com/viewtopic.php?t=689

I have received positive feedback about this, so will continue to include it in EasyOS. Thanks for your contribution, Steve!  

Tags: easy