The goal of this guide is to let you build your own flashable firmware in as few simple steps as possible. It is intended for Windows users and users who already have a Debian or Ubuntu server. You are required to have a 64 bit version of Windows and at least 8 GB free disk space. Setting up for building on a Mac will be very similar (Virtualbox is available), but I don't have one so I can't test it.
The main advantage of building your own firmware is that it compresses the files, so that you will have room for much more stuff. It is particularly noticeable on routers with 16 MB flash RAM or less. It also lets you change some options that can only be changed at build time, for instance the features included in BusyBox and the block size of SquashFS. Larger block size will give better compression, but may also slow down the loading of files.
Alternative guides to achieving the same goal: Quick Image Building Guide, Using the Image Builder.
If you already have a Debian/Ubuntu server you can skip to part 2.
As an alternative to setting up a virtual machine, Windows 10 users can install Ubuntu from Microsoft Store and skip to part 2. Make sure to run these commands after installation:
sudo apt-get update sudo apt-get upgrade
Disabling the virus scanner will speed up the compilation but Virtualbox is faster still.
This program will let you run a virtual Linux server on you Windows based computer. Download the newest version from virtualbox.org and install using default settings.
Download the newest VirtualBox (VDI) 64bit Debian image (currently 9.3) from osboxes.org and unpack it using 7zip. 7zip can be downloaded from 7-zip.org.
The interface for changing the keyboard is a bit weird, but you can find the correct place like this:
From now on, whenever you should be in the terminal to type a command the syntax will look like this:
ls -l
meaning you should type ls -l and press enter (try it). Follow up questions with obvious answers like typing the passsword (osboxes.org) og confirming with y will not be included specifically in this guide. Cut and paste will unfortunately not work at this moment.
su - nano /etc/apt/sources.list
You are now editing the list of servers to get updates from.
deb http://deb.debian.org/debian/ stretch main contrib deb-src http://deb.debian.org/debian/ stretch main contrib
apt update apt dist-upgrade reboot
Log in and open the terminal again when it has rebooted.
su - apt install linux-headers-amd64 make sudo
Click Devices (top line), select the last option (Install Guest Additions). The automatic install does not seem to work, so it doesn't matter if you select cancel or run.
sh /media/cdrom/VBoxLinuxAdditions.run poweroff
After this you will need to start the server again. Now you can change to a higher resolution so you get a larger window if you like:
And lastly (hopefully you can cut and paste now). Note that cut and paste only works for text without any kind of formatting. You may need to copy the text to notepad and then copy it from there to clean it up.
su - adduser osboxes sudo echo ' osboxes ALL=(ALL) ALL' >> /etc/sudoers exit
Your virtual Debian server should now be set up correctly for following the rest of the guide. Congratulations. As a bonus, you now have a fully functional Linux computer that you can use for anything, and with the added safety of running it as a virtual machine. If you let the resolution match your monitor and select View/Full-screen mode there is almost no difference from a standalone Linux computer.
Use the Quick Image Building Guide for the initial checkout, but to get the stable version you need to do this after you run “cd openwrt”:
git tag git branch
This will give you a list of tag names for releases and development branches. Check out the one you want like this:
git checkout <tag or branch name>
Then continue following the Quick Image Building Guide
You select a package using space one or more times. When you select something, always make sure it has a * and not an M in the selected field. * means it will be included in the image, while M means that it will only create a package for it, which kind of defeats the point of following this guide.
Except for choosing the target I suggest that you don't mess with the options above Base system. Also, in general, don't uncheck anything that is selected by default unless you really know what you're doing. If something is selected with “-*-” (so you can't uncheck it) it is because something else depends on it.
Instructions on how to include config files in the image (for instance from the backup you can download from the router): Custom files
Run
make
when you have selected what you want. This will take a very long the first time. Don't use the -j option mention in the Quick image building guide, it is asking for trouble.
If it completes without errors you should now have images. If not then try running
make -j1 V=s
to get more details about the error. A common mistake is to include packages that are mutually exclusive. After a successful build you can list the generated files using this command:
ls -l bin/targets/*/*/
Copy the image files to your shared Windows path:
sudo cp bin/targets/*/*/* /media/sf_Shared
Important: Make sure the image is at least about 500 KB less than the total amount of flash ROM, as some space is needed for configuration and other data. The absolute limit will vary depending on router model and how much configuration data you want to store. You can get an indication by being on the safe side the first time, and then check how much free space there is when you have installed it.
To erase just the config:
rm ~/openwrt/.config
To check out a different version:
rm -rf ~/openwrt/
the follow part 2 of the guide from the start, except you can skip the sudo apt-get commands.
For users:
Mostly for developers:
Don't hesitate to ask in this forum thread if anything in this guide is unclear.