Hi everyone, it’s been a while since I posted anything on here, so I’m making two new posts now: this one on WxFixBoot, and this one on the new DDRescue-GUI 1.6 🙂
I’ve made the usual shed-load of changes, so maybe WxFixBoot 2.0 will hopefully be ready for release soon.
Here’s what I’ve been up to, starting with the best bit:
WxFixBoot’s restore windows are no more!
Yep, I’ve FINALLY gotten rid of them for good, and the features they had are now incorporated in the New Bootloader Options Dialog.
Now, on to the serious things:
Support for Fedora and Derivatives
As I mentioned in my last post, I planned to support Fedora soon, and that made it into this release. I’ve done some basic testing, and everything seems fine, which is great 🙂
Updated System Info Window
The System Info Window has been updated to display bootloader info as well now; you can check bootloader things here now if you want to know more.
New Bootloader Options Window
This now works, and has replaced the old one. It is WAY more versatile than the old one, and far easier to use as well. It helps to gather all the settings into one place, which means there’s less to-and-fro if something isn’t right, and warnings can be made earlier, before they become a problem. Note that I do need to make it slightly shorter due to issues with screen size, but that won’t be difficult. It still looks the same, but here’s a screenshot for you:
The old bootloader options window is gone too, and all the settings are stored in dictionaries.
I got rid of one messy thing, only to make another thing messy XD
Right now, all this window does is open the Bootloader Options Window. The checkboxes on it don’t do anything, but that will be remedied later. All of the stuff on this window will be moved to the main window, which will hopefully not make that one messy.
Last, but not least, the Main Window
So, the bootloader checkboxes have been removed. Whoop dee do. Next time around, a button will replace the filesystem checker checkboxes. It will open a new window to select specific options for each filesystem, and it will let you pick which ones to check.
I’m not really sure what this will look like yet, but hopefully it’ll be good.
Behind the scenes
I have done literally tons of stuff here, so I’ll try to condense it into something readable XD
WxFixBoot now gathers Bootloader information on startup, including kernel options, timeouts, menu entries and so on. All this powers the new Bootloader Options Window. Multiple EFI partitions are now supported (1 for each OS/Bootloader), and /boot partitions for each OS are recognised too.
This is far more intelligent than it was in previous versions of WxFixBoot, because each OS is tied to its bootloader, EFI partition, /boot partition, and bootloader settings, whereas before, only 1 bootloader could be detected, and it was hard to tell which OS was in control of it. If you had more than one OS, each one was assumed to have the same bootloader as the others, and this would only be checked later, at runtime, when you were asked which OSs you wanted to change.
Because everything’s done earlier, problems can be detected and avoided, and multiple bootloaders and OSs are fully supported now, along with support for Fedora. It also doesn’t make startup any slower; due to refactoring and general maintenance, I think it’s actually faster than in the last release!
All of this was a mammoth task, and it took AGES to get it working well for each different bootloader, but it was worth doing in the end 🙂
Almost everything is now using dictionaries, and the old global EFI partition code and similar has been removed, which makes the whole thing much easier to maintain. Quite a few of the modules have merged together as well, because some had almost nothing in them after refactoring.
A lot of code has now been tested and fixed where necessary, so the project is in pretty good shape at this point; most of what’s left is stuff like implementing the filesystem check window, designing a nice text menu for ELILO to use, and so on.
Most of this stuff has been fixing little things to make stuff run faster, removing dependencies where possible, and so on.
On of the most important things I did was getting badblocks’s output to appear correctly in the output box. I’ve been trying to do that for ages, and even tried implementing pty support (read about that here, and also read many other pages; it’s complicated), all to no avail. Then I realised it uses backspace characters instead of carriage returns… At least it works now.
Here’s an in-exhaustive list of the other stuff:
- Remove functionality for backing up and restoring partition tables; there are other tools that can do this better.
- Make the MainWindow background image show on Ubuntu > 14.04.
- Various fixes along the way for LV/RAID disks in the GetDevInfo module.
- Purging packages instead of just removing them to prevent leftover config form messing things up.
- Fix TONS of bugs along the way in the bootloader config getting functions. Too many even to count!
- Fix a lot of important issues with setting LILO and ELILO configuration.
- Change a lot of stuff so WxFixBoot can work on Fedora. Examples:
- Don’t use lsb_release -a to get the OS name any more, because it’s not installed by default on Fedora.
- Look for grub configuration in /boot/grub2 too, instead of just /boot/grub.
- Use e.g. “grub2-install” instead of “grub-install” where possible, because Fedora uses different names for these commands.
This is what I hope to get done before the next (and hopefully last) pre-release version of WxFixBoot, 2.0~pre3:
- Get rid of the Settings Window, and
- Move the settings there to Main Window.
- Design the filesystem check window.
- Design a nice menu for ELILO to display on boot.
- Implement backing up and restoring the bootloader config (the config, not the bootloader itself).
- Get the system report functions working again (they’ve been disabled from almost the start of development on v2.0).
I will probably find lots of other stuff that I hadn’t thought of to do as well, as normally seems to be the case.
As you can tell, I’ve been doing a lot of programming, and I’m getting there now, I don’t think it will take me too much longer to finish this one, and then I can start on the next thing, which will be written in C++, and later have a GUI written for it in Python. Or, I could actually have a break, but not much chance of that XD
I think I’m finished with this post now, but see this one if you want to read more. If you liked or disliked this post, please let me know in the comments so I can make the next one better.
I will be doing a detailed hands-on review of Linux Mint 18 soon, seeing as it’s my daily driver, and from now on, I will post more often; I have a few interesting ideas I’d like to share, and a new project that I’ll start work on soon 🙂