Difference between revisions of "OpenWRT"

From
Jump to: navigation, search
(SDK installieren)
(Vorbereitung)
 
(4 intermediate revisions by one other user not shown)
Line 9: Line 9:
 
gcc-multilib g++-multilib gettext git libncurses5-dev libssl-dev python3 \
 
gcc-multilib g++-multilib gettext git libncurses5-dev libssl-dev python3 \
 
python3-setuptools rsync swig unzip zlib1g-dev file wget \
 
python3-setuptools rsync swig unzip zlib1g-dev file wget \
binutils bzip2 diff find flex gawk gcc-6+ getopt grep install libc-dev libz-dev \
+
binutils bzip2 flex gawk grep libc-dev libz-dev \
make4.1+ perl rsync subversion unzip which
+
make perl rsync subversion unzip which  
 
</pre>
 
</pre>
  
  
 
<pre>
 
<pre>
angepasst
+
user@deb12:~/openwrt$ make defconfig download clean world
 +
WARNING: Makefile 'package/utils/audit/Makefile' has a dependency on 'libev', which does not exist
 +
WARNING: Makefile 'package/utils/busybox/Makefile' has a dependency on 'libpam', which does not exist
 +
WARNING: Makefile 'package/utils/busybox/Makefile' has a dependency on 'libtirpc', which does not exist
 +
WARNING: Makefile 'package/utils/busybox/Makefile' has a dependency on 'libpam', which does not exist
 +
WARNING: Makefile 'package/utils/busybox/Makefile' has a dependency on 'libtirpc', which does not exist
 +
WARNING: Makefile 'package/utils/busybox/Makefile' has a build dependency on 'libpam', which does not exist
 +
WARNING: Makefile 'package/boot/kexec-tools/Makefile' has a dependency on 'liblzma', which does not exist
 +
WARNING: Makefile 'package/network/services/lldpd/Makefile' has a dependency on 'libnetsnmp', which does not exist
 +
WARNING: Makefile 'package/utils/policycoreutils/Makefile' has a dependency on 'libpam', which does not exist
 +
WARNING: Makefile 'package/utils/policycoreutils/Makefile' has a dependency on 'libpam', which does not exist
 +
WARNING: Makefile 'package/utils/policycoreutils/Makefile' has a build dependency on 'libpam', which does not exist
 +
 
 +
make[2]: Entering directory '/home/user/openwrt/scripts/config'
 +
make[2]: 'conf' is up to date.
 +
make[2]: Leaving directory '/home/user/openwrt/scripts/config'
 +
time: target/linux/prereq#4.29#1.73#5.98
 +
 
  
sudo apt update
 
sudo apt install build-essential clang flex bison g++ gawk \
 
gcc-multilib g++-multilib gettext git libncurses5-dev libssl-dev python3 \
 
python3-setuptools rsync swig unzip zlib1g-dev file wget \
 
binutils bzip2 flex gawk grep libc-dev libz-dev \
 
make perl rsync subversion unzip which
 
 
</pre>
 
</pre>
  
Line 68: Line 79:
 
bin/packages/mips_24kc/packages/mips_24kc/packages/acme_4.0.0_all.ipk
 
bin/packages/mips_24kc/packages/mips_24kc/packages/acme_4.0.0_all.ipk
 
...
 
...
 +
 +
</pre>
 +
 +
 +
=== Erläuterungen ===
 +
<pre>
 +
Der Befehl:  make defconfig download clean world
 +
 +
setzt sich aus mehreren Makefile-Zielen zusammen, die nacheinander ausgeführt werden.
 +
Er taucht oft in Buildsystemen wie OpenWrt, Buildroot oder anderen Embedded-Linux-Projekten auf.
 +
Ich erkläre dir Schritt für Schritt, was jedes dieser Targets normalerweise bedeutet:
 +
 +
1. make defconfig
 +
 +
Setzt die Standardkonfiguration des Projekts.
 +
Es lädt oder erstellt eine Standard-.config-Datei basierend auf den voreingestellten Optionen.
 +
Ziel: einen bekannten Ausgangszustand herstellen.
 +
Beispiel (OpenWrt): Die Datei configs/default wird eingelesen und nach .config kopiert.
 +
 +
 +
2. make download
 +
 +
Lädt alle benötigten Quellpakete aus dem Internet herunter (z. B. Tarballs, Quellcode von Git-Repos etc.).
 +
Diese Dateien landen meist in einem Verzeichnis wie dl/ oder downloads/.
 +
Ziel: sicherstellen, dass alle Abhängigkeiten lokal verfügbar sind, bevor kompiliert wird.
 +
 +
 +
3. make clean
 +
 +
Löscht die kompilierten Dateien (Objekte, Binaries, temporäre Build-Artefakte), behält aber die Konfiguration.
 +
Wird verwendet, um das System aufzuräumen oder sicherzustellen, dass ein Build „von Null“ beginnt.
 +
 +
 +
4. make world
 +
 +
Baut das gesamte System neu auf – alle Pakete, Kernel, Images usw.
 +
Entspricht oft einem „Full Build“.
 +
In OpenWrt z. B. erstellt es das gesamte Root-Filesystem und alle Binärdateien für das Zielgerät.
 +
 +
 +
Zusammengesetzt:
 +
 +
Wenn du alles zusammen ausführst
 +
bedeutet das sinngemäß:
 +
 +
„Setze Standardkonfiguration, lade alle Quellpakete herunter, bereinige den Build-Ordner und baue anschließend das gesamte System komplett neu.“
 +
 +
 +
Typischer Anwendungsfall:
 +
 +
