Thursday, April 30, 2015

Mac Linux USB Loader v3.1 Beta Released w/ Kali Linux Support

Hello, everyone. Long time no see. I am happy to announce the release of the Mac Linux USB Loader 3.1 beta. This is strictly pre-release, and I do not recommend upgrading unless you have some experience dealing with beta software.
The pre-release contains the following changes from the current version:
  • Updated to include version 0.3.0 of Enterprise, also a pre-release
  • Added support for two languages, Spanish and Dutch
  • Removed unnecessary menu options from the menu bar
  • The Enterprise source location editor in the Preferences dialog now shows localized paths to the Enterprise source
  • Enterprise sources can now be renamed (except the default)
  • Write the new Enterprise configuration file format
  • Fixes for users with case-sensitive file systems
  • Updated Ubuntu and Elementary OS version support (mirrors for these distributions will be available upon the final release of this version)
  • Kali Linux support

And finally (drumroll please)…
The final version should be shipping very soon. Please take this opportunity to try and report any bugs which you might find.
Note about Kali: There are bugs in the current version of Kali which stop it from working on older Macs with nVidia graphics cards. I am in touch with the Kali developers and we are working to fix the problem.
Click here to download the beta and feel free to contact me and donate to the project.

Saturday, December 20, 2014

Localizers Wanted

Hello, everyone.

So, you all are probably wondering when Mac Linux USB Loader’s rewrite will be out. Well, fear not, because it will be out by Christmas, that is, assuming that you all have been good this year. ;)

But there’s one thing that I really need right now, and that’s people who can help localize Mac Linux USB Loader. Right now, Mac Linux USB Loader supports a few languages, and while that certainly isn’t bad, it precludes a lot of people from being able to use it, because it is difficult to use a program in a language that you cannot speak. Even worse is the fact that the rewrite hasn’t been translated yet - it’s only available in English!

So, this is where I’d like to solicit the help of the community. If you’re fluent in a language other than English, and you have a little bit of spare time, I’d appreciate it if could could translate Mac Linux USB Loader into your native language. All you need is some spare time and a Mac or Linux machine (you don’t even need Xcode).

If you’re interested in helping, please send me an email with the following information:

  • Your name or online alias (so that I can credit you)
  • The language that you’d like to translate Mac Linux USB Loader into (you must be fluent enough for an accurate translation)
  • How long it will take to translate
Thanks so much. If you have any questions, feel free to contact me.

Wednesday, October 22, 2014

Enterprise v0.2.1 Beta Released

I am launching on the blog-o-sphere today a post to discuss Enterprise.

Yes, Enterprise. A long overdue topic, I'm sure.

I am happy to announce that Enterprise has a 0.2.1 beta release. If you hadn't download it yet from the Enterprise website, I urge you to do so. Why? Well, for starters this new version fixes a number of key issues which have been plaguing users of Mac Linux USB Loader, namely, the infamous "booting in blind mode" error.

This beta also introduces preliminary support for both Kali Linux and Tails - two highly requested distributions. Although you need to set Enterprise up manually for these because support isn't yet integrated into Mac Linux USB Loader, it is easy to do so; see the official instructions for more.

Questions, thoughts, or concerns? As always, drop me a line, comment on this post, and feel free to donate to the project.

Saturday, September 20, 2014

Adding Startup Disk Support to Mac Linux USB Loader

Hello all. Here's a long-awaited Mac Linux USB Loader update.

I've made a number of small changes to Mac Linux USB Loader, but perhaps the biggest new feature that I'm working on is making USB drives created with Mac Linux USB Loader compatible with OS X's startup disk selector. Here is the screen I'm referring to:


