site  contact  subhomenews

Kmap layout for Latin-American

October 18, 2017 — BarryK

It has been a long time since I worked with the keyboard layout files, had to relearn a few things.

In Quirky 8.3, Forum member ottod reported difficulty with selecting the Latin-American keyboard layout. I responded here:

But then it got me thinking. Quirky and Easy use Busybox "kmap" layout files, and these were originally converted from the format used in the "kbd" package (by the Tiny Core developers). A PET of these converted kmap files is here:

Quirky and Easy have the kmap files in /lib/keymaps. Looking in the PET (from above link), I found "la-latin1.kmap", which is Latin-American!

So, I have put that into woofQ, at rootfs-skeleton/lib/keymaps/la-latin1,gz, and have modified QuickSetup (/usr/sbin/quicksetup) to show that in the keyboard layout drop-down list, identifying it as Latin-American.

/lib/keymaps has console layouts. This is different from layout when Xorg is running. Xorg layouts are in /etc/X11/xkb, and the Latin-American layout is named "latam" -- see /etc/X11/xkb/symbols/latam.

QuickSetup handles the mapping of console layout names to Xorg names, and I have added automatic mapping of "la-latin1" to "latam" when X starts.

Just for the record, any layout file from the "kbd" package can be converted to Busybox kmap format:

You can get kbd from here:

Or install it via the package manager.

The conversion goes something like this:

# loadkeys /usr/share/kbd/keymaps/i386/
# dumpkmap > something.kmap
# mv something.kmap /lib/keymaps/something
# cd /lib/keymaps
# gzip something

...I think that looks right, haven't tried it, not for a zillion years.

Tags: easy

Running Easy in RAM

October 15, 2017 — BarryK

Forum member belham2 posted about the possibility of running Easy in RAM. What he means, is that bootup from USB-stick, then Easy running totally in RAM and able to unplug USB-stick.

Easy 0.6 (coming soon) kind of does this. You can take a snapshot of the current session (see Filesystem -> Easy Version Control), then edit the kernel boot parameters, insert "qfix=bak".
This will cause a rollback to the snapshot at every bootup.

That is a reasonable security measure.

If you really want to be able to unplug the USB-stick after bootup, for a perceived greater security, that can also be done, using zram.

I have implemented support for zram, for the upcoming 0.6.

In the BOOT_SPECS file in initrd.q, if you put "WKG_PARTNUM=0", the init script in initrd.q will take that to mean /dev/zram0, and will set that as the working partition.

This will of course mean a pristine bootup each time, no saved session. So, if you want to have network setup, etc., pre-configured, you would have to remaster Easy (see Setup -> Remaster Easy Linux), then set "WKG_PARTNUM=0".

Personally, I prefer the first technique. There is a perception that the second technique would be more secure. I will need to think more on that.

Forum post:

Tags: easy

XkbConfigurationManager patched

October 15, 2017 — BarryK

Puppy Forum member lp-dolittle reported a problem with setting the Swiss-German keyboard layout. I responded:

I was browsing around in the Forum, reading old posts about XkbConfigurationManager, and came across this post from npierce, dated February 4, 2012:

Then I realised that those patches, submitted in 2012, have still not been applied to XkbConfigurationManager!

Not mine in woofQ anyway. What about woof-CE? -- no, XkbConfigurationManager is not in woof-CE, it is a separate PET:, it does not have those patches. But then, that PET is still using xorg.conf, so perhaps is no longer used in Puppy builds.

Anyway, after an incredible delay of five years, I have applied the patches from npierce. I have XkbConfigurationManager in rootfs-skeleton/usr/local/apps/XkbConfigurationManager in woofQ.

...I will have to tell npierce about this! Haven't "seen" him on the Forum for a long time though.

Tags: easy

Getting started with Easy has become easy

October 10, 2017 — BarryK

Good documentation is the key to getting people interested and using Easy OS.

There was a bit of a gap, right at the start: how to download the Easy OS file and write it to a USB Flash drive. That gap is now filled:

For those already running Linux, whatever distro, the EasyDD script makes it very easy to write the Easy OS file to a USB drive. The above link also covers those running Windows.

The above link also has a download link to the latest version of EasyDD.

The overview/intro page for Easy has also been updated:

Tags: easy

EasyDD improved, instructions uploaded

October 09, 2017 — BarryK

I am filling the gap in the tutorials for EasyOS. There is more to be done, but one big gap is the lack of a simple Linux tool to write the EasyOS image-file to a USB-drive.

I have improved EasyDD, so that in CLI (commandline) mode, it will run on any Linux distro. The improved EasyDD can be downloaded from here:

Although it is extremely easy to use, some instructions are necessary, especially if you are somewhat unfamiliar with using Linux from the commandline, or using some other Linux distribution that obfuscates this kind of operation. Here is the simple how-to:

