Firmware bouwen – OpenWrt
Download OpenWRT @ openwrt.org
OpenWRT is een Linux platform/(bouw)pakket voor “embedded devices” (geïntegreerde apparaten) zoals routers & modems, je kan firmware maken met de door jou samengestelde paketten en modules!
Informatie (ENG)
OpenWrt is described as a Linux distribution for embedded devices.
Instead of trying to create a single, static firmware, OpenWrt provides a fully writable filesystem with package management. This frees you from the application selection and configuration provided by the vendor and allows you to customize the device through the use of packages to suit any application. For developer, OpenWrt is the framework to build an application without having to build a complete firmware around it; for users this means the ability for full customization, to use the device in ways never envisioned.
Wat heb je nodig?
Een Linux omgeving, bijvoorbeeld Debian of Ubuntu in een Virtual Box
1) Virtual Box
2) Virtual Box – Debian / Ubuntu
LET OP: OpenWrt heeft heel veel schijfruimte nodig, zo ongeveer 24GB, heb je meerdere versies en/of builds, dan kan het >50Gb worden, stel daarom de schijf “flexibel” in bij gebruikt van Virtual Box.
Voorbereiding
Voordat je met openwrt aan de slag kan, moet je eerst de nodige (bouw)pakketten installeren via APT-GET met het commando:
1 |
sudo apt-get install subversion build-essential libncurses5-dev zlib1g-dev gawk flex quilt git-core libssl-dev bison autoconf python |
Voor Ubuntu 20.04 en OpenWRT v20.X:
1 |
sudo apt install build-essential ccache ecj fastjar file g++ gawk gettext git java-propose-classpath libelf-dev libncurses5-dev libncursesw5-dev libssl-dev python python2.7-dev python3 unzip wget python3-distutils python3-setuptools python3-dev rsync subversion swig time xsltproc zlib1g-dev |
Ter info: De allernieuwste DEV heeft nodig: Standaard pakketten + libssl-dev
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
Pakketlijsten worden ingelezen... Klaar Boom van vereisten wordt opgebouwd De status informatie wordt gelezen... Klaar De volgende extra pakketten zullen geïnstalleerd worden: autopoint diffstat dpkg-dev g++ g++-4.7 gettext git git-man libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libdpkg-perl liberror-perl libfile-fcntllock-perl libgettextpo0 libsigsegv2 libstdc++6-4.7-dev libsvn1 libtinfo-dev rsync Voorgestelde pakketten: debian-keyring bison g++-multilib g++-4.7-multilib gcc-4.7-doc libstdc++6-4.7-dbg gawk-doc gettext-doc git-daemon-run git-daemon-sysvinit git-doc git-el git-arch git-cvs git-svn git-email git-gui gitk gitweb ncurses-doc libstdc++6-4.7-doc graphviz openssh-server subversion-tools De volgende NIEUWE pakketten zullen geïnstalleerd worden: autopoint build-essential diffstat dpkg-dev flex g++ g++-4.7 gawk gettext git git-core git-man libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libdpkg-perl liberror-perl libfile-fcntllock-perl libgettextpo0 libncurses5-dev libsigsegv2 libstdc++6-4.7-dev libsvn1 libtinfo-dev quilt rsync subversion zlib1g-dev 0 pakketten opgewaardeerd, 28 pakketten nieuw geïnstalleerd, 0 te verwijderen en 0 niet opgewaardeerd. Er moeten 27,6 MB aan archieven opgehaald worden. Door deze operatie zal er 66,8 MB extra schijfruimte gebruikt worden. Wilt u doorgaan [J/n]? j Ophalen:1 http://ftp.nl.debian.org/debian/ wheezy/main flex amd64 2.5.35-10.1 [332 kB] Ophalen:2 http://ftp.nl.debian.org/debian/ wheezy/main libsigsegv2 amd64 2.9-4 [28,9 kB] Ophalen:3 http://ftp.nl.debian.org/debian/ wheezy/main gawk amd64 1:4.0.1+dfsg-2.1 [972 kB] Ophalen:4 http://ftp.nl.debian.org/debian/ wheezy/main libgettextpo0 amd64 0.18.1.1-9 [145 kB] Ophalen:5 http://ftp.nl.debian.org/debian/ wheezy/main libsvn1 amd64 1.6.17dfsg-4+deb7u8 [935 kB] Ophalen:6 http://ftp.nl.debian.org/debian/ wheezy/main liberror-perl all 0.17-1 [23,6 kB] Ophalen:7 http://ftp.nl.debian.org/debian/ wheezy/main git-man all 1:1.7.10.4-1+wheezy1 [1074 kB] Ophalen:8 http://ftp.nl.debian.org/debian/ wheezy/main git amd64 1:1.7.10.4-1+wheezy1 [6683 kB] Ophalen:9 http://ftp.nl.debian.org/debian/ wheezy/main git-core all 1:1.7.10.4-1+wheezy1 [1336 B] Ophalen:10 http://ftp.nl.debian.org/debian/ wheezy/main autopoint all 0.18.1.1-9 [629 kB] Ophalen:11 http://ftp.nl.debian.org/debian/ wheezy/main libstdc++6-4.7-dev amd64 4.7.2-5 [1726 kB] Ophalen:12 http://ftp.nl.debian.org/debian/ wheezy/main g++-4.7 amd64 4.7.2-5 [8011 kB] Ophalen:13 http://ftp.nl.debian.org/debian/ wheezy/main g++ amd64 4:4.7.2-1 [1374 B] Ophalen:14 http://ftp.nl.debian.org/debian/ wheezy/main libdpkg-perl all 1.16.15 [958 kB] Ophalen:15 http://ftp.nl.debian.org/debian/ wheezy/main dpkg-dev all 1.16.15 [1356 kB] Ophalen:16 http://ftp.nl.debian.org/debian/ wheezy/main build-essential amd64 11.5 [7178 B] Ophalen:17 http://ftp.nl.debian.org/debian/ wheezy/main diffstat amd64 1.55-3 [30,0 kB] Ophalen:18 http://ftp.nl.debian.org/debian/ wheezy/main gettext amd64 0.18.1.1-9 [1975 kB] Ophalen:19 http://ftp.nl.debian.org/debian/ wheezy/main libalgorithm-diff-perl all 1.19.02-2 [51,5 kB] Ophalen:20 http://ftp.nl.debian.org/debian/ wheezy/main libalgorithm-diff-xs-perl amd64 0.04-2+b1 [12,9 kB] Ophalen:21 http://ftp.nl.debian.org/debian/ wheezy/main libalgorithm-merge-perl all 0.08-2 [13,5 kB] Ophalen:22 http://ftp.nl.debian.org/debian/ wheezy/main libfile-fcntllock-perl amd64 0.14-2 [17,2 kB] Ophalen:23 http://ftp.nl.debian.org/debian/ wheezy/main libtinfo-dev amd64 5.9-10 [105 kB] Ophalen:24 http://ftp.nl.debian.org/debian/ wheezy/main libncurses5-dev amd64 5.9-10 [223 kB] Ophalen:25 http://ftp.nl.debian.org/debian/ wheezy/main quilt all 0.60-2 [377 kB] Ophalen:26 http://ftp.nl.debian.org/debian/ wheezy/main rsync amd64 3.0.9-4 [369 kB] Ophalen:27 http://ftp.nl.debian.org/debian/ wheezy/main subversion amd64 1.6.17dfsg-4+deb7u8 [1316 kB] Ophalen:28 http://ftp.nl.debian.org/debian/ wheezy/main zlib1g-dev amd64 1:1.2.7.dfsg-13 [215 kB] 27,6 MB opgehaald in 3s (8998 kB/s) Selecting previously unselected package flex. (Database inlezen ... 138097 files and directories currently installed.) Uitpakken van flex (uit .../flex_2.5.35-10.1_amd64.deb) ... Selecting previously unselected package libsigsegv2. Uitpakken van libsigsegv2 (uit .../libsigsegv2_2.9-4_amd64.deb) ... Processing triggers for install-info ... Processing triggers for man-db ... Instellen van libsigsegv2 (2.9-4) ... Selecting previously unselected package gawk. (Database inlezen ... 138146 files and directories currently installed.) Uitpakken van gawk (uit .../gawk_1%3a4.0.1+dfsg-2.1_amd64.deb) ... Selecting previously unselected package libgettextpo0:amd64. Uitpakken van libgettextpo0:amd64 (uit .../libgettextpo0_0.18.1.1-9_amd64.deb) ... Selecting previously unselected package libsvn1:amd64. Uitpakken van libsvn1:amd64 (uit .../libsvn1_1.6.17dfsg-4+deb7u8_amd64.deb) ... Selecting previously unselected package liberror-perl. Uitpakken van liberror-perl (uit .../liberror-perl_0.17-1_all.deb) ... Selecting previously unselected package git-man. Uitpakken van git-man (uit .../git-man_1%3a1.7.10.4-1+wheezy1_all.deb) ... Selecting previously unselected package git. Uitpakken van git (uit .../git_1%3a1.7.10.4-1+wheezy1_amd64.deb) ... Selecting previously unselected package git-core. Uitpakken van git-core (uit .../git-core_1%3a1.7.10.4-1+wheezy1_all.deb) ... Selecting previously unselected package autopoint. Uitpakken van autopoint (uit .../autopoint_0.18.1.1-9_all.deb) ... Selecting previously unselected package libstdc++6-4.7-dev. Uitpakken van libstdc++6-4.7-dev (uit .../libstdc++6-4.7-dev_4.7.2-5_amd64.deb) ... Selecting previously unselected package g++-4.7. Uitpakken van g++-4.7 (uit .../g++-4.7_4.7.2-5_amd64.deb) ... Selecting previously unselected package g++. Uitpakken van g++ (uit .../g++_4%3a4.7.2-1_amd64.deb) ... Selecting previously unselected package libdpkg-perl. Uitpakken van libdpkg-perl (uit .../libdpkg-perl_1.16.15_all.deb) ... Selecting previously unselected package dpkg-dev. Uitpakken van dpkg-dev (uit .../dpkg-dev_1.16.15_all.deb) ... Selecting previously unselected package build-essential. Uitpakken van build-essential (uit .../build-essential_11.5_amd64.deb) ... Selecting previously unselected package diffstat. Uitpakken van diffstat (uit .../diffstat_1.55-3_amd64.deb) ... Selecting previously unselected package gettext. Uitpakken van gettext (uit .../gettext_0.18.1.1-9_amd64.deb) ... Selecting previously unselected package libalgorithm-diff-perl. Uitpakken van libalgorithm-diff-perl (uit .../libalgorithm-diff-perl_1.19.02-2_all.deb) ... Selecting previously unselected package libalgorithm-diff-xs-perl. Uitpakken van libalgorithm-diff-xs-perl (uit .../libalgorithm-diff-xs-perl_0.04-2+b1_amd64.deb) ... Selecting previously unselected package libalgorithm-merge-perl. Uitpakken van libalgorithm-merge-perl (uit .../libalgorithm-merge-perl_0.08-2_all.deb) ... Selecting previously unselected package libfile-fcntllock-perl. Uitpakken van libfile-fcntllock-perl (uit .../libfile-fcntllock-perl_0.14-2_amd64.deb) ... Selecting previously unselected package libtinfo-dev:amd64. Uitpakken van libtinfo-dev:amd64 (uit .../libtinfo-dev_5.9-10_amd64.deb) ... Selecting previously unselected package libncurses5-dev. Uitpakken van libncurses5-dev (uit .../libncurses5-dev_5.9-10_amd64.deb) ... Selecting previously unselected package quilt. Uitpakken van quilt (uit .../archives/quilt_0.60-2_all.deb) ... Selecting previously unselected package rsync. Uitpakken van rsync (uit .../rsync_3.0.9-4_amd64.deb) ... Selecting previously unselected package subversion. Uitpakken van subversion (uit .../subversion_1.6.17dfsg-4+deb7u8_amd64.deb) ... Selecting previously unselected package zlib1g-dev:amd64. Uitpakken van zlib1g-dev:amd64 (uit .../zlib1g-dev_1%3a1.2.7.dfsg-13_amd64.deb) ... Processing triggers for man-db ... Processing triggers for install-info ... Instellen van flex (2.5.35-10.1) ... Instellen van gawk (1:4.0.1+dfsg-2.1) ... Instellen van libgettextpo0:amd64 (0.18.1.1-9) ... Instellen van libsvn1:amd64 (1.6.17dfsg-4+deb7u8) ... Instellen van liberror-perl (0.17-1) ... Instellen van git-man (1:1.7.10.4-1+wheezy1) ... Instellen van git (1:1.7.10.4-1+wheezy1) ... Instellen van git-core (1:1.7.10.4-1+wheezy1) ... Instellen van autopoint (0.18.1.1-9) ... Instellen van libdpkg-perl (1.16.15) ... Instellen van dpkg-dev (1.16.15) ... Instellen van diffstat (1.55-3) ... Instellen van gettext (0.18.1.1-9) ... Instellen van libalgorithm-diff-perl (1.19.02-2) ... Instellen van libalgorithm-diff-xs-perl (0.04-2+b1) ... Instellen van libalgorithm-merge-perl (0.08-2) ... Instellen van libfile-fcntllock-perl (0.14-2) ... Instellen van libtinfo-dev:amd64 (5.9-10) ... Instellen van libncurses5-dev (5.9-10) ... Instellen van quilt (0.60-2) ... Instellen van rsync (3.0.9-4) ... update-rc.d: using dependency based boot sequencing Instellen van subversion (1.6.17dfsg-4+deb7u8) ... Instellen van zlib1g-dev:amd64 (1:1.2.7.dfsg-13) ... Instellen van g++-4.7 (4.7.2-5) ... Instellen van g++ (4:4.7.2-1) ... update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode Instellen van build-essential (11.5) ... Instellen van libstdc++6-4.7-dev (4.7.2-5) ... |
OpenWRT SVN?
SVN?
SVN is een soort van Github, iedereen kan code aanpassen of toevoegen, de hele openwrt software is hierop gebaseerd, het begon in 2006 met de eerste regels.
SVN moet je zien als een lijn vanuit 2006 t/m 2015 met daartussen ankers/labels (stabiele releases) van de versies zoals ze hieronder staan, SVN werkt met een “revision” (revisie) checkout.
Op het moment van schrijven zijn deze releases bekend:
Tagged | Code Name | Version | Release date | Linux kernel | C standard library | Binary packages | Source packages | Notes | |
---|---|---|---|---|---|---|---|---|---|
(default) | (available) | ||||||||
N/A | pre Buildroot-NG | 0.x | N/A | N/A | uClibc | 474 | ≈ 310 | ||
r6268 | White Russian | 0.9 | January 2006 | 2.4.30 | uClibc | ≈ 360 | ≈ 140 | NVRAM-based, nas , wl . Supported platform: brcm-2.4 . |
|
r7428 | Kamikaze | 7.06 | June 2007 | 2.6.19 | uClibc | ≈ 750 | ≈ 450 | Using opkg . Supported platforms: atheros-2.6 , au1000-2.6 , brcm-2.4 , brcm47xx-2.6 , ixp4xx-2.6 , imagicbox-2.6 ,rb532-2.6 and x86-2.6 . |
|
r7832 | Kamikaze | 7.07 | July 2007 | 2.6.21 | uClibc | ≈ 790 | ≈ 475 | New platform: amcc-2.6 . |
|
r8679 | Kamikaze | 7.09 | September 2007 | 2.6.21 | uClibc | ≈ 630 | ≈ 500 | ||
r14547 | Kamikaze | 8.09 | September 2008 | 2.6.26 | uClibc | ≈ 1,400 | ≈ 875 | ||
r16279 | Kamikaze | 8.09.1 | June 2009 | 2.6.26 | uClibc | ≈ 1,400 | ≈ 875 | ||
r18961 | Kamikaze | 8.09.2 | January 10, 2010 | 2.6.26 | uClibc | ≈ 1,400 | ≈ 875 | ||
r20742 | Backfire | 10.03 | April 7, 2010 | 2.6.32 | uClibc | ≈ 2,350 | ≈ 1,050 | Supported platforms: adm5120_mips ,adm5120_mipsel , ar7 , ar71xx ,atheros , au1000 , avr32 , brcm-2.4 ,brcm47xx , brcm63xx , cobalt , ep80579 ,ifxmips , ixp4xx , kirkwood , octeon ,orion , ppc40x , ppc44x , rb532 , rdc ,x86 and xburst . |
|
r29594 | Backfire | 10.03.1 | December 21, 2011 | 2.6.32 | uClibc | eglibc glibc |
≈ 2,950 | ≈ 1,175 | |
r36088 | Attitude Adjustment | 12.09 | April 25, 2013 | 3.3 | uClibc | eglibc | ≈ 3,450 | ≈ 1,150 | CoDel (network scheduler) backported from Linux 3.5 to 3.3. New platforms: ramips ,bcm2708 (Raspberry Pi) and others. |
r42625 | Barrier Breaker | 14.07 | October 2, 2014 | 3.10.49 | uClibc | musl eglibc |
? | ? | New platforms: i.MX23 , i.MX6 andmvebu . |
r46767 | Chaos Calmer | 15.05 | September 11, 2015 | 3.18.20 | uClibc | musl glibc |
? | ? | nftables (available since Linux kernel 3.12); New platforms: TBA if any |
– Attitude Adjustment (en lager) is aanbevolen voor apparaten met maar liefst 4mb flash geheugen.Welke versie moet ik hebben?
In principe de laatste stabiele versie, maar als je een oudere router/modem hebt kan de firmware image te groot worden met huidige/recente releases voor de flash chip, je kan ook een oudere versie van OpenWrt gebruiken om het werkend/passend te maken.
SVN tags
Tags zijn een soort van labels gehangen aan een checkout welke een stabiele versie van openwrt betreft, zodra een tag is gegeven kan je deze versie downloaden, wel worden de verbeteringen meegenomen mochten deze later nog toegevoegd worden.
OpenWRT Downloaden optie #1
1 2 3 4 5 |
git clone https://github.com/openwrt/openwrt cd openwrt ./scripts/feeds update -a ./scripts/feeds install -a make menuconfig --> Do changes --> Save config |
OpenWRT Downloaden optie #2
1) Ga naar linux Home/DESKTOP omgeving met het commando:
cd ~/
2) Maak een folder genaamd openwrt aan:
mkdir openwrt
3) Ga naar de zojuist aangemaakte folder:
cd openwrt
4) Kies een versie uit:
Chaos Calmer
Chaos Calmer 15.05:
sudo svn co svn://svn.openwrt.org/openwrt/branches/chaos_calmer chaos_calmer_15.05
Barrier Breaker
Barrier Breaker 14.07:
sudo svn co svn://svn.openwrt.org/openwrt/branches/barrier_breaker barrier_breaker_14.07
Attitude Adjustment
Attitude Adjustment laatste versie:
sudo svn co svn://svn.openwrt.org/openwrt/branches/attitude_adjustment attitude_adjustment
Attitude Adjustment v12.09:
sudo svn co -r 36088 svn://svn.openwrt.org/openwrt/branches/attitude_adjustment attitude_adjustment_12.09
Attitude Adjustment v12.09 met alle fixes en toevoegingen tot nu toe (TAG):
sudo svn co svn://svn.openwrt.org/openwrt/tags/attitude_adjustment_12.09 attitude_adjustment_12.09
Backfire
Backfire laatste versie:
sudo svn co svn://svn.openwrt.org/openwrt/branches/backfire backfire
Backfire v10.03.1:
sudo svn co -r 29594 svn://svn.openwrt.org/openwrt/branches/backfire backfire_10.03.1
Backfire v10.03.1 met alle fixes en toevoegingen tot nu toe (TAG):
sudo svn co svn://svn.openwrt.org/openwrt/tags/backfire_10.03.1 backfire_10.03.1
Backfire v10.03:
sudo svn co -r 20742 svn://svn.openwrt.org/openwrt/branches/backfire backfire_10.03
Backfire v10.03 met alle fixes en toevoegingen tot nu toe (TAG):
sudo svn co svn://svn.openwrt.org/openwrt/tags/backfire_10.03 backfire_10.03
Kamikaze
Kamikaze laatste versie:
sudo svn co svn://svn.openwrt.org/openwrt/branches/8.09 kamikaze
Kamikaze v8.09.2:
sudo svn co -r18961 svn://svn.openwrt.org/openwrt/branches/8.09 kamikaze_8.09.2
Kamikaze v8.09.2 met alle fixes en toevoegingen tot nu toe (TAG):
sudo svn co svn://svn.openwrt.org/openwrt/tags/8.09.2 kamikaze_8.09.2
Kamikaze v8.09.1:
sudo svn co -r16279 svn://svn.openwrt.org/openwrt/branches/8.09 kamikaze_8.09.1
Kamikaze v8.09.1 met alle fixes en toevoegingen tot nu toe (TAG):
sudo svn co svn://svn.openwrt.org/openwrt/tags/8.09.1 kamikaze_8.09.1
Kamikaze v8.09:
sudo svn co -r14547 svn://svn.openwrt.org/openwrt/branches/8.09 kamikaze_8.09
Kamikaze v8.09 met alle fixes en toevoegingen tot nu toe (TAG):
sudo svn co svn://svn.openwrt.org/openwrt/tags/8.09 kamikaze_8.09
Kamikaze v7.06:
sudo svn co svn://svn.openwrt.org/openwrt/tags/kamikaze_7.06 kamikaze_7.06
Kamikaze v7.07:
sudo svn co svn://svn.openwrt.org/openwrt/tags/kamikaze_7.07 kamikaze_7.07
Kamikaze v7.09:
sudo svn co svn://svn.openwrt.org/openwrt/tags/kamikaze_7.09 kamikaze_7.09
White Russian
White Russian laatse versie:
sudo svn co svn://svn.openwrt.org/openwrt/branches/whiterussian white_russian
White Russian 0.9:
sudo svn co -r6268 svn://svn.openwrt.org/openwrt/branches/whiterussian white_russian_0.9
White Russian 0.9 met alle fixes en toevoegingen tot nu toe (TAG):
sudo svn co svn://svn.openwrt.org/openwrt/tags/whiterussian_0.9 white_russian_0.9
Ps. OpenWrt updaten:
1 2 |
./scripts/feeds update -a ./scripts/feeds install -a |
5) Zet de rechten op de huidige gebruiker: sudo chown -Rv [gebruiker] ~/openwrt
6) OpenWrt is klaar om gestart te worden:
Algemene configuratie:
make menuconfig
Kernel configratie (standaard niet nodig):
make kernel_menuconfig
7) Start het compilen van de firmware met: make
Bronnen:
http://wiki.openwrt.org/about/history
http://wiki.openwrt.org/doc/howto/buildroot.exigence.old
http://en.wikipedia.org/wiki/OpenWrt
http://wiki.openwrt.org/doc/howto/buildroot.exigence
[#/software/openwrt” ]