In order for this to work, a few prerequisites have to be met:

  • You must enable support for HFS+ drives in Mac Linux USB Loader's preferences, under the Experimental section
  • You must be willing to have files placed outside of the EFI folder on the root of your USB drive, as OS X must find certain files in certain places (essentially, we're tricking it into thinking that your USB has an install of OS X on it)
  • You must use a distribution which includes drivers for the HFS+ file system in its initrd. Otherwise, your distribution will not be able to load properly. You may need to disable journaling.
More information will be forthcoming. In the mean time, feel free to comment, email me, or donate to the project.

Friday, September 12, 2014

Donations Accepted

I just want to announce that, starting today, I will be accepting donations to my work. You can donate any amount of money that you wish, and you can even pay by credit card.

This is the best way to help contribute to my projects if you are not a developer. Additionally, you can always help by contributing source code or by localizing resources into your native language.

Like what you see? Feel free to drop me a line or even donate to my work.

Friday, August 1, 2014

Website Upgrade

Over the course of today and yesterday, my official page on the Internet, SevenBits' Tech Site, has received a face-lift. The original page, which was based around a shade of orange looked very dated, and to tell you the truth I never liked the design.

This update brings the website into the realm of other personal web pages and makes it look and function better on mobile environments such as iPhones and iPads.

Feel free to email me with any comments or suggestions.

Friday, July 4, 2014

This Independence Day, Celebrate Something as Important as Freedom Itself

America. The land of the free and the home of the brave has braved many changes through her years. So, this Independence Day, while we celebrate the brave actions of our compatriots 238 years ago, we also have another thing to be thankful for.

A new consumer preview release for Mac Linux USB Loader.

So celebrate the day in style with with a new preview of Mac Linux USB Loader's rewrite. Some specific changes since last time:


  • The distribution downloader almost completely works now. It grabs the list of mirrors for a specific distribution from my repository and displays a nice little menu for you where you can select the mirror where you want to download. The mirrors are currently divided by country, with, obviously, the greatest country on the planet listed first (oh, sorry, excuse my jingoism - it is Independence Day, after all).




  • And, the distribution downloader has a preferences window, though it doesn't really work yet. Most of the settings are saved, however.




There are a few additional changes here. Among them are:


  • Some code was added to check the version of OS X that the user is running and, if it's Yosemite, it makes some small UI tweaks.
  • The table in the Enterprise setup preference pane was tweaked under the hood.
  • And some other, really unimportant stuff.

So, go ahead! Do your patriotic duty and download the latest test image now. Your country needs your immediate assistance! And always remember....


Okay, so maybe this isn't as important as freedom itself. But it's still pretty neat, right? :)

CLICK HERE TO DOWNLOAD

Tuesday, June 3, 2014

You Can Design the Enterprise Logo!

Enterprise, my UEFI boot loader for Macs, is in deep need of its own logo. Right now, it's being represented by the UEFI logo, which isn't really suitable. With this in mind, I want to reach out to those who have design skills to design a logo. Here are the only requirements:


  • The logo should be rendered in a PNG and SVG format and be at least 512 x 512 pixels or 1024 x 512 pixels, or any larger equivalent ratio. Props if you do both!
  • Displaying the name "Enterprise" is not required but if you can work it in I won't complain.
  • There are no specific color or design restrictions.
  • You should work in something about Enterprise in the work, for example, its relation to the Starship Enterprise from Star Trek, its purpose, its relation to Linux and OS X, its foundation on the UEFI boot process, etc. But I'll waive these requirements if you create something really cool. ;)
  • You shall license the work under the LGPL or similar equivalent license. You shall retain copyright on your design, but agree that I may use the icon, gratis, in all works related to Enterprise in perpetuity.
  • Entries must be received on or before the first day of July, 2014. A winner will be selected within two weeks. Entries must be submitted by email here.


Unfortunately, I cannot offer any form of monetary prize, however, the winner will be credited for their work and will be given the opportunity to try out the beta versions of the next major release of Incinerator before anyone else (trust me, it'll be huge), which should be relatively soon.

I look forward to seeing what you come up with!

Monday, June 2, 2014

OS X Yosemite

Apple today announced at its WWDC keynote the new version of OS X that will be arriving soon. Codename: Yosemite (YO-SEM-MIT-TEE). It shows great promise, but I'm not a fan of the new UI. Let's hope this doesn't become Windows 8.


What do you guys think? Comment below.

Saturday, May 24, 2014

Mac Linux USB Loader: Declassified

So, for those of you who frequent this blog, you know about Mac Linux USB Loader, and how it is a huge project, at least when compared with some of the other stuff that I've done. You probably also know that Mac Linux USB Loader is currently being rewritten to be more future-proof and support more distributions. So, because not all of you can download and compile source code, I figure I'll share some more development screenshots.


This is the new persistence setup window. The layout is pretty simple and not all too complex. I made it easy to setup persistence, and you literally just need one mouse click, which is much different from the current set of instructions, which requires a command line and knowledge of how to use it. The default value used when setting up persistence is 128 MBs of persistent storage, which is usually enough for installing drivers and the like.


This is the distribution downloader. It doesn't really work yet and is currently in development. It is an expansion of the current distribution downloader panel in the current version of Mac Linux USB Loader. The distribution downloader offers a stable and reliable way to download ISO files of Linux distributions which can be used by Mac Linux USB Loader. I intend to have some sort of mirror support as well, so that you can download the distribution from a server closest to you, if supported by the distribution vendor. My plan is to open-source this whole process, so that everyone can download the mirror lists and make suggestions, etc from a site like Github. More details on this will be forthcoming.

So what do you think about the progress being made on Mac Linux USB Loader? Drop me a line and let me know your thoughts, and, as always, comments are welcome.

Thursday, March 20, 2014

Mac Linux USB Loader's New USB Setup Window

Let's face it. Mac Linux USB Loader's current USB device setup window looks really bad. It's okay, you can admit it. It was kind of haphazardly put together without a real regard for design. Heck, the window can't even be properly resized.

With Mac Linux USB Loader's new rewrite, these issues will be put to bed. The new live USB setup window is a lot better and is more linear. By what margin is up to you to decide, but I think everyone will agree there's been improvement:


The very old but much loved drop down menus have been replaced with a much sleeker user interface inspired by simplicity. To choose the USB drive to setup a live USB for, you now click on a visual representation of your drive in the destination selector panel. And the screenshot probably spoils another new feature coming in this rewrite - you can now add your own copies of Enterprise to a list of sources in Mac Linux USB Loader's preferences. This means that if you like to compile your own binaries of Enterprise (because you don't trust me, for example) you can do that and use them instead of those shipping with the application.

