Benutzer-Werkzeuge

Webseiten-Werkzeuge


freebsd:linux-software_auf_freebsd_betreiben

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

freebsd:linux-software_auf_freebsd_betreiben [2018-04-12 19:04:36] – angelegt manfredfreebsd:linux-software_auf_freebsd_betreiben [2023-04-22 17:03:19] (aktuell) manfred
Zeile 1: Zeile 1:
 +====== Linux-Software auf FreeBSD betreiben ======
 +
 +  * **[[https://docs.freebsd.org/de/books/handbook/linuxemu/]]**
 +  * [[http://www.freebsd.org/doc/de/books/handbook/linuxemu.html]]
 +  * [[http://www.freebsd.org/doc/de/books/handbook/linuxemu-lbc-install.html]]
 +
 +Ich zeige hier wie man ein Linux-Programm unter FreeBSD betreiben kann.
 +
 +Als Beispiel wollen wir hier mal "mkvmerge" von Linux nach FreeBSD holen.
 +
 +...und so macht man das...
 +
 +  # echo 'linux_enable="YES"' >> /etc/rc.conf
 +  # kldstat | egrep 'kernel|linux'
 +     39 0xffffffff80200000 13b15d0  kernel
 +      1 0xffffffff815b2000 46ce0    linux.ko
 +
 +  # portupgrade -NROD emulators/linux_base-f10
 +
 +Als erstes muss man jetzt daran denken, das die meisten Binärdateien ohne Bibliotheksdateien keinen Mux sagen!
 +
 +So sehen wir nach, welche Bibliotheksdateien unser mkvmerge benötigt:
 +  #  ldd /usr/bin/mkvmerge
 +          linux-gate.so.1 =>  (0x00680000)
 +          libmagic.so.1 => /usr/lib/libmagic.so.1 (0x004e0000)
 +          libz.so.1 => /lib/libz.so.1 (0x00110000)
 +          libmatroska.so.0 => /usr/lib/libmatroska.so.0 (0x006d1000)
 +          libebml.so.0 => /usr/lib/libebml.so.0 (0x008c1000)
 +          libFLAC.so.8 => /usr/lib/libFLAC.so.8 (0x00b01000)
 +          libogg.so.0 => /usr/lib/libogg.so.0 (0x00f35000)
 +          libvorbis.so.0 => /usr/lib/libvorbis.so.0 (0x00ce3000)
 +          liblzo2.so.2 => /usr/lib/liblzo2.so.2 (0x00f7d000)
 +          libbz2.so.1.0 => /lib/libbz2.so.1.0 (0x001f7000)
 +          libexpat.so.1 => /lib/libexpat.so.1 (0x005d9000)
 +          libboost_regex.so.1.40.0 => /usr/lib/libboost_regex.so.1.40.0 (0x00bf5000)
 +          libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00209000)
 +          libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0x001cf000)
 +          libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00a4a000)
 +          libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x002ff000)
 +          libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0x00125000)
 +          libicudata.so.42 => /usr/lib/libicudata.so.42 (0xb68f2000)
 +          libicui18n.so.42 => /usr/lib/libicui18n.so.42 (0x00d0c000)
 +          libicuuc.so.42 => /usr/lib/libicuuc.so.42 (0x00774000)
 +          librt.so.1 => /lib/tls/i686/cmov/librt.so.1 (0x0013e000)
 +          /lib/ld-linux.so.2 (0x00b52000)
 +
 +Jetzt auf dem Linux-Rechner alles zusammenpacken:
 +  # ldd /usr/bin/mkvmerge | awk '/\// {print $3}' | egrep -v ^$ | while read AA;do ls -l ${AA};done
 +  lrwxrwxrwx 1 root root 17 2010-05-12 23:33 /usr/lib/libmagic.so.1 -> libmagic.so.1.0.0
 +  lrwxrwxrwx 1 root root 15 2010-05-12 23:30 /lib/libz.so.1 -> libz.so.1.2.3.3
 +  -rw-r--r-- 1 root root 653372 2008-05-05 12:46 /usr/lib/libmatroska.so.0
 +  -rw-r--r-- 1 root root 138068 2008-03-28 12:55 /usr/lib/libebml.so.0
 +  lrwxrwxrwx 1 root root 16 2010-05-12 23:33 /usr/lib/libFLAC.so.8 -> libFLAC.so.8.2.0
 +  lrwxrwxrwx 1 root root 15 2010-05-12 23:33 /usr/lib/libogg.so.0 -> libogg.so.0.6.0
 +  lrwxrwxrwx 1 root root 18 2010-05-12 23:33 /usr/lib/libvorbis.so.0 -> libvorbis.so.0.4.3
 +  lrwxrwxrwx 1 root root 16 2010-05-12 23:42 /usr/lib/liblzo2.so.2 -> liblzo2.so.2.0.0
 +  lrwxrwxrwx 1 root root 15 2010-09-22 21:12 /lib/libbz2.so.1.0 -> libbz2.so.1.0.4
 +  lrwxrwxrwx 1 root root 17 2010-05-12 23:32 /lib/libexpat.so.1 -> libexpat.so.1.5.2
 +  -rw-r--r-- 1 root root 914308 2010-04-01 03:19 /usr/lib/libboost_regex.so.1.40.0
 +  lrwxrwxrwx 1 root root 19 2010-05-12 23:32 /usr/lib/libstdc++.so.6 -> libstdc++.so.6.0.13
 +  lrwxrwxrwx 1 root root 14 2010-10-22 21:02 /lib/tls/i686/cmov/libm.so.6 -> libm-2.11.1.so
 +  -rw-r--r-- 1 root root 120368 2010-03-26 23:40 /lib/libgcc_s.so.1
 +  lrwxrwxrwx 1 root root 14 2010-10-22 21:02 /lib/tls/i686/cmov/libc.so.6 -> libc-2.11.1.so
 +  lrwxrwxrwx 1 root root 20 2010-10-22 21:02 /lib/tls/i686/cmov/libpthread.so.0 -> libpthread-2.11.1.so
 +  lrwxrwxrwx 1 root root 18 2010-05-12 23:30 /usr/lib/libicudata.so.42 -> libicudata.so.42.1
 +  lrwxrwxrwx 1 root root 18 2010-05-12 23:30 /usr/lib/libicui18n.so.42 -> libicui18n.so.42.1
 +  lrwxrwxrwx 1 root root 16 2010-05-12 23:30 /usr/lib/libicuuc.so.42 -> libicuuc.so.42.1
 +  lrwxrwxrwx 1 root root 15 2010-10-22 21:02 /lib/tls/i686/cmov/librt.so.1 -> librt-2.11.1.so
 +
 +  # tar cf mkvmerge_libs.tar /usr/bin/mkvmerge /usr/lib/libmagic.so.1 /usr/lib/libmagic.so.1.0.0 /lib/libz.so.1 /lib/libz.so.1.2.3.3 /usr/lib/libmatroska.so.0 /usr/lib/libebml.so.0 /usr/lib/libFLAC.so.8 /usr/lib/libFLAC.so.8.2.0 /usr/lib/libogg.so.0 /usr/lib/libogg.so.0.6.0 /usr/lib/libvorbis.so.0 /usr/lib/libvorbis.so.0.4.3 /usr/lib/liblzo2.so.2 /usr/lib/liblzo2.so.2.0.0 /lib/libbz2.so.1.0 /lib/libbz2.so.1.0.4 /lib/libexpat.so.1 /lib/libexpat.so.1.5.2 /usr/lib/libboost_regex.so.1.40.0 /usr/lib/libstdc++.so.6 /usr/lib/libstdc++.so.6.0.13 /lib/tls/i686/cmov/libm.so.6 /lib/tls/i686/cmov/libm-2.11.1.so /lib/libgcc_s.so.1 /lib/tls/i686/cmov/libc.so.6 /lib/tls/i686/cmov/libc-2.11.1.so /lib/tls/i686/cmov/libpthread.so.0 /lib/tls/i686/cmov/libpthread-2.11.1.so /usr/lib/libicudata.so.42 /usr/lib/libicudata.so.42.1 /usr/lib/libicui18n.so.42 /usr/lib/libicui18n.so.42.1 /usr/lib/libicuuc.so.42 /usr/lib/libicuuc.so.42.1 /lib/tls/i686/cmov/librt.so.1 /lib/tls/i686/cmov/librt-2.11.1.so
 +
 +dann auf den FreeBSD-Rechner rüber schieben und dann auf den FreeBSD-Rechner einloggen:
 +  # scp mkvmerge_libs.tar root@server:
 +  # ssh root@server
 +
 +Natürlich sollte die Linux-Emulation bereits installiert sein,
 +sonst kann man das z.B. so schnell nachholen:
 +  # portinstall emulators/linux_base-f10
 +
 +Dann kann es losgehen, auspacken und fertig:
 +  # tar xf /root/mkvmerge_libs.tar -C /usr/compat/linux/
 +
 +...möglicherweise muss man die eine oder andere Datei mit einem Branding versehen:
 +  # cd /usr/compat/linux/
 +  # brandelf -t Linux usr/bin/mkvmerge
 +  # brandelf -t Linux lib/libz.so.1.2.3.3
 +  # brandelf -t Linux lib/libbz2.so.1.0.4
 +  # brandelf -t Linux lib/libexpat.so.1.5.2
 +  # brandelf -t Linux lib/tls/i686/cmov/libm-2.11.1.so
 +  # brandelf -t Linux lib/tls/i686/cmov/libc-2.11.1.so
 +  # brandelf -t Linux lib/tls/i686/cmov/libpthread-2.11.1.so
 +  # brandelf -t Linux lib/tls/i686/cmov/librt-2.11.1.so
 +  # brandelf -t Linux lib/libgcc_s.so.1
 +  # brandelf -t Linux usr/lib/libmagic.so.1.0.0
 +  # brandelf -t Linux usr/lib/libmatroska.so.0
 +  # brandelf -t Linux usr/lib/libebml.so.0
 +  # brandelf -t Linux usr/lib/libFLAC.so.8.2.0
 +  # brandelf -t Linux usr/lib/libogg.so.0.6.0
 +  # brandelf -t Linux usr/lib/libvorbis.so.0.4.3
 +  # brandelf -t Linux usr/lib/liblzo2.so.2.0.0
 +  # brandelf -t Linux usr/lib/libboost_regex.so.1.40.0
 +  # brandelf -t Linux usr/lib/libstdc++.so.6.0.13
 +  # brandelf -t Linux usr/lib/libicudata.so.42.1
 +  # brandelf -t Linux usr/lib/libicui18n.so.42.1
 +  # brandelf -t Linux usr/lib/libicuuc.so.42.1
 +
 +Prinzipiell sollte jetzt alles funktionieren, allerdings habe ich noch das Problem,
 +dass bei mir diese Fehlermeldung kommt:
 +  # /usr/compat/linux/usr/bin/mkvmerge: error while loading shared libraries: /usr/lib/libmagic.so.1: ELF file OS ABI invalid
 +
 +Er soll die Lib "/usr/compat/linux/usr/lib/libmagic.so.1" verwenden, aber dummerweise versucht er die Lib "/usr/lib/libmagic.so.1" zu verwenden, die gibt es aber nicht im System...
 +
 +...dafür habe ich zur Zeit auch noch keine Lösung. :-(
 +
 +In den meisten Fällen funktioniert das aber nach dieser Anleitung... ;-)
 +