So, it should be a simple matter of downloading the image-file, run the script, or if running Windows, there are GUI apps available to write the image-file to the USB-stick.

The next thing to do is to get your PC to boot the USB-stick, and the above how-to has a link to a tutorial. Repeating it here:

Have fun!

EDIT 2017-10-09:

EasyDD has been improved, and at a new download location. There is also a new how-to. See this blog post:

Tags: easy

EasyOS now using rEFInd boot manager

October 08, 2017 — BarryK

The Easy image file, that is written to a USB-stick, now uses rEFInd for booting on UEFI-firmware computers.

The boot-partition in the USB-stick now has /EFI/BOOT/BOOTX64.EFI and /EFI/BOOT/refind.conf. It is so simple.


I compiled rEFInd from source, from here:

And applied a patch, to modify the boot menu a bit:

diff -Naur refind-code-20171008-ORIG/refind/config.c refind-code-20171008/refind/config.c
--- refind-code-20171008-ORIG/refind/config.c 2017-10-08 08:25:45.280015801 +0800
+++ refind-code-20171008/refind/config.c 2017-10-08 09:42:32.897125655 +0800
@@ -839,7 +839,7 @@
if ((Volume != NULL) && (Volume->IsReadable) && (Volume->RootDir)) {
SubEntry->me.Title = AllocateZeroPool(256 * sizeof(CHAR16));
- SPrint(SubEntry->me.Title, 255, L"Boot %s from %s", (Title != NULL) ? Title : L"Unknown", Volume->VolName);
+ SPrint(SubEntry->me.Title, 255, L"Boot %s (partition label '%s')", (Title != NULL) ? Title : L"Unknown", Volume->VolName);
SubEntry->me.BadgeImage = Volume->VolBadgeImage;
SubEntry->VolName = Volume->VolName;
} // if volume is readable
@@ -901,7 +901,7 @@

Entry->Title = StrDuplicate(Title);
Entry->me.Title = AllocateZeroPool(256 * sizeof(CHAR16));
- SPrint(Entry->me.Title, 255, L"Boot %s from %s", (Title != NULL) ? Title : L"Unknown", CurrentVolume->VolName);
+ SPrint(Entry->me.Title, 255, L"Boot %s (partition label '%s')", (Title != NULL) ? Title : L"Unknown", CurrentVolume->VolName);
Entry->me.Row = 0;
Entry->me.BadgeImage = CurrentVolume->VolBadgeImage;
Entry->VolName = CurrentVolume->VolName;
@@ -923,7 +923,7 @@
if ((CurrentVolume != NULL) && (CurrentVolume->IsReadable) && (CurrentVolume->RootDir)) {
Entry->me.Title = AllocateZeroPool(256 * sizeof(CHAR16));
- SPrint(Entry->me.Title, 255, L"Boot %s from %s", (Title != NULL) ? Title : L"Unknown", CurrentVolume->VolName);
+ SPrint(Entry->me.Title, 255, L"Boot %s (partition label '%s')", (Title != NULL) ? Title : L"Unknown", CurrentVolume->VolName);
Entry->me.BadgeImage = CurrentVolume->VolBadgeImage;
Entry->VolName = CurrentVolume->VolName;
} // if volume is readable
diff -Naur refind-code-20171008-ORIG/refind/main.c refind-code-20171008/refind/main.c
--- refind-code-20171008-ORIG/refind/main.c 2017-10-08 08:25:45.280015801 +0800
+++ refind-code-20171008/refind/main.c 2017-10-08 10:14:47.356718160 +0800
@@ -1169,7 +1169,7 @@
// name is identical except for something added to the end (e.g., VolB1 vs. VolB12).
// Note: Volume->VolName will be NULL for network boot programs.
if ((Volume->VolName) && (!MyStriCmp(Volume->VolName, L"Recovery HD")))
- SPrint(Entry->me.Title, 255, L"Boot %s from %s ", (LoaderTitle != NULL) ? LoaderTitle : LoaderPath, Volume->VolName);
+ SPrint(Entry->me.Title, 255, L"Boot %s (partition label '%s') ", (LoaderTitle != NULL) ? LoaderTitle : LoaderPath, Volume->VolName);
SPrint(Entry->me.Title, 255, L"Boot %s ", (LoaderTitle != NULL) ? LoaderTitle : LoaderPath);
Entry->me.Row = 0;
diff -Naur refind-code-20171008-ORIG/refind/screen.c refind-code-20171008/refind/screen.c
--- refind-code-20171008-ORIG/refind/screen.c 2017-10-08 08:25:45.283349135 +0800
+++ refind-code-20171008/refind/screen.c 2017-10-08 09:01:00.253552568 +0800
@@ -303,7 +303,7 @@