And yes, you can resize and take the window fullscreen now.

Any thoughts? Comments? You can comment below or for a quicker response email me here.

Friday, February 14, 2014

Happy Valentines' Day, Everyone!

Just wanted to wish anyone who reads this a happy Valentines' Day. Hope you're doing well and everything.

Now, for a totally unrelated note: Fedora 20 boots via live USB on my MacBook Pro! Hallelujah! Looks like there's no need to add Fedora support to Mac Linux USB Loader. Now Canonical, why can't you do the same things they're doing? You know many Mac users want to load Ubuntu on their Apple machines, right? ;) I mean, it even has support for OS X's Startup Disk Selector panel in System Preferences.

I guess this just goes to show how different Linux distributions have differing levels of support to the various hardware types out there.

Sunday, February 2, 2014

A New Mac Linux USB Loader

Hello everyone,

2014 is poised to be an interesting year. This is especially true because, as of the middle of last month, Mac Linux USB Loader has quietly been the subject of a complete, from scratch, no holds barred rewrite, with nothing recycled from before. The original program was designed when I didn't know much about the Cocoa framework, with which the program is written, and now with my increased knowledge I am able to design a much better application that is less buggy, more stable, and that will actually let you open an ISO more than once. Here's a screenshot of the new application's main screen:


The rewrite brings other beneficial changes as well. Mac Linux USB Loader can now set up persistence automatically - no Linux or command line required - making it even easier now to save data between sessions. I'm also working on enhancing Enterprise to detect persistence and enable it automatically on supported distributions, so you don't need to enter a secondary menu and enable it amongst a myriad of other technical options.

The new rewrite implements sandboxing for security purposes, and though it probably won't end up on the Mac App Store because of Apple's rules against mentioning other computing platforms, it would be nice if it did.

Technical changes aside, the revised application features a more "Mac-like" user interface, with greatly improved aesthetics, including icons from KDE's Oxygen and a new About window (with scrolling text!) that looks much cleaner than before:


I'm also grouping related options together. Everything from deleting an Enterprise installation to checking out installed distributions will be grouped under the Setup USB Device panel. And the Distribution Downloader, which will be making a comeback as well, will be greatly enhanced.

This new rewrite also has an important legal change - I've licensed the application under a 3-clause BSD license. This protects my rights to the program's name and likeness but allows liberal use of the code.

I've been working pretty hard on this, and I don't think it'll be ready anytime soon, so I can't give an ETA yet. Sorry.

What do you guys, the users, think of these changes? Drop me a line.

Friday, January 24, 2014

Roadmap for Enterprise and Mac Linux USB Loader

I'm just going to take a short while and discuss where I intend to take Mac Linux USB Loader and Enterprise. All software projects need goals, otherwise, they mute into unmaintainable beasts that cause frustration and leave the authors pulling their hair. Sooner or later, it happens to everyone.

But I'm trying to avoid that problem as best I can by planning ahead of time exactly what Enterprise will be, and what it won't be. I may revise this over time, but it will be relatively static.

