[Problem] Freetz unter Windows 10 Subsystem

esel08

Neuer User
Mitglied seit
9 Jul 2008
Beiträge
70
Punkte für Reaktionen
1
Punkte
8
Hallo ihr Profis ;)


Ist es möglich freetz-trunk unter Windows 10 den WSL laufen zu lassen.

Bekomme beim starten Fehler :

root@DESKTOP-6RMRO44:/opt/freetz-trunk# make menuconfig
Makefile:90: *** Running makefile as root is prohibited! Please build Freetz as normal user. Stop.

Lege ich einen normalen user an bekomme ich andere Fehler :

Geht es überhaupt ??


Danke euch

Jens :rolleyes:
 
Moin

Normalerweise ist der User "freetz" ( /home/freetz ) dafür zuständig.
...weiss aber aus dem Kopf nicht, welche Gruppe(n) und Rechte der (bspw. für sudo) haben muss.
Aber auf keinen Fall ist es: root
 
@koyaanisqatsi

Das dachte ihr mir auch deshalb habe ich einen anderen user angelegt.
Welche Gruppe und Rechte er haben muss weis ich leider net !!
 
Zuletzt bearbeitet:
  • Like
Reaktionen: esel08
Hallo Allerseits,

und es geht doch, man kann sogar Freetz vollständig unter Windows bauen, bei kleinen Anpassungen an Freetz und dem Windows 10 - Windows-Subsystem für Linux (WSL).

Was man machen muss, bitte beachten, dass die sudo Befehle alle auf einer Zeile sind und hier nur auf meheren dargestellt werden:
  1. Aktivierung des WSL, welches ein optionales Windows Feature darstellt, gibt man folgenden Befehl in der PowerShell mit Administrator-Rechten ein:
    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
  2. Herunterladen des der Ubuntu 18.04 App und Windows 10 1803 aus dem Windows Store - MSN Account ist nicht nötig
  3. Starten der Ubuntu 18.04 App und normalen User einrichten, da die Freetz Buildumgebung nicht als root funktioniert
  4. Updaten der besteheenden Installation und installieren der für Freetz benötigen Packete
    sudo apt update
    sudo apt upgrade

    sudo apt-get -y install nfoview imagemagick subversion gcc g++ bzip2 binutils automake patch autoconf libtool pkg-config make libncurses5-dev zlib1g-dev flex bison patch texinfo tofrodos gettext jam pkg-config ecj fastjar perl libstring-crc32-perl ruby gawk python libusb-dev unzip intltool libglib2.0-dev xz-utils git libtool-bin libreadline-dev libacl1-dev libcap-dev libc6 libc6-dev libc6-dev-i386
  5. Linux Umgebung anpassen
    umask 0022
    sudo ln -s /proc/mounts /etc/mtab
  6. Freetz-Branch clonen, der auf dem offiziellen Freetz basiert, aber auch ein paar Compiler Umgebungspatche enthält.
    git clone https://github.com/dirk-dhu/freetz.git freetz-devel
  7. Im Menu-Config die benötigten Packages selektieren, aber auch unbedingt in Toolchain Options --> Build own toolchain einstellen, da WSL nur x64 Binaries von Hause unterstützt und die precompiled toolchains nur 32-Bit ist, aber vorher muss noch Level of user competence auf Expert gestellt werden
    make menuconfig
    make

  8. Wenn man die precompiled toolchain benutzen will, müssen noch ein paar Packete installiert werden und die 32-Bit Binaries emuliert werden, dazu folgenden Befehle eingeben
    sudo dpkg --add-architecture i386
    sudo apt-get update
    sudo apt-get install g++-multilib libncurses5:i386 libc6:i386 libgcc1:i386 gcc-4.8-base:i386 libstdc++5:i386 libstdc++6:i386 lib32z1 lib32ncurses5 lib32ncursesw5 lib32ncursesw5-dev
  9. Emulator installieren und starten
    sudo apt install qemu-user-static
    sudo update-binfmts --install i386 /usr/bin/qemu-i386-static --magic '\x7fELF\x01\x01\x01\x03\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03\x00\x01\x00\x00\x00' --mask '\xff\xff\xff\xff\xff\xff\xff\xfc\xff\xff\xff\xff\xff\xff\xff\xff\xf8\xff\xff\xff\xff\xff\xff\xff'
  10. Jetzt kann man ganz normal, aber langsamer :) mit make menuconfig und make alles bauen
  11. Nach dem Neustart der ubuntu App muss der Emulator falls er verwendet wird neugstartet werden
    sudo service binfmt-support start
