Version 5 (modified by k.szczesny@…, 12 years ago) (diff) |
---|
This page is about creating a build environment on OpenSUSE which will allow you to build DebWrt for your router of choice. I am not 100% sure, but I believe this guide should allow you to build DebWrt on any Linux system. This page is current at the time of writing [20 Feb 2011].
Prerequisites & Assumptions
- You have an up to date OpenSUSE system
- You know your way around the system
- You have a lot of patience
- You want your DebWrt router to be Debian Squeeze based
Debootstrap
Download current release of debootstrap.
cd ~ wget http://ftp.us.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.26_all.deb
Unpack the archive
cd / ar p ~/debootstrap_1.0.26_all.deb data.tar.gz | tar zx
Now you should have access to debootstrap. Make sure it works:
# sudo debootstrap --version root's password: debootstrap 1.0.26
If not - make sure you have /usr/sbin added to your PATH variable.
Create your build environment
Go somewhere you have few spare GB of disk space and set up your build environment there. For me it was /srv/krystian/x so if you see this path somewhere in my listings, know this is path to my build directory. To make things easier let's just assign a variable name to it: DEBWRT_BUILD
export DEBWRT_BUILD=/path/to/your/build/dir
Create the build environment:
sudo debootstrap --arch=amd64 squeeze $DEBWRT_BUILD
You might want to adjust the --arch parameter to suite your architecture. Plase note that Debian uses amd64 name for x86_64 architecture. After a moment you should have your build environment created.
Configure the environment
First thing to do is to chroot to your new environment and set your locale to C.
sudo chroot $DEBWRT_BUILD export LANG=C mount -t proc proc /proc
Installing required packages
Install few packages which are needed during the build. Please note, there are probably packages missing from this listing, so in case you get an error somewhere down the road about something missing... install it. If you get an error saying a package is not found, just use aptitude and search for it as there might be a typo.
apt-get install sudo fakeroot gawk python unzip flex zlibc build-essential libncurses5-dev subversion zlib1g-dev git debootstrap
You will be asked whether you want to install from unverified source. Answer yes.
apt-get install makedev
You might get few strange messages after installing makedev, like:
Can not write log, openpty() failed (/dev/pts not mounted?) Setting up makedev (2.3.1-89) ... .udevdb or .udev presence implies active udev. Aborting MAKEDEV invocation. .udevdb or .udev presence implies active udev. Aborting MAKEDEV invocation. .udevdb or .udev presence implies active udev. Aborting MAKEDEV invocation. .udevdb or .udev presence implies active udev. Aborting MAKEDEV invocation. .udevdb or .udev presence implies active udev. Aborting MAKEDEV invocation. .udevdb or .udev presence implies active udev. Aborting MAKEDEV invocation. .udevdb or .udev presence implies active udev. Aborting MAKEDEV invocation. .udevdb or .udev presence implies active udev. Aborting MAKEDEV invocation. .udevdb or .udev presence implies active udev. Aborting MAKEDEV invocation. .udevdb or .udev presence implies active udev. Aborting MAKEDEV invocation. .udevdb or .udev presence implies active udev. Aborting MAKEDEV invocation. .udevdb or .udev presence implies active udev. Aborting MAKEDEV invocation.
Just ignore them.
Add and configure a user
Now add a user, which will be used during the build process
# adduser debwrt Adding user `debwrt' ... Adding new group `debwrt' (1002) ... Adding new user `debwrt' (1002) with group `debwrt' ... Creating home directory `/home/debwrt' ... Copying files from `/etc/skel' ... Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully Changing the user information for debwrt Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n]
Password doesn't really matter, since we will never use it. Now it's time to allow our user to use sudo without password. You can use visudo to add this line to the file:
debwrt ALL=NOPASSWD: ALL
Since we will be working in /usr/src directory, we want to make sure our user has proper rights in this directory. Since this is a chrooted env used only for build purposes I am just going to change owner:
chown -R debwrt /usr/src
Build DebWrt
Change user to debwrt and download DebWrt sources:
su debwrt cd /usr/src svn checkout https://svn.debwrt.net/debwrt/trunk debwrt cd debwrt
You will probably want to change the device for which we are going to build the release, so:
make menuconfig
and adjust DebWrt settings to your needs. I am not gonig to cover in here any particular settings. There are other wiki pages which cover all of that. What we want to achieve here is a proper build with no customizations.
After you set everything up:
make
This should take a little bit of time and you should end up with an output like:
Make DebWrt completed DEBWRTVERSION : angel - 2.0-1 - [ 20 February 2011 (r174) ] TARGET_ARCH : mips BOARD : ar71xx SUB_BOARD : generic_WNDR3700 LINUX_VERSION : (default)
And you are done. If there was something wrong with the build, maybe there's something you have to install or check current tickets on DebWrt for known issues.