So, where to take Enterprise? Well, here are a few talking points:

  1. Enterprise is concerned with setting up the Linux distribution only, not for actually loading the kernel. I'm using GRUB for this because I don't want to write it myself. Because of this, I'm not adding my own kernel loading code. Why duplicate what's already been done?
  2. I want to allow the user to manually enter their own Linux kernel parameters in addition to the ones already present in the menu. I can't predict every individual use case, nor am I going to.
  3. Adding support for booting multiple Linux distributions is a big thing that needs to be added as well. This will require large changes to Enterprise. I've already started this.
  4. I may decide to support UEFI support boot if I end of supporting PCs or if Macs end up adopting it. I definitely am not going to do this unless I have to, but it's an opportunity that I'm not necessarily opposed to.
And where to take Mac Linux USB Loader?


  1. I want to add native persistence support to Mac Linux USB Loader so that users can natively setup persistence for their drives. I'm already working on this in another branch of the code, where it's coming along nicely.
  2. To ease expandability, I want to allow users to get Linux distribution boot info from a server instead of being hard-coded into the application.
  3. I want to allow users to update the version of Enterprise installed on their USB drives when an update is released.
Those are my goals for right now. What do you guys think? Comment below.

Thursday, January 16, 2014

E2fsprogs for Mac

For anyone out there looking for a copy E2fsprogs for Mac, look no further. I've compiled the latest version for Intel OS X users as part of my development for Mac Linux USB Loader and am sharing it with the community. These come directly from the development git repository as of 16 January 2014.

If and when I need to update this, I'll post the changed link on this page.

UPDATE 20 MAY 2014: I am now hosting these directly on my Github Pages site, sevenbits.github.io. This lets me control the link directly and allows direct downloading without going to a third party page with advertisements. Plus, I'm not at the whim of others.

UPDATE 31 OCTOBER 2017: Apparently, people are still accessing this old post. It has come to my attention that the link here is broken, so I have updated it to point to my new web server.

Included programs:

base_device
chattr
e2freefrag
e2initrd_helper
filefrag
logsave
mke2fs
tune2fs
uuidgen
badblocks
blkid
dumpe2fs
e2image
e2undo
fsck
lsattr
mklost+found
uuidd

Download Here (hosted on my website)

Have fun, and hope this proves useful to someone.

Thursday, December 19, 2013

Mac Linux USB Loader version 2.0

This consumer preview release includes loads of new features including:

  1. Enterprise, my new UEFI boot loader that is far more customizable. You can view more information here.
  2. Updates to localizations. Added a traditional Chinese localization (done by a third party user) and updated Spanish localization. For credits for localizations, see this file.
  3. Big fixes and other changes.
If you want to download it, you can get it here. Please note that this is still beta, so it may be buggy. You can also email me if you have problems.

Sunday, November 24, 2013

A Sneak Preview of Enterprise

So, after a long, hard month of serious development (before this was a rather lackluster and on-and-off effort) I am pleased to show some screenshots of Enterprise, my custom UEFI boot manager program that I wrote about at length in this post. However, there are some (small) details that are different in the plan versus the implementation, and that's of course because I've found a better way to do things. So, here's are some screenshots, as promised, with comments:


This screen (which may receive minor tweaking) allows the user to select one of two basic options: starting the Linux distribution immediately or, in case there's issues with the video card, etc, to customize Linux kernel boot options.


This is what the boot options screen that I just mentioned looks like. You can toggle a variety of boot options (up to 9 is supported with this approach) that have a variety of functions. Some of them make troubleshooting easier, while others facilitate installing Linux to your Mac. I plan on adding more before the final release. Please note that not all options are supported by all distributions.

Love it? Hate it? Have suggestions? Drop me a line. I'm shooting for a release date of the 30th of November and I'd love to get some feedback.

Thursday, October 17, 2013

Enterprise Developing is Rolling...

I am happy to announce that, after a long interim, development on Enterprise is going full speed ahead. Hopefully, there won't be any more long delays in development. I know that this is a much-needed program, due to many bug reports detailing the flaws with Mac Linux USB Loader's current firmware solution, and so hopefully it should be in a somewhat beta-testable state soon.

What's currently working is the initial menu and the kernel boot options configuration panel (from where, you'll be able to add options like nomodeset and acpi=off to the kernel boot procedure).

What still needs to be done is processing Enterprise's configuration file - currently it checks for the existence of such a file, but doesn't read its content - it could contain song lyrics for all it mattered - and passing everything to GRUB, which will load Linux from the supplied ISO file like at present.

Screenshots will be coming soon, but will take some setup to capture, as Enterprise runs before any operating system, and thus any potential for screen capturing.

Friday, August 30, 2013

Implementation Details of Enterprise, my Custom UEFI Booting Solution for Linux on Intel Macs

My repository on GitHub holding the source code for my program Enterprise is currently sparse on commits - no updates in over a month. But before you accost me for being lazy, listen up, for I have not been lazy, nor has the project been abandoned. I simply have been using this time to figure out exactly how I'm going to implement the program instead of simply throwing code together like before.