Welche Fehler wurden beseitig und wie:
  1. fakeroot Build Problem beheben und Umstellung des IPC von sysv auf tcp
    Fehlermeldung:
    checking whether we are cross compiling... configure: error: in `/home/dirk/freetz-devel/source/host-tools/fakeroot-1.22/build/biarch'
    configure: error: cannot run C compiled programs.
    If you meant to cross compile, use `--host'.
    See `config.log' for more details
    tools/make/fakeroot/fakeroot.mk:51: recipe for target '/home/dirk/freetz-devel/source/host-tools/fakeroot-1.22/build/biarch/.configured' failed

    make: *** [/home/dirk/freetz-devel/source/host-tools/fakeroot-1.22/build/biarch/.configured] Error 1
    Patch:
    diff --git a/tools/make/fakeroot/fakeroot.mk b/tools/make/fakeroot/fakeroot.mk
    index 6675044..3e5b950 100644
    --- a/tools/make/fakeroot/fakeroot.mk
    +++ b/tools/make/fakeroot/fakeroot.mk
    @@ -39,6 +39,7 @@ $(FAKEROOT_MAINARCH_DIR)/.configured: $(FAKEROOT_DIR)/.unpacked
    ../../configure \
    --prefix=$(FAKEROOT_DESTDIR) \
    --enable-shared \
    + $(if $(findstring Microsoft,$(shell uname -r)),--with-ipc=tcp,) \
    $(DISABLE_NLS) \
    );
    touch $@
    @@ -54,6 +55,8 @@ $(FAKEROOT_BIARCH_DIR)/.configured: $(FAKEROOT_DIR)/.unpacked
    ../../configure \
    --prefix=$(FAKEROOT_DESTDIR) \
    --enable-shared \
    + $(if $(findstring Microsoft,$(shell uname -r)),--with-ipc=tcp,) \
    + $(if $(findstring Microsoft,$(shell uname -r)),--host=$(shell uname -m),) \
    $(DISABLE_NLS) \
    );
    touch $@

    siehe auch Commit "NATIVE COMPILER: add target compiler and target tools as m4, automake ..." von https://github.com/dirk-dhu/freetz
  2. mount/umout Probleme während des Image bauens mit fwmod
    Fehlermeldung:
    ERROR: creation of ext2 image failed
    ./build/modified/filesystem.log -> ext2fs_check_if_mount: Can't check if filesystem is mounted due to missing mtab file

    Lösung:
    sudo ln -s /proc/mounts /etc/mtab
  3. Erkennen, dass die precompiled toolchain 32 bit Binaries enthält und die durch WSL nicht direkt unterstützt werden
    Fehlermeldung:
    toolchain/build/mips_gcc-4.8.5/mips-unknown-linux-gnu/bin/mips-unknown-linux-gnu-gcc: cannot execute binary file: Exec format error
    Lösung:
    Qemu Emulator benutzen
  4. Sporadische Speicher Probleme fork Library-Call klappt nicht -> Ubuntu App neustarten und weitermachen
Ich hoffe ich habe nichts vergessen, und viel Spaß noch.

Gruß, Dirk
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Micha0815 und SinusX
Es gibt ja inzwischen auch noch ein paar mehr Distributionen, die im WSL lauffähig sind ... bis hin zu einem Kali Linux (aber auch openSUSE Leap 42 oder SLES) - die das WSL selbst wurde massiv erweitert in ihren seinen Fähigkeiten. Seit dem 1709-Update kann man auch (ohne am Insider-Programm teilzunehmen, da ging das schon seit Juni 2017) die Distribution seiner Wahl einfach aus dem Store installieren (wenn es sie dort gibt).

Wobei die Performance immer noch nicht wirklich gut ist, auch wenn sie deutlich besser geworden ist gegenüber früheren Versionen.

Wenn ich denselben Branch (frisch) auschecke und das einmal unter "Git for Windows" (das basiert auf MinGW) und einmal unter der Bash in der Canonical-App mache (alles auf demselben Host), dann sind das schon deutliche Unterschiede - es werden halt viele Dateien "behandelt" und die I/O-Performance spielt eine wichtige Rolle (wie auch beim Freetz-Build an sich):
Code:
peh@Bragi MINGW64 ~/Documents/GitHub
$ time git clone [email protected]:PeterPawn/freetz.git
Cloning into 'freetz'...
remote: Counting objects: 139259, done.
remote: Total 139259 (delta 0), reused 0 (delta 0), pack-reused 139258
Receiving objects: 100% (139259/139259), 35.11 MiB | 5.56 MiB/s, done.
Resolving deltas: 100% (92726/92726), done.
Checking out files: 100% (5544/5544), done.

real    0m33.558s
user    0m0.000s
sys     0m0.015s

peh@Bragi MINGW64 ~/Documents/GitHub
Code:
peh@Bragi:/tmp$ time git clone [email protected]:PeterPawn/freetz.git freetz_w10
Cloning into 'freetz_w10'...
remote: Counting objects: 139259, done.
remote: Total 139259 (delta 0), reused 0 (delta 0), pack-reused 139258
Receiving objects: 100% (139259/139259), 35.11 MiB | 5.56 MiB/s, done.
Resolving deltas: 100% (92726/92726), done.
Checking connectivity... done.
Checking out files: 100% (5544/5544), done.

real    0m59.821s
user    0m6.313s
sys     0m21.094s
peh@Bragi:/tmp$
Man sieht auch ziemlich deutlich (im Falle der Canonical-App), wo die Zeit am Ende bleibt ... 21 Sekunden im System sind schon eine ganze Menge.

Wer das also nicht nur als Freizeitbeschäftigung betreibt (wo ihm die Dauer dann auch egal ist) und zusätzlich über die passende Hardware (SLAT wird benötigt) und die richtige Windows-Lizenz verfügt (die W10-Home-Edition kann kein Hyper-V), der fährt in den allermeisten Fällen immer noch besser, wenn er die Freetz-VM unter Hyper-V laufen läßt.

Oder auch gleich (der Service ist immerhin auch in den ersten 12 Monaten kostenlos) eine Azure-VM dafür verwendet, das schont die lokalen Ressourcen zusätzlich oder ist eine Alternative, wenn das eigene System die Voraussetzungen für Hyper-V nicht erfüllt. Daß man dabei dann das Signieren eines eigenen Images immer noch lokal machen sollte (das geht dann auch in einer WSL-App wieder fix), wenn man das überhaupt verwendet, versteht sich wieder von selbst. Ein privater Schlüssel hat in einem VHD-Image in der MS-Cloud nichts verloren (und auch bei keinem anderen Cloud-Service) - und wenn es nur der für das Signieren der FRITZ!Box-Firmware ist.

Leider ist das Freetz-Linux-Image von cinereous auch schon etwas in die Jahre gekommen ... vermutlich kommt man sogar besser weg, wenn man nicht mit diesem beginnt (ist m.W. noch eine LTS-Version von Precise Pangolin (12.04), die auch seit mehr als einem Jahr keine Updates mehr kriegt), sondern gleich mit einer 16.04-LTS startet oder - wenn man tatsächlich eher auf 64-Bit setzen will, wobei das der Cloud egal ist - eben mit einem "Bionic Beaver" von Ubuntu (das werden die meisten sicherlich bevorzugen, obwohl auch andere Distros gut geeignet sind), wo es die 32-Bit-Versionen gar nicht mehr gibt.
 
Zuletzt bearbeitet:
Ich habe mal auf dem gleichen Rechner mit einer einfachen Konfig unter WSL und dann in einer VM mit dem Microsoft Hypervisor Freetz mit Toolchain gebaut:

WSL:
packing images/7490_06.93-freetz-devel-14683.de_20180527-233443.image
image file size: 29.6 MB
done.

FINISHED
1651.84user 2256.20system 1:09:05elapsed 94%CPU (0avgtext+0avgdata 624748maxresident)k
0inputs+0outputs (0major+185822234minor)pagefaults 0swaps
dirk@HOME:~/freetz-devel$ uname -a
Linux HOME 4.4.0-17134-Microsoft #81-Microsoft Sun May 20 01:14:00 PST 2018 x86_64 x86_64 x86_64 GNU/Linux

VM unter Microsoft Hypervisor:
packing images/7490_06.93-freetz-devel-14683.de_20180528-001553.image
image file size: 28.6 MB
done.

FINISHED
1306.10user 92.42system 21:07.42elapsed 110%CPU (0avgtext+0avgdata 325728maxresident)k
2052416inputs+2345528outputs (5495major+89508025minor)pagefaults 0swaps
dirk@home-ubuntu:~/fritz/freetz-devel$ uname -a
Linux home-ubuntu 4.4.0-112-generic #135-Ubuntu SMP Fri Jan 19 11:48:14 UTC 2018 i686 i686 i686 GNU/Linux

Ergebnis WSL unter Win10 kann man benutzen, ist aber noch 3x langsamer als eine VM.
 
@DHU funktioniert super bis zu dem fakeroot patch ... da sagt er:
diff: unrecognized option '--git'
Woran kann das liegen? Sorry - kenn mich nicht so aus mit Linux /diff/git...
Danke!
 
Hi,
na ja das was Du da anwenden wolltest ist der patch selber den Du in eine Datei fakeroot.diff speichern musst und entweder mit
git apply fakeroot.diff oder patch -p1 < fakeroot.diff anwenden musst
aber eigentlich ist der patch schon in meinem Branch drin.
Viel Spaß noch!
 
[QUOTE="DHU, post: 2281593, member: 127876"...
git apply fakeroot.diff oder patch -p1 < fakeroot.diff anwenden musst
aber eigentlich ist der patch schon in meinem Branch drin.
Viel Spaß noch![/QUOTE]

Hi & herzlichen Dank für das ausführliche How-to!

Ich habe den w.o.g. trunk gecloned und entsprechend "build own tollchain" gesetzt.
Alles läuft langsam aber smooth und ohne Fehler, bis zum Ende dieser bekannte Fehlerfall auftritt:
Code:
Compressed configuration written to .config.compressed.
It is equivalent to .config, but contains only non-default user selections.
fakeroot, while creating message channels: Function not implemented
This may be due to a lack of SYSV IPC support.
fakeroot: error while starting the `faked' daemon.
Makefile:309: recipe for target 'firmware-nocompile' failed
make: *** [firmware-nocompile] Error 1
Frage:
Kannst du mir bitte den link zum fakeroot patch nennen?
Ich möchte diesen manuell nach installieren und dann noch einmal schauen.