Du verwendest diesen Befehl, wenn du ein frisches, vollständiges Build starten willst —
 +
z. B. nachdem du das Repository neu geklont oder größere Änderungen vorgenommen hast.
  
 
</pre>
 
</pre>

Latest revision as of 19:59, 7 November 2025

openWRT[edit]

Vorbereitung[edit]

Modernized set for Ubuntu 24.04 that has Python 3.12 without python3-distutils: (OpenWrt main/master in Apr 2024)

sudo apt update
sudo apt install build-essential clang flex bison g++ gawk \
gcc-multilib g++-multilib gettext git libncurses5-dev libssl-dev python3 \
python3-setuptools rsync swig unzip zlib1g-dev file wget \
binutils bzip2 flex gawk grep libc-dev libz-dev \
make perl rsync subversion unzip which 


user@deb12:~/openwrt$ make defconfig download clean world
WARNING: Makefile 'package/utils/audit/Makefile' has a dependency on 'libev', which does not exist
WARNING: Makefile 'package/utils/busybox/Makefile' has a dependency on 'libpam', which does not exist
WARNING: Makefile 'package/utils/busybox/Makefile' has a dependency on 'libtirpc', which does not exist
WARNING: Makefile 'package/utils/busybox/Makefile' has a dependency on 'libpam', which does not exist
WARNING: Makefile 'package/utils/busybox/Makefile' has a dependency on 'libtirpc', which does not exist
WARNING: Makefile 'package/utils/busybox/Makefile' has a build dependency on 'libpam', which does not exist
WARNING: Makefile 'package/boot/kexec-tools/Makefile' has a dependency on 'liblzma', which does not exist
WARNING: Makefile 'package/network/services/lldpd/Makefile' has a dependency on 'libnetsnmp', which does not exist
WARNING: Makefile 'package/utils/policycoreutils/Makefile' has a dependency on 'libpam', which does not exist
WARNING: Makefile 'package/utils/policycoreutils/Makefile' has a dependency on 'libpam', which does not exist
WARNING: Makefile 'package/utils/policycoreutils/Makefile' has a build dependency on 'libpam', which does not exist

make[2]: Entering directory '/home/user/openwrt/scripts/config'
make[2]: 'conf' is up to date.
make[2]: Leaving directory '/home/user/openwrt/scripts/config'
time: target/linux/prereq#4.29#1.73#5.98


SDK installieren[edit]

!!! Installation NICHT als root !!!

git clone https://github.com/openwrt/openwrt.git
cd openwrt
git pull 

git branch -a
# git tag 

git checkout openwrt-24.10

./scripts/feeds update -a
./scripts/feeds install -a

make menuconfig

Firmware bauen[edit]

make

oder

make defconfig download clean world


Firmware abholen[edit]

After a successful build, the freshly built image(s) and packages can be found below the newly created <buildroot>/bin/targets and <buildroot>/bin/packages directories, respectively. The exact location depends on the target/subtarget (for images) or architecture (for packages):

# Assuming a build for a Netgear WNDR3800, an "ath79" target with a "generic" subtarget
# and a "mips_24kc" package architecture

find bin/targets/ -iname "*-sysupgrade.img*"
bin/targets/ath79/generic/openwrt-24.10.2-ath79-generic-netgear_wndr3800-squashfs-sysupgrade.bin

find bin/packages/ -iname "*.ipk"
bin/packages/mips_24kc/packages/mips_24kc/packages/acme_4.0.0_all.ipk
...


Erläuterungen[edit]

Der Befehl:  make defconfig download clean world

setzt sich aus mehreren Makefile-Zielen zusammen, die nacheinander ausgeführt werden. 
Er taucht oft in Buildsystemen wie OpenWrt, Buildroot oder anderen Embedded-Linux-Projekten auf.
Ich erkläre dir Schritt für Schritt, was jedes dieser Targets normalerweise bedeutet:

1. make defconfig

Setzt die Standardkonfiguration des Projekts.
Es lädt oder erstellt eine Standard-.config-Datei basierend auf den voreingestellten Optionen.
Ziel: einen bekannten Ausgangszustand herstellen.
Beispiel (OpenWrt): Die Datei configs/default wird eingelesen und nach .config kopiert.


2. make download

Lädt alle benötigten Quellpakete aus dem Internet herunter (z. B. Tarballs, Quellcode von Git-Repos etc.).
Diese Dateien landen meist in einem Verzeichnis wie dl/ oder downloads/.
Ziel: sicherstellen, dass alle Abhängigkeiten lokal verfügbar sind, bevor kompiliert wird.


3. make clean

Löscht die kompilierten Dateien (Objekte, Binaries, temporäre Build-Artefakte), behält aber die Konfiguration.
Wird verwendet, um das System aufzuräumen oder sicherzustellen, dass ein Build „von Null“ beginnt.


4. make world

Baut das gesamte System neu auf – alle Pakete, Kernel, Images usw.
Entspricht oft einem „Full Build“.
In OpenWrt z. B. erstellt es das gesamte Root-Filesystem und alle Binärdateien für das Zielgerät.


Zusammengesetzt:

Wenn du alles zusammen ausführst
bedeutet das sinngemäß:

„Setze Standardkonfiguration, lade alle Quellpakete herunter, bereinige den Build-Ordner und baue anschließend das gesamte System komplett neu.“


Typischer Anwendungsfall:

Du verwendest diesen Befehl, wenn du ein frisches, vollständiges Build starten willst — 
z. B. nachdem du das Repository neu geklont oder größere Änderungen vorgenommen hast.