So, what do I have in mind? Well, listen up.

My booting solution for booting Linux distributions via EFI is a three-stage loading process, involving (at least) three files instead of the present two (two EFI executables and one ISO file of your preferred Linux distribution). These programs will be executed in sequential order. This works out as follows:
  1. The user boots into the USB drive made by Mac Linux USB Loader. Enterprise will then perform some hardware checks to ensure that you actually booted on a Mac. It will then display a menu similar to those found in gummiboot or GRUB. I'm looking at rather basic options at this point - the options will be to boot normally, boot with certain options (like no graphical X desktop and/or disabling kernel mode setting), or reloading and/or dropping into an EFI shell.
  2. If the user chooses to boot the operating system, we then write out a configuring file detailing exactly what is needed to boot Linux on the current hardware. Then we pass control off to GRUB, which is another EFI executable in the same directory. GRUB reads this configuration file and boots the Linux distribution included in the installed ISO file.
  3. GRUB loads the kernel and RamDisk from the ISO using loopback. Together the kernel starts up the remainder of the operating system.
This approach will ultimately yield itself to be a more viable alternative to the current solution, which works with hard coded kernel locations inside of the ISO (however, loopback support will still be required, as this is required for GRUB to boot from the ISO file - there isn't really any way around this). Additionally, it will allow me to add support for more distributions with relative simplicity.

For those of you who want to see the directory structure, here's what it will look like:


I know many of you have been waiting very patiently for a solution. Tails, Knoppix, Backtrack, and Arch Linux are all distributions that I've been requested to support. I assure you that I am working as fast as I can to get these distributions working with Mac Linux USB Loader. I have no idea when this solution will be ready for beta testing, but everything should be on track now.

What do you think of this setup? Comment below. If you prefer to communicate via email, I can be reached here.

Thursday, July 18, 2013

How to Code UNIX Daemons - Part One

In continuing with my time-honored tradition in bringing you the absolute latest in small code samples, here's an example of how to write a UNIX daemon. For the unfamiliar, daemons are background backgrounds that are typically started when the system starts up and have one specific task - typically ranging from serving web pages (the Apache web server, https, is a daemon, as is sshd, which listens for ssh requests on remote servers you can ssh into).

So, without further ado, here's the code sample:

 #include <unistd.h>  
 #include <fcntl.h>  
 #include <stdlib.h>  
 #include <string.h>  
 #include <stdio.h>  
 #include <syslog.h>  
 #include <sys/types.h>  
 #include <sys/stat.h>  
 int main(int argc, char *argv[]) {  
   // Set our uid to root so we get root permissions.  
   setuid(0);  
   // Fork off.  
   pid_t pid;  
   int current_arg = 0;  
   pid = fork();  
   if (pid < 0) {  
     exit(EXIT_FAILURE);  
   }  
   if (pid > 0) {  
     exit(EXIT_SUCCESS);  
   }  
   umask(0);  
   // Open a syslog so we can post messages, as daemons shouldn't access  
   // stdout.  
   openlog(argv[current_arg], LOG_NOWAIT|LOG_PID, LOG_USER);  
   syslog(LOG_NOTICE, "Successfully started daemon\n");  
   // Create a new process group.  
   pid_t sid;  
   sid = setsid();  
   if (sid < 0) {  
     syslog(LOG_ERR, "Could not create process group\n");  
     exit(EXIT_FAILURE);  
   }  
   // Set our working directory to / so we know where we're writing files  
   // from. Also good practice.  
   if ((chdir("/")) < 0) {  
     syslog(LOG_ERR, "Could not change working directory to /\n");  
     exit(EXIT_FAILURE);  
   }  
   // Close the standard streams like stdout so we're not attached to the  
   // console (and thus killable with Control-C).  
   close(STDIN_FILENO);  
   close(STDOUT_FILENO);  
   close(STDERR_FILENO);  
   // Now mimic some daemon activity. A real daemon would actually do  
   // something here, such as monitor CPU temperature or something...  
   do {  
     syslog(LOG_NOTICE, "Sending a message\n");  
     sleep(10);  
   } while (1);  
   // Close our access to the syslog.  
   closelog();  
 }  

Put this into a text file, and then compile it with your C compiler. You then go into the terminal, run your program, and… it exits immediately - what gives?

The truth is, something did happen - you just don't notice. Thanks to our fork() call, we split off from the main process and run in the background.

In the second part of this series, we'll write a more complicated daemon program. See you later!