// print header text
refit_call3_wrapper(ST->ConOut->SetCursorPosition, ST->ConOut, 3, 1);
- Print(L"rEFInd - %s", Title);
+ Print(L"EasyOS - %s", Title);

// reposition cursor
refit_call2_wrapper(ST->ConOut->SetAttribute, ST->ConOut, ATTR_BASIC);

Easy needs the "devx" sfs loaded, nothing else needed, run this:

# make gnuefi

Rename refind/refind_x64.efi to BOOTX64.EFI and copy to boot partition.


Here is refind.conf:

timeout 10
textonly on
textmode 0
showtools shutdown,reboot,firmware
#scan_all_linux_kernels off
#scanfor manual,internal
scanfor manual
menuentry "EasyOS" {
loader /vmlinuz
initrd /initrd.q
ostype linux
options rw
submenuentry "Filesystem check" {
add_options "qfix=fsck"
submenuentry "Commandline only, do not start X" {
add_options "qfix=nox"
submenuentry "Rollback to earlier session" {
add_options "qfix=bak"
menuentry "Windows 10" {
volume SYSTEM
loader \EFI\Microsoft\Boot\bootmgfw.efi

This simple config file gives a text-mode display, with automatic scanning disabled. It will only offer to boot EasyOS.

It is very simple to add entries manually. The config file has an example for "Windows 10". It is disabled. To activate it, remove the "disabled" line, and replace "volume SYSTEM" with the label of the Windows ESP (boot) partition -- just run blkid to determine the label. Note, "SYSTEM" is the label of partition mmcblk0p1 in my Mele PCG35 mini-PC.

Or, automatic scanning can be turned on.  Change the "scanfor manual" line to "scanfor manual,internal", and uncomment "scan_all_linux_kernels off" . Hey presto, the boot menu will show all Windows and Linux OSs installed in the PC.

Wonderful! I will be updating the tutorials. This will also work for Easy installed to internal drive.

Tags: easy

rEFind UEFI boot manager

October 08, 2017 — BarryK

Easy OS is provided as a image file, that can be written to a USB-stick and then booted. It's contents can also be installed to an internal hard drive.

The image file has the Syslinux boot manager, and will boot on older computers with BIOS firmware, as well as newer computers with UEFI-BIOS firmware.

The problem I have with Syslinux though, is that development is hardly happening anymore. It is very good for BIOS-firmware, but barely-passable for UEFI-firmware. For UEFI, it cannot be used to dual-boot Linux and Windows -- which is a shame, and has made me increasingly desperate to find something else.

In the Easy image file, the BIOS-booting part of Syslinux is in the root of the boot-partition, and the UEFI-booting part is in path /EFI/BOOT. They are completely separate, hence I could replace the UEFI-part with some other boot manager.

That other boot manager could be rEFind. I have been testing it, very nice. First time that I ever played with it, most impressed. rEFind is maintained by Roderick Smith, and the home page is here:

WoofQ, my port of Woof the Puppy-builder, builds the Quirky-series of Linux, of which Easy OS is the latest incarnation. It has a skeleton-image file, with the aforementioned Syslinux already in it, and woofQ adds all the Quirky/Easy files, to create a bootable distro.

What I am thinking of doing, is modify that image file, to have rEFind in it, for the UEFI-booting, leave Syslinux for the BIOS-booting. rEFInd can automatically scan for other OSs, such as Windows, however, might leave that disabled initially, so the image file will just be for booting the drive that the image-file is written to.

Scanning and the boot-menu is controlled by a file named refind.conf, and I can explain how this can be modified to enable detection of other OSs. It is very simple to do.

This is great stuff, I am looking forward to bringing out Easy 0.6!

Tags: easy

EasyDD, frontend for dd

October 05, 2017 — BarryK

I was a busy beaver last night and today, have written EasyDD.

EasyDD is a GUI frontend to the 'dd' uility. It also works from the commandline.

Over the last few months, I have observed on the Puppy Forum, some people making mistakes with 'dd'.

Also, I am wanting to simplify the instructions for writing of the downloaded EasyOS image file to a USB-stick. With EasyDD, this can now be done in a terminal, for example:

# easydd easy-0.5-amd64.img.gz sdb    

To see cli instructons:

# easydd --help    

Or, to get the full GUI, which will ask for source and destination:

# easydd    

The good thing is, it does a lot of sanity checking, making it much harder to go wrong.

EasyDD will be in the next release of EasyOS, with a menu entry, in "Setup" category.

However, you can play with it now. Download from here:

Note, this first version only does one thing, write an image file to a drive. The image file can be compressed or not.

Of course, considering the power off 'dd', use it at your own risk. I have been using it, and it seems OK, but I still need to put in this disclaimer.

Tags: easy