Danke & Grüße
SB
 
Frage:
Kannst du mir bitte den link zum fakeroot patch nennen?

hast Du den fakeroot Patch von @DHU aus #6 schon getestet ?
Patch:
diff --git a/tools/make/fakeroot/fakeroot.mk b/tools/make/fakeroot/fakeroot.mk
index 6675044..3e5b950 100644
--- a/tools/make/fakeroot/fakeroot.mk
+++ b/tools/make/fakeroot/fakeroot.mk
@@ -39,6 +39,7 @@ $(FAKEROOT_MAINARCH_DIR)/.configured: $(FAKEROOT_DIR)/.unpacked
../../configure \
--prefix=$(FAKEROOT_DESTDIR) \
--enable-shared \
+ $(if $(findstring Microsoft,$(shell uname -r)),--with-ipc=tcp,) \
$(DISABLE_NLS) \
);
touch $@
@@ -54,6 +55,8 @@ $(FAKEROOT_BIARCH_DIR)/.configured: $(FAKEROOT_DIR)/.unpacked
../../configure \
--prefix=$(FAKEROOT_DESTDIR) \
--enable-shared \
+ $(if $(findstring Microsoft,$(shell uname -r)),--with-ipc=tcp,) \
+ $(if $(findstring Microsoft,$(shell uname -r)),--host=$(shell uname -m),) \
$(DISABLE_NLS) \
);
touch $@
 
Hi,
ja, versucht zu starten; nein hat nicht funktioniert, da
das cmd diff das Argument/Option --git nicht kennt.
Es folgt der Abrruch, bzw. ein Error.

### Zusammenführung Doppelpost by stoney ###

ich versuche hier ein Image für eine FritzBox 7590 zu erstellen...
Da könnte wohl ein Problem sein!?
 
Zuletzt bearbeitet von einem Moderator:
@superblond:
Warum solltest Du auch versuchen, das "diff"-Kommando aufzurufen?

Der Patch ist ja bereits die Ausgabe dieses Kommandos.

Abgesehen davon sollte er in einem frischen Checkout schon enthalten sein: https://github.com/dirk-dhu/freetz/blob/master/tools/make/fakeroot/fakeroot.mk#L42

... und damit ist es eher angebracht, mit einem eigenen "uname -r" mal nachzusehen, ob da tatsächlich auch "Microsoft" im "kernel release"-Wert steht. Vielleicht hat sich das ja bei einem neueren Kernel geändert oder es ist kein Ubuntu oder, oder, oder.

PS: Wenn Du hier tatsächlich eine 7590 meinst, bist Du total falsch. Das ist nämlich kein Puma6-Gerät.
 
Zuletzt bearbeitet:
@superblond:
Bitte führe folgendens Kommando in Deinem Freetz checkout Verzeichnis aus:
grep Microsoft tools/make/fakeroot/fakeroot.mk; uname -r; uname -a
dann können wir Dir weiterhelfen, denn der Patch sollte ja schon da sein, aber funktioniert nicht.

Gruß
 
PS: Wenn Du hier tatsächlich eine 7590 meinst, bist Du total falsch. Das ist nämlich kein Puma6-Gerät.
Ich quote mich mal selbst und halte fest, daß hier am Ende ich durcheinandergekommen bin ... das ist hier ja gar nicht der Puma6-Thread, wo es um den Fork von @f666 geht.

Sorry ... dann ist das natürlich Unfug, was ich da hinsichtlich Puma6-Boxen schrieb.
 
@DHU: Könntest Du einen Patch gemäß den Vorgaben (siehe http://freetz.org/ticket/2854#comment:8) erstellen, damit wir es in Freetz aufnehmen können? Den Patch am besten in dem o.a. Ticket anhängen.

Vielen Dank im Voraus!
Gruß
Whoopie
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.