diff --git a/.gitignore b/.gitignore index 98b50ee..324fc22 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ # IntelliJ IDEA .idea/ *.iml +build/ diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..40bfa2e --- /dev/null +++ b/.travis.yml @@ -0,0 +1,20 @@ +language: python +cache: pip + +python: + - "2.7" + +install: + - pip install -r requirements.txt + +script: + - sphinx-build -a . _build/html + +deploy: + provider: pages + local-dir: _build/html/ + skip-cleanup: true + github-token: $GITHUB_TOKEN # Set in the settings page of your repository, as a secure variable + keep-history: true + on: + branch: master diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..5dede4a --- /dev/null +++ b/Makefile @@ -0,0 +1,19 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +SOURCEDIR = . +BUILDDIR = build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/_static/freetz.png b/_static/freetz.png new file mode 100644 index 0000000..fbe31e0 Binary files /dev/null and b/_static/freetz.png differ diff --git a/_static/freetz.svg b/_static/freetz.svg new file mode 100644 index 0000000..9819a29 --- /dev/null +++ b/_static/freetz.svg @@ -0,0 +1,98 @@ + + + + + + + + + + image/svg+xml + + + + + + + __ __ __ __ __ __|__ |__) |__ |__ | /| | \ |__ |__ | /__ The fun has just begun ... + + diff --git a/conf.py b/conf.py new file mode 100644 index 0000000..d33d948 --- /dev/null +++ b/conf.py @@ -0,0 +1,174 @@ +# -*- coding: utf-8 -*- +# +# Configuration file for the Sphinx documentation builder. +# +# This file does only contain a selection of the most common options. For a +# full list see the documentation: +# http://www.sphinx-doc.org/en/master/config + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +# import os +# import sys +# sys.path.insert(0, os.path.abspath('.')) + + +# -- Project information ----------------------------------------------------- + +project = 'Freetz' +copyright = '2019, Freetz Developers' +author = 'Freetz Developers' + +# The short X.Y version +version = '' +# The full version, including alpha/beta/rc tags +release = 'master' + + +# -- General configuration --------------------------------------------------- + +# If your documentation needs a minimal Sphinx version, state it here. +# +# needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +# source_suffix = ['.rst', '.md'] +source_suffix = '.rst' + +# The master toctree document. +master_doc = 'index' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = 'de' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = [] + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = None + + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'sphinx_rtd_theme' +html_logo = '_static/freetz.png' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +# html_theme_options = {} + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# Custom sidebar templates, must be a dictionary that maps document names +# to template names. +# +# The default sidebars (for documents that don't match any pattern) are +# defined by theme itself. Builtin themes are using these templates by +# default: ``['localtoc.html', 'relations.html', 'sourcelink.html', +# 'searchbox.html']``. +# +# html_sidebars = {} + + +# -- Options for HTMLHelp output --------------------------------------------- + +# Output file base name for HTML help builder. +htmlhelp_basename = 'Freetzdoc' + + +# -- Options for LaTeX output ------------------------------------------------ + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # + # 'papersize': 'letterpaper', + + # The font size ('10pt', '11pt' or '12pt'). + # + # 'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + # + # 'preamble': '', + + # Latex figure (float) alignment + # + # 'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'Freetz.tex', 'Freetz Documentation', + 'Freetz Developers', 'manual'), +] + + +# -- Options for manual page output ------------------------------------------ + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'freetz', 'Freetz Documentation', + [author], 1) +] + + +# -- Options for Texinfo output ---------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'Freetz', 'Freetz Documentation', + author, 'Freetz', 'One line description of project.', + 'Miscellaneous'), +] + + +# -- Options for Epub output ------------------------------------------------- + +# Bibliographic Dublin Core info. +epub_title = project + +# The unique identifier of the text. This can be a ISBN number +# or the project homepage. +# +# epub_identifier = '' + +# A unique identification for the text. +# +# epub_uid = '' + +# A list of files that should not be packed into the epub file. +epub_exclude_files = ['search.html'] diff --git a/extract-content.py b/extract-content.py new file mode 100755 index 0000000..39a06c0 --- /dev/null +++ b/extract-content.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python3 + +import os +import sys +import subprocess +from bs4 import BeautifulSoup +from progress.bar import Bar + +pages = [] +titleList = [] + +def line_prepender(filename, line): + with open(filename, 'r+') as f: + content = f.read() + f.seek(0, 0) + f.write(line.rstrip('\r\n') + '\n' + content) + + +# Create a list of all pages to convert +for path, subdirs, files in os.walk("wiki"): + for name in files: + if not "?" in name and not ".." in name and ".html" in name: + pages.append(os.path.join(path, name)) + +# Also convert the toplevel index.html +pages.append("index.html") + +# Progress bar +numPages = len(pages) +bar = Bar('Converting pages', max=numPages) + +# Actual extraction +for count, page in enumerate(pages): + pageFile = open(page, "r") + pageSoup = BeautifulSoup(pageFile, 'html.parser') + for div in pageSoup.find_all("div", {'class':'wiki-toc'}): + div.decompose() + + pageFile.close() + + content = pageSoup.find(id="content") + + titleList.append(title) + + contentPage = open(page + ".content", "w") + if not type(content) is None: + contentPage.write(str(content)) + + contentPage.close() + + subprocess.call(["pandoc", "-f", "html-header_attributes-link_attributes-native_spans-native_divs", "-t", "rst", page + ".content", "-o", page.replace(".html", ".rst")]) + subprocess.call(["sed", "-i", "/^:::/ d", page.replace(".html", ".rst")]) + + os.remove(page + ".content") + bar.next() + +bar.finish() + +for i in titleList: + print(" " + "wiki/" + i) diff --git a/index.rst b/index.rst new file mode 100644 index 0000000..5ab592c --- /dev/null +++ b/index.rst @@ -0,0 +1,456 @@ +.. _WillkommenbeiFreetz: + +Willkommen bei Freetz +===================== + +| `Freetz `__ ist eine Firmware-Erweiterung und + Modifikation für `​Fritz!Box `__ Router und + kompatible Geräte. Die Original-Firmware des Herstellers wird um + zusätzliche Funktionen `erweitert `__ und mit einer + individuellen Zusammenstellung von Programmen ergänzt. Mehr zum Namen + "Freetz" und zur Historie siehe + `FAQ `__. +| Freetz ist `​freie + Software `__ + und wird von Oliver Metz, Alexander Kriegisch und Team entwickelt. + +|Warning| **WARNUNG:** Die Installation einer modifizierten Firmware führt +zum Verlust der Gewährleistung des Herstellers! + +.. _Download: + +Download +-------- + +Das letzte Release ist Version 2.0. Bitte folge den Anweisungen unter +`Quellcode `__, um es zu downloaden. + +Um den Trunk (Entwicklerversion) zu nutzen, einfach die Anleitung zum +`Auschecken und Aktualisieren des +Quellcodes `__ aus dem Freetz-Repository +folgen. + +Diese Versionen unterscheiden sich in der unterstützen AVM-Firmware +(Datei 'FIRMWARES') und den Erweiterungen durch Freetz (Datei +'CHANGELOG'). + +Eine komplette Liste aller Releases befindet sich auf der `Download +Seite `__. + +.. _ErsteSchritte: + +Erste Schritte +-------------- + +Diese Anleitung richtet sich in erster Linie an neue Benutzer, welche +sich erst mit Freetz vertraut machen wollen. Der Benutzer wird +schrittweise begleitet bis zur Erstellung und Flashen eines ersten +Firmware-Images. + +- `Erste Schritte mit Freetz `__ + +.. _Installation: + +Installation +------------ + +Für die Freetz-Installation wird Linux als Betriebssystem empfohlen. Wer +kein Linux dauerhaft auf seinem Rechner installieren will, kann sich mit +einem Linux-Live-System oder einem sog. Image für eine "virtuellen +Maschine" (VM) seiner Wahl behelfen. + +- `Voraussetzungen, notwendige Pakete und sonstige Informationen zur + Freetz-Installation `__ + +.. _HilfeundSupport: + +Hilfe und Support +----------------- + +- `Wiki `__: + + - `Installation `__ + - `Pakete, Addons und CGI-Erweiterungen `__ + - `Patches `__, `Aussehen `__ + - `Bibliotheken `__, Module, `FAQ `__ + - `Kernel-Sources `__ + - Hintergrund-Infos + - `Howtos `__, und `Hilfe `__ + - `Trouble-Shooting `__ + +- `​IP-Phone-Forum `__ + +Hier findest du mehr zu `Hilfe und Support `__. + +.. _PresseundBerichte: + +Presse und Berichte +------------------- + +- `Liste von Berichten über Freetz `__ +- `Ankündigung Entwicklertreffen Freetz-Conf + 2011 `__ + +.. _Machmit: + +Mach mit! +--------- + +Interessierte Benutzer und potentielle Entwickler, die aktiv an der +Verbesserung von Freetz und deren Entwicklung mitwirken wollen, werden +durch das Trac-Systems hinreichend unterstützt. So können der komplette +Quellcode eingesehen, Änderungen verfolgt und über das Ticket-System +Fehler und Feature-Wünsche gemeldet werden. Ein aktuelles Wiki hilft +allen Beteiligten! + +- `Zeitachse `__: Chronologie der Änderungen +- `Roadmap `__: Stand und Planung der Entwicklung (in Arbeit) +- `Quellcode-Browser `__: SVN-Repository durchsuchen +- `Ticket-System `__: Probleme, Fehler und neue + Feature-Wünsche **(bitte**\ `hier `__\ **nachlesen + und evtl. im IP-Phone-Forum fragen, bevor ein Ticket eröffnet + wird!)** +- `Developer + Information `__: + Informationen für Entwickler und Howtos (englisch) +- Interner Entwicklerbereich: Nur für Entwickler: Interner Bereich zur + Abstimmung. + +Das Bearbeiten des Wikis und Eröffnen von Tickets ist zur Vermeidung von +Spam nur nach vorheriger **Registrierung** möglich. + +.. _Quellcode: + +Quellcode +--------- + +Anleitung zum `Auschecken und Aktualisieren des +Quellcodes `__ aus dem Freetz-Repository + +.. toctree:: + :maxdepth: 1 + :caption: Generelles + :name: sec-general + + wiki/packages_tagged + wiki/Download + wiki/freetz + wiki/FAQ + wiki/Impressum + wiki/libs_tagged + wiki/ticket + wiki/style + wiki/packages + wiki/FreetzConf2011 + wiki/patch + wiki/Press.en + wiki/patches + wiki/help + wiki/libs + wiki/costumscript_dublesyslog + wiki/kernel + wiki/Press + wiki/freetz.en + wiki/FAQ.en + wiki/common/source_code.en + wiki/common/source_code + + +.. toctree:: + :maxdepth: 1 + :caption: Patches + :name: sec-patches + + wiki/patches/remove_myfritz + wiki/patches/remove_tr069 + wiki/patches/remove_assistant + wiki/patches/remove_help + wiki/patches/remove_usermand + wiki/patches/enum.en + wiki/patches/remove_samba + wiki/patches/signed + wiki/patches/remove_upnp + wiki/patches/usb_names + wiki/patches/remove_mediasrv + wiki/patches/remove_dsld + wiki/patches/enum + wiki/patches/onlinechanged + wiki/patches/freetzmount + wiki/patches/replace_onlinechanged + wiki/patches/remove_capi + wiki/patches/exec_autorun + wiki/patches/maxdevcount + wiki/patches/remove_minid + wiki/patches/multpile_printers + wiki/patches/alarmclock + wiki/patches/freetzmount.en + wiki/patches/remove_vpn + wiki/patches/remove_support + wiki/patches/remove_ftpd + wiki/patches/remove_aura_usb + wiki/patches/custom_udev_rules + + +.. toctree:: + :maxdepth: 1 + :caption: Hilfe + :name: sec-help + + wiki/help/howtos + wiki/help/trouble_shooting + wiki/help/fritz_faq + wiki/help/irc + wiki/help/wikiedit + wiki/help/howtos/common + wiki/help/howtos/security + wiki/help/howtos/troubleshoot + wiki/help/howtos/development + wiki/help/howtos/common/freetz_linux + wiki/help/howtos/common/shutdown + wiki/help/howtos/common/newbie.en + wiki/help/howtos/common/first_trunk + wiki/help/howtos/common/install.en + wiki/help/howtos/common/external + wiki/help/howtos/common/create_swap + wiki/help/howtos/common/install + wiki/help/howtos/common/newbie + wiki/help/howtos/common/wol + wiki/help/howtos/common/user + wiki/help/howtos/common/busybox_httpd + wiki/help/howtos/common/install/menuconfig + wiki/help/howtos/common/newbie/other + wiki/help/howtos/common/newbie/errors + wiki/help/howtos/troubleshoot/repair_phonebook + wiki/help/howtos/troubleshoot/recover_firmware + wiki/help/howtos/troubleshoot/reboots + wiki/help/howtos/security/switch_config + wiki/help/howtos/security/router_and_firewall + wiki/help/howtos/security/user_management + wiki/help/howtos/security/split_wlan_lan + wiki/help/howtos/development/sign_image + wiki/help/howtos/development/integrate_patches + wiki/help/howtos/development/bandwidth_svg + wiki/help/howtos/development/create_cross-compiler_toolchain + wiki/help/howtos/development/release_management + wiki/help/howtos/development/package_creation + wiki/help/howtos/development/save_mtd_2 + wiki/help/howtos/development/developer_information + wiki/help/howtos/development/create_gui + wiki/help/howtos/development/manipulation_detection + wiki/help/howtos/development/freetz_make + wiki/help/howtos/development/urlader_flags + wiki/help/howtos/development/flash + wiki/help/howtos/development/firmware_update_details + wiki/help/howtos/development/repack_fw + wiki/help/howtos/development/install_addon + wiki/help/howtos/development/make_busybox + wiki/help/howtos/development/adam2 + wiki/help/howtos/development/save_mtd_1 + wiki/help/howtos/development/integrate_own_files + wiki/help/howtos/development/analyse_image_names + wiki/help/howtos/development/menuconfig + wiki/help/howtos/development/compile_own_progs + wiki/help/howtos/development/make_kernel + wiki/help/howtos/development/make_room + wiki/help/howtos/development/developer_information/package_development + wiki/help/howtos/development/developer_information/post_commit_hook + wiki/help/howtos/development/developer_information/shell_coding_conventions + wiki/help/howtos/development/developer_information/package_development_advanced + wiki/help/howtos/development/developer_information/package_development_dynamic + wiki/help/howtos/development/developer_information/package_development_start + wiki/help/howtos/development/developer_information/package_development_start/example_2 + wiki/help/howtos/development/developer_information/package_development_start/example_1 + wiki/help/howtos/development/developer_information/package_development_start/.language + wiki/help/howtos/development/developer_information/package_development_start/webinterface_example_1 + wiki/help/howtos/development/developer_information/package_development_start/example_3 + wiki/help/howtos/development/developer_information/webif/libmodcgi + wiki/help/wikiedit/screenshots + wiki/help/wikiedit/toc + wiki/help/wikiedit/tagging + wiki/help/wikiedit/tables + wiki/help/wikiedit/formatting_guide + wiki/help/wikiedit/goodies + wiki/style/tagging + wiki/style/skins + wiki/style/favicons + wiki/style/mounted + wiki/libs/ftdi + wiki/libs/ftdi.en + + +.. toctree:: + :maxdepth: 1 + :caption: Pakete + :name: sec-packages + + wiki/packages/bridge-utils + wiki/packages/sispmctl + wiki/packages/empty + wiki/packages/apache + wiki/packages/polipo.en + wiki/packages/autofs + wiki/packages/strace + wiki/packages/syslogd + wiki/packages/lsof + wiki/packages/dns2tcp + wiki/packages/tinyproxy + wiki/packages/davfs2 + wiki/packages/s3fslite + wiki/packages/dropbear.en + wiki/packages/ctorrent + wiki/packages/irssi + wiki/packages/hplip + wiki/packages/lighttpd + wiki/packages/privoxy + wiki/packages/radvd.en + wiki/packages/usbroot + wiki/packages/vim + wiki/packages/bluez-utils + wiki/packages/sane-backends + wiki/packages/usbip + wiki/packages/dropbear + wiki/packages/iptables-cgi + wiki/packages/hd-idle + wiki/packages/fhem + wiki/packages/igmpproxy + wiki/packages/usbutils + wiki/packages/inotify-tools + wiki/packages/authorized-keys.en + wiki/packages/rrdstats + wiki/packages/mcabber + wiki/packages/dtmfbox + wiki/packages/nfsd.en + wiki/packages/espeak + wiki/packages/dnsd + wiki/packages/tor + wiki/packages/spindown + wiki/packages/ncftp + wiki/packages/lynx + wiki/packages/smstools3 + wiki/packages/debootstrap + wiki/packages/ppp + wiki/packages/xmail + wiki/packages/sundtek + wiki/packages/iptables + wiki/packages/subversion + wiki/packages/dtach + wiki/packages/vsftpd + wiki/packages/ziproxy + wiki/packages/ntfs-3g + wiki/packages/ruby + wiki/packages/aiccu + wiki/packages/mc + wiki/packages/nfs + wiki/packages/streamripper + wiki/packages/htpdate + wiki/packages/lua + wiki/packages/emailrelay + wiki/packages/madplay + wiki/packages/nhipt + wiki/packages/wput + wiki/packages/netsnmp + wiki/packages/transmission.en + wiki/packages/imapproxy.en + wiki/packages/fuse + wiki/packages/hiawatha + wiki/packages/cifsmount + wiki/packages/matrixtunnel + wiki/packages/ndas.en + wiki/packages/nfs-utils + wiki/packages/vpnc + wiki/packages/haserl + wiki/packages/obexftp + wiki/packages/nmap + wiki/packages/httptunnel + wiki/packages/onlinechanged + wiki/packages/mini_fo + wiki/packages/pingtunnel + wiki/packages/tcp_wrappers + wiki/packages/netsnmp.en + wiki/packages/wol + wiki/packages/cpmaccfg + wiki/packages/syslogd.en + wiki/packages/checkmaild + wiki/packages/portmap + wiki/packages/digitemp + wiki/packages/downloader + wiki/packages/bip + wiki/packages/fortune + wiki/packages/xrelayd + wiki/packages/tinc + wiki/packages/bird + wiki/packages/onlinechanged_cgi + wiki/packages/php + wiki/packages/pptp + wiki/packages/mediatomb + wiki/packages/inetd + wiki/packages/owfs + wiki/packages/unbound + wiki/packages/fstyp + wiki/packages/prosody.en + wiki/packages/bftpd + wiki/packages/mod + wiki/packages/br2684ctl.en + wiki/packages/deco + wiki/packages/trickle + wiki/packages/radvd + wiki/packages/opendd + wiki/packages/pptpd + wiki/packages/mediaserver + wiki/packages/iptables.en + wiki/packages/dnsd.en + wiki/packages/hp-utils + wiki/packages/screen + wiki/packages/ndas + wiki/packages/dnsmasq + wiki/packages/wget + wiki/packages/e2fsprogs + wiki/packages/bind + wiki/packages/tcpdump + wiki/packages/gw6 + wiki/packages/nhipt.en + wiki/packages/openntpd + wiki/packages/rudi-shell + wiki/packages/nano + wiki/packages/nfsd + wiki/packages/stunnel + wiki/packages/rrdtool + wiki/packages/ldd + wiki/packages/prosody + wiki/packages/fhzctrl + wiki/packages/aiccu.en + wiki/packages/authorized-keys + wiki/packages/pciutils + wiki/packages/vtund + wiki/packages/fritzload + wiki/packages/jamvm + wiki/packages/callmonitor + wiki/packages/br2684ctl + wiki/packages/netcat + wiki/packages/quagga + wiki/packages/samba + wiki/packages/iodine + wiki/packages/nagios + wiki/packages/smartmontools + wiki/packages/mtr + wiki/packages/avm-firewall + wiki/packages/bash + wiki/packages/asterisk + wiki/packages/microperl + wiki/packages/nano-shell + wiki/packages/m-i-t + wiki/packages/minidlna + wiki/packages/inadyn-mt + wiki/packages/bluez + wiki/packages/DemoPackageA + wiki/packages/openvpn + wiki/packages/knock + wiki/packages/ltrace + wiki/packages/curl + wiki/packages/inadyn-mt.en + wiki/packages/virtualip + wiki/packages/socat + wiki/packages/transmission + wiki/packages/netsnmp/mrtg.en + +.. |Warning| image:: /chrome/wikiextras-icons-16/exclamation.png diff --git a/make.bat b/make.bat new file mode 100644 index 0000000..796a7b3 --- /dev/null +++ b/make.bat @@ -0,0 +1,35 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=. +set BUILDDIR=build + +if "%1" == "" goto help + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% + +:end +popd diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..cbf1e36 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +sphinx +sphinx-rtd-theme diff --git a/wiki/Download.rst b/wiki/Download.rst new file mode 100644 index 0000000..1142a80 --- /dev/null +++ b/wiki/Download.rst @@ -0,0 +1,150 @@ +.. _StabileVersionen: + +Stabile Versionen +----------------- + +.. _Freetz1.201.07.2012: + +Freetz 1.2 (01.07.2012) +~~~~~~~~~~~~~~~~~~~~~~~ + +| Dies ist die aktuelle stabile Version von Freetz: +| `freetz-1.2.tar.bz2 `__ (2,7 MB) +| `Changelog `__\ `​ `__ +| `Unterstützte Boxen und + Firmwares `__\ `​ `__ +| MD5: ``BC2F27DBDD49CFA78FDAF2D2D46D8A4C`` + +.. _EntwicklerVersionen: + +Entwickler Versionen +-------------------- + +`Snapshots `__ + +Snapshots sind Abbilder des trunks zu einem bestimmten Zeitpunkt. + +.. _UploadundStatistik: + +Upload und Statistik +-------------------- + +`Downloads-Plugin `__ + +.. _VeralteteVersionen: + +Veraltete Versionen +------------------- + +.. _Freetz1.1.522.01.2012: + +Freetz 1.1.5 (22.01.2012) +~~~~~~~~~~~~~~~~~~~~~~~~~ + +| `freetz-1.1.5.tar.bz2 `__ (2,4 MB) +| `Changelog `__\ `​ `__ +| `Unterstützte Boxen und + Firmwares `__\ `​ `__ +| MD5: ``99CE04B3B9D8B5D77F57F1490DB6C317`` + +.. _Freetz1.1.411.02.2011: + +Freetz 1.1.4 (11.02.2011) +~~~~~~~~~~~~~~~~~~~~~~~~~ + +| `freetz-1.1.4.tar.bz2 `__ (2,4 MB) +| `Changelog `__\ `​ `__ +| `Unterstützte Boxen und + Firmwares `__\ `​ `__ +| MD5: ``48F8A1BC51E864CBE550BBA3BC9C7201`` + +.. _Freetz1.1.329.04.2010: + +Freetz 1.1.3 (29.04.2010) +~~~~~~~~~~~~~~~~~~~~~~~~~ + +| `freetz-1.1.3.tar.bz2 `__ (2,4 MB) +| `Changelog `__\ `​ `__ +| `Unterstützte Boxen und + Firmwares `__\ `​ `__ +| MD5: ``615A829645334720EF039B9834D58758`` + +.. _Freetz1.1.230.12.2009: + +Freetz 1.1.2 (30.12.2009) +~~~~~~~~~~~~~~~~~~~~~~~~~ + +| `freetz-1.1.2.tar.bz2 `__ (2,4 MB) +| `Changelog `__\ `​ `__ +| `Unterstützte Boxen und + Firmwares `__\ `​ `__ +| MD5: ``A8BCCC2D7B77ED32DEE21E6D2122A365`` + +.. _Freetz1.1.117.10.2009: + +Freetz 1.1.1 (17.10.2009) +~~~~~~~~~~~~~~~~~~~~~~~~~ + +| `freetz-1.1.1.tar.bz2 `__ (2,5 MB) +| `Changelog `__\ `​ `__ +| `Unterstützte Boxen und + Firmwares `__\ `​ `__ +| MD5: ``22A5265F14A7FE0F1FD240AEF9E1F1DC`` + +.. _Freetz1.112.06.2009: + +Freetz 1.1 (12.06.2009) +~~~~~~~~~~~~~~~~~~~~~~~ + +| `freetz-1.1.tar.bz2 `__ (2,5 MB) +| `Changelog `__\ `​ `__ +| `Unterstützte Boxen und + Firmwares `__\ `​ `__ +| MD5: ``14076242610377E0459B2FB51624A4D6`` + +.. _Freetz1.0.318.03.2009: + +Freetz 1.0.3 (18.03.2009) +~~~~~~~~~~~~~~~~~~~~~~~~~ + +| `freetz-1.0.3.tar.bz2 `__ (1,9 MB) +| `Changelog `__\ `​ `__ +| `Unterstützte Boxen und + Firmwares `__\ `​ `__ +| MD5: ``CF0B991905178E74EC682CDEEA9B7CBC`` + +.. _Freetz1.0.215.02.2009: + +Freetz 1.0.2 (15.02.2009) +~~~~~~~~~~~~~~~~~~~~~~~~~ + +| `freetz-1.0.2.tar.bz2 `__ (1,9 MB) +| `Changelog `__\ `​ `__ +| `Unterstützte Boxen und + Firmwares `__\ `​ `__ +| MD5: ``C7CB456536421690480A52EC1D11F493`` + +.. _Freetz1.0.122.11.2008: + +Freetz 1.0.1 (22.11.2008) +~~~~~~~~~~~~~~~~~~~~~~~~~ + +| `freetz-1.0.1.tar.bz2 `__ (1,9 MB) +| `Changelog `__\ `​ `__ +| `Unterstützte Boxen und + Firmwares `__\ `​ `__ +| MD5: ``D2F9E508363E8F09E1588BC07CF31488`` + +.. _Freetz1.006.06.2008: + +Freetz 1.0 (06.06.2008) +~~~~~~~~~~~~~~~~~~~~~~~ + +| `freetz-1.0.tar.bz2 `__ (1,8 MB) +| `Changelog `__\ `​ `__ +| `Unterstützte Boxen und + Firmwares `__\ `​ `__ +| MD5: ``8EE2D9BF552C565F89024AAE6F1F8394`` + +- Tags +- `download `__ diff --git a/wiki/FAQ.en.rst b/wiki/FAQ.en.rst new file mode 100644 index 0000000..2f14040 --- /dev/null +++ b/wiki/FAQ.en.rst @@ -0,0 +1,967 @@ +.. _Freetz-FAQ: + +Freetz-FAQ +========== + +This page answers some **F**\ requently **A**\ sked **Q**\ uestions +about *Freetz*. It is still under construction. + +Be aware that there is a more complete `FAQ `__ version in +`German `__. + +.. _Projectnameandhistory: + +Project name and history +------------------------ + +.. _WhatisFreetz: + +What is Freetz? +~~~~~~~~~~~~~~~ + + *Freetz* is a toolbox for developers and experienced users to build a + modified firmware based on the original firmware for the + DSL/LAN/WLAN/VoIP-Routers `​AVM + Fritz!Box `__ and + `​T-Com + Speedport `__ + (identical hardware) and to transfer this firmware to the device. + There are many extension packages available, along with options to + remove unwanted functionality from the original firmware. + +.. _WheredoesthenameFreetzcomefrom: + +Where does the name Freetz come from? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + It is a contraction of the word "free" and the name "Fritz", intended + to mirror the name of the devices manufactured by + `​AVM `__ . With this, we want to symbolise that + *Freetz* is free software. In order to avoid intellectual property + problems with AVM, whose registered trademark "Fritz!" (with + exclamation mark) we explicitly acknowledge, we have chosen this + deliberately different spelling. The idea for the name came from + Alexander Kriegisch (kriegaex), who decided together with Oliver Metz + (olistudent) what the project should be called when the + version-managed source code repository would be opened to the public. + From the (in our opinion daft-sounding) alliteration "Free Fritz" we + got "Freetz". ("OpenFritz " was also considered, but we didn't want + to ape `​OpenWrt `__ .) We don't claim that the + name is fantastic, but it is short and hopefully easy to remember. + |:-)| + +.. _HowshouldIpronounceFreetz: + +How should I pronounce Freetz? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Like the English word "free" with a German-sounding "tz" on the end, + something like "freets". + +.. _HowdidFreetzstart: + +How did Freetz start? +~~~~~~~~~~~~~~~~~~~~~ + + There are many predecessors to *Freetz* . A few years ago, Daniel + Eiband (danisahne) started the *Danisahne-Mod* ( *DS-Mod* ) based on + the previous work and cooperation of other creative people (Erik + Andersen, Christian Volkmann, Andreas Bühmann, Enrik Berkhan and + others). As with *Freetz* , this allowed and allows modified + firmwares to be created, but only for older firmware-versions with + Linux kernel 2.4. Since some routers still have firmwares based on + the Linux 2.4 kernel, the version + `​ds-0.2.9-p8 `__ + is still the current version for some hardware. For the majority of + current hardware, the immediate predecessor of *Freetz* is, however, + *ds26* (latest version + `​ds26-15.2 `__ + ), created by Oliver Metz, which is only suitable for firmware using + Linux kernel 2.6. The same applies to *Freetz* as *Freetz* is + currently nothing other than the current development version of + *ds26* with a new name. In many files you will therefore still find + the name *DS-Mod* , which will gradually be replaced with the new + name *Freetz* . + +.. _WhychangethenamewhenDS-Modhasalreadybecomewell-known: + +Why change the name when DS-Mod has already become well-known? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + There are multiple reasons. For one, Daniel has not been actively + involved in the development of *ds26* for well over a year. For + another, he has already started a new project at + `​SourceForge `__ to develop a new *DS-Mod* + from scratch - which we inoffically call *DS-Mod NG (Next + Generation)* - for which the source code repository is publicly + available on his `​project website `__ + . We don't wish to take Daniel's project name from him, or to compete + with him, but actually hope that he will eventually have more time + for his project and that we will be able to combine both versions to + have the strengths of both of them in one product. However, at this + point in time, the projects have split significantly; *DS-Mod NG* has + a very clean structure, but is not yet finished whereas *Freetz* + (previously *ds26* ) is already widely used and is gradually being + refactored during the process of development. Where *DS-Mod* was + talked about in recent press coverage (e.g. + `​PC-Welt `__ + ), *Freetz* alias *ds26* was meant. + +.. _WhyissomuchofFreetzandthedevelopmentinGerman: + +Why is so much of Freetz and the development in German? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + AVM is a German company, and their hardware is mainly sold on the + German market, where it is very popular and generally the + German-language (and German telecoms-system) versions of their + products are the first to be released. It is therefore not surprising + that the project started in Germany and most of the developers are + German. There are some current ideas of how to better integrate + internationalization support, and although most development + discussions take place in German, contributions in English are most + welcome (and will usually be answered in English). + +.. _Motivation: + +Motivation +---------- + +.. _Whychangethefirmware: + +Why change the firmware? +~~~~~~~~~~~~~~~~~~~~~~~~ + + It is possible to edit some special files (character devices) under + /var/flash where the contents still exist after reboot, but this is + not true for the rest of the filesystem. The content of these + character devices is located in its own rather tiny flash partition. + Most data is stored on a read-only SquashFS filesystem which can only + be modified during a firmware update, using a SquashFS filesystem + image. To permanently include (larger) files into the firmware, they + must be put into the SqashFS image, which is implemented in Freetz. + +.. _Distribution: + +Distribution +------------ + +.. _CanIgetafinishedbinaryofFreetz: + +Can I get a finished binary of Freetz? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + The short answer is no, and this is never likely to be possible. + *Freetz* works by taking the original firmware and applying patches + to it. Since the original firmwares contain software which is + non-free, as well as some which is free, that means we are not able + to distribute finished binary versions. Also, given the number of + permutations of modules and hardware then it would be impossible to + meet all needs with a limited number of binaries and so it is + actually of advantage to have users build their own firmware, + tailored to their individual needs. + +.. _HowcanIgetFreetz: + +How can I get Freetz? +~~~~~~~~~~~~~~~~~~~~~ + + See the `Getting Started `__ page for how to check out + the source code and get started with *Freetz* . Note that this + requires a working Linux installation (a Live-CD or Virtual Machine + version will do if you do not want to fully install Linux on your + computer). Please make sure that you have basic Linux skills before + requesting help as this will make your, and our, lives easier. + +.. _Whichtypeofboxesandwhichfirmwareversionsarecurrentlysupported:: + +Which type of boxes and which firmware versions are currently supported?: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + | a.) + `Freetz-1.1.4 `__\ `​ `__ + | b.) + `freetz-stable-1.1 `__\ `​ `__ + | c.) + `Trunk `__\ `​ `__ + +.. _Development: + +Development +----------- + +.. _Whenwillversionxybereleased: + +When will version xy be released? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Generally speaking: It's done when it's done. The developers are + working in their off time, new releases are provided if the + decided-on features are completed and critical bugs were fixed. + +.. + + Still, a rough plan for new releases does exist: 3-4 months after a + stable release we declare a "Feature-Freeze" for the following + release. From that time on, only bugs are being fixed. The + feature-freeze dates are announced in the `roadmap `__ . + After the feature-freeze you can expect the final release to be + released in about 1 to 1,5 months. Between the stable + feature-releases there can be some maintenance-releases provided to + support newer firmware versions by AVM or some error-fixes. + +.. _TrunkBranchesTags: + +Trunk, Branches, Tags? +~~~~~~~~~~~~~~~~~~~~~~ + + The `trunk `__ is the current development tree. A + branch is a tree which is separated from the trunk at a specific time + (e.g. `r2759 `__ ). Currently the following branches + are available: + `freetz-stable-1.0 `__ and + `freetz-stable-1.1 `__ . All + release versions are tagged (e.g. + `freetz-1.1.4 `__ ) + +.. + + To check out a stable version: + + .. code:: bash + + svn co http://svn.freetz.org/branches/freetz-stable-1.1 freetz-stable-1.1 + + To check out a tag: + + .. code:: bash + + svn co http://svn.freetz.org/tags/freetz-1.1.4 freetz-1.1.4 + + To check out the development version (trunk): + + .. code:: bash + + svn co http://svn.freetz.org/trunk freetz-trunk + + Attention! The development version (trunk) is only recommended to + novice users with basic Linux knowledge who can troubleshoot + elementary errors and can give proper feedback to the developers. + Because the trunk is an ongoing development version, it won't be as + stable as the branched and tagged versions. + +.. _WhenfeatureXYisimplemented: + +When feature XY is implemented? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + The fastest way is to present an working solution. We take notice of + every reasonable feature request. Due to the developers designing + Freetz in their off time, you have to be patient sometimes. + +.. _IlikeFreetzandIwanttosupportthedevelopment.: + +I like Freetz and I want to support the development. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + It is possible to donate money to the development team using the + Paypal donation button at the bottom right-hand corner. Further, a + specific hardware variation will of course be better supported when + the development team has some test hardware. Currently we would very + much benefit from some 7270s (who wouldn't?!). There is a thread on + the topic of donations at + `​IPPF `__ + . + +.. _Pre-Configurationmenuconfig: + +Pre-Configuration (menuconfig) +------------------------------ + +.. _DoIhavethe8MBv1or16MBv2versionoftheFB7270: + +Do I have the 8MB (v1) or 16MB (v2) version of the FB 7270 ? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +| 1.) read the support file at + `​http://fritz.box/html/support.html `__ +| 2.) The file should contain the following entry: + +- 8MB: **flashsize 0x00800000** +- 16MB: **flashsize 0x01000000** + +| 00800000 Hex = 8.388.608 decimal = 8.192 KB = 8 MB +| 01000000 Hex = 16.777.216 decimal = 16.384 KB = 16 MB +| More details are described + `​[here] `__. + +.. _WhatareindicatorsforaFB7270v3: + +What are indicators for a FB 7270v3 ? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- the firmware version. Firmwares for the 7270v3 start with 74.xx.xx +- the `serial number `__ + +.. _WhichpackagesshouldbebuiltintoaFreetzimage: + +Which packages should be built into a Freetz image ? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + We recommend Dropbear? to have SSH access, as well as + `dnsmasq `__ as DHCP server replacement. + +.. _Whatdoesbinaryonlymean: + +What does "binary only" mean ? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Packages tagged with "binary only" do not supply any web frontend, + init script or anything similar. They provide only the binaries + themselves, which means you have to take care of the configuration, + initialization etc. yourself. (Note: Other than the name (maybe) + suggests, these packages are - along with every other package in + Freetz - built from source.) + +.. _ImageBuildmakebuild: + +Image Build (make/build) +------------------------ + +.. _Meaningofthespecificmake-targets: + +Meaning of the specific make-targets +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +A: The make-targets are influencing the `build +process `__ and creating the +firmware. Most of the following information was taken from `​this +thread `__ +originally. + +**1. Clean-Up:** + +- *make clean + *\ … + +- *make -clean*: + Basically, this calls the clean-target of the original package's + Makefile. It will delete all generated files (first and foremost the + object-files, libraries and executables) but leaves its configuration + intact. + A following *make* command doesn't apply changed patches, but creates + only the above-named object-files, libraries and executables from the + source-files (compiling). + Example: *make mc-clean* would clean the "Midnight Commander" package + (mc). + +- *make -dirclean*: + Deletes the whole directory of the package. A following *make* + command will extract the files, apply the patches, configure and + compile the package. + Only the last stage (compilation) would take place after a *make + -clean* command (as described above). + +- *make dirclean*: + As the name implies, this performs a "directory-cleanup". The + directories */packages, /source, /build, /toolchain/build, + toolchain/target* (and some other stuff(?)will be deleted, so that a + following *make* command must build everything new. This is + recommended if changes caused by *svn up* will result in a firmware + which is not working as expected. Alternatively, if you know exactly + which package(s) are causing them problem, you can clean these + package files via *make -dirclean* individually (see above). + Note that, after a *make dirclean*, the build process to create the + firmware will take more time than it did before because everything + must be rebuilt from scratch. + +- *make tools-distclean*: + deletes the tools (busybox, lzma, squashfs, others) + +- *make distclean*: + In addition to *make dirclean*, this also deletes the download folder + and the tools. + +- *make config-clean-deps*: + If some packages were deselected via *make menuconfig*, maybe some + shared libraries are still selected but are not needed anymore by any + active package (that happens because *menuconfig* cannot recognize + this by itself). Such libraries can manually be disabled under + 'Advanced Options'→'Shared Libraries' - libaries; the ones that are + still in use cannot be deselected. Alternatively, you can also do + this automatically via *make config-clean-deps*. Furthermore, Busybox + applets manually selected in *make menuconfig* will be reset (*not\* + those modified via *make busybox-menuconfig*!). + +- *make config-clean-deps-keep-busybox*: + Like *make config-clean-deps*, but does not reset Busybox applets. + +- *make kernel-dirclean*: + deletes the current source-tree of the kernel, to build it completely + new from clean sources. (important if something has changed at the + kernel patches) + +- *make kernel-clean*: + analogue to *make -clean* + +- *make kernel-toolchain-dirclean*: + deletes the kernel compiler + +- *make target-toolchain-dirclean*: + deletes the compiler for the uClibc and the binaries (executables) + +**2. Preparations:** + +- *make world*: + Prerequisite is a toolchain (see `Cross-Compiler / Create + Toolchain `__). + If problems with non-existing directories occur, it's possible that + *make world* can fix this. But normally this should not be necessary. + +- *make kernel-toolchain*: + compiles the kernel and also for the target (Fritzbox) + Due to historical reasons the label was kept as *kernel-toolchain*, + although, as mentioned, not only the kernel will be built but also + the packages (see below). + +- *make target-toolchain*: + Compiles the packages for the target (Fritzbox). + +- *make kernel-menuconfig*: + The configuration of the kernel will be saved after finishing under + ./make/linux/Config.. + +- *make kernel-precompiled*: + Build the kernel and the kernel modules. + +- *make menuconfig* + (`Source `__): To + configure Freetz it makes use of *conf/mconf*, which some or other + already knows from the linux kernel configuration. The + `​ncurses `__ variant *mconf* + can be called with the command *make menuconfig*. + By the way: + A help for each item can be accessed directly in *menuconfig* by + pressing "?". + After entering "/" you can search across all leaves for any strings - + really practical. + +.. _Buildinganotherfirmwarelanguage: + +Building another firmware language +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The firmware language/version should match your box type, else your box +will go into a reboot loop. + +Check the advanced option *Enforce urlader environment* and put **avm** +in *Patches > Enforce firmware_version variable* to build German +firmware for an international box. If you want to do this (or the other +way around with **avme** for English firmware on a non-international +box), `read about recovery `__ and have +a working/recovery image ready. + +.. _Problemsduringbuilding: + +Problems during building +~~~~~~~~~~~~~~~~~~~~~~~~ + +If you encounter problems during the build process, go through this list +first: + +.. _YoumusthaveeitherhavegettextsupportinyourClibraryorusetheGNUgettextlibrary.: + +You must have either have gettext support in your C library, or use the GNU gettext library. +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + There is a wrong value in config.cache. Delete the file by typing: + "rm make/config.cache" or "rm source/target-mipsel_uClibc- *0.X.XX* + /config.cache" + +.. _ERROR:Theprogramlibraryheaderxywasnotfound: + +ERROR: The program/library/header xy was not found… +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + If the build process was interrupted by this message, some necessary + packages for the build system are missing. Please install them and + restart the build process. + +.. _WARNING:Theprogramlibraryheaderxywasnotfound: + +WARNING: The program/library/header xy was not found… +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + If the build process was interrupted by this message, maybe some + packages providing the needed library are missing. This can be caused + by selecting some options or packages in menuconfig. Please install + the needed libraries by installing the packages and restart the build + process. + +.. _NosuchfileFRITZ.Box_xxxxxxxxx.aa.bb.cc.image: + +No such file \`FRITZ.Box_xxxxxxxxx.aa.bb.cc.image' +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + This happens every time AVM releases a new firmware version. Normally + only the newest file is available on the AVM FTP server. Freetz can + only support the version that's current at the release date. Due to + license restrictions, we cannot provide these images. Possible + solutions (prioritized by difficulty): + +- for everyone: at + `​Firmware-Collector-Thread `__ + you can ask for an older firmware version (NO beta firmwares). The + image must be downloaded and copied to the directory 'dl/fw'. +- for beginners: Use the ``stable`` Branch from the SVN repository. If + possible, update to a newer version which supports the latest AVM + firmware versions (or wait for an upcoming Freetz release). +- for novices: Use the developing tree (``trunk``) from the SVN + repository. The latest firmware versions are supported here. +- for experts: At make menuconfig? under *Advanced Options ⇒ Override + firmware source* change the name of the file to download and use. + +Please use the last 2 possibilities at your own risk. If it's just a +"bugfix release" (like the update from .57 to .59) it should work +without errors. However, if major changes were done by AVM at the latest +firmware release, use it carefully!! + +.. _Pleasecopythefollowingfileintothedlfwsub-directorymanually:fritz_box_aa_bb_cc-ddddd.image: + +Please copy the following file into the 'dl/fw' sub-directory manually: fritz_box_aa_bb_cc-ddddd.image +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + The beta firmwares (Labor-Firmware) cannot be downloaded from the + AVM-FTP-Server. Please download them manually from the + `​AVM-Labor-Site `__ . You must agree the + license terms to get the file. After finishing download, put all + files into the 'dl/fw' directory. Please also consider the headpoint + before. + +.. _a.ln:cannotexecutebinaryfile: + +./ln: cannot execute binary file +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + The current working directory '.' is within the path (variable PATH). + To make a successfully build, the directory must be removed. + +.. _Filesystemimagetoobig: + +Filesystem image too big +^^^^^^^^^^^^^^^^^^^^^^^^ + + The firmware image doesn't fit into the flash memory of the selected + box. + +- With some boxes, this can happen if none of the packages are + selected, because the basic Freetz components use some space and the + AVM images are just under the maximum flash size. In this case, it's + neccessary to use one or more Remove-Patches under the + 'Patches'-Section to remove unused components of the original + firmware. +- If a lot packages are selected, reconsider if all packages are really + necessary, or try via + `external `__/`​Downloader `__/`USBRoot `__/`NFSRoot `__ + to externalize some of the components to reduce the image size. + Further information is available at + `​IPPF `__ and + in the + `​WIKI `__ +- With boxes with an USB-Host (e.g. 7170,7270) you can externalize some + packages on an USB device (e.g. USB Stick, USB hard disk). The + externalize-process is done at the end of the build process via the + `external `__-script. At + menuconfig, there is an option to do the externalizing. Only + predefined parts of packages are being externalized to a USB-Device, + as opposed to using USB-Root which will move the entire file system + onto the USB drive. +- If a package was deselected, maybe some shared libraries are still + enabled but are not needed anymore. (menuconfig cannot recognize this + by itself). These libraries can manually be deselected under + 'Advanced Options'→'Shared Libraries' - libraries currently in use + cannot be deselected. Another option is to do this via the command + *make config-clean-deps* or *make config-clean-deps-keep-busybox*, + respectively. + +.. _WARNING:Notenoughfreeflashspaceforansweringmachine: + +WARNING: Not enough free flash space for answering machine! +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + The image is small enough to fit on flash memory, but you have not + enough free space left for the answering machine, or non space left. + The firmare should work in spite of this message, but to ensure a + fully functional answering machine or fax service, you should use an + FAT-formatted USB-Stick to use this space for the answering machine, + fax service and other services. + +.. + + Background Information: Since a few firmware versions, AVM tries to + use the remaining bytes in the Flash to create an jffs2-Partition. In + this partition all data for e.g. the answering machine, fax service + and so on are stored. On older boxes (e.g. 7170) the jffs2-Partition + cannot be created as space howsoever is very limited. Please see this + message as an warning. More informations at the + `​IPPF-Thread `__ + . In FREETZ available since revision `r3049 `__ . + +.. _Theproblemstilloccurs.Whatnow: + +The problem still occurs. What now? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + At first go into the 'Advanced Options' of menuconfig, change the + 'Verbosity Level' to 2 and execute make again. After that go to the + `​IPPF Forum `__ + and search for the error message or for an existing thread. If + nothing could be found, create a new thread to get help with the + given error message (please post it inside Code-Tags), the file + .config (your configuration as attachment) and the used version or + SVN branch/-revision. + +.. _FlashingofCompiledImage: + +Flashing of Compiled Image +-------------------------- + +.. _ProblemsaftersuccessfulFlashing: + +Problems after (successful) Flashing +------------------------------------ + +.. _Settingsarenotavailableatcurrentsecuritylevel: + +Settings are not available at current security level +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + There are several security levels. The level can be changed using the + following commands: + + .. code:: bash + + echo x > /tmp/flash/security ( after r3318: echo x > /tmp/flash/mod/security) + modsave + + * with x being one of the following values: + * 0 : no restrictions + * 1 : only configuration files without shell commands (shell scripts) can be modified + * 2 : no configuration files can be modified + +.. _Whatisthedefaultpasswordforfreetz: + +What is the default password for freetz? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The default password for freetz (both for console and web login) is +"freetz". Login name for console is "root", and for the web interface it +is admin. When you first log in using telnet or ssh, you have to change +your password. + +.. _Theinfoledblinkstwiceperiodically: + +The info led blinks twice periodically +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +See `​this +thread `__. + +.. _Configuration: + +Configuration +------------- + +.. _WereisthewholeconfigurationstoredontheFritzbox: + +Were is the whole configuration stored on the Fritzbox ? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + The whole configuration on the Fritzbox can be found under + /tmp/flash. This is important if you build a Freetz firmware, because + the configuration is not located in the static firmware part of the + image. All files located under /tmp/flash were not be edited during a + firmware update, so the configuration files will be keeped after a + firmware update. Important, always execute "modsave" after making + changes on the configuration files under /tmp/flash, to save them in + the flash. More information about that see below. + +.. _Configurationnotavailableatthecurrentsecuritylevel: + +Configuration not available at the current security level! +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + There are different security levels. Depending on the selected level, + not all configuration files are editable. + + .. code:: bash + + echo x > /tmp/flash/security (since r3318: echo x > /tmp/flash/mod/security) + modsave + # with x being one of the following values: + # 0 : no restrictions + # 1 : only configuration files without shell commands (shell scripts) can be modified + # 2 : no configuration files can be modified + +|Warning| **ATTENTION:** Between x and > there must be at least a single +blank space. If there isn't, the file will be empty. (echo will redirect +to stdout. The output would be empty then. Alternatively, you could also +write "x">security. + +This must be done after installing the new firmware on the Box via +Telnet or SSH (not possible over the Rudi-Shell, because it also +requires security level "0"). + +.. _HowcanidisablethepasswordfortheFreetz-Website: + +How can i disable the password for the Freetz-Website? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Execute the following command on the terminal: + + .. code:: bash + + touch /tmp/flash/webcfg_conf + chmod +x /tmp/flash/webcfg_conf + modsave flash + /etc/init.d/rc.webcfg restart + + Background: The script /tmp/flash/webcfg_conf will be preferred + compared to /etc/default.webcfg/webcfg_conf to create the + configuration file. An empty script /tmp/flash/webcfg_conf will + create an empty configuration file without a password. + +.. + + |Warning| For Freetz-1.1.x replace */tmp/flash/webcfg_conf* with + */tmp/flash/httpd_conf* . + +.. _HowcanichangethepasswordfortheFreetz-Website: + +How can i change the password for the Freetz-Website? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + This can be done via the `​web + interface `__ by itself: + ``http://fritz.box:81/cgi-bin/passwd.cgi`` + +.. _HowcaniresetthepasswordfortheFreetz-WebsiteincaseIvelostitbutstillhaveaccessviatelnetSSH: + +How can i reset the password for the Freetz-Website in case I've lost it but still have access via telnet/SSH ? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + At first, stop the Freetz-Webif: + + .. code:: bash + + /etc/init.d/rc.webcfg stop + + Then use vi to open the file mod.cfg and edit the line that begins + with "export MOD_HTTPD_PASSWD" as follows: + + .. code:: bash + + vi /var/mod/etc/conf/mod.cfg + + .. code:: bash + + export MOD_HTTPD_PASSWD='$1$$zO6d3zi9DefdWLMB.OHaO.' + + Now start the Freetz-Web interface: + + .. code:: bash + + /etc/init.d/rc.webcfg start + + Now you can log in to the Web interface with the password "freetz". + +.. + + | Please consider, that this change will **NOT** persist across + reboots. So after a reboot, you still have the old unknown + password. + | Therefore, you should change the password of the Box in the + freetz-menu under *Settings* before you reboot your Fritzbox. + +.. _HowcanIchangetheroot-Password: + +How can I change the root-Password? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Execute the following commands on the terminal: + + .. code:: bash + + passwd + modusers save + modsave flash + + After entering 'passwd' you must type in the password. While typing, + the password will 'not' be shown. Too simple passwords will not be + accepted. + +.. _ProblemsDuringWorking: + +Problems During Working +----------------------- + +.. _varflashfreetztoobig: + +/var/flash/freetz too big +~~~~~~~~~~~~~~~~~~~~~~~~~ + + The default limit set by Freetz for the maximum size of the + configuration was exceeded. This limit is a protection to prevent an + unintended full TFFS. This limit can be increased, but you should + keep an eye on the current fill level: + + .. code:: bash + + modconf set mod MOD_LIMIT= + modconf save mod + modsave flash + +|Warning| As of `r5706 `__ the setting MOD_LIMIT is +obsolete. + +.. _NoftpaccessafterFreetz: + +No ftp access after Freetz +~~~~~~~~~~~~~~~~~~~~~~~~~~ + + This is a problem which occurs especially in Freetz 1.1.x. More + details and solution can be found in the + `howto `__ . + +.. _RemovingFREETZandOtherModifications: + +Removing FREETZ and Other Modifications +--------------------------------------- + +.. _Miscellaneous: + +Miscellaneous +------------- + +.. _HowcanIuseanownotherDNSserverforallconnectedPCsandFritzbox: + +How can I use an own/other DNS server for all connected PCs and Fritzbox ? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +AVM doesn't allow the modification of the default DNS servers the Box is +using, instead of other routers which can change it via the WebUI. (End +of 2009). + + Possible Solutions: + +- dnsmasq: Installation of an own DNS server on the Fritzbox with the + package `dnsmasq `__. This is a general + possibility which is working on every box. This requires a + modification (freetzing) of the firmware image. With an edited + version of /etc/resolv.conf (if using the trunk version, this is + possible via the GUI under "Settings"→"Freetz: resolv.conf") you can + add a DNS server: "nameserver 208.67.220.220" (example with the + OpenDNS server) +- without dnsmasq: At some boxes, e.g. 7170(FV 29.04.76) it's possible + to edit the central config file of AVM. With the command "nvi + /var/flash/ar7.cfg" all entries of "overwrite_dns1 = xxx.xxx.xxx.xxx" + and "overwrite_dns2 = xxx.xxx.xxx.xxx" must be edited. It's + recommended that only persons with basic knowledge of nvi and telnet + respectivly ssh/telnet should do that! Here, the multid from AVM is + running as DNS server. At the resolv.conf a loopback entry + "nameserver 127.0.0.1" exists. This is allowing Linux standard + applications the resolving at the Fritzbox over the multid. +- Editing the /etc/resolv.conf: If its only about changing the current + used DNS of the Fritzbox, editing /etc/resolv.conf like described + above at dnsmasq also works. This is only affecting the name + resolution of the Box, connected clients are still using the standard + DNS. + +.. _HowcanIcreatecharacterdevices: + +How can I create character devices ? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Freetz uses also a `​character +device `__, +which can save files enduring with help of a Tiny Flash Filesystems +(TFFS) in the Flash, to save the configuration. Prerequisite is a minor +number, which is not used by any other character device under +``/var/flash/`` (Freetz uses the minor 0x3c), the major number can be +read from ``/proc/devices``: + +.. code:: bash + + mknod /var/flash/ c + +Because this character device is created in a +`​ramdisk `__ under ``/var/``, +this command must be executed every time during a restart. The content +is achieving |(?)|. |Warning| To edit such character devices **never** use +vi! For this case, there is the wrapper script nvi. + +|Warning| **ATTENTION:** The flash partition of the TFFS is very small and +not capable to contain files > 10-30 KB (depending on the size of the +other files). + +The current fill level can be shown like this: + +:: + + + echo 'cleanup' > /proc/tffs + + echo 'info' > /proc/tffs + + cat /proc/tffs | grep '^fill=' + +.. _Whichnetworkcableisnecessaryforarecover: + +Which network cable is necessary for a recover ? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + RJ45 standard network cable, no crossover + +.. _HowoldismyFritzBox: + +How old is my FritzBox ? +~~~~~~~~~~~~~~~~~~~~~~~~ + +| The first four characters of the box' serial number describe its age: +| Example: **W484**-xxx-xx-xxx-xxx ⇒ **Thursday, 27.11.2008** +| U = 2006 +| V = 2007 +| W = 2008 +| X = 2009 +| A = 2010 +| W451 = calendar week 45 and the first day of that week = Monday +| W462 = calendar week 46 and the second day of that week = Tuesday +| W473 = calendar week 47 and the third day of that week = Wednesday +| **W484 = calendar week 48 and the fourth day of that week = Thursday** +| W495 = calendar week 49 the fifth day of that week = Friday + +.. _HowmuchRAMdoesmyFritzBoxcontain: + +How much RAM does my FritzBox contain? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +| For the second xxxx-\ **XXX**-xxx-xxx currently, the following codes + are known to occur: + +| Example: W484-\ **305**-xx-xxx-xxx ⇒ **Fritzbox with 16MB and 1und1 + branding** +| 293 - HWRev 122 (8MB/7270_V1) - AVM branding +| 294 - HWRev 122 (8MB/7270_V1) - 1und1 branding +| 304 - HWRev 139 (16MB/7270_V2) - AVM branding +| **305 - HWRev 139 (16MB/7270_V2) - 1und1 branding** +| xxx - HWRev 145 (16MB/7270_V3) - ??? branding - 7270_V3 +| 307 - HWRev 139 (16MB/7270_V2) - AVME branding International Version? +| 310 - HWRev 139 (16MB/7270_V2) - AVME branding A-/CH-Version? + +- Tags +- `faq `__ + +.. |:-)| image:: ../chrome/wikiextras-icons-16/smiley.png +.. |Warning| image:: ../chrome/wikiextras-icons-16/exclamation.png +.. |(?)| image:: ../chrome/wikiextras-icons-16/question.png + diff --git a/wiki/FAQ.rst b/wiki/FAQ.rst new file mode 100644 index 0000000..108498e --- /dev/null +++ b/wiki/FAQ.rst @@ -0,0 +1,1459 @@ +.. _Freetz-FAQ: + +Freetz-FAQ +========== + +Hier werden häufig gestellte Fragen (engl. `FAQ `__ = +frequently asked questions) beantwortet. Diese Seite befindet sich noch +im Aufbau. + +.. _ProduktnameundHistorisches: + +Produktname und Historisches +---------------------------- + +.. _WasistFreetz: + +Was ist Freetz? +~~~~~~~~~~~~~~~ + + *Freetz* ist ein Werkzeugkasten für Entwickler und versierte + Anwender, um sich für diverse DSL/LAN/WLAN/VoIP-Router der Serien + `​AVM + Fritz!Box `__ bzw. + `​T-Com + Speedport `__ + (baulich ähnlich) eine auf der Original-Firmware des Herstellers + aufbauende, funktional modifizierte Firmware zu bauen und diese auf + das Gerät zu transferieren. Es werden eine Vielzahl von + Erweiterungspaketen angeboten, aber auch Möglichkeiten, nicht + benötigte Funktionalität der Original-Firmware zu entfernen. + +.. _WoherkommtderNameFreetz: + +Woher kommt der Name Freetz? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Es handelt sich um eine (verballhornte) Zusammensetzung aus dem + englischen Wort "free" (dt. frei) und dem Männernamen "Fritz", + welcher an den Gerätenamen des Herstellers + `​AVM `__ erinnern soll. Wir wollen damit + symbolisieren, dass es sich bei *Freetz* um freie Software handelt. + Da wir marken- und urheberrechtlichen Problemen mit AVM, deren + Schutzrechte auf die Marke "Fritz!" (mit Ausrufezeichen) wir + ausdrücklich anerkennen, aus dem Weg gehen möchten, haben wir uns für + diese deutlich unterschiedliche Schreibweise entschieden. Die Idee + für den Namen stammt von Alexander Kriegisch, der sich gemeinsam mit + Oliver Metz überlegte, wie das Projekt heißen sollte, wenn das + versionsverwaltete Quelltext-Repository der Öffentlichkeit übergeben + werden würde. Aus der (nach unserem Empfinden bescheuert klingenden) + Alliteration "Free Fritz" wurde schließlich "Freetz". (Auch + "OpenFritz" war im Rennen, aber wir wollten nicht + `​OpenWrt `__ nachäffen.) Wir bilden uns nicht + ein, der Name sei ein großer Wurf, aber er ist kurz und wir hoffen, + er ist leicht zu merken. |:-)| + +.. _WiewirdFreetzausgesprochen: + +Wie wird Freetz ausgesprochen? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Wie das englische Wort "free" mit angehängtem deutschem "tz", + pseudo-deutsch geschrieben in etwa "Friez", pseudo-englisch + geschrieben in etwa "freets". Anders gesagt, wie der Männername + "Fritz", aber mit langem "i" und mit englisch ausgesprochenem "r". + +.. _WieentstandFreetz: + +Wie entstand Freetz? +~~~~~~~~~~~~~~~~~~~~ + + Es gibt einige Vorläufer von *Freetz*. Daniel Eiband (bekannt als + "Danisahne") hat vor einigen Jahren, aufbauend auf Vor- und + Zuarbeiten anderer kreativer Köpfe (Erik Andersen, Christian + Volkmann, Andreas Bühmann, Enrik Berkhan u.a.), den sog. + *Danisahne-Mod* (kurz: *DS-Mod*) ins Leben gerufen. So wie heute mit + *Freetz*, konnte und kann man auch damit Firmware-Modifikationen + bauen, allerdings noch für ältere Firmware-Versionen mit Linux-Kernel + 2.4. Da einige Router noch immer auf Kernel 2.4 basierende Firmwares + haben, ist Version + `​ds-0.2.9-p8 `__ + des *DS-Mod* für jene Geräte immer noch aktuell. Für die Mehrzahl + aktueller Geräte war der direkte Vorläufer zu *Freetz* jedoch die von + Oliver Metz ins Leben gerufene Version *ds26* (zuletzt + `​ds26-15.2 `__), + welche ausschließlich für Firmwares mit Kernel 2.6 geeignet ist. + Selbiges gilt auch für *Freetz*, denn *Freetz* ist Stand heute + (20.01.2008) nichts anderes als die aktuelle Entwicklerversion von + *ds26*, nur mit neuem Namen. + +.. _WozuüberhaupteinneuerNamewodochDS-Modinzwischensobekanntist: + +Wozu überhaupt ein neuer Name, wo doch DS-Mod inzwischen so bekannt ist? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Es gibt mehrere Gründe dafür. Zum einen ist seit gut einem Jahr + Daniel nicht mehr aktiv an der Weiterentwicklung von *ds26* beteiligt + gewesen, zum anderen hat er bei + `​SourceForge `__ schon etwa ebenso lange + begonnen, eine von Grund auf neue *DS-Mod*-Version - nennen wir sie + mal inofiziell *DS-Mod NG (Next Generation)* - zu entwickeln, deren + aktueller Stand in einem öffentlich zugänglichen Quellcode-Repository + auf der `​Projekt-Webseite `__ + einzusehen ist. Wir wollen Daniel seinen Projektnamen nicht streitig + machen und auch nicht in Konkurrenz zu ihm treten, sondern hoffen im + Gegenteil, dass er eines Tages wieder mehr Zeit für sein Projekt + haben wird und schlußendlich beide wieder in ein gemeinsames münden, + um alle Vorteile in einem Produkt zu vereinen. Zurzeit ist es jedoch + so, dass beide Projekte sich deutlich auseinander entwickelt haben: + *DS-Mod NG* hat eine sehr saubere Struktur, ist jedoch noch lange + nicht fertig, *Freetz* (bzw. bisher *ds26*) ist hundertfach im + Einsatz und wird eher während der laufenden Entwicklung immer wieder + mal Refactoring-Maßnahmen unterworfen. Wo zuletzt in der Presse (z.B. + `​PC-Welt `__) + vom *DS-Mod* gesprochen wurde, war *Freetz* alias *ds26* gemeint. + +.. _Motivation: + +Motivation +---------- + +.. _WarumFirmwaremodifizieren: + +Warum Firmware modifizieren? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Es können zwar einzelne spezielle Dateien (character devices) unter + /var/flash/ bearbeitet werden und sie behalten den Inhalt auch über + einen Reboot hinweg, jedoch trifft das nicht auf den Rest des + Dateisystems zu. Der Inhalt dieser character devices landet in einer + eigenen Flash Partition, die sehr klein ist. Der überwiegende Teil + des Dateisystems ist ein read-only Squashfs Image, welches in einem + Firmware Update enthalten ist. Um (größere) Dateien dauerhaft in die + Firmware einzubinden müssen sie in dieses Squashfs Image gelangen, + welches unter anderem in Freetz implementiert ist. + +.. _Verbreitung: + +Verbreitung +----------- + +.. _WarumwerdenkeinefertigenmodifiziertenImagesangeboten: + +Warum werden keine fertigen modifizierten Images angeboten? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Die Lizenz, unter welcher die Firmwares von AVM bereitgestellt + werden, untersagt dies. + +.. _WokannFREETZheruntergeladenwerden: + +Wo kann FREETZ heruntergeladen werden? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + | Auf der Startseite sind unter `Quellcode `__ + die Möglichkeiten zum `Download `__ von FREETZ + aufgelistet. Es werden sowohl erprobte stabile Versionen von FREETZ + als auch Entwicklerversionen angeboten. Zum Bauen eines + FREETZ-Images wird LINUX zwingend vorausgesetzt. Es muss nicht + unbedingt ein natives Linux-System auf dem PC bereits vorhanden + sein. Auch eine Virtuelle Maschine eurer Wahl oder eine Live-CD mit + Linux können zum Bauen von FREETZ benutzt werden. + +.. _WelcheBoxenundwelcheFirmwareswerdendurchFreetzunterstützt:: + +Welche Boxen und welche Firmwares werden durch Freetz unterstützt: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + | a.) + `Freetz-1.1.5 `__\ `​ `__ + | b.) + `freetz-stable-2.0 `__\ `​ `__ + | c.) + `Trunk `__\ `​ `__ + +.. _Entwicklung: + +Entwicklung +----------- + +.. _WannkommtVersionxy: + +Wann kommt Version xy? +~~~~~~~~~~~~~~~~~~~~~~ + + Grundsätzlich: It's done when it's done. Die Entwickler arbeiten in + ihrer Freizeit, und Releases gibt es dann, wenn die beschlossenen + Features fertig und release-kritische Bugs behoben sind. + +.. + + Es gibt jedoch einen groben Plan für die Releases: 3-4 Monate nach + einer stabilen Release gibt es einen Feature Freeze für die + nachfolgende Release. Ab diesem Zeitpunkt werden nur noch Bugs + behoben. Die Feature-Freeze-Termine werden in der + `Roadmap `__ angekündigt. Nach dem Feature Freeze kann grob + nach 1 bis 1,5 Monaten mit dem Release gerechnet werden. Zwischen den + stabilen Feature-Releases gibt es ggfs. weitere Maintenance-Releases, + die nur neue Firmwareversionen von AVM unterstützen und Fehler + beheben. + +.. _TrunkBranchesTags: + +Trunk, Branches, Tags? +~~~~~~~~~~~~~~~~~~~~~~ + +| Der `Trunk `__ ist der aktuelle Entwicklungszweig. + Unter einem Branch versteht man ein Zweig, der zu einer bestimmten + Zeit (z.B. `r10373 `__) aus dem Trunk abgetrennt + wurde. Hier gibt es derzeit den Branch + `freetz-stable-2.0 `__. Alle + Releaseversionen bekommen einen Tag (z.B. + `freetz-1.2 `__. Zukünftig wird das dann der + Tag 2.0 werden. +| Auschecken einer stabilen Version: + +.. code:: bash + + svn co http://svn.freetz.org/branches/freetz-stable-2.0 freetz-stable-2.0 + +Auschecken eines Tags: + +.. code:: bash + + svn co http://svn.freetz.org/tags/freetz-1.2 freetz-1.2 + +Nach Erscheinen des neuen Tag 2.0 wird dieser dann wie folgt +ausgecheckt: + +.. code:: bash + + svn co http://svn.freetz.org/tags/freetz-2.0 freetz-2.0 + +Auschecken einer Entwicklerversion (trunk): + +.. code:: bash + + svn co http://svn.freetz.org/trunk freetz-trunk + +Achtung! Die Entwicklerversion (trunk) ist nur für fortgeschrittene +Benutzer zu empfehlen, die mit Linux-Grundlagen vertraut sind, sich bei +elementaren Problemen selbst helfen können und den Entwicklern einen +qualitativen Feedback geben können. Da es sich hierbei um eine laufende +Entwicklung handelt, ist die Stabilität der Entwicklerversion meist +nicht so hoch, wie bei Branches und Tags. + +.. _WannistFeatureXYfertig: + +Wann ist Feature XY fertig? +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Der schnellste Weg zur Fertigstellung ist die Präsentation einer + funktionierenden Lösung. Wir notieren uns jedes sinnvoll erscheinende + Feature Request. Da wir Freetz aber in unserer Freizeit gestalten, + muss man sich halt manchmal gedulden. + +.. _FreetzgefälltmirundichmöchtedieWeiterentwicklungunterstützen.: + +Freetz gefällt mir und ich möchte die Weiterentwicklung unterstützen. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Hier gibt es einmal die Möglichkeit dem Entwicklerteam eine + Geldspende zukommen zu lassen. Dazu ist in der rechten untern Ecke + ein Paypal-Spendenbutton angebracht. Weiterhin kann eine Box + natürlich besser unterstützt werden, wenn das Entwicklerteam + "Testboxen" besitzt. Im + `​IPPF `__ + existiert ein Thread zum Thema Spenden. + +.. _Vorkonfigurationmenuconfig: + +Vorkonfiguration (menuconfig) +----------------------------- + +.. _WieerkennneichwelcheVarianteder7270ichbesitze: + +Wie erkennne ich welche Variante der 7270 ich besitze? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Siehe + `hier `__. + +.. _WelchePaketesolltemaninsFreetzImagesinnvollerweiseeinbauen: + +Welche Pakete sollte man ins Freetz Image sinnvollerweise einbauen? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Sinnvoll ist Dropbear um später einen SSH Zugang zu haben, dnsmasq + als DNS- und DHCP-Server Ersatz, sowie das Syslog-Webif um Fehler zu + erkennen. + +.. _Wasbedeutetbinaryonly: + +Was bedeutet "binary only"? +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + "binary only" heißt, dass für das ausgewählte Paket nur das Programm + ("binary") selbst erstellt wird, jedoch kein Webinterface, + init-Skripte etc. vorhanden sind. Dies bedeutet, dass man sich selbst + um die Konfiguration und das Starten des Programms kümmern muss. + +.. _WasbedeutetEXPERIMENTALoderdieKategorieunstable: + +Was bedeutet "EXPERIMENTAL" oder die Kategorie "unstable"? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Die so gekennzeichneten Pakete haben bekannte Probleme und + können/sollten nicht benutzt werden. Evtl gibt es dazu noch ein + offenes `Ticket `__ + +.. _Funktioniertiptablesnatconntrack: + +Funktioniert iptables/nat/conntrack? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + | IPtables funktioniert überall. Allerdings wird in Fritz!OS 05.2x + und 05.5x von AVM der PacketAccelerator genutzt. Durch diesen + funktioniert conntrack nicht mehr. Und damit + nat/masquerading/state/transparenter Proxy und alles was sonst noch + von conntrack abhängt. + | Abhilft schafft ein Downgrade auf eine alte Firmware, zB bei der + 7270 ein "Alien" mit 04.88 oder gleich Freetz-1.2. + | Da AVM den Quellcode des PacketAccelerator veröffentlicht hat, + könnte das Problem von jemandem mit viel Zeit und Wissen behoben + werden. + | Das Thema wird in Ticket `#1605 `__ behandelt, und so + lange das Ticket noch nicht geschlossen ist besteht das Problem. + +.. _PacketAcceleratorAVMPA: + +Packet Accelerator (AVM PA) +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +| Der Packet Accelerator bringt auch den Nachteil mit sich, dass tcpdump + etc nicht mehr alle Pakete sehen. Um den PA bis zum nächsten Reboot + temporär zu deaktivieren: +| ``echo disable > /proc/net/avm_pa/control`` +| Dies bringt den Nachteil mit sich, dass zB die 7390 keine 100 MBit/s + mehr im ATA-Modues routen kann sondern nur noch ~ 40 MBit/s. Siehe + auch `Funktioniert + iptables/nat/conntrack? `__ + +.. _WasbedeutetnotavailablenosourcesbyAVM: + +Was bedeutet "not available, no sources by AVM"? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Die für diese Firmware passenden Kernelquellen wurden noch nicht in + Freetz integriert. Meist ist die Ursache dafür, dass AVM diese noch + nicht veröffentlicht hat. Typischerweise dauert es wenige Tage bis + mehrere Monate. Falls die Datei für die entsprechende FritzBox + mittlerweile auf `​ftp://ftp.avm.de/ `__ + veröffentlicht wurde, ein Ticket dafür öffnen. Um den Vorgang zu + beschleunigen empfiehlt sich, wie in den + `​info.txt `__ + beschrieben, schriftlich an AVM zu wenden: ``fritzbox_info@avm.de``. + +.. _ErstellenvonFirmware-ImagesmakeBuild: + +Erstellen von Firmware-Images (make/Build) +------------------------------------------ + +.. _Wasbedeutendieeinzelnenmake-targetsz.B.dircleandistcleanconfig-clean-depsetc.: + +Was bedeuten die einzelnen make-targets (z.B. dirclean, distclean, config-clean-deps etc.)? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +A: Die make-targets beeinflussen den +`Build-Prozess `__ bei der +FW-Erstellung. Viele der folgenden Infos entstammen (`​diesem +Thread `__). + +**1. Aufräumen:** + +- *make clean + *\ … + +- *make -clean*: + ruft normalerweise das clean-Target des Source-Makefiles auf. Dieses + wird typischerweise alle generierten Dateien (vor allem + Object-Dateien, Libraries und ausführbare Programme) löschen. + Ein nachfolgendes *make* wendet keine geänderten Patches an, sondern + erstellt nur die o.g. Object-Dateien, Libraries und ausführbare + Programme neu (compilieren). + Z.B. räumt *make mc-clean* so das Paket "Midnight Commander" (mc) + auf. + +- *make -dirclean*: + löscht das gesamte Verzeichnis des Pakets. Ein nachfolgendes *make* + wird die Quellen neu auspacken, die Patches anwenden, das Paket + konfigurieren und dann compilieren. + Nur der letzte Schritt (compilieren) wird nach *make -clean* + (s.o.) ausgeführt. + +- *make dirclean*: + führt, wie der Name schon sagt, ein "Verzeichnis-Aufräumen" durch. + Hierbei werden unter anderem die Verzeichnisse */packages, /source, + /build, /toolchain/build, toolchain/target* (und ein paar andere + Sachen(?)) gelöscht, sodass bei erneutem Ausführen von *make* alles + neu gebaut werden muss. Dies ist empfehlenswert, wenn sich Aufgrund + eines *svn up* eine neu gebaute Firmware nicht so Verhält, wie man es + erwartet. Alternativ kann man, wenn man weiß, an welchem Packet es + liegt, dieses auch via *make -dirclean* einzeln löschen (siehe + oben). + Zu erwähnen sei noch, dass nach einem *make dirclean* der Bau der + Firmware natürlich länger dauert, da ja alles neu gebaut werden muss. + +- *make tools-distclean*: + löscht die Tools (busybox, lzma, squashfs, usw.) + +- *make distclean*: + Hier werden zusätzlich zum *make dirclean* auch noch die Downloads + sowie die Tools gelöscht. + +- *make config-clean-deps*: + Wenn bei *make menuconfig* Pakete abgewählt wurden, sind ggfs. noch + Shared Libraries ausgewählt, die nicht mehr benötigt werden (dies + kann *menuconfig* nicht automatisch erkennen). Diese kann man dann + manuell unter 'Advanced Options'→'Shared Libraries' abwählen - die + benötigten lassen sich nicht deaktivieren. Alternativ kann man dies + automatisch mittels *make config-clean-deps* erledigen lassen. Dabei + werden übrigens auch manuell in *make menuconfig* ausgewählte + Busybox-Applets deselektiert (*nicht\* die in *make + busybox-menuconfig*!), d.h. die Busybox-Einstellungen werden auf + Standardwerte zurückgesetzt. + +- *make config-clean-deps-keep-busybox*: + Wie *make menuconfig*, aber die Busybox-Einstellungen bleiben + bestehen. + +- *make kernel-dirclean*: + löscht den aktuell entpackten Source-Tree des Kernels, um von + komplett sauberen Kernel Sourcen zu kompilieren (wichtig wenn was an + den Patches geändert wird) + +- *make kernel-clean*: + analog *make -clean* + +- *make kernel-toolchain-dirclean*: + löscht den Kernel-Compiler + +- *make target-toolchain-dirclean*: + löscht den Compiler für die uClibc und die Binaries (ausführbare + Programme) + +**2. Vorbereitungen:** + +- *make world*: + Vorraussetzung ist eine Toolchain (siehe `Cross-Compiler / Toolchain + erstellen `__). + Sollten jemals Probleme mit nicht vorhandenen Verzeichnissen + auftauchen, so kann ein *make world* Abhilfe schaffen. In der Regel + sollte das aber nicht nötig sein. + +- *make kernel-toolchain*: + kompiliert den Kernel und auch für das target (Fritzbox) + Aus historischen Gründen wurde die Bezeichnung als *kernel-toolchain* + belassen, obwohl damit wie gesagt nicht nur der Kernel gebaut wird, + sondern auch Pakete (s.u.). + +- *make target-toolchain*: + kompiliert die Pakete für das target (Fritzbox) + +- *make kernel-menuconfig*: + Die Konfiguration des Kernels wird danach wieder nach + ./make/linux/Config. zurückgespeichert. + +- *make kernel-precompiled*: + Damit werden der Kernel und die Kernel Module kompiliert. + +- *make menuconfig* + (`Quelle `__): Zum + Konfigurieren von Freetz kommt das Programm *conf/mconf* zum Einsatz, + welches dem ein oder anderen vielleicht von der Konfiguration des + Linux Kernels bekannt ist. Die + `​ncurses `__ Variante *mconf* + kann mit dem Kommando *make menuconfig* aufgerufen werden. + Übrigens: + Eine Hilfe zu den einzelnen Punkten kann direkt in *menuconfig* durch + Eingabe von "?" aufgerufen werden. + Und nach Eingabe von "/" kann man von allen Ebenen aus nach + beliebigen Zeichenfolgen suchen - sehr praktisch. + +.. _BeimErstellentritteinFehleraufwasnun: + +Beim Erstellen tritt ein Fehler auf, was nun? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Zunächst einmal die folgende Liste der häufigen Fehler durchgehen: + +.. _YoumusthaveeitherhavegettextsupportinyourClibraryorusetheGNUgettextlibrary.: + +You must have either have gettext support in your C library, or use the GNU gettext library. +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + Hier ist wohl ein falscher Wert im Cache gelandet, den man löschen + muss: "rm make/config.cache" oder "rm + source/target-mipsel_uClibc-\ *0.X.XX*/config.cache" jenachdem, wo + die Datei zu finden ist. Und danach wird der FW-Bau wieder mit "make" + gestartet. + +.. _ERROR:Theprogramlibraryheaderxywasnotfound: + +ERROR: The program/library/header xy was not found… +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + Wenn mit die ersten Meldungen so aussehen, fehlen für die Erstellung + von Freetz unbedingt notwendige Pakete im Build-System und müssen + zunächst installiert werden. + +.. _WARNING:Theprogramlibraryheaderxywasnotfound: + +WARNING: The program/library/header xy was not found… +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + Wenn die Erstellung mit einem Fehler abbricht, kann diese Warnung zu + Beginn des Vorgangs darauf hindeuten, dass für bestimmte ausgewählte + Optionen notwendige Pakete im Build-System fehlen. + +.. _Couldnotdownloadfirmwareimage: + +Could not download firmware image +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. _ehemals:NosuchfileFRITZ.Box_xxxxxxxxx.aa.bb.cc.image: + +(ehemals: No such file \`FRITZ.Box_xxxxxxxxx.aa.bb.cc.image') +''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' + + | AVM selbst stellt für einen Box-Typ meist nur das aktuellste + Firmware-Image zum `Download `__ bereit. Jede + Freetz-Version unterstützt lediglich nur die Versionen, die in der + Datei ``FIRMWARES`` aufgelistet sind. Aus lizenzrechtlichen Gründen + darf das Freetz-Projekt keine AVM-Firmwares bereitstellen. + | Anbei Lösungsvorschläge: + +- Allgemeiner Hinweis: Im + `​Suche-Firmware-Sammelthread `__ + kann man nach älteren Firmware-Versionen fragen (das Firmware-Image + manuell in den Ordner ``'dl/fw/'`` im Freetz-Verzeichnis kopieren). +- Einsteiger: Stets die aktuellste `stabile + Version `__ benutzen oder die + `Vorabversion `__ probieren! +- Fortgeschrittene/Entwickler: Die + `Entwicklerversion `__ unterstützt + (meist) alle aktuellen Firmware-Versionen. +- Experimentierfreudige User: In `make + menuconfig `__ unter + *Advanced Options ⇒ Override firmware source* den Namen der + herunterzuladenen Image Datei anpassen. + |Warning| Vorsicht: Evtl. sind weitere Anpassungen im Quellcode + notwendig und zur Sicherheit ein passendes Recover-Image bereit + halten. + +.. _Pleasecopythefollowingfileintothedlfwsub-directorymanually:fritz_box_aa_bb_cc-ddddd.image: + +Please copy the following file into the 'dl/fw' sub-directory manually: fritz_box_aa_bb_cc-ddddd.image +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + Die Labor-Firmwares können nicht direkt vom AVM-FTP-Server + heruntergeladen werden. Sie müssen manuell von der + `​AVM-Labor-Seite `__ geladen werden, wobei + die Nutzungsbedingungen zu bestätigen sind. Die Dateien müssen dann + entpackt und das darin enthaltene Image in den Ordner 'dl/fw' im + Freetz-Verzeichnis kopiert werden. Hierbei gilt auch das zur vorigen + Frage Gesagte. + +.. _a.ln:cannotexecutebinaryfile: + +./ln: cannot execute binary file +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + Das aktuelle Verzeichnis '.' ist im Pfad (Variable PATH). Zum + erfolgreichen Erstellen muss es entfernt werden. + +.. _Filesystemimagetoobig: + +Filesystem image too big +^^^^^^^^^^^^^^^^^^^^^^^^ + + Das Firmware-Image passt nicht in den Flash-Speicher der ausgewählten + Box. + +- Bei manchen Boxen kann dies bereits auftreten, wenn überhaupt keine + zusätzlichen Pakete ausgewählt sind, da die grundlegende + Freetz-Infrastruktur bereits einigen Platz belegt und die AVM-Images + schon knapp unter dem Maximalwert liegen. In diesem Fall ist es + notwendig, unter 'Patches' einen oder mehrere der Remove-Patches + auszuwählen, um nicht benötigte Komponenten der Original-Firmware zu + entfernen. Näheres dazu im + `​IPPF `__ und + in + `​WIKI `__ +- Wenn viele Pakete ausgewählt sind, sollte man sich beschränken oder + versuchen per `USBRoot `__ oder + `NFSRoot `__ die Beschränkung des Flashs zu + umgehen. +- Bei Boxen mit einem USB-Host (z.B. 7170,7270) kann man außer + `USBRoot `__ auch einzelne Pakete auf das + externe USB-Medium (z.B. USB-Stick, USB-Festplatte) auslagern. Die + Auslagerung wird nach dem make-Prozess automatisch von einem Skript + namens `external `__ ausgeführt. Im + menuconfig finden sich die Optionen für die Auslagerung mittels + external. Im Unterschied zum USB-Root wird hier nicht die gesamte + Firmware, sondern nur ein Teil der Pakete ausgelagert. +- Wenn Pakete abgewählt wurden, sind ggfs. noch Shared Libraries + ausgewählt, die nicht mehr benötigt werden (dies kann menuconfig + nicht automatisch erkennen). Diese kann man dann manuell unter + 'Advanced Options'→'Shared Libraries' abwählen - die auf benötigten + lassen sich nicht deaktivieren. Alternativ kann man dies automatisch + mittels *make config-clean-deps* bzw. *make + config-clean-deps-keep-busybox* erledigen lassen. + +.. _WARNING:Notenoughfreeflashspaceforansweringmachine: + +WARNING: Not enough free flash space for answering machine! +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + Im Gegensatz zur Meldung "Filesystem image too big" passt das + Firmware-Image in den Flash-Speicher der ausgewählten Box, der + restliche Platz im Flash könnte aber für die Aufzeichnung von + Nachrichten auf dem von AVM in der FW integrierten Anrufbeantworter + zu klein sein oder komplett fehlen. Die Firmware sollte trotz dieser + Warnung funktionieren, für Anrufbeantworter-Daten, FAX-Nachrichten + und Sonstiges empfiehlt sich einen Stick mit einer FAT-Partition + anzulegen und entsprechend in AVM-WebIF angeben, dass der + Anrufbeantworter (oder andere Dienste) den externen Speicher nutzen + sollten. + +.. + + Hintergrundinformationen: Seit einigen Firmware-Versionen versucht + AVM die restlichen Bytes im Flash dafür zu nutzen, eine + jffs2-Partition anzulegen. Auf dieser Partition werden z.B. + Anrufbeantworter-Nachrichten (TAM) und evtl. noch Faxe und Ähnliches + abgespeichert. Bei älteren Boxen (z.B. 7170) kommt es fast immer + dazu, dass im Image kaum mehr Platz frei ist, sodass die + jffs2-Partition nicht angelegt wird und die Meldung nur als + Warnhinweis angesehen werden sollte. Mehr dazu im + `​IPPF-Thread `__. + In FREETZ seit Revision `r3049 `__. + +.. _BeimErstellentrittimmernocheinFehlerauf: + +Beim Erstellen tritt immer noch ein Fehler auf… +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Zunächst einmal im menuconfig unter 'Advanced Options' das 'Verbosity + Level' auf 2 stellen und das make erneut ausführen. Danach im `​IPPF + Forum `__ nach + der relevanten Fehlermeldung suchen und ggfs. einen passenden + bestehenden oder neuen Thread aufmachen, wo dann unter Angabe der + kompletten Fehlermeldung (bitte in Code-Tags), der Datei .config (als + Attachment) und der verwendeten Version oder SVN-Revision um Hilfe + bitten. + +.. _IchkanndaserzeugteFreetzImagenichtfinden: + +Ich kann das erzeugte Freetz Image nicht finden? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Freetz verschiebt alle fertigen Images in den Unterordner *images/*. + +.. figure:: /screenshots/116.jpg + :alt: + +| + +.. _Wofindeichdieseberühmte.config-Datei: + +Wo finde ich diese berühmte .config-Datei? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Die .config Datei beinhaltet die Hauptkonfiguration für den + make-Aufruf beim Cross-Kompilieren der Firmware und liegt genau auf + der Maschine die zur Erzeugung der Firmware verwendet wird und exakt + im selben Hauptverzeichnis von FREETZ, von dem auch make ausgeführt + wird. In der Datei steht z.B. welche Pakete/Branding/Libs usw. man + ausgewählt hat. Die Datei .config ist eine reine Textdatei und wird + typischerweise nach dem Aufruf von menuconfig automatisch angelegt + bzw. aktualisiert. Bitte diese Datei nicht mit Config.in verwechseln! + (häufiger Fehler) Wenn man die Datei nicht sehen kann, liegt es + daran, dass sie ein "dot" an der ersten Stelle hat und somit + versteckt ist. + +.. + + Alternativ kann man die Datei auch im selbsterzeugten Firmware-Image + finden, denn .image-Dateien sind nichts anderes als gewöhnliche + tar-Archive, die z.B. mit WinRAR oder 7Zip ausgepackt werden können. + + Neuerdings wird die .config-Datei auch mit ins Image genommen (wenn + man es nicht explizit abwählt) und befindet sich in einer + komprimierten Form auf der Box. Die Datei kann über das FREETZ-WebIF + angesehen und sogar herunterladen werden. Zu finden ist die Datei + unter Status→FREETZ-Info. + +.. _Wiebekommeichdie.config-DateiaufdenPC: + +Wie bekomme ich die .config-Datei auf den PC? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Die .config bekommt man sehr einfach mit der + `​WinSCP-Software `__ auf den PC + kopiert. + +Zuerst müsst Ihr euch den +`​WinSCP `__ auf den PC installieren +und dann starten. In der Startmaske gebt Ihr folgende sachen ein (siehe +Bild): + +.. figure:: /screenshots/110.jpg + :alt: + +Die benötigte IP-Adresse eurer Freetz-Buildumgebung erhaltet Ihr wenn +ihr folgenden Befehl in der Konsole eingebt: **ifconfig** + +.. figure:: /screenshots/114.jpg + :alt: + +**Benutzername** und **Kennwort** sind wie gewohnt **freetz freetz** Als +Protokoll nutzt ihr **FTP (Keine Verschlüsselung)** Wenn Ihr nun auf +**Anmelden** drückt sollte folgendes Bild zu sehen sein: + +.. figure:: /screenshots/115.jpg + :alt: + +Als nächstes wechseln wir in das Hauptverzeichnis von FREETZ (im +Beispiel ist das **freetz-trunk**). + +.. figure:: /screenshots/111.jpg + :alt: + +Dort makieren wir die gesuchte .config mit der Mause und öffnen das +Kontext-Menu mit der rechten Maustaste und drücken auf kopieren: + +.. figure:: /screenshots/112.jpg + :alt: + +Im nächsten Fenster wählen wir nur noch das Zielverzeichnis auf dem PC +aus und drücken auf **Kopieren**. + +.. figure:: /screenshots/113.jpg + :alt: + +Jetzt solltet Ihr die **.config** auf eurem PC finden. + +.. _FlashendesFirmware-Images: + +Flashen des Firmware-Images +--------------------------- + +.. _WieinstalliereichdasFreetz-Image: + +Wie installiere ich das Freetz-Image? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**Wenn noch eine Original-AVM-Firmware installiert ist, …** + +gibt es zwei Möglichkeiten: + +- die normale Installation über das AVM-Webinterface (wie gewohnt beim + Update) +- das Script tools/push_firmware.sh (befindet sich im Freetz + Build-Verzeichnis - also z.B. unter "freetz-1.1.4"). Hiermit lässt + sich auch bei den Speedports Freetz installieren, was über das + Webinterface nicht so einfach möglich ist `​Unterpunkt: "Hochladen + per + Weboberfläche" `__ + +**Wenn bereits Freetz auf der Box ist, …** + +- ist die bequemste Variante das Firmware-Update über die + Freetz-Webinterface-Startseite. Dabei können bei Bedarf auch die + AVM-Dienste weiterlaufen (Internetverbindung bleibt somit bestehen) + oder können Angehalten werden, um den zusätzlichen Platz im RAM zu + gewinnen. Das Gute an dieser Methode ist, dass man nach dem Upload + des Images einen ausführlichen Bericht zu sehen bekommt und + anschließend den Zeitpunkt des Reboots (und somit des eigentlichen + Updates) manuell festlegen kann. + +**Flashen eines freetz-images + einer +.\ **\ `external `__\ **: +** + +Grundsätzlich sei gesagt, dass für diese Funktion freetz bereits auf der +Box laufen muss. + + | Sowohl die .image-datei als auch die .external-Datei, soweit diese + erstellt wurde, lassen sich mit einem einzigen Rebootvorgang auf + die Box laden. + | Dabei ist folgendes Vorgehen zu empfehlen: + +- Die .external-Datei hochladen. Es wird automatisch versucht alle + Programme die schon ausgelagert wurden zu beenden. Sollte ein Fehler + auftreten, bitte vorher händisch alle Programme beenden. Hintergrund: + Beim Upload-Vorgang wird der Inhalt der alten mit der neuen .external + überschrieben. +- Die .image-Datei hochladen. +- Box-Reboot anstoßen + +.. _BeimFlashenmeldetdasAVM-WebinterfacedassdasImagekeinepassendeFirmwareenthält: + +Beim Flashen meldet das AVM-Webinterface, dass das Image keine passende Firmware enthält +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Das in der Box (im Urlader) eingestellte Branding muss auch in der + verwendeten Firmware enthalten sein. Also bitte mal prüfen, ob das + der Fall ist und ggfs. das Image mit dem richtigen Branding neu + erstellen. + +.. _Freetz-TrunkwurdeperAVMFirmware-UpdategeflashtnachdemNeustartscheintsichabernichtsgeändertzuhaben: + +Freetz-Trunk wurde per AVM Firmware-Update geflasht, nach dem Neustart scheint sich aber nichts geändert zu haben +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Sollte nach dem Flashen von Freetz per Firmware-Update über das + AVM-Webinterface und dem nachfolgenden Neustart das + Freetz-Webinterface auf Port 81 nicht zur Verfügung stehen und sich + auch die Firmware-Version im AVM-Webinterface nicht geändert haben, + so war vermutlich das Flashen nicht erfolgreich. Ein deutlicher + Hinweis darauf ist, wenn der Neustart der Box sehr schnell geht. Je + nach Modell der Box und Größe der Firmware kann das Flashen ein bis + zwei Minuten dauern und in dieser Zeit blinkt eine Kontroll-LED an + der Box, genauso wie bei einem normalen Firmware Update. Ursache + hierfür ist vermutlich ein Mangel an freiem Arbeitsspeicher auf der + Box während dem Update. + +Dann können folgende Schritte ggf. Abhilfe schaffen: + +- Zunächst ein Image ohne irgendwelche Pakete erstellen (was sowieso + empfohlen wird) und ggf. durch Remove-Patches die Größe weiter + reduzieren. +- Alternativ die letzte Stable-Version oder eine andere ältere (und + hoffentlich kleinere) Version runterladen und kompilieren. +- Diese Version dann über das AVM-Webinterface flashen und die Box + neustarten. +- Dann das gewünschte Image über das Freetz-Webinterface (Port 81) + flashen und auswählen, dass die AVM Dienste heruntergefahren werden. +- Nach dem Flash-Vorgang im angezeigten Log überprüfen, ob der Vorgang + erfolgreich war, und die Box über das Freetz-Webinterface neustarten. +- Danach sollte das gewünschte Image erfolgreich geflasht worden sein. + +.. + + Weitere Informationen gibt es + `​hier `__ + und + `​hier `__. + +.. _ProblemenachdemerfolgreichenFlashen: + +Probleme nach dem (erfolgreichen) Flashen +----------------------------------------- + +.. _WielautetdasStandard-PasswortfürFreetz: + +Wie lautet das Standard-Passwort für Freetz? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Das Standard-Passwort für Freetz(sowohl Konsolen- als auch + Website-Login) lautet 'freetz'. Benutzername für die Konsole ist + 'root', für das Freetz-Webinterface standardmäßig 'admin'. Beim + ersten Einloggen per Telnet (user: root) muss das Passwort geändert + werden. Im Webinterface erscheint ein Hinweis, falls das + Standardpasswort gesetzt ist. Ändert das Passwort bitte zu eurer + eigenen Sicherheit. + +.. _NachdemFlashenistdasAVM-Webinterfacenichtmehrerreichbar: + +Nach dem Flashen ist das AVM-Webinterface nicht mehr erreichbar +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Wenn im Image (z.B. wegen OpenVPN) die OpenSSL-Libraries eingebaut + wurden, gibt es Probleme mit TR069. Es ist dann erforderlich entweder + auf OpenSSL-Libs zu verzichten, sie statisch mit in die jeweiligen + Pakete einzubauen (Speicherverschwendung), TR069 zu deaktivieren + (funktioniert nur bei älterer Firmware) oder per patch `TR069 + komplett zu entfernen `__ (funktioniert + auch bei aktueller Firmware). + +.. + + Zum Deaktivieren von TR069 muss die Datei /var/flash/tr069.cfg + mittels nvi, nmcedit oder nnano editiert werden. So sollte es + aussehen: + + .. code:: bash + + # cat tr069.cfg + /* + * /var/flash/tr069.cfg + * Sun Sep 8 14:03:34 2002 + */ + + tr069cfg { + enabled = no; + igd { + ... + + Bei neueren Firmwares reicht es nicht mehr aus TR069 zu deaktivieren. + Hier crasht der ctlmgr auch bei anderen Aktionen beim Zugriff auf die + OpenSSL-Libs. Manchmal schafft das Ersetzen der libavmhmac (im + menuconfig unter Advanced Options→Shared Libraries→Crypto & + SSL→Replace libavmhmac) Abhilfe, aber auch das reicht bei neuesten + Firmwares nicht aus und führt eventuell zu Reboot Schleifen. Unter + Umständen funktionieren danach auch nicht mehr alle Funktionen, wie + z.B. die FritzMini Unterstützung, das Fritz-App von AVM, u.s.w. + +.. + + Um heraus zu finden, ob die problematischen OpenSSL-Libs ins Image + eingebunden werden, kann man folgenden Befehl ausführen: + + .. code:: bash + + oliver@ubuntu:~/fritzbox/freetz/trunk$ grep -E "libssl|libcrypto" .config + FREETZ_LIB_libcrypto=y + FREETZ_LIB_libssl=y + + Es folgt eine Liste mit Paketen die die OpenSSL-Libs benötigen, + manche auch nur optional: *bip, curl, dropbear mit sftp-Support, + mcabber, netsnmp, OpenVPN, Tor, transmission, Vsftpd und wget* + +.. + + Man kann die betroffenen Pakete statisch zu bauen (d.h. ohne externe + OpenSSL-Libs). Dies ist bereits für einige Pakete möglich, wie z.B. + OpenVPN und CURL. Man muss allerdings beachten, dass Binaries dadurch + sehr gross werden, weil die OpenSSL-Libs dann ein Teil des statischen + Binary sind. In diesem Fall ist es anzuraten solche Pakete mit + `external `__ auszulagern, was aber + am höheren Speicherbedarf im Betrieb nichts ändert. Auch wenn + eigentlich kein Paket mehr die OpenSSL-Libs benötigt, kann es sein, + dass diese immer noch ins Image gepackt werden. Das kommt daher, dass + menuconfig eine automatische Abwahl nicht unterstützt. Hierfür gibt + es den Befehl *make config-clean-deps* bzw. *make + config-clean-deps-keep-busybox*. + + .. code:: bash + + oliver@ubuntu:~/fritzbox/freetz/trunk$ make config-clean-deps + Step 1: temporarily deactivate all kernel modules, shared libraries and optional BusyBox applets ... DONE + Step 2: reactivate only elements required by selected packages ... DONE + The following elements have been deactivated: + FREETZ_BUSYBOX_BRCTL + FREETZ_LIB_libcrypto + + Vorsicht: Wie im Beispiel zu sehen werden hierbei auch Optionen + deaktiviert die absichtlich gewählt aber nicht per default aktiviert + sind. + +.. _NachdemFlashenistdieBoxnichtmehrerreichbarundoderrebootetständig: + +Nach dem Flashen ist die Box nicht mehr erreichbar und/oder rebootet ständig +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Dies kann unterschiedlichste Gründe haben. Zuerst sollte man die Box + vom DSL trennen und neustarten. Tritt das Problem dann nicht mehr auf + hat man höchst wahrscheinlich einen `Konflikt mit + TR069 `__. + +.. + + Wenn das nicht half lässt sich das Problem durch Einspielen einer + anderen Firmware in der die problematische Funktion nicht enthalten + ist eingrenzen. Grundsätzlich wird dies natürlich bei den + Original-Firmwares von AVM der Fall sein; man kann aber auch durch + Deaktivieren von Optionen und Neuerstellen von Freetz ausprobieren, + woran es liegt. Da das Webinterface nicht mehr erreichbar ist, muss + ein Update auf andere Weg erfolgen. Hier gibt es drei Möglichkeiten: + +- Das Script tools/push_firmware.sh. Hiermit lassen sich beliebige + Images einspielen. +- Ein Recover-Image von AVM. Dieses spielt wieder eine + Original-Firmware von AVM ein. +- Update über das Freetz Interface falls nur das AVM Interface nicht + erreichbar ist (häufig bei TR069 Konflikten). + +.. _BeimAufrufdesOriginal-AVM-WebinterfacevonaussenbekommeichtrotzPortweiterleitungnureineweisseSeite: + +Beim Aufruf des Original-AVM-Webinterface von aussen bekomme ich trotz Portweiterleitung nur eine weisse Seite? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Dies ist ein 'Sicherheitsmechanismus' von AVM der offensichtlich + überprüft ob der Hostname unter dem die Box aufgerufen wurde per + Reverse-DNS Anfrage zur Box führt. Hierbei werden sowohl die internen + Hostnamen akzepriert wie fritz.box oder fritz.fonwlan.box als auch + der DynDNS Hostname oder eigene (zb mit dnsmasq) vergebene Namen. + Löst der Name falsch auf wird eine leere Seite gezeigt. Dies ist z.B. + grundsätzlich bei Remote Zugriff auf Boxen im IP-Client Modus der + Fall da hier die Box den DynDNS Hostnamen und die externe IP nicht + kennt. Das Problem tritt aber auch auf wenn die IP der Box und + eventuelle Aliase in der exhosts Datei nicht übereinstimmen (manchmal + ein nützlicher Hinweis). + +.. + + Es gibt (mindestens) 2 Möglichkeiten diese Probleme zu umgehen: + +- Schnell: Man kann eine Browser Erweiterung installieren, welche es + erlaubt, den 'HTTP_REFERER' zu unterdrücken. +- Komfortabel: Man startet zb mit 'Putty Portable' einen Dynamischen + SSH Tunnel nach Hause (zu localhost) den man im Browser als Socks5 + Proxy mit entfernter DNS Auflösung einträgt und nutzt seine LAN + internen Hostnamen (auch die von dnsmasq) und IPs. Dies hat den + Vorteil das man nur einen SSH port nach aussen freigeben muss um + Zugriff auf alle TCP basierten Dienste aller Geräte zu Hause zu haben + - egal ob HTTP, HTTPS oder FTP und auf welchem Port. Auch + funtionieren alle LAN internen Bookmarks wie zu Hause. Um bequem + zwischen direktem und Proxy Zugriff umschalten zu können hilft zb. + der Firefox Plugin 'FoxyProxy' der sich auch auf 'Firefox Portable' + installieren lässt. Wenn man dann noch über HTTPS seine Box(en) + administriert ist die Verbindung auch lokal auf Gastsystemen nicht + abhörbar. Dieses Verfahren funktioniert super mit dropbear als + server. Der ssh client von dropbear unterstützt dagegen leider keine + dynamischen Tunnels, wohl aber jeder Linux OpenSSH client. + +.. _DasFreetz-WebinterfaceakzeptiertdieStandardkombinationfürBenutzerundPasswortadminfreetznicht: + +Das Freetz-Webinterface akzeptiert die Standardkombination für Benutzer und Passwort (admin/freetz) nicht +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In den meisten Fällen hilft es, wenn man die Freetz-Konfiguration (und +alle anderen Mods) löscht. Dies kann zum Beispiel über ein +Pseudo-Firmware Update mit Hilfe des +`uninstall.image `__\ `​ `__ +geschehen. + +.. _KannmanPaketePatchesnachinstallierenohnedasFREETZ-Imageneuzuerstellen: + +Kann man Pakete/Patches nachinstallieren, ohne das FREETZ-Image neu zu erstellen? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Nein, das ist im Normalfall und ohne Weiteres nicht möglich. Nach + einer Veränderung der Konfiguration unter "menuconfig" sollte + typischerweise ein "make" ausgeführt werden, welches als Ergebnis ein + neues Image liefern soll. Dieses Image muss dann über Firmware-Update + auf die Box gebracht werden, wenn man seine Änderungen auf der Box + haben will. Einer der Gründe dafür ist das spezielle Dateisystem im + Flash-Speicher der Box. Dieses Dateisystem ähnelt einer Archivdatei, + ist sehr stark komprimiert und speziell für Flash-Speicher optimiert. + Änderungen in einem solchen Dateisystem sind jedoch immer mit einer + neuen Rearchivierung verbunden und erfordern somit den Neuaufbau des + kompletten Systems. + +.. + + Es gibt jedoch Ausnahmen aus dieser Regelung: + +- `external `__. Man kann nur die + Binaries der ausgelagerten Pakete neu kompilieren. Somit kann man + z.B. ein Paket updaten, ohne ein neues Image zu erstellen. Diese + Methode ist allerdings sehr riskant, weil external typischerweise + nicht alle Dateien auslagert. Somit läuft man immer Gefahr + Versionsunterschiede zwischen den ausgelagerten und fest integrierten + Inhalten desselben Pakets zu bekommen. +- USB-ROOT. Hier könnte man wenigstens theoretisch das komplette + Dateisystem (typischerweise ext2) "on the fly" ändern und braucht + dafür kein Firmwareupdate. Allerdings wird auch hier dringend + empfohlen das USB-ROOT-System grundsätzlich als "read-only" zu + mounten und nur bei Bedarf (z.B. fürs Update) es kurzzeitig + beschreibbar zu machen. + +.. _NachdemFlashenistdasFreetz-Webinterfacenichtmehrerreichbar: + +Nach dem Flashen ist das Freetz-Webinterface nicht (mehr) erreichbar +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Bei der Firmware XX.05.05 (7240, 7270 V2, 7270 V3 und 7390) belegt + ein AVM Daemon (contfiltd) den vom Freetz Webinterface verwendeten + Port 81. Um wieder Zugriff auf das Freetz Webinterface zu erhalten + ist die Kindersicherung im AVM Webinterface zu deaktivieren. Wer + dieses Feature benötigt sollte das Freetz Webinterfaces auf einen + anderen Port verlegen. Dies kann über das Webinterface + (Freetz→Weboberfläche) oder per Kommandozeile (Telnet, SSH) erledigt + werden. + +.. _DerdynamischeTeildesAVM-Webinterfaceverhältsichnichtwieerwartet: + +Der dynamische Teil des (AVM-)Webinterface verhält sich nicht wie erwartet +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Aktualisiert man die Firmware und macht dabei einen Versionssprung im +AVM Teil (z.B. von 05.05 nach 05.21 bei der 7270v2 oder von einer +Laborversion 05.06 nach 05.21 bei der 7390), kann es vorkommen, dass der +dynamische Teil des Webinterfaces nicht ordnungsgemäß funktioniert (z.B. +JavaScript Fehler "jxl.getFormElements is not a funtion"). Besonders +auffällig ist das unter *Internet→Zugangsdaten*: Wechselt man zwischen +den Zugangsmöglichkeiten, sollte sich die Seite eigentlich dynamisch +(JavaScript) anpassen, tut sie aber nicht. Daher grundsätzlich **nach +einer Firmwareaktualisierung**, und insbesondere wenn das Webinterface +auffällig erscheint, **den Browsercache löschen**! + +.. _Freetzaktualisieren: + +Freetz aktualisieren +-------------------- + +.. _IchhabemomentaneineLaborversioninstalliert.KannichFreetzeinfachdarüberflashen: + +Ich habe momentan eine Laborversion installiert. Kann ich Freetz einfach darüber flashen? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Es ist ratsam die Box zunächst zu recovern. Anschliessend den letzten +Finalrelease aufspielen (falls es eine aktuellere Firmware gibt als das +Recovery-Image). Außerdem sollte man insbesondere nach einer +Aktualisierung von einer Laborversion den Browsercache löschen (auch +wenn man die AVM Recovery auf die Box gespielt hat). + +**WICHTIG**: Vor dem Recovern (mindestens) die aktuellen Zugangsdaten +bereithalten (alternativ Start-Code). Zugangsdaten findet man als 1&1 +Kunde beispielsweise im 1&1 Controllcenter unter "Zugangsdaten". + +.. _IchhabeeinealteFreetz-FirmwareaufderBox: + +Ich habe eine alte Freetz-Firmware auf der Box +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. _UpdatevonFreetz-VersionXYaufFreetz-VersionYZ:: + +Update von Freetz-Version XY auf Freetz-Version YZ: +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +| In diesem Fall muss **nur** ein neues Freetz kompiliert / gebaut + werden. Wie das geht ist + `hier `__ oder `hier für + Newbies `__ beschrieben. + +.. _WennAVMeineneueFirmwareaufdenMarktbringt: + +Wenn AVM eine neue Firmware auf den Markt bringt +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +| In diesem Fall muss Freetz ebenfalls neu gebaut werden, jedoch muss + man eine Freetz-Version benutzen die dieses neue AVM-Firmware bereits + unterstützt. Welche Firmware-Versionen von welcher Freetz Version + unterstützt wird kann man hier nachgelesen: `Unterstützte Firmwares in + den unterschiedlichen + Freetz-Versionen `__ + +Es empfiehlt sich in diesem Fall, Freetz neu auszuchecken und für die +neue AVM Firmware komplett neu zu kompilieren, anstatt eine "alte" +Build-Umgebung wiederzuverwenden (auch *make distclean* oder *make +dirclean* sind unter Umständen nicht so effektiv, wie von vorne +anzufangen). + +.. _Konfiguration: + +Konfiguration +------------- + +.. _WolandendiediversenKonfigurationenaufderFritzbox: + +Wo landen die diversen Konfigurationen auf der Fritzbox? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Sämtliche Konfigurationen auf der Fritzbox liegen unter /tmp/flash. + Dies ist zu beachten, wenn man eine Freetz-FW baut, da die + Konfigurationen damit nicht im festen Firmware-Teil im Image liegen. + Alles unter /tmp/flash wird daher beim FW-Update auch nicht + verändert, so dass die diversen Konfigurationen nach einem FW-Update + auch erhalten bleiben. Wichtig ist, dass man nach Änderungen an + Konfigurationsdateien unter /tmp/flash noch das Kommando "modsave" in + der Konsole aufruft, damit sie auch gespeichert werden. Näheres dazu + folgt weiter unten. + +.. _KonfigurationinderaktuellenSicherheitsstufenichtverfügbar: + +Konfiguration in der aktuellen Sicherheitsstufe nicht verfügbar! +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Es gibt verschiedene Sicherheitsstufen. Je nach ausgewählter Stufe + sind nicht alle Konfigurationsdateien änderbar. Um die + Sicherheitsstufe zu ändern sind folgende Befehle direkt in der + Konsole der Box per Telnet oder SSH auszuführen (geht leider nicht + per Rudi-Shell, denn die benötigt selbst eine Sicherheitsstufe "0"). + +.. + + Ermitteln der aktuellen Sicherheitsstufe (hier: Freetz-1.1.4): + + .. code:: bash + + cat /tmp/flash/security + + **Freetz-1.1.x und älter:** + + .. code:: bash + + echo 0 > /tmp/flash/security <--- Bsp. #1: Setzen von Stufe "0" (keine Restriktionen, VORSICHT!) + modsave <--- Speichern der neuen Sicherheitsstufe + +.. + + **Ab Freetz-1.2.x und SVN-trunk + ≥\ **\ `r3318 `__\ **:** + + .. code:: bash + + echo 1 > /tmp/flash/mod/security <--- Bsp. #2: Setzen von Stufe "1" (Konfigurationsdateien editierbar) + modsave <--- Speichern der neuen Sicherheitsstufe + + Erlaubte Werte mit Erläuterung (Default: 2): + + .. code:: bash + + # 0 : no restrictions + # 1 : only configuration files without shell commands might be edited + # 2 : no configuration files might be edited + +.. _WiedeaktiviereichdasPasswortfürdieFreetz-Webseite: + +Wie deaktiviere ich das Passwort für die Freetz-Webseite? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Folgende Befehle auf der Konsole ausführen: + + .. code:: bash + + touch /tmp/flash/webcfg_conf + chmod +x /tmp/flash/webcfg_conf + modsave flash + /etc/init.d/rc.webcfg restart + + Hintergrund: Das Skript /tmp/flash/webcfg_conf wird gegenüber + /etc/default.webcfg/webcfg_conf zum Erstellen der Konfigurationsdatei + bevorzugt. Ein leeres Skript /tmp/flash/webcfg_conf erzeugt also eine + leere Konfigurationsdatei ohne Passwort. + +|Warning| Für Freetz-1.1.x ist */tmp/flash/webcfg_conf* durch +*/tmp/flash/httpd_conf* zu ersetzen. + +.. _WieändereichdasPasswortfürdieFreetz-Webseite: + +Wie ändere ich das Passwort für die Freetz-Webseite? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Das geht über das + `​Webinterface `__ selbst: + ``http://fritz.box:81/cgi-bin/passwd.cgi`` + +.. _WieändereichdasPasswortfürdieFreetz-WebseitesofernichesvergessenundTelnetSSH-Zuganghabe: + +Wie ändere ich das Passwort für die Freetz-Webseite sofern ich es vergessen und Telnet/SSH-Zugang habe? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Erstmal das Freetz-Webif stoppen: + + .. code:: bash + + /etc/init.d/rc.webcfg stop + + Dann mit vi in der Datei mod.cfg die Zeile, die mit export + MOD_HTTPD_PASSWD beginnt, wie folgt abändern: + + .. code:: bash + + vi /var/mod/etc/conf/mod.cfg + + .. code:: bash + + export MOD_HTTPD_PASSWD='$1$$zO6d3zi9DefdWLMB.OHaO.' + + | Speichern der Änderung: 1x ESC drücken und ``:wq`` eingeben. + | Nun wieder das Freetz-Webif starten: + + .. code:: bash + + /etc/init.d/rc.webcfg start + + Jetzt kann man sich mit dem Passwort "freetz" wieder einloggen. + +.. + + | Bitte beachtet, dass diese Änderung **NICHT** reboot-resistent ist. + Heißt, nach einem Reboot habt ihr wieder das vormalige, unbekannte + Passwort. + | Deshalb sollte man vor einem Neustart der Box im freetz-Menü unter + *Einstellungen* das Passwort ändern/neu setzen. + +.. _Wieändereichdasroot-Passwort: + +Wie ändere ich das root-Passwort? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Folgende Befehle auf der Konsole ausführen: + + .. code:: bash + + passwd + modusers save + modsave flash + + Nach Eingabe des Befehls 'passwd' muss das Passwort eingegeben + werden. Dabei wird das eingegebene Passwort 'nicht' angezeigt. Zu + einfache Passwörter werden nicht akzeptiert. + +.. _Änderndesroot-PasswortesüberdieRudi-Shell: + +Ändern des root-Passwortes über die Rudi-Shell +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +| Wenn man das root-Passwort vergessen hat, aber noch Zugriff auf das + Webinterface hat kann über die Rudi-Shell ein neues Passwort gesetzt + werden: +| ``(echo neuespasswort; sleep 1; echo neuespasswort) | passwd`` + +.. _WarumkannichmichnacheinerFreetz-WiederherstellungnichtmehramAVM-WebUIanmelden: + +Warum kann ich mich nach einer Freetz-Wiederherstellung nicht mehr am AVM-WebUI anmelden? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Ist ein Passwort für das AVM-WebUI vergeben, wird dies als Hash in der +ar7.cfg abgelegt und damit auch gesichert. Bei der Wiederherstellung +setzt Freetz anstatt des ursprünglichen Passworts den Hash-String als +Passwort. Im +`​IP-Phone-Forum-Wiki `__ +ist beschrieben, wie man über einen Shell-Zugang die Passwort-Hashes +auslesen kann. + +.. _ProblemeimBetrieb: + +Probleme im Betrieb +------------------- + +.. _varflashfreetztoobig: + +/var/flash/freetz too big +~~~~~~~~~~~~~~~~~~~~~~~~~ + + Das von Freetz vorgegebene Limit für die maximale Größe der + Konfiguration wurde überschritten. Dieses Limit ist ein Schutz, um + nicht unbeabsichtigt das TFFS volllaufen zu lassen. Das Limit kann + folgendermaßen erhöht werden, man sollte aber den Füllstand des TFFS + im Auge behalten: + + .. code:: bash + + modconf set mod MOD_LIMIT= + modconf save mod + modsave flash + +|Warning| Seit `r5706 `__ (trunk) wird das Setzen des +Limits nicht mehr unterstützt. + +.. _KeinFTP-ZugriffnachFreetzmöglich: + +Kein FTP-Zugriff nach Freetz möglich +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Hierbei handelt es sich um ein Problem das hauptsächlich in Freetz 1.1.x +auftritt und wie im `Howto `__ beschrieben +gelöst werden kann. + +.. _EntfernenvonFreetzundanderenModifikationen: + +Entfernen von Freetz und anderen Modifikationen +----------------------------------------------- + + Im Ordner tools/images befindet sich ein uninstall image, das wie + eine Firmware übers Webinterface geflasht wird und die + Konfigurationsdateien entfernt. Da hiermit nur die + Konfigurationsdateien entfernt werden ist natürlich auch noch eine + original Firmware einzuspielen. Das "Update" sollte vor einem + Neustart erfolgen, da die Konfigurationsdateien ansonsten wieder + angelegt werden. Am Einfachsten ist der Weg über ein AVM Recover + (Dateien gibts für jede Box auf dem AVM-FTP). Auch hier werden + sämtliche Konfigurationsdateien von Freetz gelöscht. + +.. _Sonstiges: + +Sonstiges +--------- + +.. _ÄndernderArbeitsgruppevonfreetz-linux: + +Ändern der Arbeitsgruppe von "freetz-linux" +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +| Damit unter Windows 7 und Vista der virtuelle PC "FREETZ-LINUX" in der + Netzwerkumgebung angezeigt wird, müssen der Client- und Host-PC in der + gleichen "Arbeitsgruppe" befinden: + +- Die erste Möglichkeit wäre, die Arbeitsgruppe des Host-PC in FREETZ + zu ändern (und ist für Anfänger empfehlenswert). + +- Die zweite und schönere Lösung ist es, die Arbeitsgruppe des + virtuellen PC (also freetz-linux) anzupassen. + Dazu geht man wie folgt vor: + +.. + + | An freetz-linux anmelden + | Die smb.conf öffnen mit: + + .. code:: bash + + sudo nano /etc/samba/smb.conf + + | Dann zur workgroup runterscrollen und dort den Namen ändern. + | Die smb.conf speichern mit: "strg+x" + + Und zum Schluss Samba neu starten: + + .. code:: bash + + sudo /etc/init.d/samba restart + +.. _WiefindeichdieIPmeinerVirtuellenMaschine: + +Wie finde ich die IP meiner Virtuellen Maschine +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +| Die IP wird einem entweder beim Einloggen im Startbildschirm (Roter + Kasten) oder mit folgendem Befehl : **ifconfig** in der VM angezeigt. +| Nach Eingabe von **ifconfig** sollte folgende Anzeige in der VM zu + sehen sein. + +.. code:: bash + + eth0 Link encap:Ethernet Hardware Adresse 08:00:27:45:53:49 + inet Adresse:192.168.XXX.203 Bcast:192.168.XXX.255 Maske:255.255.255.0 + inet6-Adresse: XXXX::XXXX:XXXX:XXXX:XXXX/XX Gültigkeitsbereich:Verbindung + UP BROADCAST RUNNING MULTICAST MTU:1500 Metrik:1 + RX packets:454 errors:0 dropped:0 overruns:0 frame:0 + TX packets:155 errors:0 dropped:0 overruns:0 carrier:0 + Kollisionen:0 Sendewarteschlangenlänge:1000 + RX bytes:59413 (59.4 KB) TX bytes:24972 (24.9 KB) + Interrupt:10 Basisadresse:0xd020 + + lo Link encap:Lokale Schleife + inet Adresse:127.0.0.1 Maske:255.0.0.0 + inet6-Adresse: ::1/128 Gültigkeitsbereich:Maschine + UP LOOPBACK RUNNING MTU:16436 Metrik:1 + RX packets:15 errors:0 dropped:0 overruns:0 frame:0 + TX packets:15 errors:0 dropped:0 overruns:0 carrier:0 + Kollisionen:0 Sendewarteschlangenlänge:0 + RX bytes:1122 (1.1 KB) TX bytes:1122 (1.1 KB) + +| Wie auf dem Auszug zu sehen hat die VM die **192.168.XXX.203** als IP + bekommen. Die IP kann aber von System zu System anders lauten, das ist + Abhängig vom IP-Bereich eures Systems. Sollte euch jedoch dort gar + keine IP angezeigt werden, müsst ihr die Einstellungen eures PC's bzw. + eures VM-Players erneut überprüfen. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +`Sonstige Tips und Tricks zur Fritzbox +allgemein `__ + +- Tags +- `faq `__ + +.. |:-)| image:: ../chrome/wikiextras-icons-16/smiley.png +.. |Warning| image:: ../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/FreetzConf2011.rst b/wiki/FreetzConf2011.rst new file mode 100644 index 0000000..0c10581 --- /dev/null +++ b/wiki/FreetzConf2011.rst @@ -0,0 +1,29 @@ +.. _FreetzConf2011: + +FreetzConf 2011 +=============== + +Zum ersten Mal seit Bestehen des Projekts treffen sich die +Freetz-Entwickler + +- am 12. und 13. November 2011 +- in Frankfurt am Main +- im Hackerspace des Frankfurter Chaos Computer Clubs (vgl. + `​Ankündigung `__), + +der uns freundlicherweise Räumlichkeiten zur Verfügung stellt, in denen +wir uns kennenlernen, gemeinsam arbeiten und über die Zukunft von Freetz +reden können. + +Ankündigung Chaos Computer Club Frankfurt e.V. `​Entwicklertreffen +“FreetzConf 2011″ im +Hackquarter `__ Die +Veranstaltung ist **nicht öffentlich**, Teilnahme nur auf Einladung. +Sollte jemand aktuell noch nicht eingeladen sein, aber gern teilnehmen +wollen, weil er vergessen wurde und/oder vorhat, in irgendeiner Form zum +Projekt beizutragen, so möge er sich bitte im +`​IPPF `__ per PN +an olistudent oder kriegaex wenden. + +- Tags +- `FreetzConf `__ diff --git a/wiki/Impressum.rst b/wiki/Impressum.rst new file mode 100644 index 0000000..3772910 --- /dev/null +++ b/wiki/Impressum.rst @@ -0,0 +1,46 @@ +.. _Impressum: + +`Impressum `__ +------------------------------ + +**Betreiber** + +Der Anbieter der Domain freetz.org und aller zugehöriger Subdomains ist +das Freetz Projekt. Primärer Ansprechpartner für inhaltliche Belange +ist: + +| Alexander Kriegisch +| Schillerplatz 6 +| D-91315 Höchstadt + +| Tel. +49 (9193) 52 76 +| Mob. +49 (176) 20 53 07 02 + +| Nutzungsbedingungen +| Weite Teile der Website werden mit Hilfe eines sogenannten Wikis + verwaltet, das es Besuchern gestattet, selbständig Informationen + einzutragen oder vorhandene Informationen zu editieren. Die im Wiki + verwalteten Informationen können somit von praktisch jedermann + verändert werden. + +Die Benutzer sind aufgerufen, alle Inhalte, die sie zu dieser Website +beisteuern, nach bestem Wissen zu erstellen. Weder der Anbieter noch die +einzelnen Benutzer erheben aber Anspruch auf Vollständigkeit, +Aktualität, Qualität und Richtigkeit. Es kann deshalb keine +Verantwortung für Schäden übernommen werden, die durch das Vertrauen auf +die Inhalte dieser Website oder deren Gebrauch entstehen. + +| Lizenz für Wiki-Inhalte +| Sämtliche Inhalte des Wikis werden unter der Creative Commons Lizenz + `​Namensnennung-Weitergabe unter gleichen Bedingungen + 2.0 `__ + angeboten. Autoren, die eigene Texte zu unserem Wiki beitragen, + erklären sich ausdrücklich damit einverstanden, daß ihre Beträge + ebenfalls unter diesen Bedingungen zur Verfügung gestellt werden. + +| Vorgehen bei Beanstandungen +| Sollte Grund zur Beanstandung von hier angebotenen Inhalten oder + verlinkten Seiten bestehen, bitten wir um sofortige Benachrichtigung. + Der Anbieter wird dann so schnell wie möglich reagieren und ggf. die + betroffenen Inhalte korrigieren bzw. beseitigen. Dies gilt vor allem + für eventuelle Fälle von Urheberrechtsverletzungen. diff --git a/wiki/Press.en.rst b/wiki/Press.en.rst new file mode 100644 index 0000000..a44c41a --- /dev/null +++ b/wiki/Press.en.rst @@ -0,0 +1,16 @@ +.. _Freetzinpublicpressweb: + +Freetz in public press & web +============================ + +- Fon blog, 2008-06-09: `​AVM (Fritzbox) öffnet + sich.... `__ + News item concerning availibility of freetz-1.0, relating to Heise + news ticker +- Heise.de, 2008-06-09: `​Freie Router-Erweiterung für AVMs + Fritzboxen `__ + News ticker entry concerning availibility of freetz-1.0 +- PC-Welt, 2007-11-20: `​DS-Mod: Hohe Schule für + Firmware-Mods `__ + Report about ds26, Fretz's predecessor, within an article about + "router tuning" for different hardware types diff --git a/wiki/Press.rst b/wiki/Press.rst new file mode 100644 index 0000000..c4c2682 --- /dev/null +++ b/wiki/Press.rst @@ -0,0 +1,40 @@ +.. _FreetzinPresseundWeb: + +Freetz in Presse und Web +======================== + +- CHIP online, 11.09.2010, `​Freetz: Neue FritzBox-Software + erstellen `__ +- CHIP online, `​Gratis-eBook: Das große inoffizielle FRITZ!Box + Handbuch `__ +- CHIP Ausgabe 2/2010, FritzBox zum Server aufbohren +- c't Ausgabe 17/2009, S. 61, Fritzens neue Tricks + `​http://www.ctmagazin.de/0917061 `__ +- Tecchannel vom 18.06.09, `​Alternative Fritz!Box-Firmware Freetz 1.1 + ist + fertig... `__ +- c't Ausgabe 4/2009, S. 172, Hotline: DNS-Server im WLAN nachrüsten + `​http://www.heise.de/ct/faq/hotline/09/04/04.shtml `__ +- PC Magazin Ausgabe 12/2008, Free Fritz! Eigene FritzBox-Firmware mit + Freetz! + dreiseitiger Bericht über Freetz (freetz-stable-1.0). +- PC-Welt, 27.06.2008 `​Fritz!Box: Neue Features + durch... `__ + Bezugnehmend auf die TecChannel-Meldung +- Techchannel, 27.06.2008 `​Fritz!Box: Neue Firmware selbst + gebaut... `__ + Teil 6 des Specials über AVM-Router und deren + Modifikationsmöglichkeiten +- Fon-Blog, 09.06.2008: `​AVM (Fritzbox) öffnet + sich.... `__ + Meldung zur Freigabe von freetz-1.0, bezugnehmend auf Heise-Meldung +- Heise.de, 09.06.2008: `​Freie Router-Erweiterung für AVMs + Fritzboxen `__ + Meldung zur Freigabe der Version freetz-1.0 +- PC-Welt, 20.11.2007: `​DS-Mod: Hohe Schule für + Firmware-Mods `__ + Bericht über ds26, den Vorgänger von Freetz, im Rahmen des Themas + "Router-Tuning" zu verschiedenen Router-Modellen +- Neue FritzBox-Firmware selbst bauen mit Freetz: `​Das inoffizielle + Fritz!Box Handbuch (E.F. + Engelhardt) `__ diff --git a/wiki/common/source_code.en.rst b/wiki/common/source_code.en.rst new file mode 100644 index 0000000..15b096a --- /dev/null +++ b/wiki/common/source_code.en.rst @@ -0,0 +1,89 @@ +.. _Sourcecode: + +Source code +=========== + +The Freetz source code is managed in a +`​Subversion `__ repository. Subversion is +generally abbreviated by SVN. + +.. _Developerversiontrunk: + +Developer version (trunk) +------------------------- + +|Warning| This version is only for experienced users and developers who +know how to help themselves! The trunk changes continuously and might +temporarily contain bugs or not work at all. + +Check out from SVN: + +.. code:: bash + + $ svn co http://svn.freetz.org/trunk <--- check out current trunk revision + $ svn co http://svn.freetz.org/trunk trunk_7843 -r 7843 <--- check out specific trunk revision (here: 7843) into subdirectory + "trunk_7843", so as not to overwrite the current trunk directory + +Check out from Git (|Warning| Git is not the leading system and is +officially unsupported presently. We provide it "as is" for test +purposes.): + +.. code:: bash + + $ git clone https://github.com/Freetz/freetz.git freetz-devel <--- freetz-devel: local copy of Git repository + +.. _Updates: + +Updates +------- + +How to update an existing local SVN repository (here: developer +version): + +.. code:: bash + + $ cd trunk + $ svn up <--- update to current revision + $ svn up -r 7843 <--- update to specific revision (here: 7843) + +How to update an existing local Git repository (here: developer +version): + +.. code:: bash + + $ cd freetz-devel + $ git pull + +.. _Stableversion: + +Stable version +-------------- + +|Warning| **The "stable" version is not maintained anymore. Newer boxes as +well as firmwares are not available there. Please use whenever possible +the trunk as mentioned above.** |Warning| + +For some box types no firmware is available on AVM servers. Help +yourself using this +`info <../FAQ.html#Couldnotdownloadfirmwareimage>`__. + +Depending on your hardware type you need one of the following Freetz +versions: + +**freetz-2.0**: current stable version (list of supported boxes and +firmware versions) + +.. code:: bash + + $ svn co http://svn.freetz.org/branches/freetz-stable-2.0 + +**ds-0.2.9-p8** (kernel 2.4): for very old boxes which do not get AVM +firmware updates anymore (more +`​info `__) + +.. code:: bash + + $ svn co http://svn.freetz.org/tags/ds-0.2.9-p8 + +.. |Warning| image:: ../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/common/source_code.rst b/wiki/common/source_code.rst new file mode 100644 index 0000000..ffd7085 --- /dev/null +++ b/wiki/common/source_code.rst @@ -0,0 +1,104 @@ +.. _Quellcode: + +Quellcode +========= + +Der Freetz-Quellcode wird in einem +`​Subversion `__-Repository verwaltet. +Subversion wird allgemein abgekürzt mit SVN. + +.. _EntwicklerversionTrunk: + +Entwicklerversion (Trunk) +------------------------- + +| |Warning| Diese Version ist ausschließlich für **erfahrene Benutzer und + Entwickler** gedacht, die sich selbst zu helfen wissen! +| |Warning| Sie ist ständigen Änderungen unterworfen und funktioniert daher + möglicherweise **nur eingeschränkt** oder **temporär nicht**! + +Aktuelle Liste unterstützter Boxen mit +`Firmware-Version `__\ `​ `__. + +Auschecken aus SVN (zuvor ggf ``umask 022`` nicht vergessen!): + +.. code:: bash + + $ svn co http://svn.freetz.org/trunk freetz-devel <--- freetz-trunk: Lokale Kopie des SVN-Repositorys + $ svn co http://svn.freetz.org/trunk freetz-devel_r7843 -r 7843 <--- Bestimmte Revision auschecken (hier: 7843) + +Auschecken aus Git: + +.. code:: bash + + $ git clone https://github.com/Freetz/freetz.git freetz-devel <--- freetz-git: Lokale Kopie des Git-Repositorys + +|Warning| `​Git `__ ist nicht das führende System und +wird derzeit nicht offiziell unterstützt, sondern nur zusätzlich zu +Testzwecken zur Verfügung gestellt. + +| Hinweis-1: Ein entsprechendes Paket, welches das ``git`` Programm + enhält, muss auf dem Build-Host installiert sein! +| Hinweis-2: Sollte der Projekt-Server oder das SVN-Repository nicht + erreichbar sein, kann alternativ das Git-Repository genutzt werden. +| Hinweis-3: Das `​Freetz + Git-Repository `__ auf GitHub + bezieht seine Daten direkt vom Projekt-Server! +| Hinweis-4: Wer ``FREETZ_DEVELOPER_VERSION_STRING=y`` benutzt, sollte + sich das Ticket `fwmod: Identify SVN_VERSION within Freetz Git + repository `__ anschauen. + +.. _Updates: + +Updates +------- + +Aktualisieren (Update) eines vorhandenen lokalen SVN-Repositorys (hier: +Entwicklerversion): + +.. code:: bash + + $ cd freetz-devel + $ svn up <--- Update auf aktuelle Revision + $ svn up -r 7843 <--- Update auf eine bestimmte Revision (hier: 7843) + +Update eines lokalen Git-Repositorys (hier: Entwicklerversion): + +.. code:: bash + + $ cd freetz-devel + $ git pull + +.. _StabileVersion: + +Stabile Version +--------------- + +|Warning| **Die "stabile" Version wird nicht mehr gepflegt und neuere Boxen +wie auch aktuelle Firmwares (06.X) sind hier nicht verfügbar. Es +empfiehlt sich nur den trunk Zweig zu nutzen.** |Warning| + +Für einige Box-Typen kann keine Firmware von den AVM-Servern geladen +werden: Abhilfe siehe +`hier <../FAQ.html#Couldnotdownloadfirmwareimage>`__. + +Je nach Gerätetyp wird eine der nachstehenden Versionen benötigt: + +**freetz-2.0**: aktuellste stabile Version (Liste unterstützter Boxen +mit +`Firmware-Version `__\ `​ `__) + +.. code:: bash + + $ svn co http://svn.freetz.org/branches/freetz-stable-2.0 + +**ds-0.2.9-p8** (Kernel 2.4): für sehr alte Boxen, die kein +Firmware-Update mehr von AVM erhalten (mehr Infos +`​hier `__) + +.. code:: bash + + $ svn co http://svn.freetz.org/tags/ds-0.2.9-p8 + +.. |Warning| image:: ../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/costumscript_dublesyslog.rst b/wiki/costumscript_dublesyslog.rst new file mode 100644 index 0000000..d9e8fbb --- /dev/null +++ b/wiki/costumscript_dublesyslog.rst @@ -0,0 +1,146 @@ +Ausgeführt auf einer Fritzbox 7330 mit Firmware: 107.06.03 rev27364 +Branding: avm Freetz: devel-12445 - FRITZ!OS 06.03-freetz-devel-12445 +Zum Zeitpunkt der Installation gabs noch kein stable für diese Box mit +dieser Firmware… der derzeitige Status ist mir nicht bekannt… + +Intention zu Diesen CostumScript: + +ich wünschte die möglichkeit das syslogging (einstellbar unter +`​http://fritz.box:81/cgi-bin/conf/syslogd `__ +) über den Local logger sowohl ins Filesystem (auf einen durchs fritzos +eingehaengten usb stick) als auch in den ram-ringbuffer zu schreiben. + +.. _SchrittezurLösungkannübersprungenwerden: + +Schritte zur Lösung, kann übersprungen werden… +---------------------------------------------- + +Ich habe erst einmal mit + +.. code:: bash + + # syslogd -h + syslogd: invalid option -- h + BusyBox v1.22.1 (2014-09-13 22:25:43 CEST) multi-call binary. + + Usage: syslogd [OPTIONS] + + System logging utility + (this version of syslogd ignores /etc/syslog.conf) + + -n Run in foreground + -O FILE Log to FILE (default:/var/log/messages) + -l N Log only messages more urgent than prio N (1-8) + -S Smaller output + -s SIZE Max size (KB) before rotation (default:200KB, 0=off) + -b N N rotated logs to keep (default:1, max=99, 0=purge) + -R HOST[:PORT] Log to HOST:PORT (default PORT:514) + -L Log locally and via network (default is network only if -R) + -D Drop duplicates + -C[size_kb] Log to shared mem buffer (use logread to read it) + +angeschaut was denn der BusyBox syslogd so bietet und dann mit + +.. code:: bash + + # ps w | grep syslog + 4718 root 3256 S {busybox} syslogd -L -C2048 + +geschaut wie er denn gerade so läuft. Durch editieren der Option +"Additional command line options (for experts)" im webinterface +(variable SYSLOGD_EXPERT_OPTIONS) habe ich es dann zu folgenden Status +gebracht: + +.. code:: bash + + root@FB:/var/mod/root# ps w | grep syslog + 4718 root 3256 S {busybox} syslogd -L -C2048 -O /var/media/ftp/uStor01/log/messages -b 20 -s 20048 + +leider scheint es allerdings so als ob die entweder oder option im +webinterface korrekt abstrahiert wurde und der busyboxsyslogd die zweite +option konsequent ignoriert. + +nun kam eine nähere Untersuchung des Befehls logread (ebenfals mit +parameter -h) dran welcher offenbarte das dieser aehnlich wie tail eine +option -f bietet welche den logausgaben folgt. nun ging es daran einen +kleinen script zu schreiben der dann beim booten jeweils gestartet wird. +gut aber wie macht man das, unter meinen "normalen" linuxdistributionen +schreibe ich was nach /etc/rc.local aber hier auf der freetzbox ist das +anders… es gibt eine option im webinterface unter +…:81/cgi-bin/file/mod/rc_custom bei welcher ich aber beim compilieren +der firmware die editierung deaktiviert hatte. Also musste es auch per +ssh gehen… Da mir die leute im channel ##fritzbox im freenode irc netz +nicht weiterhelfen konnten habe ich mich wieder einmal selbst auf die +suche gemacht…: + +nach diversen cds, lss und lesss fand ich dann durch +``cat /etc/init.d/rc.mod |grep custom`` heraus das die datei unter +/tmp/flash/mod/rc.custom zu finden ist. in der freez faq, welche mir +freundlicherweise über den irc channel angeboten wurde und jetzt bei dem +dort anwesenden bot auch einen alias hat…, stieß ich über dies auf den +Hinweis wie man diese Änderung im tempfs (ram) permanent in den flash +scriebt. + +.. _AlsohierdieAnleitungzurEditierungderrc.costumueberdieshell:: + +Also hier die Anleitung zur Editierung der rc.costum ueber die shell: +--------------------------------------------------------------------- + +.. code:: bash + + #fritzbox rc.custom ohne webinterface anlegen + touch /tmp/flash/mod/rc.custom + chmod +x /tmp/flash/mod/rc.custom + vi /tmp/flash/mod/rc.custom #das gewünschte reinschreiben... + # modsave flash # die daten vom ram in den flash übertragen... + Checking Freetz configuration ... changed. + Writing 3023 bytes to /var/flash/freetz ... done. + +.. _weiterdurchdieherleitungschrittezurloesungwhatever: + +weiter durch die herleitung (schritte zur loesung, whatever) +------------------------------------------------------------ + +nun hieß es erst einmal zu checken ob das fritzos meinen stick (dessen +mountpoint man durch ``mount`` erfährt) schon einhängt bevor freetz den +rc.custom ausführt, also getreu nach der Anleitung zur editierung der +der rc.custum sie in folgenden Zustand versetzt: + +.. code:: bash + + cat /tmp/flash/mod/rc.custom + echo testtest >> /var/media/ftp/uStor01/testlog + date >> /var/media/ftp/uStor01/testlog + +die fritzbox neugestartet und siehe da die file +/var/media/ftp/uStor01/testlog hat den richtigen Inhalt. + +Gut nun sind alle nötigen infos eingehohlt und tests durchgeführt und es +geht zu meiner… + +.. _Lösung:: + +…Lösung: +-------- + +.. code:: bash + + //////////////// + /tmp/flash/my/logtostick: (die datei muss natürlich auch das recht zum ausführen erhalten und in den flash permanentisiert werden...) + #dieser script loggt das was ueber logread aus dem ram zu lesen ist susaetzlich auf nen usb stick + echo logtostick started at: >> /var/media/ftp/uStor01/logtostick + date >> /var/media/ftp/uStor01/logtostick + echo current readlog content >> /var/media/ftp/uStor01/logtostick + logread >> /var/media/ftp/uStor01/logtostick + echo starting logread -f >> /var/media/ftp/uStor01/logtostick + logread -f >> /var/media/ftp/uStor01/logtostick + + /////////////// + root@FB:/var/mod/root# cat /tmp/flash/mod/rc.custom + /tmp/flash/my/logtostick & + root@FB:/var/mod/root# modsave flash + Checking Freetz configuration ... changed. + Writing 3623 bytes to /var/flash/freetz ... done. + root@FB:/var/mod/root# + +happy hacking wünscht treaki — diff --git a/wiki/freetz.en.rst b/wiki/freetz.en.rst new file mode 100644 index 0000000..a6cb81c --- /dev/null +++ b/wiki/freetz.en.rst @@ -0,0 +1,155 @@ +.. _FreetzgetsmorefromtheBox: + +Freetz gets more from the Box! +============================== + +.. figure:: /screenshots/52.png + :alt: + +The fritzbox firmware developers can't foresee all the functions that +you might wish for. Freetz changes this. The functionality of the box +can be adapted to individual needs. With Freetz, functionality can be: + +- **added.** + That could, for example, be a web server or special VPN. The `list of + packeges `__ provides an overview of what is possible. +- **changed.** + Sometimes, functionality exists but in it's original form it can't be + configured or there are limits on what can be configured. (e.g. the + integrated firewall). In this case, the `list of + enhancements `__ gives an overview + of the possibilities. +- **removed.** + This can be useful when a particular feature isn't needed or when + additional space is needed to make way for additional packages (the + box's memory is quite limited). There is also an overview of the + options here in the `list of patches `__. + +.. _HowdoesFreetzwork: + +How does Freetz work? +--------------------- + +The Fritzbox firmware consists of many individual components. They are +developed by various people and organisations and built together to form +the Firmware. Freetz removes individual components, changes their +configuration or puts new components in place. In this way, a new +firmware can be built to match individual requirements. This new +firmware can be installed using the normal firmware update function. + +.. _HowdoIobtainmyownFirmware: + +How do I obtain my own Firmware? +-------------------------------- + +For legal reasons you have to build your own firmware yourself. More on +this later. + +.. _Prerequisites: + +Prerequisites +------------- + +You will need: + +- A Linux-System. Either directly installed on the PC or in a virtual + machine under Windows (e.g. + `​Freetz-Linux `__). +- The Linux installation may need some additional packages to be + installed. See `einige + Werkzeuge `__ +- `download `__ the current release of Freetz. + +.. _TheProcess: + +The Process +----------- + +Once the prerequisites are in place, you are ready to go. You need to +take the following steps: + +.. figure:: /screenshots/53.png + :alt: Freetz menuconfig + + Freetz menuconfig + +- **Gather Parts.** + The process is menu-driven. You can define define exactly what goes + on the box and what features it will have. Freetz understands the + dependencies between the components and ensures that it will put + together a working combination. +- **Produce.** + This part takes a while, depending on the performance of the PC but + it will normal proceed without requiring any interaction. In + accordance with the selected components, source files will be + downloaded from the Internet. At the end, a complete firmware file + will exist. +- **Install** using the normal Firmware-Update on the Box. +- **Configure** and **use** the new features of the box. In the + configuration you will find a Freetz link. Under here, the packages + can be configured. + +Detailed information regarding the +`FREETZ-Installation `__ can be found +on the `corresponding wiki-Site `__. +There's also special `instructions for +newbies `__ which you should read if +you're new to Freetz. + +.. _LegalBackground: + +Legal Background +---------------- + +A large proportion of the Firmware components are Open Source software. +Their authors have explicity allowed the software to be used by anyone, +modified and distributed. Freetz makes good use of this. + +Other parts of the Firmware are developed by AVM (or by other firms and +then licenced to AVM). These components are protected and not made +publicly available. In order to have a functioning box both these and +the free components are required. + +For as long as this is the case, no complete firmware can be made +available for download. Freetz, therefore, is limited to providing the +tools with which anyone can build their own individual firmware. + +The self-built firmware should not be made available publicly. In this +way we avoid upsetting AVM. + +.. _Support: + +Support +------- + +When a self-built (and not the original) firmware is installed on the +box, you can't expect any support from AVM if you have any questions or +problems. You may, however, be able to get help in the +`​IP-Phone-Forum `__. + +.. _DonationsSupportfortheProject: + +Donations / Support for the Project +----------------------------------- + +| If you like Freetz and would like to support its further development, + the developers would gladly receive any donation + (`​Details `__). +| Donate directly with + `​Paypal `__. + +.. _FurtherLinks: + +Further Links +------------- + +- `Available Packages `__ +- `Available Patches `__ +- `​Support - Help and + Support `__ +- `Download Current Release `__ +- `FAQ - Frequently Asked Questions `__ +- `How To ... - Documentation of freetz + Modifications `__ +- `Developer + Information `__ diff --git a/wiki/freetz.rst b/wiki/freetz.rst new file mode 100644 index 0000000..d906456 --- /dev/null +++ b/wiki/freetz.rst @@ -0,0 +1,163 @@ +.. _FreetzmachtmehrausderBox: + +Freetz macht mehr aus der Box! +============================== + +.. figure:: /screenshots/52.png + :alt: + +Nicht immer hat der Hersteller der Box in seiner Firmware genau die +Funktionen vorgesehen, die man sich selber wünscht. Freetz kann das +ändern! Die Funktionalität der Box kann den individuellen Bedürfnissen +angepasst werden. Freetz kann Funktionalität + +- **hinzufügen.** + Das könnte zum Beispiel ein Web-Server auf der Box sein oder ein + spezielles VPN. Die `Liste der Pakete `__ gibt hierzu + eine Übersicht. +- **verändern.** + Manchmal ist die Funktion da, aber sie lässt sich im Original nicht + oder nicht detailliert genug konfigurieren (z. B. die integrierte + Firewall). Die `Liste der + Erweiterungen `__ gibt hier einen + Überblick. +- **entfernen.** + Das kann nötig werden, wenn man eine Funktion nicht braucht oder für + zusätzliche Pakete Platz schaffen möchte (der Speicher der Box hat + seine Grenzen). Auch hier gibt es einen Überblick in der `Liste der + Patches `__. + +.. _WiefunktioniertFreetz: + +Wie funktioniert Freetz? +------------------------ + +Die Firmware der Box besteht aus vielen einzelnen Komponenten. Sie +wurden von verschiedenen Personen und Firmen entwickelt und bilden +gemeinsam die Firmware der Box. Freetz tauscht nun einzelne Komponenten +aus, verändert ihre Konfiguration oder fügt neue Komponenten ein. So +entsteht eine neue Firmware für die Box ganz nach den individuellen +Wünschen. Diese neue Firmware kann über die gewohnte Update-Funktion auf +die Box installiert werden. Die ursprüngliche Funktionalität inklusive +der AVM Weboberfläche bleibt erhalten, Freetz kann sozusagen als +Erweiterung angesehen werden. + +.. _WiebekommeicheineeigeneFirmware: + +Wie bekomme ich eine eigene Firmware? +------------------------------------- + +Aus rechtlichen Gründen muss jeder seine Firmware selbst bauen. Dazu +später mehr. + +.. _Voraussetzungen: + +Voraussetzungen +--------------- + +Dazu braucht man: + +- Ein Linux-System. Entweder direkt auf dem PC installiert oder in + einer Virtuellen Maschine unter Windows (z.B. + `​Freetz-Linux `__). +- Möglicherweise muss das Linux noch um `einige + Werkzeuge `__ ergänzt werden. +- Den aktuellen Release von Freetz `downloaden `__. + +.. _Ablauf: + +Ablauf +------ + +Sind die Voraussetzugen geschaffen, kann es los gehen. Es ist soweit, +die individuelle Firmware … + +.. figure:: /screenshots/53.png + :alt: Freetz menuconfig + + Freetz menuconfig + +- **Zusammenstellen.** + Der Prozess ist menü-gesteuert. Man kann festlegen, was genau in die + Box kommt und worauf man verzichten kann/will/muss. Freetz kennt die + Abhängigkeiten unter den Komponenten und sorgt für eine + funktionierende Kombination. +- **Herstellen.** + Abhängig von der Leistungsfähigkeit des Pcs dauert dieser Prozess + eine kleine Weile, läuft im Normalfall aber automatisch ab. Je nach + gewählten Komponenten, werden dabei weiter Dateien (Quellen) aus dem + Internet geladen. Nach Abschluß ist eine fertige Firmware (Image) + entstanden. +- **Installieren** über das normale Firmware-Update der Box. +- Die neuen Funktionalitäten auf der Box **konfigurieren** und + **benutzen**. In der Konfiguration der Box findet sich jetzt in Link + auf Freetz. Hier können die zusätzlichen neuen Pakete konfiguriert + werden. + +Detaillierte Information über die Freetz-Installation finden sich auf +der `entsprechenden Wiki-Seite `__. Für +Anfänger existiert eine spezielle +`Anleitung `__, die man als +Freetz-Neuling unbedingt lesen sollte. + +Die Einstellungen in der FritzBox bleiben normalerweise bei einem +Upgrade auf Freetz erhalten. + +.. _RechtlicheHintergründe: + +Rechtliche Hintergründe +----------------------- + +Ein grosser Teil der Komponenten der Firmware ist freie Software. Ihre +Autoren haben erlaubt, dass sie von jedem verwendet, modifiziert und +weitergegeben werden kann. Davon macht Freetz reichlich Gebrauch. + +Ein anderer Teil aber ist von AVM (oder anderen Firmen) entwickelt und +geschützt. Diese Komponenten sind geschützt und nicht öffentlich +zugänglich. Für eine funktionierende Box braucht es aber beide Teile. + +Solange das so ist, darf keine fertige Firmware zum +`Download `__ angeboten werden in der AVM-Teile stecken. +Freetz muss sich deshalb darauf beschränken die Werkzeuge zu liefern, +mit denen jeder seine individuelle Firmware selbst bauen kann. + +Die selbst gebaute Firmware sollte nicht öffentlich zugänglich gemacht +werden. Das erspart möglichen Ärger mit AVM. + +.. _Support: + +Support +------- + +Wenn die selbst gebaute Firmware in der Box ist (und nicht mehr das +Original), kann man bei Fragen und Problemen **keinen Support von AVM** +erwarten. Hilfe kann man jetzt im +`​IP-Phone-Forum `__ +finden. + +.. _UnterstützungSpenden: + +Unterstützung / Spenden +----------------------- + +| Falls Dir Freetz gefällt und du seine Weiterentwicklung unterstützen + möchtest, freuen sich die Macher über jede Spende + (`​Details `__). +| Spende direkt über + `​Paypal `__. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `Verfügbare Pakete `__ +- `Verfügbare Patches `__ +- `​Support - Unterstützung und + Hilfe `__ +- `Download aktueller Release `__ +- `FAQ - Antworten auf häufig gestellte Fragen `__ +- `How To ... - Anleitungen zum modifizieren von + freetz `__ +- `Development + Bereich `__ diff --git a/wiki/help.rst b/wiki/help.rst new file mode 100644 index 0000000..86ce794 --- /dev/null +++ b/wiki/help.rst @@ -0,0 +1,39 @@ +.. _Hilfe: + +Hilfe +===== + +.. _WikiForumundIRC: + +Wiki, Forum und IRC +------------------- + +- `Wiki `__: + + - `Installation `__ + - `Pakete, Addons und CGI-Erweiterungen `__ + - `Patches `__, `Aussehen `__ + - `Bibliotheken `__, Module, `FAQ `__ + - Hintergrund-Infos + - `Howtos `__, und `Hilfe `__ + - `Trouble-Shooting `__ + +- `​Forum `__: + Diskussion, Fragen und Ankündigungen +- `IRC-Themenkanal `__ zu FritzBox und (inoffiziell) + Freetz + +Weitere Informationen rund um FritzBox & Co. außerdem bei WeHaveMoreFun +(WHMF): + +- `​Fritz!Box-Wiki `__: Tipps & + Tricks, Hintergrund-Infos u.v.m. + +Hier findet sich Hilfe für Freetz - und auch für das Wiki: + +- `Erste Schritte für Newbies `__ +- `FAQ: Antworten auf häufige Fragen zu Freetz `__ +- `FAQ: Antworten auf häufige allg. Fragen zur + Fritzbox `__ +- `HowTos: 'Wie mache ich …' `__ +- `Wiki Bearbeitung `__ diff --git a/wiki/help/fritz_faq.rst b/wiki/help/fritz_faq.rst new file mode 100644 index 0000000..feea26e --- /dev/null +++ b/wiki/help/fritz_faq.rst @@ -0,0 +1,314 @@ +.. _FAQ: + +FAQ +=== + +Während das FAQ zu Freetz spezifischen Fragen `hier <../FAQ.html>`__ zu +finden ist sollen hier allgemeine Fragen und Antworten zur FritzBox +gesammelt werden. + +.. _WiekannicheineneigenenanderenDNS-ServerfüralleangeschlossenenPCsundFritzboxverwenden: + +Wie kann ich einen eigenen/anderen DNS-Server für alle angeschlossenen PCs und Fritzbox verwenden ? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +AVM lässt die Änderung des default DNS-Servers, den die Box nutzt, im +Gegensatz zu anderen Routern über die Benutzeroberfläche derzeit(Ende +2009) nicht zu. Mögliche Lösungswege: + +- dnsmasq: Installation eines eigenen DNS-Servers auf der Fritzbox + mittels dem Packet `dnsmasq <../packages/dnsmasq.html>`__. Dies ist + ein allgemeiner Weg der auf jeder Box funktioniert, jedoch einen + Neubau des Images (freetzen) erfordert. Zusammen mit einer geänderten + Datei /etc/resolv.conf (im Trunk möglich über die GUI mit + "Einstellungen"→"Freetz: resolv.conf") kann ein DNS-Server so + eingetragen werden: "nameserver 208.67.220.220" (hier der von + OpenDNS) +- ohne dnsmasq: Bei einigen Boxen, z.B. 7170(Firmware 29.04.76) ist es + möglich die zentrale Konfigurationsdatei von AVM zu bearbeiten. Mit + "nvi /var/flash/ar7.cfg" müssen alle Vorkommen von "overwrite_dns1 = + xxx.xxx.xxx.xxx" und "overwrite_dns2 = xxx.xxx.xxx.xxx" bearbeitet + werden. Dieser Weg ist nur Personen empfohlen die Grundkenntnisse mit + nvi und telnet bzw. ssh/telnet haben! Hier läuft der multid von AVM + als DNS-Server. in der resolv.conf steht ein loopback "nameserver + 127.0.0.1". Dies ermöglicht auch Linux standard Anwendungen auf der + fritzbox die Auflösung über den multid. +- Ändern von /etc/resolv.conf: Wenn es nur darum geht, dass die Box + selbst einen anderen DNS-Server benutzt, reicht eine Änderung in der + Datei /etc/resolv.conf wie oben beim dnsmasq beschrieben. Dies ändert + allein jedoch nur die Namensauflösung der Box, angeschlossene Clients + nutzen dann weiter den Standard-DNS + +.. _Wiekannmancharacterdeviceserstellen: + +Wie kann man character devices erstellen? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Freetz benutzt auch ein solches `​character +device `__, +welches Dateien mit Hilfe eines Tiny Flash Filesystems (TFFS) dauerhaft +und veränderbar im Flash abspeichert, um die Konfiguration zu sichern. +Vorraussetzung ist eine Minor Nummer, die von keinem anderen character +device in ``/var/flash/`` verwendet wird (Freetz benutzt die Minor +0x3c), die Major Nummer kann aus ``/proc/devices`` ausgelesen werden: + +.. code:: bash + + mknod /var/flash/ c + +Da dieses character device in der +`​Ramdisk `__ unter ``/var/`` +erzeugt wurde, muss dieser Befehl jedesmal beim Neustart ausgeführt +werden. Der Inhalt bleibt aber erhalten. |Warning| Zum Bearbeiten solcher +character devices **niemals** vi verwenden! Dafür gibt es das +Wrapper-Skript nvi. + +|Warning| **ACHTUNG:** Die Flash Partition des TFFS ist sehr klein und +nicht geeignet Dateien > 10-30 KB aufzunehmen (je nach Größe der anderen +Dateien). + +Der aktuelle Füllstand kann wie folgt ausgelesen werden: + +:: + + echo 'cleanup' > /proc/tffs + echo 'info' > /proc/tffs + cat /proc/tffs | grep '^fill=' + +.. _WasfüreinNetzwerkkabelbenötigeichfürdasrecovern: + +Was für ein Netzwerkkabel benötige ich für das recovern ? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + RJ45 Standardnetzwerkkabel, kein Crossover + +.. _WoranerkenneichdassicheineFB7270v3habe: + +Woran erkenne ich, dass ich eine FB 7270v3 habe ? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- An der Firmwareversion. Firmwares für 7270v3 beginnen mit 74.xx.xx +- An der Anzeige im AVM-Web-Interface + `​http://fritz.box `__, z.B. + **Produktinformationen**: FRITZBox Fon WLAN 7270 v3 (UI) +- Anhand der Seriennummer (s.u.) + +.. _WiealtistmeineFritzBox: + +Wie alt ist meine FritzBox ? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +| Benötig werden dazu die ersten vier Stellen der Seriennummer: +| Beispiel: **W484**-xxx-xx-xxx-xxx ⇒ **Donnerstag, den 27.11.2008** + +| **W484 = Produktionswoche (Achtung: bitte nicht verwechseln mit der + Kalenderwoche) 48 und 4. Tag = Donnerstag** + + +---------------+-------------+ + | **Buchstabe** | **Baujahr** | + +---------------+-------------+ + | U | 2006 | + +---------------+-------------+ + | V | 2007 | + +---------------+-------------+ + | W | 2008 | + +---------------+-------------+ + | X | 2009 | + +---------------+-------------+ + | A | 2010 | + +---------------+-------------+ + | B | 2011 | + +---------------+-------------+ + | C | 2012 | + +---------------+-------------+ + +| **Info:** Wo liegt der Unterschied zwischen Produktionswoche und + Kalenderwoche: +| In meinem Beispiel ist die Produktionswoche = der Kalenderwoche, aber + z.B. im Jahr 2010 unterscheiden sich die Tage etwas: +| A101 = Kalenderwoch 10 = sollte einen Montag in der 10 KW, also + 08.03.2010 ergeben, das ist aber falsch, +| A101 = Produktionswoche 10 ergibt einen Montag in der 9 KW und zwar + den 01.03.2010 +| Quelle meiner Behauptung: - Wird nachgeliefert. + +.. _WievielFlashhatmeineFritzBox7270: + +Wie viel **Flash** hat meine FritzBox 7270 ? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +| Für die zweite  Ziffern-Gruppe (xxxx-**XXX**-xxx-xxx) sind bislang + folgende Nummern aufgetreten: + + +---------+---------+---------+---------+---------+---------+---------+ + | **Numme | **HWRev | **Brand | **Flash | **Farbe | **Versi | **Komme | + | r** | ision** | ing** | größe | ** | on** | ntar** | + | | | | (in | | | | + | | | | MB)** | | | | + +---------+---------+---------+---------+---------+---------+---------+ + | 293 | 122 | AVM | 8 | rot | 7270 V1 | | + +---------+---------+---------+---------+---------+---------+---------+ + | 294 | 122 | 1und1 | 8 | schwarz | 7270 V1 | | + | | | | | / | | | + | | | | | silber | | | + +---------+---------+---------+---------+---------+---------+---------+ + | 304 | 139 | AVM | 16 | rot | 7270 V2 | | + +---------+---------+---------+---------+---------+---------+---------+ + | 305 | 139 | 1und1 | 16 | schwarz | 7270 V2 | | + | | | | | / | | | + | | | | | silber | | | + +---------+---------+---------+---------+---------+---------+---------+ + | 336 | 139 | AVM | 16 | rot | 7270 V2 | für | + | | | | | | | Kabel | + | | | | | | | Deutsch | + | | | | | | | land-Ku | + | | | | | | | nden | + +---------+---------+---------+---------+---------+---------+---------+ + | 334 | 145 | 1und1 | 16 | schwarz | 7270 V3 | | + +---------+---------+---------+---------+---------+---------+---------+ + | 351 | 145 | AVM | 16 | rot | 7270 V3 | | + +---------+---------+---------+---------+---------+---------+---------+ + | 352 | 145 | otwo | 16 | rot | 7270 V3 | für | + | | | | | | | o2-Kund | + | | | | | | | en | + +---------+---------+---------+---------+---------+---------+---------+ + | 354 | 145 | AVM | 16 | rot | 7270 V3 | für | + | | | | | | | Netcolo | + | | | | | | | gne-Kun | + | | | | | | | den | + +---------+---------+---------+---------+---------+---------+---------+ + | 355 | 145 | EWE | 16 | weiß / | 7270 V3 | für | + | | | | | grau | | EWE-Kun | + | | | | | | | den | + +---------+---------+---------+---------+---------+---------+---------+ + | 307 | 139 | AVME | 16 | rot | 7270 V2 | Interna | + | | | | | | | tionale | + | | | | | | | -Versio | + | | | | | | | n | + +---------+---------+---------+---------+---------+---------+---------+ + | 310 | 139 | AVME | 16 | rot | 7270 V2 | A-/CH-V | + | | | | | | | ersion | + +---------+---------+---------+---------+---------+---------+---------+ + +| Beispiel: W484-\ **305**-xx-xxx-xxx ⇒ Fritzbox mit 16MB und + 1und1-Branding + +oder + +| 1.) Support Datei auslesen über: + `​http://fritz.box/html/support.html `__ +| 2.) In der Datei sollte folgender Eintrag zu finden sein: + +- 8MB: **flashsize 0x00800000** +- 16MB: **flashsize 0x01000000** + +| 00800000 Hex = 8.388.608 Dezimal = 8.192 KB = 8 MB +| 01000000 Hex = 16.777.216 Dezimal = 16.384 KB = 16 MB +| Weitere Details sind + `​[hier] `__ + beschrieben. + +.. _SteuercodesfürdieFritzbox: + +Steuercodes für die Fritzbox +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Hier findet Ihr eine (unvollständige) Liste der Steuercodes für Eure +Fritzbox: + + +--------------------+----------------------------------------------+ + | **Telefoncode** | **Funktion** | + +--------------------+----------------------------------------------+ + | #96*0\* | WLAN ausschalten | + +--------------------+----------------------------------------------+ + | #96*1\* | WLAN einschalten | + +--------------------+----------------------------------------------+ + | #96*2\* | CAPI over TCP (NetCAPI) ausschalten | + +--------------------+----------------------------------------------+ + | #96*3\* | CAPI over TCP (NetCAPI) einschalten | + +--------------------+----------------------------------------------+ + | #96*4\* | Anrufmonitor ausschalten | + +--------------------+----------------------------------------------+ + | #96*5\* | Anrufmonitor einschalten | + +--------------------+----------------------------------------------+ + | #96*6\* | Anzeige: "Kein Bier vor 4" oder "Bier holen" | + +--------------------+----------------------------------------------+ + | #96*7\* | telnetd einschalten | + +--------------------+----------------------------------------------+ + | #96*8\* | telnetd ausschalten | + +--------------------+----------------------------------------------+ + | #96*9\* | Anzeige: Uptime des Routers | + +--------------------+----------------------------------------------+ + | #990*15901590\* | Reboot der Fritzbox | + +--------------------+----------------------------------------------+ + | #991*15901590\* | Rücksetzen auf Werkseinstellungen | + +--------------------+----------------------------------------------+ + | #83*hhmmddmmyyyy\* | Uhr stellen | + +--------------------+----------------------------------------------+ + +.. _HilfedieBoxisttotalverkonfiguriertFreetzNot-AUS: + +Hilfe, die Box ist total verkonfiguriert / Freetz "Not-AUS" +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Jetzt ist es passiert: Paket konfiguriert und dabei irgendwas so +verstellt, dass die Box nicht mehr erreichbar ist. Auch in so einem Fall +gibt es noch eine Möglichkeit vor dem Recover: + +`​Den Freetz "Not-Aus" +Schalter `__. + +Wenn der Parameter *kernel_args* den Eintrag ``ds_off=y`` enthält, wird +der Haupteil von Freetz nicht mehr gestartet (genauer wird +/etc/init.d/rc.mod nicht aufgerufen). Um den Parameter zu setzen muss +man sich allerdings per FTP auf die Box verbinden, hat aber dann gute +Chancen, die Box ohne Recover erfolgreich zu neu wiederbeleben. + +So geht es: + +- PC eine "feste" IP aus dem Netz 192.168.178.0 geben, z.B. + 192.168.178.12 255.255.255.0 +- Direkt nach dem Einschalten des Routers per FTP auf die 192.168.178.1 + (User/PW: adam2/adam2) verbinden (der FTP-Server steht nur wenige + Sekunden nach dem Einstecken des Netzteils zur Verfügung, also + eventuell ein paar mal versuchen (oder den Hinweis aus dem letzten + Punkt ausprobieren) +- Im FTP: + + .. code:: bash + + quote SETENV kernel_args ds_off=y + quote REBOOT + + (bereits vorhandene Einträge in den kernel_args gehen dadurch + natürlich verloren…) + +- Falls die Box auf die IP 192.168.178.1 nicht reagiert hilf in der + Regel der Trick, ein unpassendes Recover einer anderen(!) Box zu + starten, was zwar mit einer Fehlermeldung abbricht, aber zwei + angenehme Nebeneffekte hat: Die Box wird (wenn der PC eine IP wie + oben hat) im FTP-Modus auf die IP 192.168.178.1 gesetzt und bleibt im + FTP-Modus, so dass das Abpassen des kurzen Momentes nach dem Starten + entfällt. + +Jetzt sollte zumindest die AVM-Oberfläche wieder wie gewohnt zu +erreichen sein. Man kann sich nun per Telnet auf die Box verbinden und +die "fehlerhafte" Konfiguration eines Paketes zurücksetzen, indem man +z.B. /var/tmp/flash/.diff löscht, von Hand "korrigiert" oder +umbenennt. Wenn dann der Aufruf von ``/etc/init.d/rc.mod`` wieder ein +"normal funktionierendes" Freetz startet, braucht man nur noch den +``ds_off=y`` Parameter zu entfernen, und alles sollte wieder gehen: + +.. code:: bash + + . /usr/bin/kernel_args + ka_removeVariable ds_off + +Ergänzender Hinweis: Analog schaltet ``dbg_off=y`` das Abarbeiten der +debug.cfg beim Starten ab. + +- Tags +- `faq `__ + +.. |Warning| image:: ../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/help/howtos.rst b/wiki/help/howtos.rst new file mode 100644 index 0000000..72f1257 --- /dev/null +++ b/wiki/help/howtos.rst @@ -0,0 +1,111 @@ +.. _HowTos: + +HowTos +====== + +Die HowTos hier sind entweder Freetz-spezifisch, oder stehen zumindest +mit Freetz in Zusammenhang. Eine Reihe weiterer HowTos für AVM "Boxen" +finden sich im + +- `​Wiki des + IPPF `__. +- `​Fritz!Box Wiki `__ + +.. _Allgemeines: + +Allgemeines +----------- + +- `Freetz-Linux unter verschiedenen Virtualisierungslösungen zum Laufen + bringen `__ +- `Erste Schritte für Newbies `__ +- `Zweiter Schritt für Newbies (Mein erster + Trunk) `__ +- `Freetz installieren `__ +- `Swap-File anlegen `__ +- `Kleiner Webserver mit BusyBox `__ +- `Möglichkeiten der Nutzung von WoL `__ +- `Rechner im Netzwerk herunterfahren `__ +- `Benutzer dauerhaft speichern in der passwd bei + Freetz-1.1 `__ +- `​IPv6 inkl. Subnet für das LAN mit + SixXS `__ +- `Tutorial WIP: CustomScript zur Umgehung der Beschränkung von BusyBox + Syslogd entweder in den ram oder auf das fs zu + loggen <../costumscript_dublesyslog.html>`__ + +.. _Development: + +Development +----------- + +- `FW-Image entpacken, ändern und wieder + packen `__ +- `Eigene Dateien in die Firmware + integrieren `__ +- `Cross-Compiler / Toolchain + erstellen `__ +- Vorkompilierte Programme neu übersetzen? +- `Menükonfiguration pflegen `__ +- `Kernel konfigurieren und + kompilieren `__ +- `Busybox konfigurieren und + kompilieren `__ +- `Patches in Freetz + einspielen `__ +- `Addon Paket installieren `__ +- `Eigene Programme + kompilieren `__ +- `Dynamische Bandbreitenanzeige per SVG + realisieren `__ +- `Flash-Partitionierung `__ +- `Flash-Partitionen im laufenden Betrieb + sichern `__ +- `Flash-Partitionen von außen mit FTP + sichern `__ +- `Ablauf eines + Firmware-Updates `__ +- `Wie die Fritz!Box Manipulationen + erkennt `__ +- `ADAM2-Bootloader `__ +- `Freetz Build Prozess `__ +- `Wie baue ich ein eigenes Paket für + Freetz? `__ +- `Platz sparen im Dateisystem der + Fritz!Box `__ +- `Einstellungen speichern im + Urlader-Environment `__ +- `Infos zur Web-GUI `__ +- `Firmware-Image-Namen analysieren und + interpretieren `__ +- `​Informationen über die einzelnen Fritz!Boxen und ihre + Ausstattung `__ + +.. _Security: + +Security +-------- + +- `Benutzerverwaltung `__ +- `Freetz als interner Router mit + Firewall `__ +- `WLAN von LAN trennen mit + iptables `__ +- `Konfiguration des eingebauten + Switches `__ +- `Leistungsfähige Firewall mit iptables <../packages/iptables.html>`__ + +.. _Troubleshooting: + +Troubleshooting +--------------- + +- `Original Firmware + wiederherstellen `__ +- `Kaputtes Telefonbuch + reparieren `__ +- `Häufige selbstständige Reboots `__ + +- Tags +- `help <../help.html>`__ +- `howtos `__ diff --git a/wiki/help/howtos/common.rst b/wiki/help/howtos/common.rst new file mode 100644 index 0000000..36cb0cd --- /dev/null +++ b/wiki/help/howtos/common.rst @@ -0,0 +1,8 @@ +.. _Allgemeines: + +Allgemeines +=========== + +In dieser Rubrik finden sich allgemeine Themen - und vielleicht auch +das, was sich woanders nicht recht einsortieren ließ. Was das genau ist, +lässt sich dem Inhaltsverzeichnis zur Rechten übernehmen. diff --git a/wiki/help/howtos/common/busybox_httpd.rst b/wiki/help/howtos/common/busybox_httpd.rst new file mode 100644 index 0000000..978cb51 --- /dev/null +++ b/wiki/help/howtos/common/busybox_httpd.rst @@ -0,0 +1,100 @@ +.. _KleinerWebservermitBusyBox: + +Kleiner Webserver mit BusyBox +============================= + +BusyBox enthält einen kleinen Webserver, den man z.B. so starten kann: + +.. code:: bash + + httpd -P /var/run/port90.pid -p 90 -c /mod/etc/webcfg.conf -h /var/media/ftp/irgendwo/htdocs/ -r "Port 90" + +Diese Zeile startet den Webserver auf Port 90, d.h. um ihn zu erreichen, +benutzt man `​http://fritz.box:90 `__. Wenn man in +/var/media/ftp/irgendwo/htdocs/ eine Datei namens index.html abgelegt +hat, wird diese angezeigt. + +Der Inhalt von Verzeichnissen wird nicht automatisch angezeigt. Dafür +kann man ein CGI-Skript mit dem Namen index.cgi im Unterverzeichnis +cgi-bin anlegen, im Beispiel also +/var/media/ftp/irgendwo/htdocs/cgi-bin/index.cgi. + +.. code:: bash + + #!/bin/sh + + # standardkonformen HTTP-Header erzeugen + echo -en "Content-Type: text/html\r\n\r\n" + cat << EOF + + + Index of ${QUERY_STRING} + + +

Index of ${QUERY_STRING}

+ + + + + $( + # alle Fehler ins Nirvana umleiten + exec 2>/dev/null + # Datumsformat 1 zum Finden in der Verzeichnisliste + date_format1="[A-Z][a-z]{2} [A-Z][a-z]{2} [ 123][0-9] [0-9]{2}:[0-9]{2}:[0-9]{2} [0-9]{4}" + # langer Ersetzungsausdruck (daher separat), der eine Tabellenzeile + # generiert + replace="
Name  Last modified  Size

$([ "$QUERY_STRING" == "/" ] || echo '..')
\3<\/a><\/tt><\/td>\ \ \2<\/tt><\/td>\ \ \1<\/tt><\/td><\/tr>" + # Datumsformat 2 zum Separieren eines führenden Leerzeichens bei der + # Tageszahl (muß durch festes HTML-Leerzeichen   ersetzt werden) + date_format2="([A-Z][a-z]{2} [A-Z][a-z]{2} ) ([0-9] [0-9]{2}:[0-9]{2}:[0-9]{2} [0-9]{4})" + busybox ls -lLep ../${QUERY_STRING} | + # im Wurzelverzeichnis "cgi-bin" herausfiltern + ([ "$QUERY_STRING" == "/" ] && grep -v 'cgi-bin' || cat) | + # Zeilen numerieren, damit Reihenfolge innerhalb der beiden Gruppen + # (Verzeichnisse und der Rest) später erhalten bleibt beim Sortieren + awk '{printf("%5d %s\n", NR,$0)}' | + # "X" vor Verzeichnisse setzen, "Y" vor den Rest ("X" < "Y") + sed -r 's/^([0-9 ]+ d)/X \1/' | + sed -r 's/^([0-9 ]+)/Y \1/' | + # Sortieren bewirkt Gruppierung der Einträge + sort | + # Sortierhilfen + nicht benötigte Spalten löschen + sed -r 's/^([^ ]+ +){6}(.*)/\2/' | + # Dateigrößen für Verzeichnisse durch "---" ersetzen + sed -r 's/^[0-9]+(.*)\/$/---\1/' | + # eine Tabellenzeile je Verzeichniseintrag erzeugen + sed -r "s/^([-0-9, ]+) ($date_format1) +(.*)$/$replace/" | + # Sonderfall führendes Leerzeichen bei Tageszahl im Datum + sed -r "s/$date_format2/\1\ \2/" + ) +
+ + + EOF + +Der BusyBox-httpd kann auch PHP-Skripte ausführen, wenn man das +`PHP-Package <../../../packages/php.html>`__ installiert hat. Dazu muss +man in /mod/etc/webcfg.conf eine neue Zeile einfügen: + +.. code:: bash + + *.php:/usr/bin/php-cgi + +Damit index.php-Dateien verarbeitet werden, kann man beim +index.cgi-Skript nach der ersten Zeile folgende Zeilen einfügen: + +.. code:: bash + + if test -s "../${QUERY_STRING}/index.php" ; then + echo -e "Status: 302 Found\r" + echo -e "Location: index.php\r" + exit 0 + fi + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​IPPF + Artikel `__ diff --git a/wiki/help/howtos/common/create_swap.rst b/wiki/help/howtos/common/create_swap.rst new file mode 100644 index 0000000..61ed458 --- /dev/null +++ b/wiki/help/howtos/common/create_swap.rst @@ -0,0 +1,54 @@ +.. _Swap-Fileanlegen: + +Swap-File anlegen +================= + +.. _WasisteinSwap-Fileundwofürbraucheiches: + +Was ist ein Swap-File, und wofür brauche ich es? +------------------------------------------------ + +Das Wort *Swap* kommt aus dem Englischen und bedeutet so viel wie +"austauschen" oder "auslagern" - und genau um letzteres geht es dabei: +Wird der Arbeitsspeicher (RAM) knapp, wird es für die Programme eng. +Damit es trotzdem munter weitergehen kann, kann das System gerade nicht +benötigte Bereiche aus dem Arbeitsspeicher auslagern. Das sind z.B. +Programme, die vielleicht gerade gelangweilt im Hintergrund hängen und +nix zu tun haben. Wird der Speicher später wieder benötigt, holt das +System ihn zurück. + +Wer's genauer wissen möchte, schaut z.B. in der +`​Wikipedia `__ nach. + +.. _Wielegeichesan: + +Wie lege ich es an? +------------------- + +Jetzt kommt der interessantere Teil |:)| Im Entwickler-Repository +(``trunk``) gibt es dafür bereits im WebIF eine einfache Möglichkeit. +Wer lieber auf "Nummer sicher" geht, und daher die Release +(``freetz-1.0``) oder ``stable`` Branch verwendet, dem hilft ein anderer +Linux-PC weiter, auf dem man die benötigte Swap-Datei erstellt, um sie +dann auf die Box zu kopieren. Das sieht z.B. so aus: + +.. code:: bash + + dd if=/dev/zero of=swapfile bs=1k count=64000 + mkswap swapfile + scp swapfile root@fritz.box:/var/media/ftp/uStor01/ + +Dann im Freetz-WebIF unter *Einstellungen ⇒ Swap* noch den Pfad +eintragen, wo das System es finden kann (also +``/var/media/ftp/uStor01/swapfile``), und den Starttyp sinnvollerweise +auf "Automatisch" umstellen. Will man es sofort (ohne Reboot) +aktivieren, geht man im gleichen WebIF noch ins *Dienste* Menü, und +startet den Swap-Dienst manuell - er findet sich gleich im ersten Block +bei den *Basis-Paketen*. + +- Tags +- `help <../../../help.html>`__ +- `howtos `__ + +.. |:)| image:: ../../../../chrome/wikiextras-icons-16/smiley.png + diff --git a/wiki/help/howtos/common/external.rst b/wiki/help/howtos/common/external.rst new file mode 100644 index 0000000..449c6f2 --- /dev/null +++ b/wiki/help/howtos/common/external.rst @@ -0,0 +1,176 @@ +.. _External: + +External +======== + +.. figure:: /screenshots/118.jpg + :alt: external menuconfig page + + external menuconfig page + +Entstanden aus diesem Thread im IPPF: +`​http://www.ip-phone-forum.de/showthread.php?t=160920 `__ + +| Mit "External" kann dem Platzproblem im Flash der Fritzboxen + entgegengewirkt werden, man kann also ein größeres Image als das Flash + zulassen würde installieren. Hierzu werden Packages, Librarys als auch + benutzerdefinierte Dateien aus dem Image "externalisiert" oder + ausgelagert. Bei Boxen mit USB-Host bietet sich hierzu ein + angeschlossener USB-Stick an. Bei älteren Boxen können unter + Zuhilfenahme des + `Downloader-CGIs <../../../packages/downloader.html>`__ die Dateien + von einem FTP- oder HTTP-Server in den RAM nachgeladen werden. + Alternativ können die Dateien auch per + `autofs <../../../packages/autofs.html>`__ eingebunden werden. +| Mit External kann man die Meldung `Filesystem image too + big <../../../FAQ.html#Filesystemimagetoobig>`__ vermeiden. + +| |Warning| Der Pfad zu den external-Dateien kann im Webinterface unter + Freetz → Einstellungen → external konfiguriert werden. + +In diesem dürfen sich keine andere Dateien befinden, dies könnte zu +`​Fehlern `__ +führen. + +| |Warning| Es können nur Pakete ausgelagert werden, die zur Installation + ausgewählt wurden. + +.. _Konfiguration: + +Konfiguration +============= + +zu finden im menuconfig unter "Advanced Options" → "External" + +.. _PreparefilesforDownloader: + +Prepare files for Downloader +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +| Diese Option ist nur zu sehen, wenn das Downloader-CGI zur + Installation ausgewählt wurde. +| Es werden hiermit beim make-Prozess Pakete für den späteren + `Download <../../../Download.html>`__ erstellt. +| Näheres hierzu beim + `Downloader-CGI <../../../packages/downloader.html>`__. + +.. _Keepsubdirectories: + +Keep subdirectories +~~~~~~~~~~~~~~~~~~~ + +Die Verzeichnisstruktur der ausgelagerten Dateien wird beibehalten. Dies +hat den Vorteil dass eine gleichlautende Datei an verschiedenen Stellen +im Image ausgelagert werden kann. Ein Nachteil ist, dass das händische +Kopieren auf die Box umständlicher ist. + +.. _Createfileforupload: + +Create file for upload +~~~~~~~~~~~~~~~~~~~~~~ + +Alle ausgelagerten Dateien werden in eine Datei gepackt, die mittels +Freetz-Webinterface auf die Box geladen werden kann. Die Datei ist im +Verzeichnis .\ *image* zu finden und trägt den gleiche Namen wie das +erstellte Image, weist aber die Endung ".external" auf. + +.. _ownfiles: + +own files +~~~~~~~~~ + +Hier können noch zusätzliche Dateien zum auslagern angegeben werden. Es +ist der Pfad auf der Fritzbox anzugeben! Wenn es mehr als eine Datei +ist, sind diese mit einem Leerzeichen voneinander zu trennen. + +.. _Auswahl: + +Auswahl +======= + +packages +~~~~~~~~ + +Hier können verschiedene "binary-only" Packages zum auslagern ausgewählt +werden. Es sollten alle unproblematisch sein. + +services +~~~~~~~~ + +Hier können verschiedene automatisch startende Packages zum auslagern +ausgewählt werden. + +|Warning| Diese werden erst geladen wenn der USB-Stick verfügbar ist und +die Option zum automatischen Starten von ausgelagerten Diensten im +Webinterface aktiviert ist. + +libraries +~~~~~~~~~ + +Hier können verschieden Libraries zum auslagern ausgewählt werden. + +|Warning| Zu beachten ist, dass Programme, die gegen diese gelinkt sind, +erst gestartet werden können, wenn die Datei auf der Box geladen ist. +Also vorher bitte die Abhängigkeiten prüfen. + +.. _Installation: + +Installation +============ + +Die Dateien, die für external ausgewählt wurden, müssen auf der Box +verfügbar gemacht werden. + +Im Falle eines USB-Sticks sollte man bei der Konfiguration die Option +"Create file for upload" auswählen. Die damit erzeugte Datei kann man +über das installierte Freetz Webinterface System" → "Firmware-Update" → +Option "external-Datei hochladen" auf die Box kopieren. + +Wenn man einen FTP/HTTP-Server oder einen NFS-Server verwendet, muß man +selbst dafür sorgen, daß die Box auf die Dateien zugreifen kann. + +.. _AutomatischesstartenstoppenvonDiensten: + +Automatisches starten/stoppen von Diensten +========================================== + +| Dies kann im Webinterface unter ``Einstellungen`` konfiguriert werden. + Dienste die hier eingetragen sind erscheinen im Webinterface nur + solange der Datenträger mit den ausgelagerten Dateien zur Verfügung + steht. +| Ansonsten müssten die Optionen selbsterklärend sein. Hier noch ein + Screenshot davon: + +.. figure:: /screenshots/175.jpg + :alt: external_services + + external_services + +| Unter ``Logdateien`` wird im Webinterface die + ``/var/log/external.log`` angezeigt. +| In dieser bedeutet in den "Waiting" Zeilen jeder Punk, dass 1 Sekunde + gewartet wurde. Falls es also "tausende" Punkte sind, behindert + irgendetwas das saubere hochfahren der Box, vermutlich ein Timer in + der rc.custom oder debug.cfg. + +.. _Firmware-build-ProzessundUpdate: + +Firmware-build-Prozess und Update +================================= + +Beim Firmware-build werden zwei Dateien erzeugt: xxx.image → die +eigentliche Firmware-Image xxx.external → Die Dateien, die +externalisiert werden sollen + +Beide Dateien sind im Ordner [images] zu finden. Bei der external-Datei +handelt es sich um eine gepackte tar-Datei, die beim Upload übers +Freetz-Webinterface automatisch ins Zielverzeichnis entpackt wird. Es +wird empfohlen, erst die external hochzuladen [Freetz-WebIf → System → +Firmware-Update] und danach erst die Firmware. So stehen die +external-Pakete der aktualisierten Firmware schon zur Verfügung. + +- Tags +- `external `__ + +.. |Warning| image:: ../../../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/help/howtos/common/first_trunk.rst b/wiki/help/howtos/common/first_trunk.rst new file mode 100644 index 0000000..c09cf06 --- /dev/null +++ b/wiki/help/howtos/common/first_trunk.rst @@ -0,0 +1,513 @@ +.. _Wiebaueichmeinenerstentrunk: + +Wie baue ich meinen ersten trunk ? +================================== + +Inhaltsverzeichnis +^^^^^^^^^^^^^^^^^^ + +#. `Beschreibung für ein Trunk-Image inkl. Samba und + VSFTP `__ +#. `Trunk-Image bauen `__ + + #. `Samba einrichten `__ + #. `FTP-Freigaben einrichten + (Freetz-Trunk) `__ + #. `Einrichten von + Benutzern `__ + #. `Rechtevergabe für + FTP-User `__ + +#. `Image für einen Speedport + bauen `__ + + #. `Welche Speedports lassen sich mit Freetz + modifizieren? `__ + #. `Umbau eines W701V `__ + #. `Umbau eines W501V `__ + #. `Umbau eines W920V `__ + +| + +.. _BeschreibungfüreinTrunk-Imageinkl.SambaundVSFTP: + +Beschreibung für ein Trunk-Image inkl. Samba und VSFTP +------------------------------------------------------ + +| Diese Anweisung ist für alle die geschrieben die zum ersten Mal Ihre + Fritzbox mit einem FREETZ-Trunk (Entwickler-Version) modifizieren + wollen. + +.. _Trunk-Imagebauen: + +Trunk-Image bauen +----------------- + +Das Vorgehen um ein Trunk-Image zu bauen stimmt bis zum Punkt **Freetz +Sourcen auschecken** mit den Schritten aus dem +`Newbie-Tutorial `__ überein. Deshalb steigt diese +Anleitung erst an dieser Stelle ein. Falls ihr euch unsicher seid, dann +geht das Tutorial nochmal bis zu `dieser +Stelle `__ durch. + +| Der Befehl zum Auschecken sieht nun etwas anders aus. Folgender Befehl + ist jetzt einzugeben: + +.. code:: bash + + svn checkout http://svn.freetz.org/trunk freetz-trunk + +| +| Sollte dies nicht starten, so kann es sein das die Netzwerkverbindung + nicht funktioniert. In diesem Fall sollte ein **ping 192.168.XXX.1** + über die Konsole Aufschluss geben, ob die Netzwerkverbindung + funktioniert. Nun sollten die Freetz Quellen runtergeladen werden. + Danach wechselt man in das Freetz Verzeichnis mit **cd freetz-trunk** + und gibt dann ein **make menuconfig** ein. + +.. figure:: /screenshots/72.png + :alt: auschecken von Freetz + + auschecken von Freetz + +| Nach dieser Eingabe solltet Ihr folgendes Bild sehen: + +.. figure:: /screenshots/73.png + :alt: menuconfig + + menuconfig + +| Dies ist wieder die Konfigurations-Oberfläche des Freetz-Buildsystems. + Dort wählt ihr den jeweiligen Router und die gewünschten Pakete aus. + Für dieses HowTo haben wir beispielhaft die 7270_v2 gewählt. Als + erstes aktivieren wir die erweiterte Ansicht (**Level of user + competence**\ →\ **Advanced**) auf der ersten Seite. Danach sollten in + einem Freetz-Image folgende Patches ausgewählt werden: +| **Unter Firmware language:** + +- Auswählen ob ihr eine Firmware de oder en Firmware erstellen wollt. + (Achtung: Die Auswahl muss zur vorhandenen Box passen.) + +| **Unter Other patches:** + +- **FREETZMOUNT** +- **Automount Filesystems** + + - **NTFS** + +| **Unter Removal patches** + +- **Remove ftpd (NEW)** (ein FTP-Programm auf der Box reicht) + +.. figure:: /screenshots/187.png + :alt: Patches + + Patches + +| **Unter Packages/Standard packages:** + +- **Samba suite** (Server der den Zugriff auf die USB Medien an der FB + von Windows erlaubt). Die Haken bei den beiden Unterpunkten von Samba + smbd und nmbd müssen gesetzt werden. +- **VSFTP** (FTP-Server). Hier bitte keine weiteren Haken bei den + Unterpunkten setzen. + +.. figure:: /screenshots/186.png + :alt: Patch : SAMB und VSFTP + + Patch : SAMB und VSFTP + +| **Unter Packages/ Web interfaces:** + +- **AVM-firewall** (Web-Oberfläche zum Administrieren der von AVM dem + User vorenthaltene integrierten Firewall) +- **spindown-cgi 0.2** +- **Syslogd CGI 0.2.3** + +.. figure:: /screenshots/185.png + :alt: Patche : Web interfaces + + Patche : Web interfaces + +| **Unter Web Interface:** + +- **Favicons (none) —→** einen Favicon auswählen. (Das ist das Bild was + als Lesezeichen im Browser angezeigt wird) + +.. figure:: /screenshots/188.png + :alt: Patch : Advanced options + + Patch : Advanced options + +.. figure:: /screenshots/228.png + :alt: + +| Weitere Pakete und Patches incl. der Beschreibungen findet ihr auf der + `Paketseite <../../../packages.html>`__ +| Nachdem alle Pakete und Patches ausgewählt sind, beendet man die + Konfiguration und gibt auf der Kommandozeile der Shell Konsole + **make** ein. Nun solltet ihr ein solches Bild sehen: + +.. figure:: /screenshots/189.png + :alt: make ausführen + + make ausführen + +| Nun startet wieder der Erstellungsvorgang. Der Ablauf ist identisch + zum ersten Image. Das erstellte Image wird wiederum im Unterordner + **images** des Freetz Verzeichnisses abgelegt. +| Die Abschlussmeldung sieht wie folgt aus: + +.. figure:: /screenshots/190.png + :alt: make ist fertig + + make ist fertig + +| +| Die Schritte **Image auf den PC kopieren** und Flash-Vorgang sind + wieder identisch zum `Newbie-Tutorial `__. + +.. _Sambaeinrichten: + +Samba einrichten +~~~~~~~~~~~~~~~~ + +Samba muß zunächst eingerichtet werden. Hierfür geht man auf +**Pakete/Samba**. Starttyp auf **automatisch** stellen und Netbios Name +vergeben. Wichtig ist der Haken bei **Bevorzugter Master**, weil er den +Standard Samba-Server der FritzBox ersetzt. + +.. figure:: /screenshots/192.jpg + :alt: Freetz-WebIF + + Freetz-WebIF + +| +| Den Rest kann man so lassen und klickt auf **Samba Freigaben**. + +.. figure:: /screenshots/193.jpg + :alt: Freetz-WebIF + + Freetz-WebIF + +| Wir haben hier nun 2 Freigaben auf der USB-HDD der FB beispielhaft + erstellt, ein für **Gast** und die zweite für **Familie**. Hier eine + kurze Beschreibung der Parameter anhand der ersten Freigabe: + + | **/var/media/ftp/uStor01** dies ist der interner Pfad auf die + Festplatte + | **/Videos** das ist das Freigegebenes Verzeichnis + | **hdd1** Name der Freigabe der in der Windows-Netzwerkumgebung als + Freigabe angezeigt wird. + | **1** Gast-Zugang erlaubt, kein Benutzername und Passwort nötig + | **0** Schreib-Lesezugriff aktiviert + | **-** Grund für das - ????? (Muß rein, Begründung folgt !) + | **Videos** Kommentar + +**Beispiel:** + +.. code:: bash + + /var/media/ftp/uStor01/Videos hdd1 1 0 - Videos + +| Da wir als Netbiosname **fritz** vergeben hatte, lautet der Zugriff + von Windows auf die Freigabe +| fritz\hdd1 . +| Jetzt noch unter **Dienste** den Samba Server starten und dann sollte + es funktionieren. + +.. _FTP-FreigabeneinrichtenFreetz-Trunk: + +FTP-Freigaben einrichten (Freetz-Trunk) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +| **Achtung! Diese Beschreibung beruht auf einem Trunk-Image. + FTP-Freigaben für Freetz-1.1.x-Images werden später erklärt** +| Als erstes muss eine Order-Struktur auf der USB-Platte erzeugt werden. + Dazu einfach euren USB-Stick oder Festplatte im Fat32 formatieren + (NTFS würde auch gehen wird hier aber nicht näher beschrieben). +| Eure Platte sollte dann wie folgt aussehen : + +.. figure:: /screenshots/81.jpg + :alt: + +| Wenn das der Fall sein sollte könnt ihr den Stick (wir gehen im + weiteren Verlauf dieser Beschreibung von einem Stick aus) an eure + FritzBox stecken. +| Nun wird, wenn noch nicht unter der Samba-Einrichtung erfolgt, die + AVM-Lösungen von FTP abgeschaltet: + +- fritz.box → Einstellungen → Erweiterte Einstellungen → USB-Geräte → + USB-Speicher(Speicher(NAS) +- USB-Speicher FTP-Zugriff aktivieren → Häkchen weg +- USB-Netzwerkspeicher aktivieren → Häkchen weg + +Das sollte nun so aussehen: + +.. figure:: /screenshots/82.jpg + :alt: + +| Nun wechseln wir ins Freetz-Interface: + `​http://fritz.box:81/ `__ und geben dort unter + : —> Dienste —> vsftp folgende Sachen ein: + +- Starttyp : Automatisch +- Zugriff : Haken setzen bei **Lokale Benutzer** und **chroot jail** + (alle anderen Haken raus) +- Zusätzliche Konfigurationsoptionen (für Experten) : + **user_config_dir=/var/media/ftp/uStor01/vsftp_user_conf** +- Logging : **/var/media/ftp/uStor01/vsftpd.log** (kann man aktivieren, + muß man aber nicht). + +| +| Die ganzen Eingaben sollten nun mit dem Drücken des Button + **Übernehmen** übernommen werden. Das sollte dann wie folgt aussehen: + +.. figure:: /screenshots/194.jpg + :alt: Freetz-WebIF + + Freetz-WebIF + +.. figure:: /screenshots/84.jpg + :alt: + +Nun wenden wir uns der AVM-Firewall zu: + +- [—>Pakete —> AVM-Firewall und dort den Pkt. Forwarding). Hier muß + noch der FTP-Port freigegeben werden (siehe Bilder). + +.. figure:: /screenshots/85.jpg + :alt: + +Nach eingabe der Zahlen (siehe Oben) einfach auf **Hinzufügen** drücken +und das Ergenbins sollte wie Folgt aussehen: + +.. figure:: /screenshots/86.jpg + :alt: + +| Um diese Einstellung nun endgültig zu speichern einfach den Haken + (Blinkendes Kästchen) setzen und den Reeboot der Box abwarten. +| Nachdem die Box nun wieder gestartet ist öffnen wir nochmals in der + Freetz-Weboberfläche den Reiter **Dienste** und aktivieren den Dienst + **telnetd**. Dieser muß gestartet sein um im nächsten Schritt dieser + Anweisung die FTP-User einrichten zu können. Es wird nicht empfohlen + diesen Dienst auf automatisch zu setzen sondern ihn bei Bedarf manuell + zu starten. +| Nun verlassen wir für's erste die Web-Oberfläche und nähern uns der + Kommandozeilenebene der FritzBox ! Dazu benötigen wir als erstes das + Programm `​Putty `__ welches wir uns aus + dem Netz laden und auf dem PC installieren. Dieser Schritt ist nur für + Windows-User nötig. Linux-User können eine Telnet-Sitzung wie gewohnt + starten. +| Putty kann man hier als Freeware laden + :`​Download `__ und wird wie folgt + eingestellt: + +.. figure:: /screenshots/87.jpg + :alt: + +Nach drücken von **Open** und Eingabe folgender Daten **login:root** und +**Password:freetz** solltet ihr folgendes Bild sehen: + +.. figure:: /screenshots/88.jpg + :alt: + +| + +.. _EinrichtenvonBenutzern: + +Einrichten von Benutzern +~~~~~~~~~~~~~~~~~~~~~~~~ + +| Der Befehl ist wie folgt aufgebaut: + ``adduser -h '''Verzeichnis''' '''Benutzername'''`` + + | **Verzeichnis**: Ordner auf dem Stick, der dem Benutzer zugeordnet + werden soll, z.B. **/var/media/ftp/uStor01/** + | **Benutzername**: Name des Benutzers + +| Beim Erstellen des Benutzers wird danach gleich das Passwort + abgefragt. Dieses muss zweimal eingegeben werden, und es wird dabei + nichts am Bildschirm angezeigt, auch keine Sterne. +| Erzeugen wollen wir nun einen User **Paul** und eine Userin **Mary** + welche auf die Ordner **hdd1**\ (Paul) und **hdd2**\ (Mary) (siehe + Samba) FTP-Zugriff erhalten sollen. Weiterhin wird hier ein User + **Gast** mit nur Leserechten auf dem Ordner **hdd1** erzeugt. +| Hierzu werden nun folgende Befehle in Putty eingegeben (Bitte auf Groß + und Kleinschreibung achten): + +.. code:: bash + + /var/mod/root # adduser -h /var/media/ftp/uStor01/hdd1 paul + adduser: /var/media/ftp/uStor01/hdd1: Operation not permitted + Changing password for paul + New password: + Bad password: too short + Retype password: + Password for paul changed by root + +| Die Meldung ``Operation not permitted`` kommt, wenn es sich um ein + Dateisystem mit FAT oder NTFS handelt. +| Das selbe machen wir nun nochmals für Marry und Gast: + +.. code:: bash + + adduser -h /var/media/ftp/uStor01/hdd2 mary + adduser -h /var/media/ftp/uStor01/hdd1 gast + +| Wenn man das Paßwort ändern will, verwendet man dazu den Befehl + ``passwd``\ **``Benutzername``**. Man wird dann wieder zweimal nach + dem neuen Paßwort gefragt. +| Einen Benutzer löschen kann man mit dem Befehl + ``deluser``\ **``Benutzername``**. +| In jedem Fall müssen die Änderungen mit dem Befehl **modsave all** + wieder gespeichert werden. +| Anzeigen kann man die Datei mit dem Befehl **cat /var/tmp/passwd**. +| Anzeigen und Ändern ist auch möglich über die + `Rudi-Shell <../../../packages/rudi-shell.html>`__ von Freetz. Diese + ist nur verfügbar, wenn die + `Sicherheitsstufe <../../../FAQ.html#KonfigurationinderaktuellenSicherheitsstufenichtverf%C3%BCgbar>`__ + auf 0 gesetzt ist. +| Wenn alles Richtig gelaufen ist, sollte folgendes in der passwd + stehen: + +.. code:: bash + + root:x:0:0:root:/mod/root:/bin/sh + ftp:x:2:1:FTP account:/home/ftp:/bin/sh + ftpuser:x:1:1:ftp user:/var/media/ftp:/bin/sh + paul:x:1000:1000:Linux User,,,:/var/media/ftp/uStor01/hdd1:/bin/sh + mary:x:1001:1001:Linux User,,,:/var/media/ftp/uStor01/hdd2:/bin/sh + gast:x:1002:1002:Linux User,,,:/var/media/ftp/uStor01/hdd1:/bin/sh + +| Nun melden wir uns noch mit folgendem Befehl von der Putty Konsole ab: + +.. code:: bash + + exit + +| + +.. _RechtevergabefürFTP-User: + +Rechtevergabe für FTP-User +~~~~~~~~~~~~~~~~~~~~~~~~~~ + + | Ob ein Neuer FTP-User Schreibrechte erhalten soll oder nur lesen + können soll wird wie folgt geregelt: + | Jeder Benutzer erhält eine Datei mit seinem Dateinamen im Ordner + **/var/media/ftp/uStor01/vsftp_user_conf/**, die festlegt, ob er + Schreibrechte hat oder nicht. + +Inhalt der Datei : + + | **write_enable=yes**\ (User hat Schreibrechte / siehe Paul und + Mary) + | **write_enable=no**\ (User hat **keine** Schreibrechte / siehe + Gast) + +Über diese Benutzerdateien ist es auch möglich einzelne FTP-Befehle +(`​Liste `__) für +Benutzer zu verbieten. Hierzu fügt man folgende Zeile in die Datei ein +und entfernt die Befehle die der User nicht ausführen darf: + +.. code:: bash + + cmds_allowed=ABOR,ACCT,ALLO,APPE,AUTH,CDUP,CWD,DELE,EPRT,EPSV,FEAT,HELP,LIST,MDTM,MKD,MODE,NLST,NOOP,OPTS,PASS,PASV,PBSZ,PORT,PROT,PWD,QUIT,REIN,REST,RETR,RMD,RNFR,RNTO,SITE,SMNT,STAT,STOR,STOU,STRU,SYST,TYPE,USER + +**Beispiel:** Mary darf Dateien auf den FTP kopieren und Verzeichnisse +anlegen, jedoch diese nicht wieder löschen. Also muß folgendes in der +Datei stehen: + +.. code:: bash + + cmds_allowed=ABOR,ACCT,ALLO,APPE,AUTH,CDUP,CWD,EPRT,EPSV,FEAT,HELP,LIST,MDTM,MKD,MODE,NLST,NOOP,OPTS,PASS,PASV,PBSZ,PORT,PROT,PWD,QUIT,REIN,REST,RETR,RNFR,RNTO,SITE,SMNT,STAT,STOR,STOU,STRU,SYST,TYPE,USER + +.. + + | **DELE** (Delete file), **RMD** (Remove a directory) wurden aus dem + oben angegebenen String gelöscht. + | Sollte etwas immer noch nicht gehen, dann den Router einfach + nochmal neu starten. + +| + +.. _ImagefüreinenSpeedportbauen: + +Image für einen Speedport bauen +------------------------------- + +Speedports lassen sich aufgrund einer Software-Sperre leider nicht per +AVM-Webinterface flashen. Nutze die Freetz-Tools recover-eva oder +push_firmware oder die GUI-Programme aus dem Forum wie z.B das +`​ruKernelTool `__. +Dieses funktioniert sehr gut und ist einfach in der Bedienung. + +.. _WelcheSpeedportslassensichmitFreetzmodifizieren: + +Welche Speedports lassen sich mit Freetz modifizieren? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- `W501V `__ +- `W701V `__ +- `W900V `__ +- `W920V `__ + +.. _UmbaueinesW701V: + +Umbau eines W701V +~~~~~~~~~~~~~~~~~ + +| 1.) Freetz-Linux wie es oben beschrieben ist starten +| 2.) Wir arbeiten alle Schritte ab wie im `HowTo `__ + beschrieben, jedoch bei Boxtyp wählen wir die 7170 und stellen unter + Alien hardware type den W701V aus. + +.. figure:: /screenshots/196.png + :alt: Speedport_Trunk_2 + + Speedport_Trunk_2 + +.. figure:: /screenshots/197.png + :alt: Speedport_Trunk_3 + + Speedport_Trunk_3 + +| 3.) Samba und VSFTP bringen nur was bei einem W920V (7570), da dieser + einen USB-Port hat. Alle anderen Schritte in dem + `HowTo `__ passen jedoch auch bei einem Speedport. +| 4.) Das erstellte Image sollte sich als normales FW-Update in die Box + laden lassen. Sollte die Box den Update verweigern (war bei meinem + W701V der Fall) bleibt Euch nur der Weg über das + `​ruKernelTool `__. + Dann sind jedoch alle Zugangsdaten sowie alle Einstellungen verloren. + Die Box macht in diesem Fall quasi einen Werksreset. +| **Ergebnis:** + +.. figure:: /screenshots/195.png + :alt: Speedport_Trunk_1 + + Speedport_Trunk_1 + +.. _UmbaueinesW501V: + +Umbau eines W501V +~~~~~~~~~~~~~~~~~ + +Der W501V läßt sich direkt als Boxtyp auswählen + +.. _UmbaueinesW920V: + +Umbau eines W920V +~~~~~~~~~~~~~~~~~ + +| Boxtyp: 7570 VDSL +| Alientyp: W920V + +.. figure:: /screenshots/198.png + :alt: Speedport_Trunk_4 + + Speedport_Trunk_4 + +- Tags +- `howtos `__ diff --git a/wiki/help/howtos/common/freetz_linux.rst b/wiki/help/howtos/common/freetz_linux.rst new file mode 100644 index 0000000..a067416 --- /dev/null +++ b/wiki/help/howtos/common/freetz_linux.rst @@ -0,0 +1,216 @@ +.. _FreetzLinux: + +Freetz Linux +============ + +.. _FreetzLinuxunterVirtualBox: + +Freetz Linux unter VirtualBox +----------------------------- + +| 1.) VirtualBox starten, Datei → Appliance importieren auswählen und + dem Dialog folgen. Als Image die gerade runtergeladene freetz-linux + Datei angeben. +| 2.) Der Import dauert einen Augenblick. Danach noch mit **Ändern** die + Einstellungen kontrollieren. + +.. _FreetzLinuxunterVMWare: + +Freetz Linux unter VMWare +------------------------- + +| Je nach dem, in welchem VMware Produkt Freetz Linux nachher laufen + soll, habe ich zwei Wege ausprobiert. Folgende Tools sind dabei + hilfreich (aber nicht alle für beide Wege notwendig): + +- `​Freetz-Linux `__ + selbst +- `​Virtualbox `__ +- `​VMWare OVF Tool `__ +- `​Notepad++ `__ als guter Editor +- `​VMware vCenter Converter + standalone `__ + +.. _FreetzLinuxunterVMwareESXiV4.1HypervisorfunktioniertauchmitvSphereHypervisor5.5: + +Freetz Linux unter VMware ESXi V4.1 Hypervisor (funktioniert auch mit vSphere Hypervisor 5.5) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +| 1.) VirtualBox starten, Datei → Appliance importieren auswählen und + dem Dialog folgen … +| 2.) Der Import dauert einen Augenblick. Danach Datei → Appliance + exportieren auswählen und dem Dialog folgen +| → Speicherort und Dateinamen wählen. Dabei die Dateiendung von \*.ova + in \*.ovf abändern. +| Die OVF Version sollte auf 1.0 eingestellt werden. +| 3.) Die unter anderem enstandene \*.ovf Datei in einen Texteditor + laden +| 4.) virtualbox-2.2 + abändern in vmx-07 + und die \*.ovf Datei speichern +| → vmx-07 tituliert VM Version 7 (z.B. für ESXi V4.1), ältere VM + Versionen sollten mit vmx-04 zurecht kommen +| 5.) vSphere Client starten, zum ESXi Hypervisor verbinden. +| 6.) Datei → OVF-Vorlage bereitstellen. Dem Dialog folgen und + gewünschte Einstellungen machen. Importvorgang abwarten. +| 7a.) Virtuelle Maschine starten. +| 7b.) Wer beim Systemstart einen Segmentation Fault Fehler bekommt: +| → VM ausschalten, in den Optionen der VM-Einstellungen + Paravirtualisierung aktivieren und die VM erneut starten. + +.. _FreetzLinuxunterVMwarePlayerV2.5: + +Freetz Linux unter VMware Player V2.5 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +| 1.) VirtualBox starten, Datei → Appliance importieren auswählen und + dem Dialog folgen … +| 2.) Der Import dauert einen Augenblick. Danach Datei → Appliance + exportieren auswählen und dem Dialog folgen +| → Speicherort und Dateinamen wählen. Dabei die Dateiendung von \*.ova + in \*.ovf abändern. +| 3.) Die unter anderem enstandene \*.ovf Datei in einen Texteditor + laden +| 4.) virtualbox-2.2 + abändern in vmx-07 + und die \*.ovf Datei speichern +| → vmx-07 tituliert VM Version 7 (z.B. für ESXi V4.1), ältere VM + Versionen sollten mit vmx-04 zurecht kommen +| 5.) Kommandozeile öffnen (Windows: Start → Ausführen → cmd [ENTER]) +| 6.) In das OVFTool Verzeichnis wechseln und die VM wie folgt + konvertieren +| → ovftool [*.ovf Datei] [*.vmx Datei] +| 7.) VMware Player starten und die VM laden. + +| Die in Szenario 2 erzeugte \*.vmx Datei kann ebenfalls genutzt werden + auf dem ESXi Hypervisor und manuell über den Datenspeicherbrowser in + die Bestandsliste aufgenommen werden. Dabei bitte den oben erwähnten + Hinweis zum Segmentation Fault berücksichtigen. +| Evtl. ist die Erzeugung der \*.vmx und \*.vmdk Dateien sowieso + sinnvoll, um sich das konvertierte Freetz-Linux so wegspeichern zu + können. + +| Zur Information: +| Den oben aufgeführten VMware vCenter Converter standalone habe ich nur + einmal bei einem ESXi Hypervisor benutzen müssen, da keiner der beiden + beschriebenen Wege funktioniert hat. + +Und noch ein paar Screenshots passend zu den Hinweisen oben: + +.. figure:: /screenshots/222.jpg + :alt: convert command line + + convert command line + +| + +.. figure:: /screenshots/223.jpg + :alt: + +| + +.. figure:: /screenshots/224.jpg + :alt: + +| + +.. figure:: /screenshots/225.jpg + :alt: + +| + +.. _FreetzLinuxunterVirtualPC: + +Freetz Linux unter Virtual PC +----------------------------- + +| Getestet habe ich unter Windows XP x86 mit Virtual PC 2007 sowie + Windows 7 x86_64 Windows Virtual PC. +| Folgende Tools sind dabei hilfreich: + +- `​Freetz-Linux `__ + selbst +- `​Virtualbox `__ +- `​Virtual PC + 2007 `__ + (für Windows XP +- `​Windows Virtual + PC `__ (für Windows 7 … + XP-Mode nicht erforderlich) + +| 1a.) VirtualBox starten, Datei → Appliance importieren auswählen und + dem Dialog folgen … Der Import dauert einen Augenblick. +| 1b.) VirtualBox beenden +| 2.) Folgende Kommandos absetzen, um die zwei Festplatten zu + kovertieren: +| → VBoxManage.exe clonehd freetz-linux-1.2.1-disk1.vmdk freetz.vhd + —format VHD +| → VBoxManage.exe clonehd freetz-linux-1.2.1-disk2.vmdk freetz2.vhd + —format VHD +| 3a.) Virtual PC starten und einen neuen virtuellen Computer anlegen + (Details siehe Screenshot). +| 3b.) Den neuen virtuellen PC starten. +| 4.) Höchstwahrscheinlich wird die Grafikauflösung etc. nicht + ordentlich erkannt (siehe Screenshot). Wenn dem so ist, weiter bei 5. +| 5.) Virtuelle Maschine neu starten (Tastenkombination [Alt GR]+[ENTF]) +| 6.) Während der Bootmanager Grub aktiv ist, [ESC] drücken, um ins Menu + zu gelangen. +| 7a.) Taste [e] drücken beim ersten Menueintrag. Nochmal Taste [e] + drücken bei den Kernel Bootparametern. +| → Folgende Bootoptionen hinzufügen: vga=791 noreplace-paravirt +| 7b.) [RETURN] drücken +| 7c.) [b] drücken, um Ubuntu zu starten +| 8.) Daraufhin sollte der gewohnte Ubuntu Bildschirm erscheinen und + Freetz-Linux bis zum Konsolenlogin starten +| 9.) Die manuellen Eingaben nun festigen in der Grub Konfiguration. + Folgendes Kommando absetzen: +| → sudo nano /boot/grub/menu.lst +| → Recht weit unten in der Datei die Optionen ergänzen, die beim ersten + Booten benutzt wurden +| → Mit [STRG]+[O] speichern und [STRG]+[X] beenden +| 10.) Virtuelle Maschine neu starten, um zu sehen, ob die Werte fest + übernommen wurden. + +| Und noch ein paar Screenshots passend zu den Hinweisen oben: + +.. figure:: /screenshots/230.jpg + :alt: vpc2007_convert.jpg + + vpc2007_convert.jpg + +| + +.. figure:: /screenshots/233.jpg + :alt: vpc2007_params.jpg + + vpc2007_params.jpg + +| + +.. figure:: /screenshots/234.jpg + :alt: vpc2007_wrong_graphic.jpg + + vpc2007_wrong_graphic.jpg + +| + +.. figure:: /screenshots/232.jpg + :alt: vpc2007_kernel_boot_params.jpg + + vpc2007_kernel_boot_params.jpg + +| + +.. figure:: /screenshots/231.jpg + :alt: vpc2007_freetz_linux.jpg + + vpc2007_freetz_linux.jpg + +| + +.. figure:: /screenshots/235.jpg + :alt: vpc2007_grub.jpg + + vpc2007_grub.jpg + +| diff --git a/wiki/help/howtos/common/install.en.rst b/wiki/help/howtos/common/install.en.rst new file mode 100644 index 0000000..5f72714 --- /dev/null +++ b/wiki/help/howtos/common/install.en.rst @@ -0,0 +1,635 @@ +.. _Installation: + +Installation +============ + +`Freetz <../../../freetz.html>`__ provides some scripts for modifying an +original firmware. Because of license issues the distribution of +original or modified firmware images is forbidden. + +|Warning| the installation of a modified firmware invalidates the +manufacturer's warranty! In case of problems, do NOT contact AVM +support. |Warning| + +**Speedports**: (see +`​sp2fritz `__). +From scriptversion 2.2.2008 the use of speed2fritz is possible. + +**Newbies**: Please read '`Freetz for Beginners `__' first! + +.. _VirtualLINUX:FriBoLiStinkyLinuxFreetz-Linux: + +Virtual LINUX: FriBoLi / StinkyLinux / Freetz-Linux +--------------------------------------------------- + +`​StinkyLinux `__ +(formerly FriBoLi) is a virtual Linux operating system for building +FritzBox firmware images on Windows. Unfortunately, support for +StinkyLinux was discontinued some time ago. This means it cannot be used +for freetz anymore without hassle with updates. + +Because of that, a new build environment +`​Freetz-Linux `__ +was created by Silent-Tears (cinereous), who also maintains it. The use +of this environment is strongly recommended if no native linux can be +used. + +The following instructions were initially adopted from +`​Saphir `__ , but +have grown over time and were completed and/or edited by many different +users. We try to keep these up-to-date and adapt it to the current +versions of VM and freetz. However, the steps below can (with some minor +limitations) be used for every freetz-VM. + +.. _Preparation: + +Preparation +~~~~~~~~~~~ + +See also: + +`​Installing +Freetz-Linux `__ + +`​Installing +StinkyLinux `__ +(!!!obsolete!!!) + +`​Installing Freetz and +Speed-to-Fritz `__ +(SpeedPort users only) + +`​StinkyLinux +Homepage `__ +(Attention! instructions and images there are out of date!) + +.. _Execution: + +Execution +~~~~~~~~~ + +#. Needed files: + + - `​VMware + Player `__ + - `​Freetz-Linux `__: + Image for VMWare Player or StinkyLinux: Image for VMWare Player + (StinkyLinux-v1.06.7z), + (`Download <../../../Download.html>`__-Source: + `​Mirrors `__) + - Freetz, (`Download <../../../Download.html>`__-Source: + `Downloadseite <../../../Download.html>`__) + - optional patches for freetz, (Quelle: `​Freetz + Forum `__) + +#. Unpack + `​Freetz-Linux `__ + under Windows using + `​7-Zip `__ or + `​WinRAR `__ . +#. Run VMWare Player. Leave all settings as they are; the Player will be + able to connect to the Internet by itself. If not, you can set up + internet access manually like so: + + .. code:: bash + + ifconfig eth0 192.168.178.xx netmask 255.255.255.0 broadcast 192.168.178.255 + + (where ``eth0`` might have to be replaced with your configured + network interface. **"ifconfig -a"** will list all network interfaces + available to your virtual machine.) + +#. In VMWare Player, log on as user **freetz** with password **freetz**. + From here, there are several ways to work with Freetz-Linux and to + exchange files between Freetz-Linux and the rest of the world. One + might work on Freetz-Linux' console, for example. + + - **SSH/SCP**: One might also connect to the VM using an SSH/SCP + connection. Windows clients include + `​putty `__ + and `​WinSCP `__. + Enter the VM's hostname (or IP-Address) under "Server name". For + "name" and "password" please use the credentials indicated above. + - **SAMBA**: It is also possible to exchange data between Windows + and Freetz-Linux via SAMBA. To do that, enter " + Freetz-Linux" or " + Freetz-Linuxs-IP-Address" in Explorer's address bar and you get a + listing of files and folders present in your VM. Then, you can + move and copy them around as usual. + All those connection options have been pre-set in Freetz-Linux and + should work out-of-the-box. If problems occur, please verify your + network connection(s), and your firewall settings (if applicable). + Also, don't forget to verify VMWare Player's network connection + settings. By default, VMWare Player uses **Bridged Mode**. To + start with, run ``ping `` inside + Command Prompt. + +#. Depending on your preferred choice, you proceed with one of the + following: + + - **SSH/TELNET**: (the preferred method) + + .. code:: bash + + svn co http://svn.freetz.org/tags/freetz-1.1.x freetz-1.1.x + +You can replace ``freetz-1.1.x`` with any other valid tag, or use the +development ``/trunk`` if you wish. + +#. *Optional*: Apply patch(es) (see + `Howto <../development/integrate_patches.html>`__) +#. Change into the freetz directory you just checked out (or unpacked + into): + + .. code:: bash + + cd freetz-*/ + +#. Configure freetz. It is possible to do this using a + `​ncurses `__ interface, the + same one being used to configure the Linux kernel. For a detailed + description, see `menuconfig `__. + + .. code:: bash + + make menuconfig + +#. Modify firmware. In this step, the original firmware and packages + matching your configuration as well as the necessary build tools are + being downloaded automatically and a new one is being built, + according to your configuration, in three distinct steps. The first + run through will take a little while, so you might want to have some + coffee or tea in the meantime. + + .. code:: bash + + unset CFLAGS CXXCFLAGS + make + +#. In ``~/freetz-*/images``, you'll find your newly built firmware (e.g. + ``7170_04.76freetz-devel-3790.de_20091021-180742.image``). +#. Upload the image + ``_freetz-devel-VVVV._YYYYMMDD-HHMMSS.image`` + as Firmware Update to your FritzBox. After successful Upload, you can + access a secondary web interface on port 81 of your box, offering + detailed instructions to finalize installation. Should your Box be + unreachable even though INFO-LED stopped flashing several minutes ago + - especially if, in **regular intervals**, all LEDs light up), you + can recover your box' original firmware on most Box types. For + details, see `this Howto <../troubleshoot/recover_firmware.html>`__. + +.. _Linux: + +Linux +----- + +.. _NotwendigePakete: + +Notwendige Pakete +~~~~~~~~~~~~~~~~~ + +Für das Erstellen der Firmware kann auch Knoppix verwendet werden, wozu +keine Linux-Installation erforderlich ist. Wichtig ist, dass zum +Kompilieren des Mods unter Linux keine FAT oder NTFS Partition verwendet +wird. Die folgende Anleitung benötigt für + +freetz-1.0 +^^^^^^^^^^ + +- **gcc** - GNU C Compiler +- **g++** - GNU C++ Compiler +- **binutils** - GNU Assembler, Linker und Binary-Werkzeuge +- **autoconf** - dem Make vorgeschalteter Generator für + Konfigurationsskripten nach GNU-Standard; hilft dabei, + plattformunabhängig programmierte Software letztendlich für einen + plattformspezifischen Build vorzubereiten +- **automake** ab Version 1.10 - Makefile-Generator nach GNU-Standard; + wird nicht für alle DS-Mod-Pakete benötigt, aber z.B. für + `privoxy <../../../packages/privoxy.html>`__; Paketmanager + installiert normalerweise *autoconf* als abhängiges Paket gleich mit +- **automake-1.9** - Version, die zusätzlich speziell von + ``tar-1.15.1`` aus *tools* benötigt wird +- **libtool** - hilft beim Erstellen von statischen und dynamischen + Bibliotheken; kann z.B. beim aufruf von *autoreconf* notwendig werden +- **GNU make** ab Version 3.81 - skriptgesteuertes Build-System +- **bzip2** - (Ent)packen von Software-Archiven +- **libncurses5-dev** - Entwickler-Bibliothek für ncurses (Erzeugung + komfortabler textbasierter Benutzerschnittstellen, vgl. + ``make menuconfig``) +- **zlib1g-dev** - Entwickler-Bibliothek für gzip-Kompression +- **flex** - lex-kompatibler Generator für lexikalische Analyse +- **bison** - YACC-kompatibler Parser-Generator +- **patch** - Programm, um Patches anzuwenden +- **texinfo** - Online-/Druck-Doku aus gemeinsamer Quelle erzeugen +- **tofrodos** - Dateiumwandlung DOS ↔ UNIX (für was wird das + benötigt?) +- **gettext** - Texte in Programmen internationalisieren +- **pkg-config** - Hilfstool welche zum Bauen von Binaries und + Libraries nötig ist; notwendig für Packages ntfs? und + `transmission <../../../packages/transmission.html>`__ +- **ecj-bootstrap** - Eclipse Java Compiler (evtl. auch libecj-java und + ecj in neueren Distributionen); nur notwendig für Package *classpath* + ab 0.95 bzw. ds26-14.5 +- **perl** - Perl-Interpreter; notwendig für ``make recover`` +- **libstring-crc32-perl** - Perl-Modul zur Berechnung von + CRC32-Prüfsummen; notwendig für ``make recover`` +- **intltool** - ``make menuconfig`` + +freetz-1.3 +~~~~~~~~~~ + +- **xz-utils** - (Ent)packen von Software-Archiven im xz-Format + +.. _aktuelleEntwickerVersionundspeziellePakete: + +aktuelle Entwicker Version und spezielle Pakete +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Diese benötigen zusätzlich zu bereits unter *freetz-1.0* genanntem noch +folgende Pakete: + +- **svn** - Subversion zum Auschecken der aktuellen Freetz-Versionen +- **ruby1.8** - objektorientierte Skriptsprache (Version 1.8.6); nur + notwendig für Package *ruby* (ab freetz-devel) - seltsamerweise + benötigt der Crosscompile für *ruby-1.8.6* eine installierte Version + seiner selbst als Voraussetzung. Zu allem Überfluß könnte es sein, + daß Sie im Paket zwar ``/usr/bin/ruby1.8`` o.ä. haben, aber nicht das + vom Makefile benötigte Binary Namens *ruby*. Da hilft im o.g. + Beispiel ``sudo ln -s ruby1.8 /usr/bin/ruby`` bzw. die Ausführung des + ``ln``-Befehls als Benutzer *root*. +- **gawk** - GNU awk; notwendig für das Skript ``tools/extract-images`` + (ab freetz-devel), wenn man z.B. ein Recover-EXE zerlegen, also + *urlader.image* und *kernel.image* extrahieren möchte. Die in anderen + *awk*-Varianten nicht vorhandene Funktion *strtonum* wird an einer + Stelle verwendet. +- **python** - Python-Interpreter; notwendig, um via + ``tools/mklibs.py`` unbenutzte Symbole aus Bibliotheken zu entfernen, + um Platz zu sparen (ab freetz-devel) +- **libusb-dev** - Entwicklungs-Bibliothek für USB-Anwendungen im + Userspace; nur notwendig für SANE, wenn bspw. + Multifunktionsdrucker/-scanner an die FritzBox angebunden werden + sollen. Siehe auch + `​Forums-Beitrag `__ + dazu. +- **realpath** - wird nur von Entwicklern benötigt, die ab ds26-15 + innerhalb von *fwmod* beim Build das Patch-Auto-Fixing verwenden + (AUTO_FIX_PATCHES im Environment). Wer nicht weiß, wovon die Rede + ist, braucht es auch nicht. +- **fastjar** - Implementation des Java jar utils; nur notwendig für + Package *classpath* +- **graphicsmagick** - enthält ``composite`` mit dem Bilder kombiniert + werden können; nur notwendig wenn man das AVM-Webinterface "taggen" + möchte + +.. _alteEntwickerVersionen: + +alte Entwicker Versionen +^^^^^^^^^^^^^^^^^^^^^^^^ + +Hier wird zusätzlich folgendes benötigt: + +- **automake-1.8** - Version, die zusätzlich speziell von *libid3tag* + benötigt wird. Nicht mehr erforderlich ab Freetz 1.0. +- **jikes** - Java Byte Code Compiler; nur notwendig für Package + *classpath* bis 0.93 bzw. ds26-14.4 + +.. _InstallationderbenötigtenPakete: + +Installation der benötigten Pakete +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Eine einfache Möglichkeit die benötigten Pakete zu installieren besteht +darin, diesen Code in der Konsole auszuführen: + +:: + + sudo apt-get -y update + sudo apt-get -y upgrade + sudo apt-get -y dist-upgrade + + # Angepasst z.B. auf Ubuntu 9.04 (kein automake 1.8, "ecj" statt "ecj-bootstrap"): + sudo apt-get -y install imagemagick subversion gcc g++ binutils autoconf automake automake1.9 libtool make bzip2 libncurses5-dev libreadline-dev zlib1g-dev flex bison patch texinfo tofrodos gettext pkg-config jikes ecj fastjar realpath perl libstring-crc32-perl ruby ruby1.8 gawk python libusb-dev unzip intltool libglib2.0-dev xz-utils git-core libacl1-dev libattr1-dev libcap-dev + + # Ubuntu 9.10, 10.xx, 11.xx und 12.04 + sudo apt-get -y install imagemagick subversion gcc g++ bzip2 binutils automake patch autoconf libtool pkg-config make libncurses5-dev libreadline-dev zlib1g-dev flex bison patch texinfo tofrodos gettext pkg-config ecj fastjar realpath perl libstring-crc32-perl ruby ruby1.8 gawk python libusb-dev unzip intltool libglib2.0-dev xz-utils git-core libacl1-dev libattr1-dev libcap-dev + + #Ubuntu 13.04 und 14.04 + sudo apt-get -y install graphicsmagick subversion gcc g++ binutils autoconf automake automake1.9 libtool make bzip2 libncurses5-dev libreadline-dev zlib1g-dev flex bison patch texinfo tofrodos gettext pkg-config ecj fastjar realpath perl libstring-crc32-perl ruby ruby1.8 gawk python libusb-dev unzip intltool libacl1-dev libcap-dev + + # Seit Debian Jessie bzw. Ubuntu 15.04 (vivid) wird zusätzlich das Paket libtool-bin benötigt: + sudo apt-get -y install libtool-bin + + # Auf 64-Bit Systemen sind zusätzlich folgende Pakete zu installieren: + sudo apt-get -y install libc6-dev-i386 lib32ncurses5-dev gcc-multilib lib32stdc++6 + +.. _ErstellungInstallation: + +Erstellung & Installation +~~~~~~~~~~~~~~~~~~~~~~~~~ + +#. Shell öffnen, ins Verzeichnis von ``freetz-//xxx//.tar.bz2`` wechseln + und diesen mit ``tar -xvjf ds-x.y.z.tar.bz2`` entpacken +#. *Optional*: Patch einspielen (siehe + `Howto <../development/integrate_patches.html>`__) +#. Mit ``cd freetz-xxx/`` in das Verzeichnis des entpackten Freetz + wechseln +#. Konfiguration wählen. Dies ist über ein ncurses Interface möglich, + welches z.B. aus der Konfiguration des Linux Kernels bekannt ist. + Details und Beschreibungen zu den Optionen gibt es in der + Beschreibung zum `make menuconfig `__. +#. Firmware modifizieren. In diesem Schritt werden die zu der gewählten + Konfiguration passenden original Firmware und Pakete, sowie Sourcen + für die benötigten Tools vollautomatisch heruntergeladen und die + modifizierte Firmware in drei Schritten erzeugt. Dies erledigt ein + simples ``make``. +#. ``*.image`` als Firmware Update auf die Box hochladen. Nach einem + erfolgreichen Upload ist nun auf Port 81 ein weiteres Webinterface + verfügbar, welches Instruktionen zum Abschluss der Installation + enthält. Sollte die Box nach dem Hochladen der Firmware auch Minuten + nachdem die Info LED aufgehört hat zu blinken nicht mehr erreichbar + sein (typischerweise leuchten **periodisch** immer wieder alle LEDs + auf), so kann die originale Firmware bei den meisten Box-Typen, wie + in diesem `Howto <../troubleshoot/recover_firmware.html>`__ + beschrieben, wiederhergestellt werden. + +.. _coLinuxandLinuxspeedLinux: + +coLinux / andLinux / speedLinux +------------------------------- + +Siehe auch: `​andlinux unter Vista +installieren `__ + +Alternativ kann auch `​coLinux `__ benutzt werden, +ist etwas resourcenschonender als der vmware player. Mit speedLinux ist +alles vorbereitet für freetz oder speed-to-fritz. Mit ./freetz werden +alle notwendigen Vorbereitungen und Installationen durchgeführt. +aktueller Stand 25.10.2009 + +Anmerkung von Alexander Kriegisch (kriegaex), 24.02.2008: Ja, das +benutze ich auch seit gestern, und zwar speziell die mit Ubuntu Gutsy +und XFCE (wahlweise auch KDE) vorkonfigurierte Variante +`​andLinux `__, die man wahlweise als Dienst +oder als Anwendung starten kann und mit einem einfachen Installer +ausgeliefert wird. Scheint etwas langsamer zu sein als ein reines Linux, +aber es ist schon cool, Linux-Fenster nativ neben Windows-Fenstern zu +haben. *:-)* Der mitgelieferte X-Server Xming (für Windows) macht's +möglich. Ich verwende übrigens nicht mal ein X-Terminal, sondern logge +mich sozusagen "headless" über SSH ein (Putty). Ab und zu lasse ich mal +Synaptic oder als X-Editor SciTE laufen, den ich nachinstalliert habe. +Ich baue gerade sämtliche Freetz-Pakete "from scratch" inkl. +`Download <../../../Download.html>`__, es geht genauso wie in VMware +oder nativem Linux, also Linux-Paketliste siehe oben. + +Nachteile von coLinux/andLinux/speedLinux: + +- bei Multicore-Prozessoren wird nur ein Kern benutzt +- keine 64bit Unterstützung +- gravierende Systemanpassungen (spezieller Kernel, etc) bei Updates + des Systems notwendig. + +Vorteile von coLinux/andLinux/speedLinux: + +- kommt mit weniger RAM aus als VMWare (geringerer Ressourcenbedarf) +- native Windowsfenster + +.. _Cygwin: + +Cygwin +------ + +|Warning| **Unter Cygwin funktioniert Freetz definitiv nicht, und auch für +ds-0.2.9 (Kernel 2.4) wird Linux empfohlen, weil es mit Cygwin Probleme +geben kann und es außerdem einen riesigen Geschwindigkeitsverlust beim +Bauen (mehrfache Build-Dauer) bedeutet, Cygwin zu verwenden.** |Warning| + +Da Freetz sich unter Cygwin ohnehin nicht bauen lässt, folgt hier +lediglich die Beschreibung für ds-mod: + +Ein Howto von dsl123 zum Kompilieren des ds-mod's unter Cygwin gibt es +`​hier `__. Zum +Entpacken der Datei ``ds-*.tar.bz2`` unter Windows **ausschließlich** +das Cygwin-tar — wie in der Anleitung beschrieben — verwenden: + +#. Cygwin Installer von + `​http://www.cygwin.com/ `__ herunterladen + und ausführen +#. Cygwin mit den folgenden Paketen installieren: + + - Archive > unzip + - Devel > gcc, libncurses-devel, make, patchutils + - Interpreters > perl + - Web > wget + +#. ``ds-*.tar.bz2`` in das Cygwin Home-Verzeichnis herunterladen (je + nach Installation z.B. ``C:/Cygwin/home//``) +#. Cygwin Shell öffnen und den ds-mod entpacken + ``tar -xvjf ds-x.y.z.tar.bz2`` +#. *Optional*: Patch einspielen (siehe + `Howto <../development/integrate_patches.html>`__) +#. In das Verzeichnis des entpackten ds-mod wechseln ``cd ds-*/`` +#. Konfiguration wählen. Dies ist über ein + `​ncurses `__ Interface + möglich, welches z.B. aus der Konfiguration des Linux Kernels bekannt + ist. Details und Beschreibungen zu den Optionen gibt es in der + Beschreibung zum `menuconfig `__. + ``make menuconfig`` +#. Firmware modifizieren. In diesem Schritt werden die zu der gewählten + Konfiguration passenden original Firmware und Pakete, sowie Sourcen + für die benötigten Tools vollautomatisch heruntergeladen und die + modifizierte Firmware in drei Schritten erzeugt. ``make`` +#. ``firmware_*.image`` als Firmware Update auf die Box hochladen. Nach + einem erfolgreichen Upload ist nun auf Port 81 ein weiteres + Webinterface verfügbar, welches Instruktionen zum Abschluss der + Installation enthält. Sollte die Box nach dem Hochladen der Firmware + auch Minuten nachdem die Info LED aufgehört hat zu blinken nicht mehr + erreichbar sein (typischerweise leuchten **periodisch** immer wieder + alle LEDs auf), so kann die original Firmware mit Hilfe der + ``recover.exe`` von AVM wiederhergestellt werden. + +.. _MacOSX: + +Mac OS X +-------- + +Im Prinzip und mit ein paar Patches funktioniert ein aktuelles ds-mod +auch unter Mac OS X. Zumindest ist mir gelungen, ds-0.2.9_26-14.2 unter +Mac OS X zum Funktionieren zu überreden. + +Zunächst sind folgende Voraussetzungen zu erfüllen: + +#. Datenpartition erstellen, bei der das HFS+ case sensitive + konfiguriert ist. +#. Xcode installieren. Dadurch erhält man geeignete Versionen von u. a. + + - gcc + - g++ + - autoconf + - automake + - make + - `​ncurses `__ + - zlib + - flex + - bison + +Außerdem sind einige (GNU) Utilities nötig, die z.B. über Darwin Ports +installiert werden können: + +- gettext +- texinfo +- dos2unix +- gawk +- coreutils +- findutils +- gsed + +Und vermutlich ein paar weitere, wenn man die entsprechenden Packages +anwählt. + +Die zusätzlichen Utilities werden in der Regel unter Namen installiert, +die mit g beginnen, um nicht mit den nativen Utilities von Mac OS X in +Konflikt zu geraten. Manche Konfigurationsskripte setzen aber die +Eigenschaften von GNU-Utilities voraus, auch wenn sie unter dem +Standardnamen aufgerufen werden. Daher habe ich mir ein Verzeichnis +erstellt, in dem Symlinks der Standardnamen auf die GNU Utilities +zeigen. Zum Arbeiten mit ds-mod ist dieses Verzeichnis in den Suchpfad +aufzunehmen: + +.. code:: bash + + ~/gnubin $ ls -l + total 64 + -rwxr-xr-x 1 enrik enrik 106 20 Mär 17:23 as + lrwxr-xr-x 1 enrik enrik 19 20 Mär 17:18 awk -> /opt/local/bin/gawk + lrwxr-xr-x 1 enrik enrik 18 20 Mär 18:32 cp -> /opt/local/bin/gcp + lrwxr-xr-x 1 enrik enrik 22 11 Apr 10:11 cpp -> /usr/local/bin/cpp-3.3 + lrwxr-xr-x 1 enrik enrik 20 11 Apr 10:11 find -> /opt/local/bin/gfind + lrwxr-xr-x 1 enrik enrik 23 20 Mär 17:18 install -> /opt/local/bin/ginstall + -rwxr-xr-x 1 enrik enrik 106 20 Mär 17:24 ld + lrwxr-xr-x 1 enrik enrik 21 20 Mär 17:18 sed -> /opt/local/bin/gnused + +Die Pseudebefehle ``as`` und ``ld`` dienen hier nur dazu, der glibc für +den Kernel-Compiler, die über crosstool erstellt wird, geeignete +binutils vorzugaukeln. Die beiden Dateien sehen so aus: + +:: + + ~/gnubin $ cat as + #! /bin/sh + + # fake as version for crosstool + + [ "$1" = -v ] && echo GNU assembler 2.13 || /usr/bin/as "$@" + +:: + + ~/gnubin $ cat ld + #! /bin/sh + + # fake ld version for crosstool + + [ "$1" = --version ] && echo GNU ld 2.13 || /usr/bin/ld "$@" + +:: + + ~/gnubin $ PATH=$HOME/gnubin:$PATH + +Außerdem wird ein Patch für ds-mod benötigt, den man hier herunterladen +kann: + +- `​ds-0.2.9_26-14.2-macosx.patch.gz `__ + +Das ganze ist wenig getestet, insbesondere habe ich noch kein so +erstelltes Image ausprobiert. + +.. _Aktualisierung: + +Aktualisierung +============== + +*Freetz* läuft nun also super auf der Box, und das schon seit längerer +Zeit. Da kommt es unvermeidlich vor, dass AVM eine neue Firmware-Version +herausbringt, und auch die *Freetz*-Entwicklung ist weitergegangen. +Kurzum: Man möchte nun natürlich auch von den neuen Features und +Bugfixes profitieren. Wie bringt man also *Freetz* auf der Box auf den +neuesten Stand? + +Die Antwort ist recht einfach: "Siehe oben". Eine Aktualisierung geht +genau so vonstatten, wie auch die Erst-Installation: Man baut sich ein +neues *Freetz*-Image und nutzt dann das "Firmware-Update" der Box. + +Hat man für die Installation eine Repository-Version verwendet, bringt +man selbige zuvor auf den aktuellen Stand, indem man in das +Quellverzeichnis wechselt und… + +:: + + # In das Verzeichnis wechseln, in dem sich das "ausgecheckte" Freetz befindet: + cd freetz + # Quelldateien aktualisieren + svn up + # ggf. die Paketauswahl überprüfen, verändern, neue Patches aktivieren, etc. + make menuconfig + # Image bauen + make + +Und jetzt das fertige Image auf die Box. + +.. _Troubleshooting: + +Troubleshooting +=============== + +.. _AVMFirmwarewirdnichtgefunden: + +AVM Firmware wird nicht gefunden +-------------------------------- + +19. `FAQ <../../../FAQ.html#NosuchfileFRITZ.Box_xxxxxxxxx.aa.bb.cc.image>`__ + +**Achtung:** Die `FAQ <../../../FAQ.html>`__'s sollten in Deutsch +angezeigt werden. Sollte das nicht der Fall sein, dann Bitte diesen +`​Tip `__ +beachten. + +.. _Imagetoobig: + +Image too big +------------- + +19. `FAQ <../../../FAQ.html#Filesystemimagetoobig>`__ + +**Achtung:** Die `FAQ <../../../FAQ.html>`__'s sollten in Deutsch +angezeigt werden. Sollte das nicht der Fall sein, dann Bitte diesen +`​Tip `__ +beachten. + +.. _SonstigeProblemeoderFehlermeldungen: + +Sonstige Probleme oder Fehlermeldungen +-------------------------------------- + +19. `FAQ <../../../FAQ.html>`__ + +**Achtung:** Die `FAQ <../../../FAQ.html>`__'s sollten in Deutsch +angezeigt werden. Sollte das nicht der Fall sein, dann Bitte diesen +`​Tip `__ +beachten. + +.. _WeiterführendeLinks: + +Weiterführende Links +==================== + +- `​Alternatives HowTo für die + Installation `__ **Hinweis + 20091025: Link existiert nicht (mehr ?)** +- `​IPPF + Thread `__ zum + Thema + +- Tags +- `howto `__ + +.. |Warning| image:: ../../../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/help/howtos/common/install.rst b/wiki/help/howtos/common/install.rst new file mode 100644 index 0000000..aa0ff2d --- /dev/null +++ b/wiki/help/howtos/common/install.rst @@ -0,0 +1,753 @@ +.. _Installation: + +Installation +============ + +`Freetz <../../../freetz.html>`__ stellt Skripte zum Modifizieren einer +originalen Firmware bereit. Aus Lizenzgründen ist die Verbreitung sowohl +originaler als auch modifizierter Firmware Images untersagt! + +|Warning| Achtung: Das Aufspielen einer modifizierten Firmware geht mit dem +Verlust der Garantie einher. Wendet euch bei Problemen mit einer +modifizierten Firmware daher **NICHT** an den AVM Support. + +**Anfänger**: Bitte zuerst '`Erste Schritte für +Anfänger `__' lesen! + +.. _VirtuellesLinux:Freetz-LinuxfürVMware-Player: + +Virtuelles Linux: Freetz-Linux für VMware-Player +------------------------------------------------ + +Wenn kein natives Linux zur Verfügung steht wird von uns +`​Freetz-Linux `__ +als Buildumgebung empfohlen. Das von Silent-Tears (cinereous) zur +Verfügung gestellte Image wird bei Problemen supported. + +Die unten stehende Anleitung wurde anfangs teilweise von +`​Saphir `__ +übernommen, ist aber über die Zeit historisch gewachsen und wurde nach +und nach von mehreren Benutzer erweitert und überarbeitet. Wir bemühen +uns diese Anleitung möglichst aktuell zu halten und der jeweils +aktuellen Version der aktuell zu empfehlenden virtuellen Maschine +anzupassen. Grundsätzlich gelten jedoch die hier empfohlene Schritte mit +gewissen Einschränkungen für jede FREETZ-tauglich konfigurierte +virtuelle Linux-Maschine. + +.. _Vorbereitung: + +Vorbereitung +------------ + +Siehe auch: + +`​Buildumgebung Freetz-Linux +Installieren `__ + +`​Freetz und Speed-to-Fritz +Installation `__ +(relevant nur für SpeedPort Benutzer) + +.. _DurchführungmitWindowsOS: + +Durchführung mit Windows OS +--------------------------- + +#. Benötigte Dateien: + + - VMWare Player + `​http://www.vmware.com/de/download/player/ `__ + - VMware Image für Freetz-Linux + `​Forumpost `__ + `​Download `__ + - Freetz (aktuelle und ältere Versionen) + `Download <../../../Download.html>`__ + (Muss man nicht direkt downloaden, wenn man sich das Paket wie + unten empfohlen per svn lädt) + - Evtl. vorhandene Patches für Freetz `​Freetz + Forum `__ + +#. `​Freetz-Linux `__ + unter Windows mit + `​7-Zip `__ oder + `​WinRAR `__ entpacken. +#. VMWare Player starten und keine Einstellungen ändern, da sich die + virutelle Maschine eine IP per DHCP holt. Sollte dieses nicht der + Fall sein kann die IP-Adresse mit folgendem Befehl auch per Hand + gesetzt werden: + + .. code:: bash + + ifconfig eth0 192.168.178.xx netmask 255.255.255.0 broadcast 192.168.178.255 + + | (Wobei die Netzwerkkarte "eth0" evtl. durch eine eine andere + ersetzt werden muss. Eine Auflistung aller Netzwerkkarten erhält + man mit **"ifconfig -a"**) + +#. Im VMWare Player mit dem Benutzernamen **freetz** und dem Passwort + **freetz** anmelden. + Jetzt gibt es mehrere Alternativen, wie man mit Freetz-Linux arbeiten + kann und die Dateien zwischen Freetz-Linux und dem Rest der Welt + bewegen kann. + + - **Freetz-Linux Konsole** im VMware Player (am einfachsten) + - **SSH/SCP**: Zu anderen Möglichkeiten gehört z.B. eine + SSH/SCP-Verbindung mit + `​putty `__ + oder/und mit + `​WinSCP `__ (beide + nur als Beispiel). Als Servernamen für putty/WinSCP trägt man die + IP-Adresse von Freetz-Linux. Benutzername und Passwort s. oben + - **SAMBA**: Außerdem gibt es die Möglichkeit Daten zwischen Windows + und Freetz-Linux über SAMBA auszutauschen. Dafür gibt man in der + Adressenleiste von WindowsExplorer " + Freetz-Linux" oder " + IP-Adresse-von-Freetz-Linux" an und schon kann man die Dateien + zwischen Windows und Freetz-Linux hin und her schieben. Allerdings + stimmen dann die Linux Benutzerrechte nicht automtisch wie sie + sollten. + - **FTP**: Funktioniert ähnlich wie SAMBA + Alle diese Verbindungsmöglichkeiten sind unter Freetz-Linux + voreingestellt und sollten von Anfang an funktionieren. Bei + Problemen bitte Netzwerkverbindung, Firewall, etc. überprüfen. + Ebenso sollten die Netzwerkeinstellungen vom VMWare-Player + überprüft werden. Standardmäßig ist hier **Bridged-Mode** + eingestellt. Anfangen mit den Tests sollte man mit "ping + IP-Adresse-von-Freetz-Linux" unter Eingabeaufforderung. + +#. Je nachdem, für welche Methode man sich entschieden hat, macht man + folgendes: + + - Mit **SSH/TELNET** oder **Freetz-Linux Konsole** (bevorzugt) + folgendes eingeben: (Anstatt freetz-2.0.x kann auch eine andere, + z.B. Entwicklerversion genommen werden.) + + .. code:: bash + + svn co http://svn.freetz.org/branches/freetz-stable-2.0.x freetz-2.0.x + +Aktuell: + +.. code:: bash + + svn co http://svn.freetz.org/branches/freetz-stable-2.0 freetz-2.0 + +.. + + | **Achtung:** Kleiner Tip für Vista und Windows 7 User: + | Solltet Ihr eine IP-Adresse in der VM-Ware erhalten (ifconfig), + aber trotzdem folgende Fehlermeldung bekommen :**hostname konnte + nicht aufgelöst werden**, dann kontrolliert bitte Folgendes in + Eurer Systemsteuerung: + | 1.) ob Euer Netzwerk ein Heimnetzwerk ist: + + .. figure:: /screenshots/124.jpg + :alt: + + | 2.) ob Eure Netzwerkkennung eingeschaltet ist: + + .. figure:: /screenshots/123.jpg + :alt: + + | + +#. *Optional*: Patch einspielen (siehe + `Howto <../development/integrate_patches.html>`__) +#. In das Verzeichnis des ausgecheckten/entpackten Freetz wechseln: + + .. code:: bash + + cd freetz-2.0.x (aktuell: cd freetz-2.0) + +#. Einstellungen wie Boxtyp, Pakete usw. konfigurieren. Dies ist über + ein `​ncurses `__ Interface + möglich, welches z.B. aus der Konfiguration des Linux Kernels bekannt + ist. Details und Beschreibungen zu den Optionen gibt es in der + Beschreibung zum `menuconfig `__. + + .. code:: bash + + make menuconfig + + | Es empfiehlt sich beim ersten Mal nicht zu viele Einstellungen zu + verändern und das erste FritzBox Firmware Image mit den + Standardvorgaben zu erstellen. + +#. Firmware modifizieren. In diesem Schritt werden die zu der gewählten + Konfiguration passenden Originalfirmware, Pakete, sowie Sourcen für + die benötigten Tools vollautomatisch heruntergeladen und die + modifizierte Firmware in drei Schritten erzeugt. Beim ersten Mal + dauert es etwas länger. Die Zeit ist abhängig von den ausgewählten + Paketen und dem benutzten Rechner. Man kann also ruhig eine + Kaffeepause einlegen. + + .. code:: bash + + make + +#. Wenn der Build ohne Fehler durchgelaufen ist, dann findet sich jetzt + unter ``~/freetz-2.0.*/images`` die neue FritzBox Firmware (z.B. + ``7170_04.76freetz-devel-10390.de_20130421-180742.image``). +#. Diese Datei kann ganz normal als Firmware Update auf die Box + hochladen werden. Dazu muss die FritzBox aber mit einem Passwort + gesichert sein, da sie fremde Images sonst nicht akzeptiert. (Falls + Freetz schon auf der Box ist sollte bevorzugt die Update Funktion des + Freetz Webinterfaces genutzt werden.) Nach einem erfolgreichen Upload + ist nun auf Port 81 ein weiteres Webinterface verfügbar, welches + Instruktionen zum Abschluss der Installation enthält. Sollte die Box + nach dem Hochladen der Firmware auch Minuten nachdem die Info LED + aufgehört hat zu blinken nicht mehr erreichbar sein (typischerweise + leuchten **periodisch** immer wieder alle LEDs auf), so kann die + originale Firmware bei den meisten Box-Typen, wie in diesem + `Howto <../troubleshoot/recover_firmware.html>`__ beschrieben, + wiederhergestellt werden. + +.. _DurchführungmitLinuxOS: + +Durchführung mit Linux OS +------------------------- + +.. _NotwendigePakete: + +Notwendige Pakete +~~~~~~~~~~~~~~~~~ + +Für das Erstellen der Firmware kann auch Knoppix verwendet werden, wozu +keine Linux-Installation erforderlich ist. Wichtig ist, dass zum +Kompilieren des Mods unter Linux keine FAT oder NTFS Partition verwendet +wird. Die folgende Anleitung benötigt für + +.. _freetz-2.xstabileVersion: + +freetz-2.x (stabile Version) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- **gcc** - GNU C Compiler +- **g++** - GNU C++ Compiler +- **binutils** - GNU Assembler, Linker und Binary-Werkzeuge +- **autoconf** - dem Make vorgeschalteter Generator für + Konfigurationsskripten nach GNU-Standard; hilft dabei, + plattformunabhängig programmierte Software letztendlich für einen + plattformspezifischen Build vorzubereiten +- **automake** ab Version 1.10 - Makefile-Generator nach GNU-Standard; + wird nur für manche Pakete benötigt, aber z.B. für + `privoxy <../../../packages/privoxy.html>`__; Paketmanager + installiert normalerweise *autoconf* als abhängiges Paket gleich mit +- **libtool** - hilft beim Erstellen von statischen und dynamischen + Bibliotheken; kann z.B. beim aufruf von *autoreconf* notwendig werden +- **GNU make** ab Version 3.81 - skriptgesteuertes Build-System +- **bzip2** - (Ent)packen von Software-Archiven +- **libncurses5-dev** - Entwickler-Bibliothek für ncurses (Erzeugung + komfortabler textbasierter Benutzerschnittstellen, vgl. + ``make menuconfig``) +- **zlib1g-dev** - Entwickler-Bibliothek für gzip-Kompression +- **flex** - lex-kompatibler Generator für lexikalische Analyse +- **bison** - YACC-kompatibler Parser-Generator +- **patch** - Programm, um Patches anzuwenden +- **texinfo** - Online-/Druck-Doku aus gemeinsamer Quelle erzeugen +- **tofrodos** - Dateiumwandlung DOS ↔ UNIX (für was wird das + benötigt?) +- **gettext** - Texte in Programmen internationalisieren +- **pkg-config** - Hilfstool welches zum Bauen von Binaries und + Libraries nötig ist +- **ecj-bootstrap** - Eclipse Java Compiler (evtl. auch libecj-java und + ecj in neueren Distributionen); nur notwendig für Package *classpath* + ab 0.95 +- **perl** - Perl-Interpreter; notwendig für ``make recover`` +- **libstring-crc32-perl** - Perl-Modul zur Berechnung von + CRC32-Prüfsummen; notwendig für ``make recover`` +- **xz-utils** - (Ent)packen von Software-Archiven im XZ-Format (strace + seit freetz-stable-1.2) + +.. _aktuelleEntwicklerversionundspeziellePakete: + +aktuelle Entwicklerversion und spezielle Pakete +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Diese benötigen zusätzlich zu bereits unter *freetz-2.x* genannten noch +folgende Pakete: + +- **svn** - Subversion zum Auschecken der aktuellen Freetz-Versionen +- **ruby1.8** - objektorientierte Skriptsprache (Version 1.8.6); nur + notwendig für Package *ruby* (ab freetz-devel) - seltsamerweise + benötigt der Crosscompile für *ruby-1.8.6* eine installierte Version + seiner selbst als Voraussetzung. Zu allem Überfluß könnte es sein, + daß Sie im Paket zwar ``/usr/bin/ruby1.8`` o.ä. haben, aber nicht das + vom Makefile benötigte Binary Namens *ruby*. Da hilft im o.g. + Beispiel ``sudo ln -s ruby1.8 /usr/bin/ruby`` bzw. die Ausführung des + ``ln``-Befehls als Benutzer *root*. +- **gawk** - GNU awk; notwendig für das Skript ``tools/extract-images`` + (ab freetz-devel), wenn man z.B. ein Recover-EXE zerlegen, also + *urlader.image* und *kernel.image* extrahieren möchte. Die in anderen + *awk*-Varianten nicht vorhandene Funktion *strtonum* wird an einer + Stelle verwendet. +- **python** - Python-Interpreter; notwendig, um via + ``tools/mklibs.py`` unbenutzte Symbole aus Bibliotheken zu entfernen, + um Platz zu sparen +- **libusb-dev** - Entwicklungs-Bibliothek für USB-Anwendungen im + Userspace; nur notwendig für SANE, wenn bspw. + Multifunktionsdrucker/-scanner an die FritzBox angebunden werden + sollen. Siehe auch + `​Forums-Beitrag `__ + dazu. +- **realpath** - wird nur von Entwicklern benötigt, die innerhalb von + *fwmod* beim Build das Patch-Auto-Fixing verwenden + (AUTO_FIX_PATCHES=y im Environment). Wer nicht weiß, wovon die Rede + ist, braucht es auch nicht. Unter Fedora nicht verfügbar, man kann es + aber selbst kompilieren + `​http://forums.fedoraforum.org/archive/index.php/t-143199.html `__. + **TODO** nicht mehr notwendig in Trunk und freetz-stable-1.2, Eintrag + löschen nach Release. +- **fastjar** - Implementation des Java jar utils; nur notwendig für + Package *classpath* +- **git** - GIT Tool zum auschecken von GIT Repositories (benötigt für + freetz_download) +- **imagemagick** (bzw **ImageMagick**) - enthält ``composite`` mit dem + Bilder kombiniert werden können; nur notwendig wenn man das + AVM-Webinterface "taggen" möchte +- **patchutils** - Tools zum Umgang mit Patches; notwendig für + ``tools/freetz_patch`` (Auto-Fix-Modus) +- **mktemp** - Erzeugen temporärer Dateien mit Zufallsnamen; notwendig + für ``tools/freetz_patch`` (Auto-Fix-Modus) + +.. _alteEntwicklerversionen: + +alte Entwicklerversionen +^^^^^^^^^^^^^^^^^^^^^^^^ + +Hier wird zusätzlich folgendes benötigt: + +- **automake-1.8** - Version, die zusätzlich speziell von *libid3tag* + benötigt wird. Nicht mehr erforderlich ab Freetz 1.0. +- **jikes** - Java Byte Code Compiler; nur notwendig für Package + *classpath* bis 0.93 bzw. ds26-14.4 + +.. _InstallationderbenötigtenPaketeUbuntu: + +Installation der benötigten Pakete (Ubuntu) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Eine einfache Möglichkeit die benötigten Pakete zu installieren besteht +darin, diesen Code per Copy and Paste auf der Konsole auszuführen. + +(Falls du eine US-Tastaturbelegung hast → "sudo locale-gen de_DE" und +"sudo dpkg-reconfigure console-data" ausführen. +`​Details `__ ) + +:: + + sudo apt-get -y update + sudo apt-get -y upgrade + sudo apt-get -y dist-upgrade + + # Angepasst z.B. auf Ubuntu 9.04 (kein automake 1.8, "ecj" statt "ecj-bootstrap"): + sudo apt-get -y install imagemagick subversion gcc g++ binutils autoconf automake automake1.9 libtool make bzip2 libncurses5-dev libreadline-dev zlib1g-dev flex bison patch texinfo tofrodos gettext pkg-config jikes ecj fastjar realpath perl libstring-crc32-perl ruby ruby1.8 gawk python libusb-dev unzip intltool libglib2.0-dev xz-utils git-core libacl1-dev libattr1-dev libcap-dev + + # Ubuntu 9.10, 10.xx, 11.xx und 12.04 + sudo apt-get -y install imagemagick subversion gcc g++ bzip2 binutils automake patch autoconf libtool pkg-config make libncurses5-dev libreadline-dev zlib1g-dev flex bison patch texinfo tofrodos gettext pkg-config ecj fastjar realpath perl libstring-crc32-perl ruby ruby1.8 gawk python libusb-dev unzip intltool libglib2.0-dev xz-utils git-core libacl1-dev libattr1-dev libcap-dev + + #Ubuntu 13.04 und 14.04 + sudo apt-get -y install graphicsmagick subversion gcc g++ binutils autoconf automake automake1.9 libtool make bzip2 libncurses5-dev libreadline-dev zlib1g-dev flex bison patch texinfo tofrodos gettext pkg-config ecj fastjar realpath perl libstring-crc32-perl ruby ruby1.8 gawk python libusb-dev unzip intltool libacl1-dev libcap-dev + + # Seit Debian Jessie bzw. Ubuntu 15.04 (vivid) wird zusätzlich das Paket libtool-bin benötigt: + sudo apt-get -y install libtool-bin + + # Auf 64-Bit Systemen sind zusätzlich folgende Pakete zu installieren: + sudo apt-get -y install libc6-dev-i386 lib32ncurses5-dev gcc-multilib lib32stdc++6 + + # Ubuntu 15.10 x64: + sudo apt-get -y install imagemagick subversion git gcc g++ binutils autoconf automake autopoint libtool-bin make bzip2 libncurses5-dev libreadline-dev zlib1g-dev flex bison patch texinfo tofrodos gettext pkg-config ecj fastjar realpath perl libstring-crc32-perl ruby ruby1.8 gawk python libusb-dev unzip intltool libacl1-dev libcap-dev libc6-dev-i386 lib32ncurses5-dev gcc-multilib lib32stdc++6 libglib2.0-dev + +Wer vergessen hat welche Ubuntu Version er installierte kann dies mit +folgenden Befehlen prüfen: + +.. code:: bash + + # Ubuntu Version: ergibt z.B. "Ubuntu 12.04.1 LTS \n \l" + cat /etc/issue + # Maschinen Typ: ergibt z.B. "i686" bei 32-bit Ubuntu und "x86_64" bei 64-Bit Ubuntu + uname -m + +.. _InstallationderbenötigtenPaketeFedora: + +Installation der benötigten Pakete (Fedora) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. code:: bash + + sudo yum -y install ImageMagick subversion gcc gcc-c++ binutils autoconf automake libtool make bzip2 ncurses-devel zlib-devel flex bison patch texinfo gettext pkgconfig ecj perl perl-String-CRC32 wget glib2-devel git libacl-devel libattr-devel libcap-devel + # Auf 64-Bit Systemen sind zusätzlich folgende Pakete zu installieren: + sudo yum -y install ncurses-devel.i686 glibc-devel.i686 libgcc.i686 + +.. _ErstellungInstallation: + +Erstellung & Installation +~~~~~~~~~~~~~~~~~~~~~~~~~ + +#. Shell öffnen, ins Verzeichnis von ``freetz-xxx.tar.bz2`` wechseln und + diesen mit ``tar -xvjf freetz-x.y.z.tar.bz2`` entpacken +#. *Optional*: Patch einspielen (siehe + `Howto <../development/integrate_patches.html>`__) +#. Mit ``cd freetz-xxx/`` in das Verzeichnis des entpackten Freetz + wechseln +#. Konfiguration wählen. Dies ist über ein ncurses Interface möglich, + welches z.B. aus der Konfiguration des Linux Kernels bekannt ist. + Details und Beschreibungen zu den Optionen gibt es in der + Beschreibung zum `make menuconfig `__. +#. Firmware modifizieren. In diesem Schritt werden die zu der gewählten + Konfiguration passenden original Firmware und Pakete, sowie Sourcen + für die benötigten Tools vollautomatisch heruntergeladen und die + modifizierte Firmware in drei Schritten erzeugt. Dies erledigt ein + simples ``make``. +#. ``*.image`` als Firmware Update auf die Box hochladen. Nach einem + erfolgreichen Upload ist nun auf Port 81 ein weiteres Webinterface + verfügbar, welches Instruktionen zum Abschluss der Installation + enthält. Sollte die Box nach dem Hochladen der Firmware auch Minuten + nachdem die Info LED aufgehört hat zu blinken nicht mehr erreichbar + sein (typischerweise leuchten **periodisch** immer wieder alle LEDs + auf), so kann die originale Firmware bei den meisten Box-Typen, wie + in diesem `Howto <../troubleshoot/recover_firmware.html>`__ + beschrieben, wiederhergestellt werden. + +.. _coLinuxandLinuxspeedLinux: + +coLinux / andLinux / speedLinux +------------------------------- + +Siehe auch: `​andlinux unter Vista +installieren `__ + +Alternativ kann auch `​coLinux `__ benutzt werden, +ist etwas resourcenschonender als der vmware player. Mit speedLinux ist +alles vorbereitet für freetz oder speed-to-fritz. Mit ./freetz werden +alle notwendigen Vorbereitungen und Installationen durchgeführt. +aktueller Stand 25.10.2009 + +Anmerkung von Alexander Kriegisch (kriegaex), 24.02.2008: Ja, das +benutze ich auch seit gestern, und zwar speziell die mit Ubuntu Gutsy +und XFCE (wahlweise auch KDE) vorkonfigurierte Variante +`​andLinux `__, die man wahlweise als Dienst +oder als Anwendung starten kann und mit einem einfachen Installer +ausgeliefert wird. Scheint etwas langsamer zu sein als ein reines Linux, +aber es ist schon cool, Linux-Fenster nativ neben Windows-Fenstern zu +haben. *:-)* Der mitgelieferte X-Server Xming (für Windows) macht's +möglich. Ich verwende übrigens nicht mal ein X-Terminal, sondern logge +mich sozusagen "headless" über SSH ein (Putty). Ab und zu lasse ich mal +Synaptic oder als X-Editor SciTE laufen, den ich nachinstalliert habe. +Ich baue gerade sämtliche Freetz-Pakete "from scratch" inkl. +`Download <../../../Download.html>`__, es geht genauso wie in VMware +oder nativem Linux, also Linux-Paketliste siehe oben. + +Nachteile von coLinux/andLinux/speedLinux: + +- bei Multicore-Prozessoren wird nur ein Kern benutzt +- keine 64bit Unterstützung +- gravierende Systemanpassungen (spezieller Kernel, etc) bei Updates + des Systems notwendig. + +Vorteile von coLinux/andLinux/speedLinux: + +- kommt mit weniger RAM aus als VMWare (geringerer Ressourcenbedarf) +- native Windowsfenster + +Bei andLinux - Beta 2 minimal ist nicht ausreichend Platz für ein Build +vorhanden. Ein Lösungsansatz: Den andLinux Dienst stoppen +(Startmenü-andLinux-Stop andLinux) In das andLinux +Installationsverzeichnis wechseln und die Datei "ImageResizeTool.zip" +nach "Drives" entpacken. Dort die Datei "toporesize.bat" ausführen. + +Leider hat das bei mir nicht funktioniert. + +Alternative Möglichkeit: + +#. cmd.exe ausführen (ggf. als Admin) +#. in das andLinux Installationsverzeichnis wechseln +#. Dienst Stoppen (siehe oben) oder srvstop.bat ausführen +#. in das "Drives" Verzeichnis wechseln +#. tfile base.vdi 4096 : vergrößert das Filesystem auf 4 GB +#. e2fsck.exe -f base.vdi +#. resize2fs.exe base.vdi +#. Dienst wieder starten (via Startmenü oder srvstart.bat) + +Eine weitere Partition für Feetz anlegen. + +Das bietet auch den Vorteil das bei Updates diese Partition nicht +berührt wird und so wie diese ist weiter verwendet werden kann. + + Wie macht man das? + +.. + + Beispiel: + + Eine Kopie von Drives\base.vdi auf Drives\copyofbase.vdi machen, + der Inhalt kann später nach Einbindung gelöscht werden. + +.. + + Im File settings.txt die folgende Zeile zusätzlich eintragen: + + cobd2=Drives\copyofbase.vdi + +.. + + Im gestartenten LINUX vorher Verzeichnis */mnt/freetz* anlegen und + in der Datei */etc/fstab* folgende Zeile eintragen: + + */dev/cobd2 /mnt/freetz ext3 defaults 1 1* + +SpeedLinux hat eine Option zum vergrößern der Partition. + +.. _Cygwin: + +Cygwin +------ + +|Warning| **Unter Cygwin funktioniert Freetz definitiv nicht, und auch für +ds-0.2.9 (Kernel 2.4) wird Linux empfohlen, weil es mit Cygwin Probleme +geben kann und es außerdem einen riesigen Geschwindigkeitsverlust beim +Bauen (mehrfache Build-Dauer) bedeutet, Cygwin zu verwenden.** |Warning| + +Da Freetz sich unter Cygwin ohnehin nicht bauen lässt, folgt hier +lediglich die Beschreibung für ds-mod: + +Ein Howto von dsl123 zum Kompilieren des ds-mod's unter Cygwin gibt es +`​hier `__. Zum +Entpacken der Datei ``ds-*.tar.bz2`` unter Windows **ausschließlich** +das Cygwin-tar — wie in der Anleitung beschrieben — verwenden: + +#. Cygwin Installer von + `​http://www.cygwin.com/ `__ herunterladen + und ausführen +#. Cygwin mit den folgenden Paketen installieren: + + - Archive > unzip + - Devel > gcc, libncurses-devel, make, patchutils + - Interpreters > perl + - Web > wget + +#. ``ds-*.tar.bz2`` in das Cygwin Home-Verzeichnis herunterladen (je + nach Installation z.B. ``C:/Cygwin/home//``) +#. Cygwin Shell öffnen und den ds-mod entpacken + ``tar -xvjf ds-x.y.z.tar.bz2`` +#. *Optional*: Patch einspielen (siehe + `Howto <../development/integrate_patches.html>`__) +#. In das Verzeichnis des entpackten ds-mod wechseln ``cd ds-*/`` +#. Konfiguration wählen. Dies ist über ein + `​ncurses `__ Interface + möglich, welches z.B. aus der Konfiguration des Linux Kernels bekannt + ist. Details und Beschreibungen zu den Optionen gibt es in der + Beschreibung zum `menuconfig `__. + ``make menuconfig`` +#. Firmware modifizieren. In diesem Schritt werden die zu der gewählten + Konfiguration passenden original Firmware und Pakete, sowie Sourcen + für die benötigten Tools vollautomatisch heruntergeladen und die + modifizierte Firmware in drei Schritten erzeugt. ``make`` +#. ``firmware_*.image`` als Firmware Update auf die Box hochladen. Nach + einem erfolgreichen Upload ist nun auf Port 81 ein weiteres + Webinterface verfügbar, welches Instruktionen zum Abschluss der + Installation enthält. Sollte die Box nach dem Hochladen der Firmware + auch Minuten nachdem die Info LED aufgehört hat zu blinken nicht mehr + erreichbar sein (typischerweise leuchten **periodisch** immer wieder + alle LEDs auf), so kann die original Firmware mit Hilfe der + ``recover.exe`` von AVM wiederhergestellt werden. + +.. _MacOSX: + +Mac OS X +-------- + +Im Prinzip und mit ein paar Patches funktioniert ein aktuelles ds-mod +auch unter Mac OS X. Zumindest ist mir gelungen, ds-0.2.9_26-14.2 unter +Mac OS X zum Funktionieren zu überreden. + +Zunächst sind folgende Voraussetzungen zu erfüllen: + +#. Datenpartition erstellen, bei der das HFS+ case sensitive + konfiguriert ist. +#. Xcode installieren. Dadurch erhält man geeignete Versionen von u. a. + + - gcc + - g++ + - autoconf + - automake + - make + - `​ncurses `__ + - zlib + - flex + - bison + +Außerdem sind einige (GNU) Utilities nötig, die z.B. über Darwin Ports +installiert werden können: + +- gettext +- texinfo +- dos2unix +- gawk +- coreutils +- findutils +- gsed + +Und vermutlich ein paar weitere, wenn man die entsprechenden Packages +anwählt. + +Die zusätzlichen Utilities werden in der Regel unter Namen installiert, +die mit g beginnen, um nicht mit den nativen Utilities von Mac OS X in +Konflikt zu geraten. Manche Konfigurationsskripte setzen aber die +Eigenschaften von GNU-Utilities voraus, auch wenn sie unter dem +Standardnamen aufgerufen werden. Daher habe ich mir ein Verzeichnis +erstellt, in dem Symlinks der Standardnamen auf die GNU Utilities +zeigen. Zum Arbeiten mit ds-mod ist dieses Verzeichnis in den Suchpfad +aufzunehmen: + +.. code:: bash + + ~/gnubin $ ls -l + total 64 + -rwxr-xr-x 1 enrik enrik 106 20 Mär 17:23 as + lrwxr-xr-x 1 enrik enrik 19 20 Mär 17:18 awk -> /opt/local/bin/gawk + lrwxr-xr-x 1 enrik enrik 18 20 Mär 18:32 cp -> /opt/local/bin/gcp + lrwxr-xr-x 1 enrik enrik 22 11 Apr 10:11 cpp -> /usr/local/bin/cpp-3.3 + lrwxr-xr-x 1 enrik enrik 20 11 Apr 10:11 find -> /opt/local/bin/gfind + lrwxr-xr-x 1 enrik enrik 23 20 Mär 17:18 install -> /opt/local/bin/ginstall + -rwxr-xr-x 1 enrik enrik 106 20 Mär 17:24 ld + lrwxr-xr-x 1 enrik enrik 21 20 Mär 17:18 sed -> /opt/local/bin/gnused + +Die Pseudebefehle ``as`` und ``ld`` dienen hier nur dazu, der glibc für +den Kernel-Compiler, die über crosstool erstellt wird, geeignete +binutils vorzugaukeln. Die beiden Dateien sehen so aus: + +:: + + ~/gnubin $ cat as + #! /bin/sh + + # fake as version for crosstool + + [ "$1" = -v ] && echo GNU assembler 2.13 || /usr/bin/as "$@" + +:: + + ~/gnubin $ cat ld + #! /bin/sh + + # fake ld version for crosstool + + [ "$1" = --version ] && echo GNU ld 2.13 || /usr/bin/ld "$@" + +:: + + ~/gnubin $ PATH=$HOME/gnubin:$PATH + +Außerdem wird ein Patch für ds-mod benötigt, den man hier herunterladen +kann: + +- `​ds-0.2.9_26-14.2-macosx.patch.gz `__ + +Das ganze ist wenig getestet, insbesondere habe ich noch kein so +erstelltes Image ausprobiert. + +.. _Aktualisierung: + +Aktualisierung +============== + +*Freetz* läuft nun also super auf der Box, und das schon seit längererm. +Da kommt es vor, dass AVM eine neue Firmware-Version herausbringt, und +auch die *Freetz*-Entwicklung weitergegangen ist. Kurzum: Man möchte nun +natürlich auch von den neuen Features und Bugfixes profitieren. Wie +bringt man also *Freetz* auf der Box auf den neuesten Stand? + +Die Antwort ist recht einfach: "Siehe oben". Eine Aktualisierung geht +genau so vonstatten, wie auch die Erst-Installation: Man baut sich ein +neues *Freetz*-Image und nutzt dann das "Firmware-Update" der Box. + +Hat man für die Installation eine Repository-Version verwendet, bringt +man selbiges zuvor auf den aktuellen Stand, indem man in das +Quellverzeichnis wechselt und… + +:: + + # In das Verzeichnis wechseln, in dem sich das "ausgecheckte" Freetz befindet: + cd freetz + # Quelldateien aktualisieren + svn up + # ggf. die Paketauswahl überprüfen, verändern, neue Patches aktivieren, etc. + make menuconfig + # Image bauen + make + +Und jetzt das fertige Image auf die Box. + +.. _Fehlerbehebung: + +Fehlerbehebung +============== + +| Falls bei der Erstellung des Images ein Fehler auftreten sollte, + findet man die Lösung dazu wahrscheinlich in den + `FAQ <../../../FAQ.html>`__. + +**Achtung:** Die `FAQ <../../../FAQ.html>`__ sollten in Deutsch +angezeigt werden. Sollte das nicht der Fall sein, dann bitte diesen +`​Tipp `__ +beachten. + +.. _ManuelleseinspielendesImages: + +Manuelles einspielen des Images +=============================== + +Wenn das Hochladen des Images partout nicht klappen will hat man noch +die Möglichkeit es manuell auf die Fritzbox zu bringen. Hierfür sollten +bevorzugt die Helfer recover-eva und push_firmware aus dem +tools/-Verzeichnis genutzt werden. Aber auch ein Einspieln per Hand ist +möglich und wir im folgenden kurz beschrieben. Voraussetzung ist, daß +wir ein fertig erstelltes Image besitzen und in einer Linuxumgebung +arbeiten! Wir entpacken nun aus dem fertigen Image die kernel.image +Datei und wechseln wenn nötig in das Verzeichnis in welchem die +kernel.image Datei liegt. Jetzt wird es etwas trickreich, da die +Fritzbox nur in den ersten 5-10 Sekunden nach Neustart per ftp zu +erreichen ist. Wir geben also in unserer Linuxkonsole schon einmal den +ersten Befehl ein **ftp 192.168.178.1** und gehen dann zur Fritzbox, um +sie über den Stromstecker zu resetten, eilen schnell wieder zurück und +drücken die Enter-Taste. Wenn es geklappt hat wird man nach Benutzername +und Passwort gefragt, er lautet für beides **adam2**. Weiter gehen wir +wie folgt vor: + +.. code:: bash + + Eingabe am Prompt: bin + + Eingabe am Prompt: passiv + + Flash am Prompt initiieren mit: quote MEDIA FLSH + + Datei übertragen mit: put kernel.image mtd1 + + Rebranding: quote SETENV firmware_version avm + + Reboot der Box starten: quote REBOOT + + ftp verlassen: quit + +Es klappt meistens nicht beim ersten Versuch. Es hilft dann, ftp +abzubrechen und es direkt nochmal neu zu versuchen. + +.. _WeiterführendeLinks: + +Weiterführende Links +==================== + +- `​IPPF + Thread `__ zum + Thema +- Speedports: (siehe + `​sp2fritz `__). + Ab Skriptversion 2.2.2008 ist das speed2fritz möglich. + +- Tags +- `howtos `__ + +.. |Warning| image:: ../../../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/help/howtos/common/install/menuconfig.rst b/wiki/help/howtos/common/install/menuconfig.rst new file mode 100644 index 0000000..35684ef --- /dev/null +++ b/wiki/help/howtos/common/install/menuconfig.rst @@ -0,0 +1,146 @@ +.. _Konfiguration: + +Konfiguration +============= + +Zum Konfigurieren von Freetz kommt das Programm *conf/mconf* zum +Einsatz, welches dem ein oder anderen vielleicht von der Konfiguration +des Linux Kernels bekannt ist. Die +`​ncurses `__ Variante *mconf* +kann mit dem Kommando ``make menuconfig`` aufgerufen werden. + +Eine Hilfe zu den einzelnen Punkten kann übrigens direkt in *menuconfig* +durch Eingabe von "?" aufgerufen werden. + +.. figure:: /screenshots/53.png + :alt: Freetz menuconfig + + Freetz menuconfig + +.. _General: + +General +------- + +- **Hardware Type**: Hier muss der Typ deiner Box gewählt werden. + Standard ist "Fon WLAN 7170". Mit diesem Typ erstellte Images können + nur auf die jeweilige Fritzbox hochgeladen werden. Abhängig vom Typ + werden die `Download <../../../../Download.html>`__ URL der + originalen Firmware auf dem `​AVM FTP Server `__ + und Parameter zum Erstellen des modifizierten Images, wie größe des + Flash etc., automatisch gesetzt. Der Typ "Custom" macht diese "Custom + options" sichtbar, wobei man hier gut mit seiner Box vertraut sein + sollte. +- **Version**: Für manche Fritzboxen (Typen) stellt AVM auch + internationale Versionen der Firmware bereit, die aber auch nur auf + internationalen Fritzboxen laufen. Internationale Fritzboxen gibt es + für den Österreichischen / Schweizer Markt "a-ch" und das Englisch + sprachige Ausland "en". Standard ist die für den Deutschen Markt + bestimmte Version "de". +- **Beta/Labor/VPN**: Ist eine Beta Version für die gewählte Fritzbox + (Typ) verfügbar, so kann diese mit dieser Option zum Testen + ausgewählt werden. An die Betas sollten sich nur Profis wagen, da + Freetz hiermit meist nicht reibungslos bzw. garnicht funktioniert. +- **Compile image for "alien" hardware** : Zur Erstellung eines Images + für andere Hardware, als oben ausgewählt. Wer damit nichts anfangen + kann, wählt es einfach nicht aus |:-)| +- **Firmware language**: AVM stellt die Original-Firmware meist in + mehreren Sprachen zur Verfügung - einfach die gewünschte auswählen. + *Hat keinen Einfluss auf die von Freetz modifizierten Dinge (dazu + siehe*\ `unten `__\ *), sondern nur auf die + Original-Firmware.* +- **Replace kernel**: Den AVM-Kernel durch einen "selbstgebauten" + ersetzen. Wiederum eine Sache für Profis |:-)| +- **Show advanced options**: Ob die "erweiterten Optionen" (siehe unter + `Mod `__) angezeigt werden sollen. +- **Branding**: Siehe `unten `__. +- **Annex**: Bei einigen internationalen Firmwares von AVM gibt es + verschiedene Firmware Versionen für Annex A und Annex B. + +.. _Brandings: + +Brandings +--------- + +Brandings sind von bestimmten Providern vorgenommene Änderungen an der +Firmware. Das aktuelle Branding der Box ist unabhängig von der Firmware. +Die modifizierte Firmware muss mindestens das aktuelle Branding der Box +enthalten. Tipp für Anfänger: Zunächst keine Brandings entfernen. Der +Platzersparnis trägt es nur geringfühgig bei; Images ohne das aktuelle +Branding werden aber von der Box nicht akzeptiert. + +- **1und1**: Gibt an, ob das 1und1 Branding in der modifizierten + Firmware erhalten bleiben soll. +- **avm**: Gibt an, ob das avm Branding in der modifizierten Firmware + erhalten bleiben soll. +- **avme**: Gibt an, ob das avme Branding in der modifizierten Firmware + erhalten bleiben soll. Dieses Branding existiert nur bei + internationalen nicht-Deutschen Firmware Versionen. +- **aol**: Gibt an, ob das aol Branding in der modifizierten Firmware + erhalten bleiben soll. +- **arcor**: Gibt an, ob das arcor Branding in der modifizierten + Firmware erhalten bleiben soll. +- **freenet**: Gibt an, ob das freenet Branding in der modifizierten + Firmware erhalten bleiben soll. + +|Warning| In `r2700 `__ wurde die Logik der +Brandingauswahl umgekehrt. Ausgewählte Brandings werden ab jetzt +entfernt. |Warning| + +.. _Mod: + +Mod +--- + +- **Language**: Die Auswahl der Sprache bezieht sich nur auf die + Konfigurations-Webseiten von Freetz, nicht auf die der originalen + Firmware. Es sind noch nicht alle Pakete in Englischer Sprache + verfügbar. Standard ist Deutsch. +- **Patches**: Siehe `patches <../../../../patches.html>`__ für eine + aktuelle Übersicht. +- **Package selection**: Auswahl der für Freetz verfügbaren Pakete / + CGI Erweiterungen. Siehe `Pakete <../../../../packages.html>`__ für + Details. +- **Advanced options** + + - **Override firmware source**: Falls die in der Konfiguration von + Freetz hinterlegte Firmware Version des gewählten Typs nicht mehr + auf dem FTP Server existiert, kann die + `Download <../../../../Download.html>`__ URL mit dieser Option + angepasst werden: + + - **Firmware site**: z.B.: + ``ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7050/firmware`` + - **Firmware source**: z.B.: + ``fritz.box_fon_wlan_7050.14.04.01.image`` + + - **Default Security level**: Wertebereich von 0 bis 2. Legt den + standardmäßigen Security Level fest, welcher aktiviert wird, + sofern kein anderer Wert auf der Box gespeichert ist. Standard ist + 2 (alle Restriktionen aktiviert) + - **Verbosity level**: Wertebereich von 0 bis 2. Je höher die Zahl, + desto mehr Meldungen werden beim Erstellen der Firmware + ausgegeben. Standard ist 0. + - **Favicon**: Auswahl von kleinen Icons, die im Browser neben der + URL der Fritzbox dargestellt werden. "none" installiert keine + Favicons. + - **Add Freetz version to subversion string**: Fügt der im + Web-Interface angezeigten (AVM-) Firmware-Version die + Freetz-Version hinzu + - **Squashfs blocksize**: Die Blockgröße beeinflußt die Kompression + des Images und die Zugriffszeit auf Dateien. Je größer die + Blockgröße, desto besser die Kompression, jedoch wird die + Zugriffszeit auf Dateien des Squashfs Images möglicherweise + schlechter. + - **BusyBox options**: Listenauswahl aller Tools welche in die + BusyBox integriert werden sollen. + - **Kernel modules**: Zusätzliche Kernelmodule. Jegliche Auswahl ist + optional. + - **Shared libraries**: Zusätzliche Laufzeitbibliotheken. Jegliche + Auswahl ist optional. + - **Compiler options**: Wer hier etwas ändert muss wissen was er + tut. + +.. |:-)| image:: ../../../../../chrome/wikiextras-icons-16/smiley.png +.. |Warning| image:: ../../../../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/help/howtos/common/newbie.en.rst b/wiki/help/howtos/common/newbie.en.rst new file mode 100644 index 0000000..7e46fbb --- /dev/null +++ b/wiki/help/howtos/common/newbie.en.rst @@ -0,0 +1,340 @@ +.. _Freetzforbeginners: + +Freetz for beginners +==================== + +| + +.. _Somequestions: + +Some questions +-------------- + +.. _WhatisFreetz: + +What is Freetz? +~~~~~~~~~~~~~~~ + +| A short description and a brief historical overview of Freetz can be + found `here <../../../FAQ.html#WasistFreetz>`__. + +.. _WhatdoIneedtocreateaFreetzimage: + +What do I need to create a Freetz image? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +| 1.) The newest recovery-image (.exe) for your box. It's very important + that you have an up to date `​recovery + image `__ at hand. + (`​7170 `__, + `​7270 `__). +| After a failed update you may not have any more internet access to + download a recovery image. +| 2a.) A native Linux operating system, e.g. + `​Ubuntu `__ or +| 2b.) for Windows users we recommend to install + `​VirtualBox `__ and to + run + `​Freetz-Linux `__ + as virtual machine. +| 3.) A SSH client + `​PuTTY `__ + (Can be used to connect to Freetz-Linux via ssh or telnet). + +.. _WhatshouldItakeintoconsideration: + +What should I take into consideration? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +| Remember that your box is primarily a router with a telephone + switchboard. If you modify the firmware it might happen that the main + functions of the box are affected by that. Usually this shouldn't + happen, but it might cause your box to stall and unexpectedly reboot. + When selecting packages you should follow this rule: If you can't tell + someone more than two sentences about a package, it's not supposed to + be on your box. Be careful with the patches. You won't need them all + of them and not in every possible combination. +| The use of "replace kernel", other comprehensive implementations or + own modules is not recommended for beginners. Not everything that + seems to be cool is really cool. +| Recently there have been many issues with packages that use OpenSSL + libraries. The reason is the incompatibility between the AVM and the + Freetz version of this library. So please avoid using the SSL option + in any package (vsftp, dropbear, curl) for your first build or if they + require this option (OpenVPN, stunnel) avoid them in any case. When + you have more experience you can use OpenSSL by embedding them into + the binaries (compile them static) or use even more advanced + solutions. But please, don't do this in the very beginning! You will + surely fail. + +.. _WhatsmyfirstFreetz-imagesupposedtodo: + +What's my first Freetz-image supposed to do? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +| You can ask yourself the following question: **"What do I want to + achieve by using Freetz"** or **"What function does my box lack and + can I add it through Freetz?"** +| Freetz itself is no modification but a development environment which + is used to to modify the box's firmware modularly. The list of + packages reflects the current users' needs. Everyone can build his own + custom firmware from the existing packages, add his own or omit + unneeded ones. This way you can decide to a certain degree which + functions your FritzBox will have. +| First of all you should find out which packages are useful for you: + `List of available packages <../../../packages.html>`__ and + `add-ons <../../../packages.html#CGI-Erweiterungen>`__ + +.. _WhyshouldIstartwithaminimalimage: + +Why should I start with a minimal image? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +| To find out how Freetz works and what the menu looks like after + flashing the firmware for the first time, we recommend beginners a to + create a minimal configuration and flash that image. Support requests + regarding Freetz and it's packages will only be answered after you + have been able to upload a minimal image to your box. + +.. _DoIneedtoadjustmycomputerinanywaytocreateanimage: + +Do I need to adjust my computer in any way to create an image? +-------------------------------------------------------------- + +You can find instructions for you computer's settings +`HERE `__ + +.. _HowdoIcreatemyfirstminimalimage: + +How do I create my first minimal image +-------------------------------------- + +| Let's get this done even though you probably want to add more packages + later. +| But first we need to check a few things. + +- Which model do I have (7141, 7270, etc.)? +- How much RAM does my model have (16, 32 oder 64 MB)? +- `How big is the flash memory inside my box? (4, 8 or 16 + MB) <../../fritz_faq.html#WievielFlashhatmeineFritzBox7270>`__? +- Do I have a working LAN-cable? If the flashing process fails the only + way to recover your box is via LAN-cable (not WLAN). +- Do I have a backup of my current settings? (Settings → System → + Backup settings) +- Do I have the right recover image?. `​AVM FTP + server `__ → Box → x_misc → english → + …recoverimage…..exe (you need Windows execute) +- Do I need how to run the recovery file? If not, this link might help + `​Link to + AVM `__ or + this `​Offline + PDF `__ + from Router-FAQ. +- My Linux is configurated correctly and all `needed packages for + Freetz `__ are installed? +- Is my current firmware supported by Freetz? `'Supported devices and + firmwares' <../../../FAQ.html#WelcheBoxenundwelcheFirmwareswerdendurchFreetzunterst%C3%BCtzt:>`__ + +| Now we will create the minimal image: + +- These instructions are written for those that want to modify their + Fritzbox for the first time by using Freetz. +- We can not guarantee for the correctness of our instructions, nor do + we take responsibility for any damages caused to your device! +- By using Freetz, the functional range of your AVM FritzBox can be + expanded. +- Freetz is based on Linux and can be used on a Linux machine or run in + a so-called virtual machine. As most current users don't own a Linux + machine we will concentrate on the virtual machine. +- Freetz creates a new firmware image which can be upload to the box + via the offical AVM interface. + +You decide which packages will be included, the number is only limited +by your routers available memory. + +.. _StartingFreetz: + +Starting Freetz +~~~~~~~~~~~~~~~ + +| Now we start VirtualBox and select the correspondingnd VM-image. + Freetz-Linux will then start and you can login using: **freetz** and + **freetz** as username and password followed by the enter key each + time. + +.. figure:: /screenshots/226.png + :alt: + +.. figure:: /screenshots/227.png + :alt: + +The next step is to find out which ip is assigned to our Freetz-Linux +since we need it to get access via putty in the next step. To check, +type in: **ifconfig**. This should bring up the following text. + +.. code:: bash + + eth0 Link encap:Ethernet HWaddr 00:11:22:33:44:55 + inet addr:192.168.178.30 Bcast:192.168.178.255 Mask:255.255.255.0 + UP BROADCAST NOTRAILERS RUNNING MULTICAST MTU:1500 Metric:1 + RX packets:0 errors:0 dropped:0 overruns:0 frame:0 + TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:1000 + RX bytes:0 (0 Mb) TX bytes:0 (0 Mb) + +| As you can see, the virtual machine's ip address is + **192.168.178.30**. The ip address can differ from system to system, + that depends on the ip range of your system. If no ip address is shown + at all you have to check your computers or virtual machine's settings + and try again. + +| **IMPORTANT:** you can switch between the VM and Windows by using + **Right CTRL** +| We will use this right away to start + `​PuTTy `__ + +.. _StartingPuTTY: + +Starting PuTTY +~~~~~~~~~~~~~~ + +| Starting PuTTY.EXE on a Windows computer. You should see the following + picture where you enter the VM's (Freetz-Linux's) ip address and + confirm by clicking on **Open**. + +.. figure:: /screenshots/148.jpg + :alt: + +.. figure:: /screenshots/149.png + :alt: + +.. figure:: /screenshots/150.jpg + :alt: + +| The access data for PuTTy are login: **freetz** password: **freetz** +| Please be aware that the password is not shown while typing. After + connecting to the Freetz-VM you should update it by entering the + following commands: + + | **sudo apt-get update** (update the package lists) + | **sudo apt-get upgrade -d** (download updates) + | **sudo apt-get upgrade -y** (install updates) + +| Confirm each command by entering the administrator password + **freetz**. (If there should be a special inquiry for a certain + update, activate the system advisors packages and activate by hitting + ok). +| Next, enter the following command: + + | **svn + checkout**\ `​http://svn.freetz.org/branches/freetz-stable-2.0 `__ + +| This will download the newest stable Freetz source code (in this case: + version 2.0) from the subversion repository. Here you can find out if + a newer version has been released: + `​http://svn.freetz.org/tags/ `__. After + the download has finished you will see this message: **Checked out + revision xxxx**, e.g. xxxx=6526. Please look into FIRMWARES file for + supported firmwares. The release version can be out of date. +| Change directory by entering **cd freetz-stable** into your Freetz + directory and enter **make menuconfig**. + +.. _Settingsinmenuconfig: + +Settings in menuconfig +~~~~~~~~~~~~~~~~~~~~~~ + +| After entering the previous command you should the the following + screen: + +.. figure:: /screenshots/154.png + :alt: Mainpage + + Mainpage + +This is the acutal Freetz interface where you select your router. For +this tutorial we selected the 7270-V3. After selecting the router type, +exit menuconfig by selecting exit and hitting enter and confirm the +question with **Yes**. Then enter **make** and hit enter. Now you should +see this: + +.. figure:: /screenshots/156.png + :alt: + +The creation process will start. For the first time it might take a very +long time depending on your computer and internet connection since all +inital packages have to be downloaded. Once this is done the creation +process will be a lot faster if you make only small modifications. There +have been many warnings during the process but in the end there will be +a message that an image has been created. The corresponding image will +be created in the subfolder **images** of your Freetz directory. This +will be the final message: + +.. figure:: /screenshots/157.png + :alt: + +Now we have to copy the image to your computer. + +.. _Copyingtheimagetoyourcomputer: + +Copying the image to your computer +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +More informations can be found +`HERE `__ + +.. _ShutdownFreetz-Linux: + +Shutdown Freetz-Linux +~~~~~~~~~~~~~~~~~~~~~ + +You can now shot down your Ubuntu-Linux by typing: **sudo shutdown -h +now**.This command needs to be verified by typing in the administartor +password\ **freetz**. + +.. _Theflashingprocess: + +The flashing process +-------------------- + +.. figure:: /screenshots/78.jpg + :alt: + +| Once the image is on your computer you may start. But you need to make + sure to be prepared for the most unusual things to happen, e.g. that + the box does not function correctly after flashing. Therefore we urge + you to take precautions: + + | 1.) `Download <../../../Download.html>`__ the recover image for + your box: You can find the **Recover.exe** on AVM's `​FTP + site `__ + | 2.) Upgrade your router to the newest firmware. + | 3.) Have your access data at hand + | 4.) Backup your FritzBox settings + | 5.) Make sure you've set a password in the AVM-GUI. Even a simple + **0000** is sufficient, otherwise you won't be able to upload the + firmware + +| Now you are ready to go. Go to your FritzBox webinterface to update + your firmware, select the Freetz image and start the process. A notice + will show up informing you that the firmware you are about to upload + to your router is not an officially approved firmware which you have + to confirm. Then your router will restart in about 1-2 minutes. The + AVM webinterface should show up again and you can log into your box + again. Now you will have an additional Freetz interface which can be + accessed through `​http://fritz.box:81 `__. For + the first time you can log into it using **admin** and **freetz** but + you should change that password. +| Congratulations! Your first Freetz-Image is now on your box. + +.. _Links: + +Links +----- + +`An error occured, what now? `__ + +`What could my next image look +like? `__ + +| `Other information `__ diff --git a/wiki/help/howtos/common/newbie.rst b/wiki/help/howtos/common/newbie.rst new file mode 100644 index 0000000..a352681 --- /dev/null +++ b/wiki/help/howtos/common/newbie.rst @@ -0,0 +1,415 @@ +.. _ErsteSchrittemitFreetz: + +Erste Schritte mit Freetz +========================= + +| + +.. _FragenimVorfeld: + +Fragen im Vorfeld +----------------- + +.. _WasistFreetz: + +Was ist Freetz? +~~~~~~~~~~~~~~~ + +| Eine Beschreibung sowie eine kurzen historischen Überblick über Freetz + findet ihr `hier <../../../FAQ.html#WasistFreetz>`__. + +.. _WasbraucheichumeinFreetz-Imageerstellenzukönnen: + +Was brauche ich um ein Freetz-Image erstellen zu können? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +| 0.) Sichern wichtiger (Zugangs-)Daten, z.B. Internet Service Provider, + WLAN, VoIP, Telefonliste, etc. +| 1.) `​Aktuelles Recovery-Image `__ für + deine Box bereithalten z.B. + `​7170 `__ + oder + `​7270 `__. +| |Warning| Nach einem fehlgeschlagenen Firmware-Update kommst du nicht + mehr ins Internet, um dir ein Recovery-Image zu besorgen. +| 2a.) Ein natives Linux-Betriebssytem, z.B. + `​Ubuntu `__ (Einsteiger), Fedora + (Fortgeschrittener) oder Debian (Universalist). +| oder +| 2b.) Ein virtuelles Linux-Betriebssytem, z.B. + `​Freetz-Linux `__ + in einer virtuellen Maschine (z.B. + `​VirtualBox `__ oder + `​VMware Player `__) + installieren. (Alternativen: `​Ubuntu 10.04 LTS Abbild + 648MB `__ + (VMWare & VirtualBox), + `​speedlinux `__ + (coLinux als VM, 32bit) +| |Warning| Freetz-Linux steht seit Version 1.2 nur als Virtualbox OVA + Datei bereit. Wer es weiterhin unter VMWare laufen lassen möchte, + findet + `hier <../../../FAQ.html#WiebekommeichFreetzLinuxunterVMWarezumLaufen>`__ + ein paar Hinweise (ohne Gewähr). +| 3.) Einen SSH-Client wie z.B. + `​PuTTY `__, + damit kann man sich via SSH oder Telnet ins Freetz-Linux einloggen. +| 4.) Genügend Speicherplatz auf Festplatte für Betriebssystem-Updates, + lokalen Download-Ordner "freetz/dl" etc. (`​Limitierungen bei + Dateisystemen `__ + beachten). Minimum: 5GiB (VM), Bevorzugt: 10GiB (nativ). +| |Warning| Die folgende Beschreibung ist auf Freetz-Linux zugeschnitten. + +.. _Wassollteichbedenken: + +Was sollte ich bedenken? +~~~~~~~~~~~~~~~~~~~~~~~~ + +| Vergiss nicht, dass deine Box in erster Linie ein Router mit + Telefonanlage ist. Wenn Du die Firmware modifizierst, kann es + vorkommen, dass die Hauptfunktionen der Box dadurch beeinträchtigt + werden. Im Normalfall sollte dies nicht passieren, kann sich aber zum + Beipsiel dadurch äußern, dass sich die Box aufhängt oder unerwartet + neu startet. Bei der Paketauswahl solltest du folgende Regel befolgen: + Wenn Du nicht mehr als zwei Sätze zu einem Paket sagen kannst, dann + hat es auf Deiner Box nichts zu suchen! Sei bitte vorsichtig mit den + Patches. Nicht alle und nicht in jeder Kombination wirst Du sie + brauchen. +| Für den Anfang wird empfohlen von komplizierten Sachen, wie z.B. + "Replace Kernel" oder Einsetzen von eigenen Modulen, die Finger zu + lassen. Nicht alles, was cool klingt ist es in Wirklichkeit auch. + +.. _WassollmeinerstesFreetz-Imagekönnen: + +Was soll mein erstes Freetz-Image können? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +| Ihr solltet Euch folgende Frage stellen: **"Was will ich mit Freetz + erreichen?"** bzw. **"Was kann meine Box noch nicht und ich kann es + dann durch Freetz erreichen?"** +| Freetz ist keine Modifikation an sich, sondern eher eine + Entwicklungsumgebung, in der Modifikationen modular an der Firmware + der Box vorgenommen werden. Damit lassen sich sehr nette Sachen mit + der FritzBox anstellen, da man an das zu Grunde liegende Linux + herankommt und eigene Programme auf der Box ausführen kann. Die Liste + der Pakete spiegelt die bisherigen Bedürfnisse der Nutzer wieder. + Jeder kann sich seine Wunsch-Firmware selbst aus den bereits + vorhandenen Bausteinen (Paketen) zusammenstellen, eigene Pakete + hinzufügen oder nicht benötigte weglassen und so bewußt entscheiden, + welche Funktionen seine FritzBox künftig haben soll. +| Als erstes solltet Ihr Euch informieren welche Pakete in eurem neuen + Image überhaupt Sinn machen: `Liste der möglichen + Pakete <../../../packages.html>`__ und + `Erweiterungen <../../../packages.html#CGI-Erweiterungen>`__ + +.. _WarumsollteichmiteinemMinimal-ImageamAnfangstarten: + +Warum sollte ich mit einem Minimal-Image am Anfang starten? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +| Um überhaupt erstmal zu sehen was wie funktioniert und wie z.B. das + Menü nach dem ersten Flashen aussieht, empfiehlt es sich gerade für + Neueinsteiger eine Minimalkonfiguration herzustellen und einzuspielen. + Anfragen zur Fehlerbehebung und nach weiteren Plugins sind für das + Freetz-Team viel einfacher zu beantworten, wenn ein Minimal-Image + benutzt wird. + +.. _WiemußichmeinenPCeinstellendamiticheinImagebauenkann: + +Wie muß ich meinen PC einstellen damit ich ein Image bauen kann? +---------------------------------------------------------------- + +Hinweise zur Einstellung eures PC's findet ihr +`hier `__ + +.. _WiebaueichmeinersteseigenesImageMinimal-Image: + +Wie baue ich mein erstes eigenes Image (Minimal-Image) +------------------------------------------------------ + +| Also dann legen wir los und machen genau das was hier steht, auch wenn + eigentlich später mehr Pakete ins Image sollen. +| Vorher gilt es nochmal einen kurzen Check zu machen. + +- Welche Box besitze ich (7141, 7270, 7390, usw.)? +- Wieviel Arbeitsspeicher hat meine Box (16, 32, 64 oder 128 MB)? +- `Wie groß ist der Flash-Speicher meiner Box (4, 8 oder 16 + MB) <../../fritz_faq.html#WievielFlashhatmeineFritzBox7270>`__? +- Habe ich ein LAN-Kabel das funktioniert ? Sollte was schief gehen + kann die Box nur über den LAN Anschluß gerettet werden (mit Wlan ist + das nicht möglich) +- Habe ich ein Backup der bestehenden Konfiguration gemacht? + (Einstellungen → System → Einstellungen sichern) +- Ich habe das korrekte Recover Image für meine FritzBox. `​AVM FTP + Server `__ → Box → x_misc → z.B deutsch + → …recoverimage…..exe (zum Ausführen wird Windows benötigt) +- Ich weiß wie ich das Recover im Fall eines Falles durchführe? Wenn + nicht hilft dieser `​Link zu + AVM `__ + oder diese `​Offline + PDF `__ von + Router-FAQ. +- Mein Linux ist konfiguriert und alle für `Freetz benötigten + Pakete `__ sind eingespielt? +- Die aktuelle Firmware meiner Box wird von Freetz unterstützt? + `Unterstütze Boxen und + Firmwares <../../../FAQ.html#WelcheBoxenundwelcheFirmwareswerdendurchFreetzunterst%C3%BCtzt:>`__ + +| Nun geht es ans Bauen des Minimal-Images: + +- Diese Anweisung ist für alle die geschrieben, die zum ersten Mal Ihre + Fritzbox mit FREETZ modifizieren wollen. +- Wir geben hier keinerlei Garantie für die Richtigkeit unserer + Beschreibung oder eine Gewährleistung für evtl. auftretende Schäden + die Aufgrund unserer Beschreibung entstehen können! +- Mit Freetz kann der Funktionsumfang von AVM FritzBox Routern + erweitert werden. +- Das Freetz-Buildsystem ist Linux basierend und kann entweder nativ + unter Linux oder in einer virtuellen Maschine ausgeführt werden. Da + die meisten PCs mit dem Betriebssystem Windows ausgeliefert werden + konzentrieren wir uns in dieser Beschreibung auf den Fall virtuelle + Maschine. +- Freetz erstellt ein neues Firmwareimage, welches wie eine offizielle + Firmware von AVM direkt über das Webinterface der FritzBox in den + Router geladen werden kann. Welche Programmpakete das Image enthalten + soll entscheidet ihr selbst. Die Auswahl ist nur durch den freien + Platz im Flash des Routers begrenzt. + +.. _StartenvonFreetz: + +Starten von Freetz +~~~~~~~~~~~~~~~~~~ + +| Nun starten wir das Programm VirtualBox und wählen über + Datei→Appliance importieren das heruntergeladene Image aus + (freetz-linux-1.3.1.ova). Das Image wird jetzt für die Nutzung in + VirtualBox vorbereitet. Dieser Schritt kann ein wenig dauern. Falls + euer PC einen Prozessor mit mehr als einem Kern hat, dann könnt ihr + über Ändern→System→Prozessor die Anzahl Prozessoren der virtuellen + Maschine erhöhen. Desweiteren solltet ihr, wenn Virtual Box einen + Fehler bezüglich der Konfiguration meldet auf Ändern klicken und die + Einstellungen kontrollieren. Danach kann man das Einstellungsfenster + wieder schließen und die virtuelle Maschine starten. Nach dem Start + von Freetz-Linux meldet ihr euch mit dem Benutzer **freetz** und + Passwort **freetz** an und bestätigt jede Eingabe mit der Returntaste. + (Hinweis: Bei der Eingabe des Passwortes werden die Zeichen nicht auf + dem Bildschirm angezeigt.) + +.. figure:: /screenshots/226.png + :alt: + +.. figure:: /screenshots/227.png + :alt: + +.. _PuTTYstarten: + +PuTTY starten +~~~~~~~~~~~~~ + +| Als nächstes starten wir Putty am PC. Putty ist hier zu finden: + `​Putty-Download `__ +| Als nächstes sollte folgendes Bild erscheinen. +| Dort einmalig auf der linken Seite **Window**\ →\ **Translation** + auswählen und in der Auswahlliste auf der rechten Seite **UTF-8** + auswählen. Auf der linken Seite dann wieder **Session** auswählen und + rechts den Button **Save** drücken. Damit kann Putty auch die Umlaute + richtig anzeigen. +| Zum Verbinden gebt ihr dann **freetz-linux** als Host Name eurer VM + (Freetz-Linux) ein und bestätigt das ganze mit **Open**. + +.. figure:: /screenshots/148.jpg + :alt: + +.. figure:: /screenshots/149.png + :alt: + +.. figure:: /screenshots/150.jpg + :alt: + +| Die Zugangsdaten für PuTTy sind die gleichen wie oben. (Auch hier wird + bei der Passwort-Eingabe kein Echo angezeigt.) +| So, nachdem ihr PuTTy mit Freetz-Linux verbunden habt solltet ihr + Freetz-Linux auf den aktuellen Softwarestand bringen. Dazu gebt ihr + folgende Befehle ein: + + | **sudo apt-get update** (Paketlisten auf den neuesten Stand + bringen) + | **sudo apt-get -d upgrade** (Updates herunterladen) + | **sudo apt-get -y upgrade** (Updates installieren) + +Die nun folgenden Abfragen werden durch Eingabe des Passwortes +**freetz** bestätigt. (Sollte eine Abfrage nach einem Update erscheinen, +dann bitte **die Pakete des Systembetreuers** aktivieren und mit **OK** +bestätigen). Solltet Ihr folgende Fehlermeldung sehen:\ **hostname +konnte nicht aufgelöst werden**, dann kontrolliert bitte die +Netzwerkkonfiguration und prüft ob eure virtuelle Maschine eine +IP-Adresse bekommen hat. Zum Überprüfen bitte folgenden Befehl in der VM +eingeben: **ifconfig** + +.. code:: bash + + eth0 Link encap:Ethernet Hardware Adresse xx:xx:xx:xx:xx:xx + inet Adresse:192.168.XXX.203 Bcast:192.168.XXX.255 Maske:255.255.255.0 + inet6-Adresse: XXXX::XXXX:XXXX:XXXX:XXXX/XX Gültigkeitsbereich:Verbindung + +| Wie auf dem Auszug zu sehen hat die VM die **192.168.XXX.203** als IP + bekommen. Die IP kann aber von System zu System anders lauten, das ist + Abhängig vom IP-Bereich eures Systems. Sollte euch jedoch dort gar + keine IP angezeigt werden, müsst ihr die Einstellungen eures PC's bzw. + von VirtualBox erneut überprüfen. + +.. _FreetzSourcenauschecken: + +Freetz Sourcen auschecken +~~~~~~~~~~~~~~~~~~~~~~~~~ + +| Als nächstes gebt ihr folgenden Befehl ein: + +.. code:: bash + + svn checkout http://svn.freetz.org/branches/freetz-stable-2.0 + +Nun wird der aktuelle stabile Freetz Source Code (hier: Version 2.0) aus +dem Subversion Repository geladen. Unter folgendem Link kann geprüft +werden, ob es ggf. bereits ein aktuelleres stable Release verfürbar ist: +`​http://svn.freetz.org/tags/ `__. Wenn der +Download beendet ist steht folgende Abschlußmeldung auf dem Bildschirm: +**Checked out revision xxxx**, z.B. xxxx=10388. Tatsächlich trägt +freetz-2.0 die Revision 10388 (man beachte "Last Changed Rev: 10388" +bzw. "Letzte geänderte Rev: 10388"). + +Auch nach dem Erscheinen (Release) von freetz-2.0 (stable) wird Freetz +ständig verbessert. Danach wechselt man mit **cd freetz-stable-2.0** in +das Freetz Verzeichnis und gibt **make menuconfig** ein. + +.. _Einstellungenimmenuconfig: + +Einstellungen im menuconfig +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +| Nach dieser Eingabe solltet Ihr folgendes Bild sehen: + +.. figure:: /screenshots/154.png + :alt: Mainpage + + Mainpage + +Dies ist die Konfigurations-Oberfläche des Freetz-Buildsystems. Dort +wählt ihr im ersten Anlauf nur den Router aus für den das Image bestimmt +ist. Für dieses HowTo haben wir Beispielhaft die 7270_V3 gewählt. +Nachdem der zu freetzende Router ausgewählt wurde, (Hardware type + +**Enter** drücken + mit erneutem **Enter** zurück ins Main-Menu) beendet +man menuconfig über den Button **EXIT** (welches man durch drücken der +Pfeil nach Unten-Taste erreicht)und bestätigt das ganze mit **Yes**. +Anschließend gibt man auf der Kommandozeile der Konsole ein **make** +ein. Der Erstellungsvorgang beginnt nun und ihr solltet ein solches Bild +sehen: + +.. figure:: /screenshots/156.png + :alt: + +Beim ersten Build kann es je nach System und Internetanbindung sehr +lange dauern, weil alle benötigten Pakete erst einmal runtergeladen +werden müssen. Ist dies einmal geschehen und man passt in einem weiteren +Schritt seine Konfiguration nachträglich nochmal an geht es wesentlich +schneller. Während des Vorgangs gibt es etliche Warnungen. Am Ende +sollte dann aber eine Meldung ausgespuckt werden, dass das Image +erstellt worden ist. Das erstellte Image wird im Unterordner **images** +des Freetz Verzeichnisses abgelegt. Die Abschlussmeldung sieht wie folgt +aus: + +.. figure:: /screenshots/157.png + :alt: + +Nun müssen wir nur noch das Image auf den PC kopieren. + +.. _ImageaufdenPCkopieren: + +Image auf den PC kopieren +~~~~~~~~~~~~~~~~~~~~~~~~~ + +Info's findet ihr `hier `__. + +.. _Freetz-Linuxbeenden: + +Freetz-Linux beenden +~~~~~~~~~~~~~~~~~~~~ + +Euer Freetz-Linux könnt ihr entweder mit dem Befehl **sudo poweroff** +herunter fahren oder den Zustand der virtuellen Maschine abspeichern +indem ihr das VirtualBox Fenster schließt. Die Eingabe **sudo poweroff +ist wieder mit dem bekannten Passwort zu bestätigen.** + +.. _DerFlashvorgang: + +Der Flashvorgang +---------------- + +.. figure:: /screenshots/184.png + :alt: Startseite von Freetz + + Startseite von Freetz + +| Hat man das Image auf dem PC, kann es losgehen. Allerdings sollte man + sicherstellen, dass man für die unwahrscheinliche Situation präpariert + ist, daß die Box nach dem Flashvorgang nicht durchstartet. Hierfür + sollte man folgende Vorbereitungen unbedingt treffen: + + | 1.) Recover Image herunterladen: Die jeweilige **Recover.exe** + findet ihr auf der\ `​AVM FTP Seite `__ + | 2.) Router auf die aktuelle AVM-Firmware updaten. + | 3.) DSL-Zugangsdaten bereithalten + | 4.) Einstellungen der Fritzbox sichern + | 5.) Sicherstellen, dass ein Passwort im AVM-WebIF gesetzt ist. Ein + einfaches **0000** reicht, da sich sonst das neue Image nicht auf + die Box spielen lässt + +| Hat man dies getan, kommt der große Moment. Hierfür im Webinterface + der Fritzbox unter **System → Firmware-Update** das Image auswählen + und den Update-Vorgang starten. +| Nachdem die Firmware übertragen ist kommt nochmal ein Hinweis, daß es + sich um keine offizielle Firmware von AVM handelt, was bestätigt + werden muß. Danach sollte eure FB das Image einspielen und wieder + problemlos starten. +| **Hinweis:** Seit der AVM-Firmware ab der Version 6.5x kann man nicht + mehr so einfach ein selbst gebautes Freetz-Image über den oben + genannten Weg zur Fritzbox hochladen. Seit diesem Zeitpunkt akzeptiert + die Fritzbox nur noch signierte Firmewares. Mehr zu diesem Thema + findet ihr im `hier <../development/sign_image.html>`__ +| Das AVM-WebIF-Fenster zur Passwordeingabe sollte automatisch wieder + auf dem Bildschirm erscheinen. Sollte das AVM-WebIF nicht wieder + autom. gestartet werden, dann könnt ihr euch auch per Browser über + `​http://fritz.box `__ einloggen. Zusätzlich gibt es + jetzt auch das Freetz-WebIF welches über die URL + `​http://fritz.box:81 `__ erreichbar ist. Hier + loggt man sich mit **admin** und **freetz** ein und sieht jetzt das + neue Freetz-Webinterface. +| Glückwunsch! Euer erstes Freetz-Image befindet sich nun auf der Box. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +| `Es ist ein Fehler aufgetreten. Was nun? `__ +| `Wie könnte mein nächstes Image + aussehen? `__ +| `Sonstige Infos `__ +| `Wie bekomme ich Freetz Linux unter VMware™ zum + Laufen <../../../FAQ.html#WiebekommeichFreetzLinuxunterVMWarezumLaufen>`__ + +- Tags +- `howtos `__ + +Anhänge (1) +~~~~~~~~~~~ + +- `converted.gif `__\ `​ `__ + (4.8 KB) - hinzugefügt von *hauruck* `vor 6 + Jahren `__. + +Alle Anhänge herunterladen als: +`.zip `__ + +.. |Warning| image:: ../../../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/help/howtos/common/newbie/errors.rst b/wiki/help/howtos/common/newbie/errors.rst new file mode 100644 index 0000000..4aa04f2 --- /dev/null +++ b/wiki/help/howtos/common/newbie/errors.rst @@ -0,0 +1,70 @@ +.. _WasmacheichwennsichmeineBoxnichtFreetzenlässt: + +Was mache ich, wenn sich meine Box nicht Freetzen lässt +======================================================= + +| +| Falls etwas schief gegangen ist bitte nicht verzweifeln und ganz in + Ruhe die folgenden Punkte abarbeiten. Denn durch Freetz kann man eine + Box zwar ins Nirvana schicken aber nicht zerstören (zumindestens sind + uns bis dato noch keine Fälle bekannt in denen Freetz eine Box + zerstört hätte): + +.. _FAQslesenundTicketsdurchsuchen: + +FAQ's lesen und Tickets durchsuchen +----------------------------------- + +Als erstes durchstöbert ihr die bekannten Fehlermeldungen auf der +`FAQ-Seite <../../../../FAQ.html#BeimErstellentritteinFehleraufwasnun>`__ +und durchsucht die offenen `Tickets `__. + +.. _SuchfunktiondesIPPFbenutzen: + +Suchfunktion des IPPF benutzen +------------------------------ + +Wenn die FAQs nicht weiter helfen konnten, nachsehen ob die +`​Suchfunktion vom IPPF `__ +einen passenden Thread zu dem aufgetretenen Fehler hat. Falls sich auch +hier nichts findet, geht's mit dem nächsten Punkt weiter. + +.. _EinenneuenThreadimIPPFeröffnen: + +Einen neuen Thread im IPPF eröffnen +----------------------------------- + +Folgende Punkte sollten beim Eröffnen eines neuen Threads beachtet +werden: + +| 1.) Ein *aussagekräftiges Thema* wählen und im + `​IP-Phone-Forum `__ + den Thread aufmachen. +| 2.) Die Konfigurationsdatei + `.config <../../../../FAQ.html#Wofindeichdieseber%C3%BChmte.config-Datei>`__ + aus dem Freetz-Linux herunterladen und an das Posting anhängen. `Wo + und + Wie <../../../../FAQ.html#Wofindeichdieseber%C3%BChmte.config-Datei>`__ + man diese Datei findet, steht auch in den + `FAQ's <../../../../FAQ.html#Wofindeichdieseber%C3%BChmte.config-Datei>`__. +| 3.) Folgendes sollte in deinem Posting enthalten sein: + + | a.) Bezeichnung der FritzBox (z.B. 7170) + | b.) Verwendete Freetz-Version (Freetz-2.0, stable-branch oder + trunk, revision) + | c.) Welche Firmware/Labor-Version wolltest Du benutzen? + | d.) Welche Firmware war vor dem Flashen auf der Box? + | e.) Wurde während des Bauvorgangs eine Fehlermeldung angezeigt? + (mit Kontext posten, nicht nur eine Zeile!) + +| Hierzu ist es ratsam aufgetretene Fehler im PuTTY zu markieren und den + ganzen Inhalt als TXT oder als [code] **Fehlertext** `code `__ + im neu eröffnenten Thread zu integrieren. Beim Inhalt des Fehlertextes + solltet ihr frei nach dem Motto "zuviel ist besser als zu wenig" + verfahren. + +| Hinweis: Wenn möglich bitte keine Screenshots posten. + +**Wichtig:** Auf jeden Fall musst du die +`.config <../../../../FAQ.html#Wofindeichdieseber%C3%BChmte.config-Datei>`__ +an den neuen Thread anhängen. diff --git a/wiki/help/howtos/common/newbie/errors.rst.content b/wiki/help/howtos/common/newbie/errors.rst.content new file mode 100644 index 0000000..b6cc171 --- /dev/null +++ b/wiki/help/howtos/common/newbie/errors.rst.content @@ -0,0 +1,106 @@ +============================================== +wiki/help/howtos/common/newbie/errors..content +.. raw:: html + +
+ +.. raw:: html + +
+ +.. raw:: html + +
+ +.. rubric:: Was mache ich, wenn sich meine Box nicht Freetzen lässt + :name: WasmacheichwennsichmeineBoxnichtFreetzenlässt + +.. raw:: html + +
+ +.. rubric:: Inhaltsverzeichnis + :name: inhaltsverzeichnis + +#. `FAQ's lesen und Tickets + durchsuchen `__ +#. `Suchfunktion des IPPF + benutzen `__ +#. `Einen neuen Thread im IPPF + eröffnen `__ + +.. raw:: html + +
+ +| +| Falls etwas schief gegangen ist bitte nicht verzweifeln und ganz in + Ruhe die folgenden Punkte abarbeiten. Denn durch Freetz kann man eine + Box zwar ins Nirvana schicken aber nicht zerstören (zumindestens sind + uns bis dato noch keine Fälle bekannt in denen Freetz eine Box + zerstört hätte): + +.. rubric:: FAQ's lesen und Tickets durchsuchen + :name: FAQslesenundTicketsdurchsuchen + +Als erstes durchstöbert ihr die bekannten Fehlermeldungen auf der +`FAQ-Seite <../../../../FAQ.html#BeimErstellentritteinFehleraufwasnun>`__ +und durchsucht die offenen `Tickets `__. + +.. rubric:: Suchfunktion des IPPF benutzen + :name: SuchfunktiondesIPPFbenutzen + +Wenn die FAQs nicht weiter helfen konnten, nachsehen ob die +`​Suchfunktion vom IPPF `__ +einen passenden Thread zu dem aufgetretenen Fehler hat. Falls sich auch +hier nichts findet, geht's mit dem nächsten Punkt weiter. + +.. rubric:: Einen neuen Thread im IPPF eröffnen + :name: EinenneuenThreadimIPPFeröffnen + +Folgende Punkte sollten beim Eröffnen eines neuen Threads beachtet +werden: + +| 1.) Ein *aussagekräftiges Thema* wählen und im + `​IP-Phone-Forum `__ + den Thread aufmachen. +| 2.) Die Konfigurationsdatei + `.config <../../../../FAQ.html#Wofindeichdieseber%C3%BChmte.config-Datei>`__ + aus dem Freetz-Linux herunterladen und an das Posting anhängen. `Wo + und + Wie <../../../../FAQ.html#Wofindeichdieseber%C3%BChmte.config-Datei>`__ + man diese Datei findet, steht auch in den + `FAQ's <../../../../FAQ.html#Wofindeichdieseber%C3%BChmte.config-Datei>`__. +| 3.) Folgendes sollte in deinem Posting enthalten sein: + + | a.) Bezeichnung der FritzBox (z.B. 7170) + | b.) Verwendete Freetz-Version (Freetz-2.0, stable-branch oder + trunk, revision) + | c.) Welche Firmware/Labor-Version wolltest Du benutzen? + | d.) Welche Firmware war vor dem Flashen auf der Box? + | e.) Wurde während des Bauvorgangs eine Fehlermeldung angezeigt? + (mit Kontext posten, nicht nur eine Zeile!) + +| Hierzu ist es ratsam aufgetretene Fehler im PuTTY zu markieren und den + ganzen Inhalt als TXT oder als [code] **Fehlertext** `code `__ + im neu eröffnenten Thread zu integrieren. Beim Inhalt des Fehlertextes + solltet ihr frei nach dem Motto "zuviel ist besser als zu wenig" + verfahren. + +| Hinweis: Wenn möglich bitte keine Screenshots posten. + +**Wichtig:** Auf jeden Fall musst du die +`.config <../../../../FAQ.html#Wofindeichdieseber%C3%BChmte.config-Datei>`__ +an den neuen Thread anhängen. + +.. raw:: html + +
+ +.. raw:: html + +
+ +.. raw:: html + +
diff --git a/wiki/help/howtos/common/newbie/other.rst b/wiki/help/howtos/common/newbie/other.rst new file mode 100644 index 0000000..a230717 --- /dev/null +++ b/wiki/help/howtos/common/newbie/other.rst @@ -0,0 +1,962 @@ +.. _SonstigeInfosfürNewbies: + +Sonstige Infos für Newbie's +=========================== + +Inhaltsverzeichnis +^^^^^^^^^^^^^^^^^^ + +#. `Wie könnte mein nächstes Image + aussehen: `__ + + #. `VirtualBox starten `__ + #. `Einstellen des menuconfig `__ + #. `Image auf den PC kopieren `__ + #. `Freetz-Linux beenden `__ + #. `Der Flashvorgang `__ + + #. `Konfiguration der neuen + Plugins `__ + + #. `Freetz-WebIF einstellen `__ + #. `USB-Stick erstellen `__ + #. `SWAP-File einrichten `__ + #. `Samba `__ + + #. `Einstellungen `__ + #. `Erweitert `__ + #. `Freigaben `__ + + #. `VSFTPD `__ + + #. `Einstellungen `__ + #. `Rechtevergabe für FTP-User (wie ändere ich die Beispieldateien + aus dem ZIP + richtig) `__ + + #. `FTP-User erzeugen `__ + + #. `Wie ist der + adduser-Befehl:; `__ + + #. `AVM-Firewall `__ + + #. `Einstellungsseite `__ + +#. `Sonstige Fragen `__ + + #. `Wie muß ich meinen PC einstellen damit ich ein Image bauen + kann `__ + + #. `Linux `__ + #. `Windows `__ + + #. `Image auf den PC kopieren `__ + #. `Wie kann man eine gefreetzte Fritzbox + updaten `__ + #. `Einige Programme haben ähnliche Funktionen, welche sind + performanter? `__ + +#. `Linux-Befehle (Zielgruppe + Newbies) `__ + + #. `allgemeine Linux-Befehle `__ + #. `Der vi Editor `__ + +| + +.. _WiekönntemeinnächstesImageaussehen:: + +Wie könnte mein nächstes Image aussehen: +---------------------------------------- + +Freetz-Image inkl. AVM-Firewall CGI, SAMBA und VSFTP + +.. _VirtualBoxstarten: + +VirtualBox starten +~~~~~~~~~~~~~~~~~~ + +| `Wie starte ich VirtualBox <../newbie.html#StartenvonFreetz>`__. + Dieser Pkt. kann aber übersprungen werden, wenn VirtualBox und Putty + noch gestartet sind. + +.. _Einstellendesmenuconfig: + +Einstellen des menuconfig +~~~~~~~~~~~~~~~~~~~~~~~~~ + +| Zur Erstellung eines neuen Image müssen wir wieder das **menuconfig** + aufrufen. + +.. figure:: /screenshots/154.png + :alt: Mainpage + + Mainpage + +| In dieser Oberfläche wählt man dann den zu patchenden Router und die + gewünschten Pakete aus. Für dieses HowTo haben wir Beispielhaft die + 7270_v3 gewählt. + +.. figure:: /screenshots/259.png + :alt: Auswahl des Boxtyps + + Auswahl des Boxtyps + +| +| Dieses Image soll am Ende folgende Elemente enthalten und darum wählen + wir nun folgende Punkt aus: +| **a.) unter other patches:** + +- **FREETZMOUNT : Patch AVMs hotplug script, …..** +- **Automount filesystem** einfach gesetzt lassen. +- **ext2** (linux Dateisystem) +- **ext3** (linux Dateisystem) +- **fat** /Windows Dateisystem) +- **NTFS** (Muß aktivier sein wenn man NTFS formatierte Platten an der + Box nutzen möchte) + +.. figure:: /screenshots/92.png + :alt: Fielsystem + + Fielsystem + +| **b.) unter Packages —> Web interface —>** + +- **AVM-Firewall 2.0.4_rc5** (Web-Oberfläche um die von AVM dem User + vorenthaltene integrierte Firewall zu administrieren) +- **spindown-cgi 0.2** (Web-Oberfläche für sg3_utils (Sleep-Modus für + angeschlossene Festplatten) +- **Syslogd CGI** (Log-Datei zum Auswerten vom System z.B. bei der + Fehlersuche) + +.. figure:: /screenshots/94.png + :alt: + +| **c.) unter unter Packages —> Standard packages —>** + +- **Samba suite** —> **version (samba 3.0.37)** (dies ist der Server + der den Zugriff auf die USB Medien an der FB von Windows erlaubt). + + - Ebenfalls müssen folgende Haken bei folgenden Unterpunkten gesetzt + werden: + + - **smbd** (file sharing server) + - **nmbd** (NetBIOS name server) + - **smbclient** + - **nmblookup** + +.. figure:: /screenshots/260.png + :alt: Samba suite + + Samba suite + +- **vsftp 3.0.2** (FTP-Server). Hier bitte keine weiteren Haken bei den + Unterpunkten setzen. + +.. figure:: /screenshots/164.png + :alt: vsftp + + vsftp + +| Weitere Pakete und Patches incl. der Beschreibungen findet ihr auf der + Website : `wiki:packages <../../../../packages.html>`__ +| Nachdem alle Pakete und Patches ausgewählt sind, beendet man Freetz + und gibt auf der Kommandozeile der Shell Konsole **make** ein. +| Der Rest des Buildprozesses läuft wieder wie gewohnt ab. Die + Abschlussmeldung sieht dann wie folgt aus: + +.. figure:: /screenshots/157.png + :alt: + +| +| Nun müssen wir das Image auf den PC kopieren. + +.. _ImageaufdenPCkopieren: + +Image auf den PC kopieren +~~~~~~~~~~~~~~~~~~~~~~~~~ + +| Info's findet ihr `HIER `__ + +.. _Freetz-Linuxbeenden: + +Freetz-Linux beenden +~~~~~~~~~~~~~~~~~~~~ + +| Euer Ubuntu-Linux könnt ihr nun mit dem Befehl : **sudo shutdown -h + now** sauber herunter fahren. Diese Eingabe muß jedoch noch mit einem + **freetz** erneut bestätigt werden. + +.. _DerFlashvorgang: + +Der Flashvorgang +~~~~~~~~~~~~~~~~ + +| Info's zum Flashforgang sind `HIER <../newbie.html#DerFlashvorgang>`__ + zu finden. + +.. _KonfigurationderneuenPlugins: + +Konfiguration der neuen Plugins +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Nachdem eure FB wieder problemlos angelaufen ist, könnt ihr wie gewohnt +per Browser über `​http://fritz.box `__ einloggen. +Zusätzlich gibt es aber jetzt die Freetz Oberfläche, die über den Link +`​http://fritz.box:81 `__ erreicht werden kann. +Hier loggt man sich mit **admin** und **freetz** ein. Danach sieht man +folgende Maske: + +.. figure:: /screenshots/261.png + :alt: Startbildschirm + + Startbildschirm + +| + +.. _Freetz-WebIFeinstellen: + +Freetz-WebIF einstellen +~~~~~~~~~~~~~~~~~~~~~~~ + +| 1.) Wechseln nach ⇒ **Freetz** ⇒ **Einstellungen** und dort unter + **Freetzmount** den Haken bei **Partitionsname (falls vorhanden) als + Mountpoint nutzen**. + +.. figure:: /screenshots/262.png + :alt: Freetzmount + + Freetzmount + +2.) Wechseln nach ⇒ **Freetz** ⇒ **Weboberfläche** und kontrollieren ob +dort folgende Haken gesetzt sind: + +- **Untermenü** +- **Hauptseite** +- **mit Knöpfen** +- **Box-Info** +- **Freetz-Info** + +.. figure:: /screenshots/263.png + :alt: Freetz-Weboberfläche + + Freetz-Weboberfläche + +| + +.. _USB-Stickerstellen: + +USB-Stick erstellen +~~~~~~~~~~~~~~~~~~~ + +Nun formatieren wir unseren USB-Stick oder USB-Festplatte am PC in +**NTFS**, und geben ihm den Namen **USB** und legen folgende Ordner +darauf an: + +- **admin** + + - **gast (Unterordner von admin)** + - **musik (Unterordner von admin)** + - **bilder (Unterordner von admin)** + - **filme (Unterordner von admin)** + - **dokumente (Unterordner von admin)** + +| Diesen so erstellten Stick stecken wir nun in den USB-Port der + Fritzbox und starten diese neu (reboot). +| Nach dem Reboot solltet ihr nun folgendes Freetz-Menu sehen: + +.. figure:: /screenshots/264.png + :alt: Neues Freetz-WebIF inkl gemounteten USB-Stick + + Neues Freetz-WebIF inkl gemounteten USB-Stick + +Ganz unten kann man nun sehen das der USB-Stick als **USB** +(/var/media/ftp/**USB** ) gemountet wurde. Sollte dort **uStor01** +stehen, müsst ihr die letzten Schritte nochmals kontrollieren. + +.. _SWAP-Fileeinrichten: + +SWAP-File einrichten +~~~~~~~~~~~~~~~~~~~~ + +| 1.) Wechseln nach ⇒ **Freetz** ⇒ **Einstellungen** +| 2.) unter **Swap** den Pkt. **Aktiviert** aktivieren. +| 3.) unter Pfad tragen wir nun folgendes ein: + **/var/media/ftp/USB/swapfile** +| 4.) und unter Größe : **20** ein. +| 5.) nun drücken wir den Button **Swap-Datei anlegen** +| 6.) Im nächsten Fenster sollte man jetzt sehen wie die SWAP-Datei + angelegt wird. + +.. code:: bash + + Erstelle leere Datei ... + 20+0 records in + 20+0 records out + Bereite Datei für Swap-Benutzung vor ... + Setting up swapspace version 1, size = 20967424 bytes + +| Dieses Fenster kann man danach einfach schließen. +| Sollte alles richtig eingestellt sein, kann man SWAP über den Button + Start nun starten. Die Anzeige **stopped** sollte nach **running** + wechseln. + +.. _Samba: + +Samba +~~~~~ + +.. _Einstellungen: + +Einstellungen +^^^^^^^^^^^^^ + +.. _Starttyp: + +Starttyp +'''''''' + +| alles auf **Automatisch** + +.. _Konfiguration:: + +Konfiguration: +'''''''''''''' + +- Samba security = Share +- Benutzername: ftpuser +- Passwort: \* \* \* \* \* \* (einfach leer lassen, Die Pkt. werden + trotzdem angezeigt) +- IP-Adresse: 192.168.178.1(255.255.255.0 +- Netbios Name: NAS +- Arbeitsgruppe: WORKGROUP +- Beschreibung: %h (Samba %v) ⇒ (ich würde diesen Inhalt löschen) +- OS Level für Election: 20 +- Haken bei Bevorzugter Master + +.. _Standardfreigaben: + +Standardfreigaben +''''''''''''''''' + +| Beide Haken setzen / gesetzt lassen + +.. figure:: /screenshots/79.png + :alt: Samba- Einstellungen + + Samba- Einstellungen + +.. _Erweitert: + +Erweitert +^^^^^^^^^ + +| In das leere Feld kopiert man nun folgenden Text: + +.. code:: bash + + log level = 1 + socket options = TCP_NODELAY IPTOS_LOWDELAY + read raw = yes + write raw = yes + oplocks = yes + max xmit = 65535 + dead time = 15 + getwd cache = yes + lpq cache = 30 + unix charset = UTF-8 + +.. _Freigaben: + +Freigaben +^^^^^^^^^ + +| In das leere Feld kopiert man nun folgenden Text: + +.. code:: bash + + /var/media/ftp/USB USB-Stick 1 0 - USB-Stick + /var/media/ftp/USB/data/gast Gast 1 0 - Gast + /var/media/ftp/USB/data/musik Musik 1 0 - Musik + /var/media/ftp/USB/data/filme Filme 1 0 - Filme + /var/media/ftp/USB/data/bilder Bilder 1 0 - Bilder + /var/media/ftp/USB/data/dokumente Dokumente 1 0 - Dokumente + +Wir haben nun 6 Windows-Freigaben für unserem USB-Stick erzeugt. + +- **USB-Stick** (hier sieht man den gesamten Inhalt des Sticks) +- **Gast** (Freigegebener Ordner) +- **Musik** (Freigegebener Ordner) +- **Filme** (Freigegebener Ordner) +- **Bilder** (Freigegebener Ordner) +- **Dokumente** (Freigegebener Ordner) + +.. figure:: /screenshots/265.png + :alt: Samba-Freigaben am PC + + Samba-Freigaben am PC + +| Diese können nun per **Netzlaufwerk verbinden** mit dem PC verbinden. +| Hier eine kurze Beschreibung der Parameter anhand der ersten Freigabe: + (Diese Einträge sind jedoch nur möglich, wenn die aktuelle + `Sicherheitsstufe <../../../../FAQ.html#KonfigurationinderaktuellenSicherheitsstufenichtverf%C3%BCgbar>`__ + auf 0 gesetzt ist bzw. wird.) +| **Beispiel:** + +.. code:: bash + + /var/media/ftp/USB USB-Stick 1 0 - USB-Stick + +.. + + | **/var/media/ftp/USB** dies ist der interner Pfad zum USB-Stick + | **/USB-Stick** das ist das Freigegebenes Verzeichnis + | **USB-Stick** Name der Freigabe der in der Windows-Netzwerkumgebung + als Freigabe angezeigt wird. + | **1** Gast-Zugang erlaubt, kein Benutzername und Passwort nötig + | **0** Schreib-Lesezugriff aktiviert + | **-** Grund für das - ????? (Muß rein, Begründung folgt !) + | **USB-Stick** Kommentar + +Da wir als Netbiosname **NAS** vergeben hatte, lautet der Zugriff von +Windows auf die Freigabe nun: + +.. code:: bash + + \\NAS\USB-Stick + +.. figure:: /screenshots/266.png + :alt: Freigabe am PC mounten + + Freigabe am PC mounten + +| + +.. _VSFTPD: + +VSFTPD +~~~~~~ + +.. _Einstellungen1: + +Einstellungen +^^^^^^^^^^^^^ + +.. _Starttyp1: + +Starttyp +'''''''' + +Starttyp auf **Automatisch** stellen + +.. _FTPServer: + +FTP Server +'''''''''' + +| Server binden an Port: 2121 (Dieser Port muß von 21 nach 2121 geändert + werden da sich sonst VSFTPD nicht starten läßt. Möchte man den Port 21 + benutzen, muß der AVM-FTP (ftpd) gestoppt werden (inetd muß dazu unter + Dienste auf stopped gesetzt werden). + + | **Achtung, das Stoppen von ftpd hat aber Auswirkung auf einige + AVM-Dienste** + +.. _Zugriff: + +Zugriff +''''''' + +Folgende Haken müssen wie folgt gesetzt sei: + +- **Anonymes FTP =** Nein +- **Lokale Benutzer =** **Ja** +- **chroot jail =** **Ja** +- **Erlaube root login =** Nein +- **Erlaube ftpuser login =** Nein + +.. _ErweiterteEinstellungen: + +Erweiterte Einstellungen +'''''''''''''''''''''''' + +- Anzahl Verbindungen: + + - insgesamt : **25** + - pro Client : **25** + +- Passive Ports: + + - Minimum : **0** + - Maximum : **0** + +- Sonst sind keine Haken gesetzt + +.. figure:: /screenshots/267.png + :alt: Zugriff und Erweiterte Einstellungen + + Zugriff und Erweiterte Einstellungen + +.. _ZusätzlicheKonfigurationsoptionenfürExperten: + +Zusätzliche Konfigurationsoptionen (für Experten) +''''''''''''''''''''''''''''''''''''''''''''''''' + +| In das leere Feld kopiert man nun folgenden Text: + +.. code:: bash + + user_config_dir=/var/media/ftp/USB/vsftp_user_conf + +.. _Logging: + +Logging +''''''' + +- Logging aktivieren = angehakt +- zusätzlich Protokoll-Log = leer + +- Syslog = deaktiviert +- Datei = aktiviert mit folgendem Text: + + .. code:: bash + + /var/media/ftp/USB/logs/vsftpd.log + +.. figure:: /screenshots/268.png + :alt: Zusätzliche Konfig. + Logging + + Zusätzliche Konfig. + Logging + +.. _ÄnderungenamUSB-Stick: + +Änderungen am USB-Stick +''''''''''''''''''''''' + +Folgende Ordner müssen noch direkt auf dem USB-Stick erzeugt werden: + +- **logs** +- **vsftp_user_conf** + +In diese Ordner kopieren wir nun die Datein aus diesem +`ZIP `__ +wie folgt: + +- **logs** + + - syslog.log + - vsftpd.log + +- **vsftp_user_conf** + + - admin + - gast + - mary + - paul + +| Das Kopieren der Dateien kann ja nun Dank gestartetem SAMBA direkt + passieren ohne das der USB-Stick von der Box getrennt werden muß. + +.. _RechtevergabefürFTP-UserwieändereichdieBeispieldateienausdemZIPrichtig: + +Rechtevergabe für FTP-User (wie ändere ich die Beispieldateien aus dem ZIP richtig) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +| Ob ein Neuer FTP-User Schreibrechte erhalten soll oder nur lesen + können soll wird wie folgt geregelt: +| Jeder Benutzer erhält eine Datei mit seinem Dateinamen im Ordner + **/var/media/ftp/USB/vsftp_user_conf/** + +.. _InhaltderDatei:: + +Inhalt der Datei : +'''''''''''''''''' + +| 1.) Mary und Admin: **write_enable=yes** (User hat Schreibrechte und + Löschrechte) +| 2.) Gast : **write_enable=no** (User hat **keine** Schreibrechte) +| 3.) Paul : Über diese Benutzerdateien ist es auch möglich einzelne + FTP-Befehle + (`​Liste `__) für + Benutzer zu verbieten. Hierzu fügt man folgende Zeile in die Datei ein + und entfernt die Befehle die der User nicht ausführen darf: + +.. code:: bash + + cmds_allowed=ABOR,ACCT,ALLO,APPE,AUTH,CDUP,CWD,DELE,EPRT,EPSV,FEAT,HELP,LIST,MDTM,MKD,MODE,NLST,NOOP,OPTS,PASS,PASV,PBSZ,PORT,PROT,PWD,QUIT,REIN,REST,RETR,RMD,RNFR,RNTO,SITE,SMNT,STAT,STOR,STOU,STRU,SYST,TYPE,USER + +So mit darf Paul Dateien auf den FTP kopieren und Verzeichnisse anlegen, +jedoch diese nicht wieder löschen. Also muß folgendes in der Datei +stehen: + +.. code:: bash + + cmds_allowed=ABOR,ACCT,ALLO,APPE,AUTH,CDUP,CWD,EPRT,EPSV,FEAT,HELP,LIST,MDTM,MKD,MODE,NLST,NOOP,OPTS,PASS,PASV,PBSZ,PORT,PROT,PWD,QUIT,REIN,REST,RETR,RNFR,RNTO,SITE,SMNT,STAT,STOR,STOU,STRU,SYST,TYPE,USER + +.. + + | **DELE** (Delete file), **RMD** (Remove a directory) wurden aus dem + oben angegebenen String gelöscht. + | Sollte etwas immer noch nicht gehen, dann den Router einfach + nochmal neu starten.(Reboot der FritzBox). + +.. _FTP-Usererzeugen: + +FTP-User erzeugen +~~~~~~~~~~~~~~~~~ + +| 1.) **Telnet-Dienst** unter Freetz ⇒ Dienste starten. +| 2.) `Putty starten <../newbie.html#PuTTYstarten>`__ und sich per + telnet mit der Box verbinden (nicht per ssh) + + Putty wird wie folgt eingestellt: + +.. figure:: /screenshots/87.jpg + :alt: + +.. + + Nach drücken von **Open** und Eingabe folgender Daten **[ login: root + ]** und **[ Password: freetz ]** solltet ihr folgendes Bild sehen: + +.. figure:: /screenshots/88.jpg + :alt: + +| +| 3.) Nach dem Einloggen können wir nun beginnen FTP-User anzulegen. + +.. _Wieistderadduser-Befehl:: + +Wie ist der adduser-Befehl:; +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + | ``adduser -h '''Verzeichnis''' '''Benutzername'''`` + + | **Verzeichnis**: Ordner auf dem Stick, der dem Benutzer + zugeordnet werden soll, z.B. **/var/media/ftp/USB/** + | **Benutzername**: Name des Benutzers + +| Beim Erstellen des Benutzers wird danach gleich das Passwort + abgefragt. Dieses muss zweimal eingegeben werden, und es wird dabei + nichts am Bildschirm angezeigt, auch keine Sterne. + +.. _FTP-UserfürunserImageanlegen:: + +FTP-User für unser Image anlegen: +''''''''''''''''''''''''''''''''' + +| Erzeugen wollen wir nun folgende User: + +- **admin** +- **paul** +- **mary** +- **gast** + +Hierzu werden nun folgende Befehle in Putty eingegeben (Bitte auf Groß +und Kleinschreibung achten): + +admin + + +.. code:: bash + + adduser -h /var/media/ftp/USB admin + +paul + + +.. code:: bash + + adduser -h /var/media/ftp/USB/data paul + +mary + + +.. code:: bash + + adduser -h /var/media/ftp/USB/data mary + +gast + + +.. code:: bash + + adduser -h /var/media/ftp/USB/data/gast gast + +| So sollte z.B. die Meldung für admin im Putty-Fenster aussehen: + +.. code:: bash + + /var/mod/root # adduser -h /var/media/ftp/USB admin + adduser: /var/media/ftp/USB: Operation not permitted + Changing password for admin + New password: + Bad password: too short + Retype password: + Password for admin changed by root + +| Die Meldung ``Operation not permitted`` kommt, wenn es sich um ein + Dateisystem mit FAT oder NTFS Dateisystem handelt. + +| Wenn man das Paßwort erneut wegen Falscheingabe ändern will, verwendet + man dazu den Befehl ``passwd``\ **``Benutzername``**. Man wird dann + wieder zweimal nach dem neuen Paßwort gefragt. +| Einen Benutzer löschen kann man mit dem Befehl + ``deluser``\ **``Benutzername``**. +| In jedem Fall müssen die Änderungen mit dem Befehl **modsave all** + wieder gespeichert werden. +| Anzeigen kann man die Datei mit dem Befehl **cat /var/tmp/passwd**. +| Nun melden wir uns noch mit folgendem Befehl von der Putty Konsole ab: + +.. code:: bash + + exit + +.. _AVM-Firewall: + +AVM-Firewall +~~~~~~~~~~~~ + +.. _Einstellungsseite: + +Einstellungsseite +^^^^^^^^^^^^^^^^^ + +1.) Seite wechseln über den Pkt. Forwarding). 2.) FTP-Port freigegeben +siehe Bilder). + +.. figure:: /screenshots/85.jpg + :alt: + +Nach eingabe der Zahlen (siehe Oben) einfach auf **Hinzufügen** drücken +und das Ergenbins sollte wie Folgt aussehen: + +.. figure:: /screenshots/86.jpg + :alt: + +| Um diese Einstellung nun endgültig zu speichern einfach den Haken + (Blinkendes Kästchen) setzen und den Reeboot der Box abwarten. + +.. _SonstigeFragen: + +Sonstige Fragen +--------------- + +.. _WiemußichmeinenPCeinstellendamiticheinImagebauenkann: + +Wie muß ich meinen PC einstellen damit ich ein Image bauen kann +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. _Linux: + +Linux +^^^^^ + +Bei Fragen zu Linux bitte `hier <../install.html>`__ nachsehen + +.. _Windows: + +Windows +^^^^^^^ + +| Für die Installation braucht ihr einen virtuellen PC (z.B. VirtualBox) + sowie ein Linux-System wie z.B.:Freetz-Linux: +| 1.) + `​VirtualBox-Player `__ +| downloaden und über die Setup.exe installieren. +| 2.) + `​Freetz-Linux `__ + herrunterladen und danach nach **C:\Freetz-Linux** kopieren. +| 3.) VirtualBox starten + +.. figure:: /screenshots/269.png + :alt: VirtualBox starten + + VirtualBox starten + +| 4.) VirtualBox-Image (freetz-linux-1.3.1.ova) einbinden über Datei ⇒ + Appliance für Import ⇒ freetz-linux-1.3.1.ova (einfach durchklicken + bis die Datei importiert wird.) + +.. figure:: /screenshots/270.png + :alt: Image Importiert + + Image Importiert + +| 5.) VM starten über doppelklick auf **freetz-linux** +| 6.) Solltet ihr folgenden Fehler beim starten haben: + +.. figure:: /screenshots/271.png + :alt: Fehler beim starten + + Fehler beim starten + +müßt ihr die VB noch auf Eure Netzwerkkarte einstellen: + +.. figure:: /screenshots/272.png + :alt: Netzwerkkarte ändern + + Netzwerkkarte ändern + +.. _ImageaufdenPCkopieren1: + +Image auf den PC kopieren +~~~~~~~~~~~~~~~~~~~~~~~~~ + +| Es gibt mehere Arten das fertige Image auf den PC zu kopieren: + + | **a.) per FTP und !!TotalCommander:** + +| Den aktuellen TotalComander findet ihr auf der Homepage vom + `​TotalCommander `__ +| Als nächstes müssen wir die Ip-Adresse des Freetz-Linux ermitteln und + das machen wir über den Befehl **ifconfig** in der + Freetz-Linux-Umgebung: + +.. figure:: /screenshots/102.png + :alt: + +Als nächstes installieren wir den TotalCommander auf dem PC und starten +diesen dann. Die Freewaremeldung muss mit dem drücken der entsprechenden +Zahl (hier im Bsp. die 1.) bestätigt werden. Durch das drücken entstehen +keine weiteren Kosten! + +.. figure:: /screenshots/103.jpg + :alt: + +| Nun richten wir die FTP-Verbindung im TC (TotalCommander) ein: + +.. figure:: /screenshots/104.jpg + :alt: + +.. figure:: /screenshots/105.jpg + :alt: + +.. figure:: /screenshots/106.jpg + :alt: + +.. figure:: /screenshots/107.jpg + :alt: + +.. figure:: /screenshots/108.jpg + :alt: + +.. + + | **b.) per SFTP und WinSCP:** + +| Hier nun der Weg per SFTP: +| Besorgt Euch einen SFTP-Client, z.B. + `​WinSCP `__. +| Ihr benötigt die IP-Adresse Eures virtuellen Freetz-Linux, diese + erfährt man durch + +.. code:: bash + + ifconfig + +| Nach Start von WinSCP kann man im Ameldefenster die erforderlichen + Daten eingeben: +| Rechnername: eben ermittelte IP-Adresse +| Portnummer: 22 +| Benutzername: freetz +| Kennwort: freetz +| Protokoll: SFTP +| Nach erfolgreicher Verbindung navigiert man in einer NC-artigen + Ansicht zum entsprechenden /images Verzeichnis und kopiert sich die + Firmware mit **F5 Kopieren**. +| Nach erfolgreicher Verbindung navigiert man in einer NC-artigen + Ansicht zum entsprechenden /images Verzeichnis und kopiert sich die + Firmware mit **F5 Kopieren**. + + | **c.) Using a mapped network drive:** + +Freetz-linux has samba configured by default, which allows you to map +the freetz-linux drive as a network drive in Windows. + +.. figure:: /screenshots/275.png + :alt: Map freetz-linux as netwrok drive + + Map freetz-linux as netwrok drive + +| For username and password: freetz/freetz + +.. _WiekannmaneinegefreetzteFritzboxupdaten: + +Wie kann man eine gefreetzte Fritzbox updaten +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Eine genaue Beschreibung und alles was ihr wissen müßt zu diesem Thema +steht in den `FAQ <../../../../FAQ.html>`__'s + +.. _EinigeProgrammehabenähnlicheFunktionenwelchesindperformanter: + +Einige Programme haben ähnliche Funktionen, welche sind performanter? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + | FTP: bftpd ist nicht zu empfehlen wenn Wert auf hohen + Datendurchsatz gelegt wird da man damit nur in etwa die Hälft der + möglichen Leistung erreicht. Vsftpd wird von sehr vielen benutzt + und wird daher empfohlen + | WWW: Wer Webseiten auf seiner Box hostet sollte vom Apache Abstand + nehmen wenn es in Richtung Produktivsystem geht. Lighttpd stellt + eine gute Alternative dar. + | Webfilter: Oft wird gefragt ob man Privoxy zum Seitenfiltern nutzen + kann. Die Antwort ist ja, die bisherige Empfehlung war das aber + eher zu vermeiden und stattdessen Iptables zu nutzen weil sonst das + gesamte Internet langsamer läuft. + +| + +.. _Linux-BefehleZielgruppeNewbies: + +Linux-Befehle (Zielgruppe Newbies) +---------------------------------- + +.. _allgemeineLinux-Befehle: + +allgemeine Linux-Befehle +~~~~~~~~~~~~~~~~~~~~~~~~ + +| Einen Grundsatz an Linux-Befehlen findet Ihr: +| a.)\ `​Link 1 `__ +| b.)\ `​Link + 2 `__ + +.. _DerviEditor: + +Der vi Editor +~~~~~~~~~~~~~ + +| +| **Vi** ist ein Texteditor in der Freetz/Linux-Umgebung. Mit diesem + können Dateien und Skripte bearbeitet werden. +| Dieses Möglichkeit sollte aber von Newbies **nur nach Anweisung oder + in Zusammenarbeit mit einem erfahrenen Freetz-Nutzer/Linux-Profi** + genutzt werden, da es sehr einfach ist die Box mit **vi nicht mehr + erreichbar zu machen**. Für die Konfigurationsdateien im Flash der + FritzBox muss das Skript nvi genutzt werden, da man diese Dateien + nicht direkt mit vi bearbeiten kann. Mit **nvi** geht es noch + schneller die Box lahm zu legen! **nvi** überschreibt auch, wenn man + nichts geändert hat. +| a.) `​Kurzanleitung Editor + "vi" `__ +| b.) `​Hilfe aus dem + IPPF `__ +| c.) `​weitere + Homepage `__ + +Anhänge (2) +~~~~~~~~~~~ + +- `user.sh `__\ `​ `__ + (392 Byte) - hinzugefügt von *oliver* `vor 8 + Jahren `__. +- `vsftpd.zip `__\ `​ `__ + (1.0 KB) - hinzugefügt von *gismotro* `vor 5 + Jahren `__. + “User Dateien für VSFTPD” + +Alle Anhänge herunterladen als: +`.zip `__ diff --git a/wiki/help/howtos/common/shutdown.rst b/wiki/help/howtos/common/shutdown.rst new file mode 100644 index 0000000..097df71 --- /dev/null +++ b/wiki/help/howtos/common/shutdown.rst @@ -0,0 +1,141 @@ +.. _RechnerimNetzherunterfahren: + +Rechner im Netz herunterfahren +============================== + +Mit den Freetz-Paketen wol und callmonitor existieren einfach zu +konfigurierende Möglichkeiten, einen Rechner im Netz mittels +Mobiltelefon oder Freetz-Webinterface zu starten. Ebenso einfach +bedienbar ist das Herunterfahren eines Rechners hinter einer Fritzbox. +Die Konfiguration ist keine Hexerei, es funktioniert sowohl für Linux- +als auch Windows-Rechner. + +.. _Voraussetzungen: + +Voraussetzungen +--------------- + +- Fritzbox mit den Paketen "dropbear" (inklusive ssh-client) und + "callmonitor" + +.. _KonfigurationderFritzbox: + +Konfiguration der Fritzbox +-------------------------- + +.. _Keyserzeugen: + +Keys erzeugen +~~~~~~~~~~~~~ + +- Auf Fritzbox einloggen, Ordner erstellen und Public Keys erzeugen: + + :: + + mkdir /var/tmp/flash/ssh + cd /var/tmp/flash/ssh + dropbearkey -t rsa -f rsakey_box + +- Public Key extrahieren: + + :: + + dropbearkey -y -f rsakey_box | grep ssh > rsakey_box.pub + +.. _KonfigurationderFritzboxfürherunterzufahrendenLinux-Rechner: + +Konfiguration der Fritzbox für herunterzufahrenden Linux-Rechner +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- Auf Fritzbox Datei (etwa /var/tmp/flash/ssh/shutdown_linuxrechner.sh) + mit folgendem Inhalt erzeugen (Manche Distributionen verhindern in + der Standardeinstellung, dass der Benutzer "root" sich einloggen + kann. Ändere dies oder, ersetze "root" am besten durch einen + Benutzer, der aus Sicherheitsgründen nur die Rechte zum + Herunterfahren des Rechners hat): + +:: + + ssh -i /var/tmp/flash/ssh/rsakey_box root@ "shutdown -h now" + +- Füge als abschließende Konfigurationsmaßnahme auf der Fritzbox + folgende Zeile zu den Listenern des Callmonitors hinzu: + +.. code:: bash + + in:request ^ ^ HOME=/mod/root && /var/tmp/flash/ssh/shutdown_linuxrechner.sh + +.. _KonfigurationderFritzboxfürherunterzufahrendenWindows-Rechner: + +Konfiguration der Fritzbox für herunterzufahrenden Windows-Rechner +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- Auf Fritzbox Datei (etwa + /var/tmp/flash/ssh/shutdown_windowsrechner.sh) mit folgendem Inhalt + erzeugen, durch den Windows-Benutzernamen ersetzen: + + :: + + ssh -i /var/tmp/flash/ssh/rsakey_box @ "shutdown -s" + +- Folgende Zeile zu den Listenern des Callmonitors hinzufügen: + + .. code:: bash + + in:request ^ ^ HOME=/mod/root && /var/tmp/flash/ssh/shutdown_windowsrechner.sh + +.. _KonfigurationdesherunterzufahrendenLinux-Rechners: + +Konfiguration des herunterzufahrenden Linux-Rechners +---------------------------------------------------- + +- Public-Key (ja genau, jenen den wir vorhin extrahiert haben) von + Fritzbox auf Zielrechner kopieren und authorisieren (evt. root durch + /home/ ersetzen, dann auch dafür sorgen, dass dieser + Benutzer die Rechte hat, den Rechner runterzufahren): + + :: + + cat rsakey_box.pub >> /root/.ssh/authorized_keys + +- OpenSSH-Server installieren und starten. + +.. _KonfigurationdesherunterzufahrendenWindows-RechnersgetestetunterWindowsXP: + +Konfiguration des herunterzufahrenden Windows-Rechners (getestet unter Windows XP) +---------------------------------------------------------------------------------- + +- Public-Key von Fritzbox auf Zielrechner kopieren, in + "authorized_keys" umbenennen und im Ordner c:\Dokumente und + Einstellungen\benutzername\.ssh\\ ablegen. Auf dem Rechner des Autors + musste der Ordner (des vorangestellten Punktes wegen) im Terminal + angelegt werden (mkdir .ssh). + +- `​Openssh `__ installieren. + +- Konfigurationsdatei c:\programme\openssh\etc\sshd_config anpassen. + Folgende Werte korrigieren: + + .. code:: bash + + StrictModes no + RSAAuthentication yes + PubkeyAuthentication yes + AuthorizedKeysFile .ssh/authorized_keys + +Nun kann der Rechner mittels Anrufen der im Listener des Callmonitors +eingegebenen Rufnummer gestartet werden. Es funktioniert auch über das +Freetz-Webinterface, Extras, Testanruf. + +.. _Bemerkungen: + +Bemerkungen +----------- + +- Der herunterzufahrende Rechner muss in /mod/root/.ssh/known_hosts + eingetragen sein. Am einfachsten erreichst du das dadurch, dass du + dich einmal von der Fritzbox aus mit dem Rechner über ssh verbindest. + +- Damit die erstellten Dateien nicht durch einen Neustart der Fritzbox + verlorengehen, muss noch der Befehl "modsave flash" ausgeführt + werden. diff --git a/wiki/help/howtos/common/user.rst b/wiki/help/howtos/common/user.rst new file mode 100644 index 0000000..e3ce52f --- /dev/null +++ b/wiki/help/howtos/common/user.rst @@ -0,0 +1,151 @@ +.. _Benutzerdauerhaftinderpasswdspeichern: + +Benutzer dauerhaft in der passwd speichern +========================================== + +.. _BeschreibungFreetz-1.2.x: + +Beschreibung (Freetz-1.2.x) +--------------------------- + +Benutzer können mit dem Busybox-Applet +`​adduser `__ angelegt +werden. Beispielhaft werden wir jetzt einen Benutzer "freetzuser" +erstellen. Er wird der Gruppe *users* zugeordnet. Sein Heimverzeichnis +soll */var/media/ftp sein*. Falls es dem Benutzer möglich sein soll sich +auf der Box via telnet/ssh anzumelden, muss ihm eine Login-Shell +zugewiesen werden. Dies geschieht durch den Parameter ``-s /bin/sh``. +Der Parameter -g (GECOS field) ist eine Beschreibung des Benutzers. + +|Warning| Dieses Feld darf nicht auf *box user* oder *ftp user* gesetzt +werden, da der Benutzer sonst beim Neustart verloren geht. + +.. code:: bash + + adduser freetzuser -G users -h "/var/media/ftp" -g "freetzuser" [-s /bin/sh] + +Anschließend kann ein Password für den Benutzer gesetzt werden: + +.. code:: bash + + root@fritz:/var/mod/root# adduser freetzuser -G users -h "/var/media/ftp" -g "freetzuser" + Changing password for freetzuser + New password: + Retype password: + Password for freetzuser changed by root + +Dieses Verfahren ist für jeden weiteren Benutzer zu wiederholen. Nachdem +die gewünschten Benutzer angelegt wurden sind die Änderungen noch +rebootfest abzuspeichern. Dies geschieht durch die folgenden Befehle: + +.. code:: bash + + modusers save + modsave flash + +Die Benutzer können wie folgt überprüft werden: + +.. code:: bash + + root@fritz:/var/mod/root# cat /etc/passwd + root:x:0:0:root:/mod/root:/bin/sh + nobody:x:100:1000:nobody:/home/nobody:/bin/false + ftpuser:any:1001:0:ftp user:/var/media/ftp:/bin/sh + freetzuser:x:1002:100:freetzuser:/var/media/ftp:/bin/sh + +.. _BeschreibungFreetz-1.1.x: + +Beschreibung (Freetz-1.1.x) +--------------------------- + +Erzeugen einer User.sh auf der USB-Platte und diese beim Systemstart per +rc.custom (/var/media/ftp/uStor01/user.sh) einlesen lassen. + +.. _OriginalbeiträgezumHowTo: + +Originalbeiträge zum HowTo +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +| 1.) `​Original Post aus dem + IPPF `__ +| 2.) `​Original Post aus dem + IPPF `__ + +.. _Vorgehen: + +Vorgehen +~~~~~~~~ + +| 1.) Man speichert den Inhalt des Nachfolgenden Textes als User.sh auf + seinen PC + +.. code:: bash + + cat > /var/tmp/passwd << 'EOF' + root:x:0:0:root:/mod/root:/bin/sh + ftpuser:any:1000:0:ftp user:/var/media/ftp:/bin/sh + ftp:x:1:1:FTP account:/home/ftp:/bin/sh + User1:x:1001:1001:Linux User,,,:/var/media/ftp/uStor01/User1:/bin/sh + User2:x:1002:1002:Linux User,,,:/var/media/ftp/uStor01/User2:/bin/sh + User3:x:1003:1003:Linux User,,,:/var/media/ftp/uStor01/User3:/bin/sh + EOF + chmod 644 /var/tmp/passwd + +2.) Man ruft die passwd seiner Box im Rudi-Shell-Menu auf (cat +/var/tmp/passwd) + +` `__ + +| 3.) man öffnet die User.sh und ersetzt den user1 bis user3 durch seine + Einträge aus der Rudi-Shell +| (einfach copy & paste). + +4.) Datei speichern und auf den USB-Datenträger kopieren. + +` `__ + +5.) Folgenden Eintrag in der rc.custom erzeugen (Pfad und Dateiname +entpsrechend anpassen): + +.. code:: bash + + /var/media/ftp/uStor01/user.sh + +` `__ + +6.) Eintrag mit übernehmen sichern und FritzBox neu starten. + +| Wenn Ihr alles Richtig gemacht habt und ich in diesem HowTo nichts + vergessen habe sollten Eure +| User nun in der passwd erhalten bleiben. + +.. _Alternative: + +Alternative +~~~~~~~~~~~ + +Man kann die Einträge aus 1.) auch direkt in die rc.custom schreiben. +Die Benutzer und Passwörter müssen natürlich auch in diesem Fall +angepasst werden. + +Anhänge (4) +~~~~~~~~~~~ + +- `Editor.JPG `__\ `​ `__ + (36.1 KB) - hinzugefügt von *gismotro* `vor 9 + Jahren `__. +- `rc.coustom.JPG `__\ `​ `__ + (50.8 KB) - hinzugefügt von *gismotro* `vor 9 + Jahren `__. +- `Rudi.JPG `__\ `​ `__ + (96.1 KB) - hinzugefügt von *gismotro* `vor 9 + Jahren `__. +- `usb.JPG `__\ `​ `__ + (79.8 KB) - hinzugefügt von *gismotro* `vor 9 + Jahren `__. + +Alle Anhänge herunterladen als: +`.zip `__ + +.. |Warning| image:: ../../../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/help/howtos/common/wol.rst b/wiki/help/howtos/common/wol.rst new file mode 100644 index 0000000..866b342 --- /dev/null +++ b/wiki/help/howtos/common/wol.rst @@ -0,0 +1,92 @@ +|| **In Überarbeitung** + +.. _WakeonLanWoLmitderFritzbox: + +Wake on Lan (WoL) mit der Fritzbox +================================== + +.. _MöglichkeitenderNutzungvonWoL: + +Möglichkeiten der Nutzung von WoL +--------------------------------- + +Freetz bietet hier mehrere Möglichkeiten der Nutzung: + +- Weboberfläche (`wol-cgi <../../../packages/wol.html>`__) +- Callmonitor +- Shellscripte + +Standardmäßig wird hierzu das ether-wake Applet der busybox verwendet. +Bei Problemen kann mit dem optional auswählbaren +`wol <../../../packages/wol.html>`__ Binary getestet werden. + +.. _Callmonitor: + +Callmonitor +----------- + +TODO + +.. _Shellscripte: + +Shellscripte +------------ + +.. _WakeonLAN-Skript: + +Wake on LAN-Skript +~~~~~~~~~~~~~~~~~~ + +Um nicht über die Fritzbox-Weboberfläche arbeiten zu müssen, sondern +schnell per Kommandozeile einen PC aufzuwecken, kann folgendes Skript +verwendet werden (einfach in die ``rc.custom`` eintragen): + +.. code:: bash + + # Skript für 'wakeup HOSTNAME' erstellen + # WAKEUPPATH should be root's homedirectory, if you want to login via + # ssh root@fritz.box './wakeup HOSTNAME' + WAKEUPPATH=~root + WAKEUP=$WAKEUPPATH/wakeup + echo 'PATH=$PATH:'$WAKEUPPATH >> ~root/.profile + touch $WAKEUP + chmod +x $WAKEUP + echo '#!/bin/sh' >> $WAKEUP + echo 'test -z "$1" && echo "Syntax: wakeup HOSTNAME" && return 1' >> $WAKEUP + echo '# Hostname auf Macadresse mappen (steht in /var/tmp/ethers)' >> $WAKEUP + echo 'macadresse=$(sed -ne "/[[:blank:]]$1$/{s/[[:blank:]].*$//p;q}" /var/tmp/ethers)' >> $WAKEUP + echo 'test -z "$macadresse" && echo "Macadresse von $1 wurde nicht gefunden!" && return 1' >> $WAKEUP + echo '# Etherwake ausführen' >> $WAKEUP + echo 'ether-wake $macadresse 2> /dev/null' >> $WAKEUP + +Ab sofort kann dann mit Hilfe von ``wakeup HOSTNAME`` ein PC aufgeweckt +werden. + +.. _WakeonLANautomatisierenüberSSH: + +Wake on LAN automatisieren (über SSH) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Um per Doppelklick oder durch einfaches Ausführen eines Skriptes einen +PC aufzuwecken, kann das unter `Wake on +LAN-Skript `__ erwähnte Skript über eine +`SSH <../../../packages/dropbear.html>`__-Verbindung ausgeführt werden. +Hier eine kurze Anleitung zur "vollständigen Automation" für +Wake-On-Lan: + +- `Wake on LAN-Skript einrichten `__ +- `SSH-Zugang ohne Passwort + einrichten <../../../packages/dropbear.html#SSH-ZugangohnePasswortHost-basedAuthentication>`__ +- `Wake on LAN-Skript + ausführen <../../../packages/dropbear.html#möglicheAnwendungvonssh>`__: + ``ssh -i root@fritz.box './wakeup '`` + +Kommentar: Sollte dieses Wake on LAN-Skript nicht in eines der Packages? +Oder gibt es das vielleicht schon? + +- Tags +- `howto `__ +- `wol `__ + +.. || image:: ../../../../chrome/wikiextras-icons-16/exclamation-red.png + diff --git a/wiki/help/howtos/development.rst b/wiki/help/howtos/development.rst new file mode 100644 index 0000000..4b90d7b --- /dev/null +++ b/wiki/help/howtos/development.rst @@ -0,0 +1,83 @@ +.. _DevelopmentHowtos: + +Development Howtos +================== + +Hier finden sich die Howtos für Entwickler - und solche, die es werden +wollen. "Entwickler" ist hier nicht mit "Freak" gleichzusetzen - für +jeden technisch Interessierten findet sich hier auch etwas +Interessantes. Einzelheiten finden sich hinter den Links. + +Inhaltsverzeichnis +^^^^^^^^^^^^^^^^^^ + +#. `Entpacken und Packen von + Firmware-Images `__ +#. `Patches in Freetz + einspielen `__ +#. `Example 3: + NZBGet `__ +#. `Example 2: + par2cmdline `__ +#. `Example 1: + Httptunnel `__ +#. `Ablauf eines + Firmware-Updates `__ +#. `Eigene Programme + kompilieren `__ +#. `Dynamische Bandbreitenanzeige per + SVG `__ +#. `Platz sparen im Dateisystem der + FritzBox `__ +#. `Flash-Partitionen im laufenden Betrieb + sichern `__ +#. `Release + Management `__ +#. `First steps - How to start your first freetz + package `__ +#. `Kernel konfigurieren und + kompilieren `__ +#. `Menükonfiguration + pflegen `__ +#. `ADAM2-Bootloader `__ +#. `Einstellungen speichern im + Urlader-Environment `__ +#. `Busybox konfigurieren und + kompilieren `__ +#. `Wie baue ich ein eigenes Paket für + Freetz? `__ +#. `Firmware-Image-Namen analysieren und + interpretieren `__ +#. `Developer + Information `__ +#. `Addon Paket + installieren `__ +#. `Paketverwaltung für + Freetz `__ +#. `Wie die FritzBox Manipulationen + erkennt `__ +#. `Shell Coding + Conventions `__ +#. `Package + Development `__ +#. `Erstellen einer GUI für Pakete in + Freetz `__ +#. `Flash + Partitionierung `__ +#. `Trac + Hooks `__ +#. `Package Developing - Advanced + Topics `__ +#. `Eigene Dateien in die Firmware + integrieren `__ +#. `Freetz + Build-Prozeß `__ +#. `Flash-Partitionen von außen mit FTP + sichern `__ +#. `libmodcgi.sh `__ +#. `Cross-Compiler / Toolchain + erstellen `__ +#. `Eigene Download-Toolchain + erstellen `__ +#. `Target/Native-Compiler-Toolchain + erstellen `__ diff --git a/wiki/help/howtos/development/adam2.rst b/wiki/help/howtos/development/adam2.rst new file mode 100644 index 0000000..b6ab5b0 --- /dev/null +++ b/wiki/help/howtos/development/adam2.rst @@ -0,0 +1,428 @@ +.. _ADAM2-Bootloader: + +ADAM2-Bootloader +================ + +ADAM2 ist ein Bootloader von Texas Intruments, der ähnliche Aufgaben +übernimmt wie ein BIOS beim PC. ADAM2 wurde in abgewandelter Form von +AVM in frühen FRITZBox-Modellen mit Kernel 2.4 eingesetzt, und wich noch +vor Einführung des Kernels 2.6 der aus Nutzersicht nahezu +funktionsgleichen Eigenentwicklung EVA. Wegen der vielen Parallelen +können beide Varianten als "der Bootloader" betrachtet werden, und +müssen nur in Einzelfällen unterschieden werden. + +Die Aufgaben des Bootloaders sind: + +- die Hardware zu initialisieren +- das Flash zu erkennen +- das RAM zu erkennen und zu prüfen +- die Partitionierung und grundlegende Werkseinstellungen zu verwalten +- eine Serielle Konsole bereitzustellen +- einen kleinen FTP-Server bereitzustellen (für Recovery) +- das Environment im TFFS zu verwalten +- das installierte Kernel zu booten + +.. _Bootloader-Backupanlegen: + +Bootloader-Backup anlegen +------------------------- + +Wer will kann sich ein Bootloader-Backup anlegen sollte sich aber +dringend merken von \*genau welcher\* Box das war (MAC-Adresse). Mehr +dazu um nächsten Abschnitt. + +Die Grösse des Bootloaders wird in der Environment-Variable ``mtd2`` +gespeichert, die fest im Bootloader selbst eingestellt ist. + +Aus Linux heraus hat diese Partition oft eine von ``2`` abweichende +Nummer die man mit folgendem Befehl ausfindig macht: + +.. code:: bash + + cat /proc/mtd + +Eine der dort genannten Partitionen nennt sich ``bootloader`` oder +``urlader``. Mit deren Nummer (hier z.B. ``3``) liesst man dann die +zugehörige ``mtdblock`` Device aus: + +.. code:: bash + + cat /dev/mtdblock3 > bootloader.bin + +Siehe auch `Flash-Partitionen im laufenden Betrieb +sichern `__. + +ADAM2 ist immer 64KB gross, EVA bei älteren Modellen 64KB, bei neueren +Modellen 128KB oder 256KB. Beim IAD 7570 ist die ``mtd2`` Partition zwar +256KB, die oberen 128KB sind jedoch leer (0xFF). Dies könnte auf eine +geplante (aber technisch nicht durchführbare) zweite Instanz des +Bootloaders deuten. Die Grösse des Bootloader sollte unbedingt beim +Entwickeln von Aliens beachtet werden. Ein nicht angepasstes ``install`` +Script für 64KB Bootloader zerstört einen 128KB Bootloader ohne +Vorwarnung! Das gilt dann auch für das AVM Webinteface - die Box wird +vorhersagbar zum Brick. + +Daher, wer Aliens entwickelt ohne das Environment des Zielgerätes +geprüft und mit dem ``install`` Script verglichen zu haben gefährdet +Geräte. Auch im Trunk sollten daher solche riskanten Experimente nur mit +Aufwand freischaltbar sein (implementiert: neuer nicht per GUI +aktivierbarer "Real Developer" Risiko-Modus). + +.. _Bootloaderüberschreiben: + +Bootloader überschreiben +------------------------ + +Kurz: **NEIN!** + +Der Bootloader enthält zahlreiche Informationen die eine Box einmalig +machen, bei vielen WLAN-Modellen auch Kalibrierung ohne die das Gerät +nicht mehr das selbe ist. + +Eine Übertragung ist daher grober Unfug. Auch wenn man diese Angaben +korrekt anpassen würde gibt es ein noch fataleres Problem: + +Selbst gleiche Modelle wurden je nach Verfügbarkeit mit +unterschiedlichen Flash- und RAM-Chips bestückt, besonders bei RAM auch +mit Bausteinen mit erheblich abweichenden Eigenschaften (wie Anzahl der +Banks und Timing etc.). Diese Unterschiede werden durch undokumentierte +Konfiguration im Bootloader gesichert. Bootloader-Updates von AVM +übertragen diese Information. + +**Ein Bootloader ist auch zwischen gleichen Modellen nicht gefahrlos +übertragbar!.** + +Ohne RAM funktioniert auch ein intakter Bootloader nicht ⇒ Brick. + +Um die oben erstellte Sicherung \*auf genau die selbe Box\* +zurückzuspielen \*wäre\* dies der Weg: + +.. code:: bash + + cat bootloader.bin > /dev/mtdblock3 + +Selbst dann besteht Brickgefahr. Die MTD Treiber blockieren nicht das +OS. Greift ein anderer Prozess währenddessen z.B. über die ADAM2 API auf +das Environment zu hängt sich das System eventuell während des Schreib- +oder Löschvorgangs auf ⇒ Brick. + +Grundsätzlich sollte man daher den Bootloader nur mit geeigneter AVM +Firmware schreiben oder wenn man über Werkzeuge zum debricken (EJTAG) +verfügt. + +.. _Bootloader-Befehle: + +Bootloader-Befehle +------------------ + +- Die über die Serielle Konsole nutzbaren Befehle findet man im `​ADAM2 + Shell `__ Artikel +- Die per FTP nutzbaren Befehle findet man im + `​TinyFTP `__ Artikel + +Bei einigen Modellen wurde aus Sicherheitsgründen die ADAM2 Shell +entfernt. Dies betrifft keine im freien Handel befindliches Geräte, nur +Providermodelle wie die FRITZBox Cable. + +Per FTP sind nur Modelle mit mindestens einem LAN-Port erreichbar (und +recoverbar). Daher eignen sich Modelle ohne LAN (einige Repeater) nicht +zum Experimentieren oder Freetzen. Grobe Faustregel: Wenn AVM eine +Recovery bereitstellt ist ein Gerät perfekt zum Freetzen geeignet. Dies +gilt nicht automatisch für von kleineren Providern bereitgestellte +Geräte! Diese können sogenannte "Provider Additive" enthalten die einen +Werksreset überstehen. Neuere Recoveries verweigern bei solchen Geräten +ihre Funktion, ältere Recoveries zerstören das Additiv (ohne "vor Ort" +Hilfe des Providers irreparabel). Dies dürfte der Grund sein warum AVM +die `​7570 +Recovery `__ +vom FTP-Server entfernte. + +Für AVM Speedports gab es nur werksinterne Recoveries für den +Telekom-Service. Diese wurden leider nie veröffentlicht. + +**Achtung: Im Netz kursieren auch defekte Speedport (sp2fr) Recoveries +die jeden Speedport bricken!** + +Speedports lassen sich mit geringem Aufwand auch sauber mit Freetz +recovern. Achtung: Howtos, Forenpostings und Windows Tools die MTD3/4 +clean empfehlen sind entweder uralt oder ein stümperhafter +Faulheitshack! Details zu den teilweise fatalen Folgen dieser fossilen +Unsitte folgen. + +.. _Bootloader-Quelltext: + +Bootloader-Quelltext +-------------------- + +ADAM2 wurde vielen Abnehmern von TI-Chips bereitgestellt und war +eigentlich nie quelloffen. Jeder Hersteller von Geräten modifizierte ihn +dann nach eigenen Bedürfnissen und hielt den Quelltext geschlossen, so +auch AVM. Auch Linksys nutzte eine modifizierte ADAM2 Version, leakte +den Quelltext aber versehentlich in einem wag54g Tarball. Damit änderte +sich nicht der proprietäre Status von ADAM2, er wurde aber zumindest in +der Linksys Variante "Visible Source" und kann +`​hier `__ +gestöbert werden. Diese Variante ist aber nur sehr beschränkt für die +FRITZBox aussagekräftig. + +Der Quelltext der AVM Variante von ADAM2 wurde nie veröffentlicht. +Lediglich die `​ADAM2 +API `__ +zum Erreichen des Environments war quelloffen. + +Der Nachfolger EVA basiert nicht auf ADAM2 und ist ein kompletter +funktionskompatibler Rewrite. Im Gegensatz zu ADAM2 unterstützt EVA +direkt komprimierte Kernels und wurde bisher auf mindestens 8 +Architekturen portiert. ADAM2 kam nur auf AR7-Modellen mit Kernel 2.4 +zum Einsatz. Alle von Freetz erzeugte Firmware benötigt Kernel 2.6 und +EVA. + +.. _AufbaudesBootloaders: + +Aufbau des Bootloaders +---------------------- + +Am Anfang eines jeden MIPS-Bootloaders befindet sich eine 8-Byte +"Signatur". In Wirklichkeit handelt es sich um Assembler-Code zur +Initialisierung des MIPS-Kerns die MIPS netterweise bittet nicht zu +ändern. Diese Befehlssequenz löscht 2 Hälften eines Debug-Registers +(Watchpoint Exception bei "Berührung" einer Adresse) die im +Normalbetrieb nicht genutzt werden und eignen sich auch wegen der Länge +hervorragend als zuverlässige Signatur. Siehe in diesem +`​Quelltext `__ +den Kommentar "First thing: clear watch regs". + +Für Litte Endian Modelle (AR7, UR8) assembliert dies zur Hexfolge +``00 90 80 40 00 98 80 40`` die immer am Anfang von ``mtd2`` (also vom +gesamten Flash) zu finden ist. Bei Big Endian Modellen (AR9, AR10, VR9, +Fusiv) entspricht es der 32-bit gespiegelten Hexfolge +``40 80 90 00 40 80 98 00`` und es befinden sich grundsätzlich weitere +Daten davor. Dies ist eine bis zu 1024 Bytes grosse +`​Vektortabelle `__ +oder Kalt- und Warmstartvektoren und Code zur Initialisierung der `​hier +ab Zeile +44 `__ +genannten EBU-Einheit. Beim AR9, AR10 und VR9 sind dies 24 Bytes (Offset +0x18), beim Fusiv die vollen 1024 Bytes (Offset 0x400). Diese Bytes +gehören natürlich zum Bootloader, die beiden "Signatur-Befehle" +verschieben sich dadurch lediglich. + +Zum Ausmaskieren von ARM Bootloadern sind diese Signaturen nicht +geeignet, da ARM Assembler andere Häufigkeitsverteilungen hat. Ein +zuverlässiger Detektor muss also zuerst ARM Code erkennen. Zum Erkennen +von Puma5 (ARM1176BE) Bootloadern gibt es auch eine zuverlässige +Assemblersequenz aus der Lowlevel-Initialisierung. Siehe in +`​diesem `__ +und +`​diesem `__ +Quelltext den Kommentar "Unlock CFG MMR region". Dies assembliert zu +Code der die Hexfolge ``08 61 1A 38 83 E7 0B 13 08 61 1A 3C`` enthält. +Diese Signatur ist leider nicht am Anfang des Bootloaders zu finden. Bei +der 6360 mit EVA 2070 befindet sie sich an Offset 0xF1AC, also noch in +den ersten 64KB von Puma5 EVA. Leider stehen keine Recoveries zum Testen +der Signatur zur Verfügung. Mit Puma5 EVA oder `​U-Boot +Code `__ +funktioniert sie einwandfrei. + +Ungeachtet des Offsets erkennt man EVA am 32-bit Wert ``0x00000002`` +oder ``0x00000003`` im jeweiligen Endian an Offset 0x580. Dies ist die +Version (fast immer 2, bei brandaktuellen Modellen auch 3) der EVA +`​Urlader-Konfig `__ +in der Teile der Grundeinstellungen im Werk eingetragen werden. Da +EVA-Images in Firmware keine Konfiguration enthalten ist der Wert dort +``0xFFFFFFFF``. Auch ADAM2 enthielt Teile dieser Einstellungen, jedoch +einkompiliert ohne festen Offset. + +In beiden Bootloadern sind 8 Default-MAC-Adressen ``00:04:0E:FF:FF:01`` +- ``00:04:0E:FF:FF:08`` einkompiliert, die Mindestanforderung für eine +Kommunikation, sollte die Urlader-Konfig defekt oder noch nicht +vorhanden sein. Seit Entwicklung des `​VoIP Gateway +5188 `__ findet man in EVA +auch das Environment der zweiten CPU fest einkompiliert, da diese über +kein eigenes Flash und daher auch kein TFFS und Environment verfügt und +über NFSRoot bootet. Environment-Variablen können intern nicht nur per +Name angesprochen werden sondern auch per numerischem Index. Dazu wurde +eine Liste numerisch ansprechbarer Variablen einkompiliert die immer mit +``AutoMDIX`` anfängt. Bei älteren ADAM2 Urladern endet die Liste nach +der letzten Variable (z.B. ``wlan_key``), bei neueren ADAM2 und EVA mit +``zuende``. Diese Tabelle ist quelloffen, da sie auch die Namenstabelle +des TFFS ist, siehe "#if defined(URLADER)" und "_TFFS_Name_Table" in +`​tffs.h `__. + +In allen Recoveries finden sich Fragmente von mindestens einem +Bootloader. In den Anfängen der FRITZBox wurde identische Firmware für +mehrere Modelle umbenannt, die Bootloader jedes dieser Modelle waren +jedoch noch nicht harmonisiert. Entsprechend findet man in Recoveries +aus dieser Zeit multiple Bootloader-Signaturen, da der modellspezifische +Teil mehrfach enthalten war, die modellübergreifende Teil jedoch nicht. + +Grundsätzlich ist die Extraktion eines funktionierenden Bootloaders aus +einer Recovery nicht möglich, da der Bootloader aus in der Recovery +enthaltenen Codefragmenten und auf der Box befindlichen +Werkseinstellungen intelligent zusammengebaut wird. Für die +Modellforschung ist die Auffindbarkeit der Fragmente und deren +Grundeinstellungen jedoch interessant. Von 436 analysierten Recoveries +waren etwa 14% ADAM2-MIPSLE, 50% EVA-MIPSLE und die restlichen 36% +EVA-MIPSBE. Bei allen Proben genügte die Auswertung der letzten 256 KB +des mit 7zip isolierbaren ``.data`` Segments jeder Recovery.exe. + +Bei der Umstellung auf Kernel 2.6 mussten einige Modelle auf EVA +umgestellt werden. Daher enthalten einige Firmware-Updates ein +``urlader.image`` und passende Programme zur Aktualisierung. In den +Anfängen gab es auch einige ADAM2-Updates, in denen der Dateiname +Modell- und Versionsinformation wie +``urlader.Fritz_Box_4MB.97.adam2.image`` enthielt. Im Gegensatz zu den +Fragmenten in Recoveries sind diese immer "fixed-size" Bootloader mit +Leerbereichen für zu übertragende Konfiguration. + +In ADAM2 ist die Version des Urladers als Integer in der Form +``urlader-version \x00 99 \x00`` einkompiliert, bevor es diese Variable +gab in der Form ``$ProjectRevision: 1.24 $``, auch mit mehrstelliger +Version wie in +`​diesem `__ +Bootlog. Bei EVA findet man die Version mit bis zu 3 Bytes Abstand vor +oder hinter der Zeichenfolge ``%d.%s`` und es muss 1000 hinzugezählt +werden. Ein zusätzliches ``M`` signalisiert eine modifizierte Variante. +In neueren Recoveries findet man zudem einen ``.eva`` Dateinamen, z.B. +für die 7360v2 mit EVA 2717M den String ``1717M.eva``. In 436 +analysierten Recoveries wurden ADAM2 der Versionen 1.20, 1.24, 50 bis 99 +und EVA der Versionen 1124 bis 2970 entdeckt (Stand 2014-01). Bei 5 EVA +1190 Recoveries 04.30/31 funktioniert die Versionserkennung nicht, die +Nummer ist dort irgendwo ab Offset 0xF000 relativ zur Signatur zu +finden. Diese müssen per MD5 erkannt werden. + +Der älteste in Firmware gefundene Bootloader, ADAM2 Version 1.24, wurde +in der bisher ältesten bekannten Firmware fritz.box_sl.05.01.63.image +vom 30. April 2004 (1 Monat nach Vorstellung der ersten FRITZBox auf der +CeBIT) entdeckt. 4 englische Bootloader der Version 1.20 sind neuer. +Durch getrennte Weiterentwicklung je Modell können ADAM2 Versionen nicht +kalendarisch sortiert werden. Der älteste in Firmware gefundene EVA +Bootloader Version 1124 befindet sich in einer frühen 7170 Recovery. +EVA-Versionen lassen sich auch erst ab etwa 1600 modellübergreifend +kalendarisch sortieren. + +Recoveries enthalten zwei weitere leicht zu findende Versionsangaben für +den Programmteil. Über die enthaltenen Firmwarekomponenten sagen sie +nichts aus. Je 2 Beispiele: + +- FW 3.37: + ``AVM Berlin recover-tool-version:[RECOVER:53][IO_CSP:11] compiled at Feb 18 2005 on 14:24:36`` +- FW 6.01: + ``AVM Berlin recover-tool-version:[RECOVER:378M][IO_CSP:248] compiled at Aug 23 2013 on 13:52:14`` +- FW 3.37: + ``[AVM Berlin Wizard Base Project, $ProjectRevision: 1.7 $, $Date: 2005/02/11 10:47:18Z $, kompiliert am Feb 14 2005 um 10:10:13]`` +- FW 6.01: + ``[AVM Berlin Wizard Base Project, $ProjectRevision: 1.63 $, $Date: 2011/07/04 11:49:20Z $, kompiliert am Jul 8 2013 um 11:45:45]`` + +Wie man sieht werden die Komponenten GUI (Wizard), Recover- und I/O-Teil +getrennt entwickelt und kompiliert. Eine heutige Recovery besteht also +aus mindestens 6 Projekten. Auf älteren FRITZBox CDs (z.B. 3020) +befindet sich eine recover.exe ohne integrierte Firmware (etwa 100KB) +der noch ein externes Image bereitgestellt werden musste. Das Programm +nennt sich ``ar7recover`` und stammt vom Februar 2004, 1 Monat vor +Vorstellung der ersten FRITZBox. Dies dürfte wohl die älteste +veröffentlichte Recovery-Lösung von AVM sein. + +Jede Recovery erkennt eine Box an der Urlader-Variable ``HWRevision``. +Da der Urlader keinen Zugriff auf den vollständigen Namen eines Modells +hat enthält jede Recovery eine Liste aller bis zum Erstellungsdatum +bekannten HWRevisions und deren Modellnamen. Die Liste befindet sich im +mit ``7zip`` isolierbaren ``.rdata`` Segment, bei älteren Recoveries bis +etwa 04.43 ist sie im ``.data`` Segment oder nicht vorhanden (bisher nur +bei einer 03.14). Zweck der Liste ist die menschenlesbare Anzeige des +gefundenen Modells in der GUI, unabhängig davon ob die Recovery passt. + +Die Liste ist bis zu 3 KB gross und fängt immer mit dem String +``unknown`` an, gefolgt von nullterminierten Paaren HWR / Boxname, mit +32-bit Padding je String. Der letzte Eintrag ist immer die +``FRITZ!Box SL`` und ihre HWR ``F``. Einige Listen ordnen ``unknown`` +die HWR ``K`` zu, bei anderen folgt direkt der erste Modellname. Die +Zuordnungpaare sind leider nicht konsistent. So enthält die Liste auch 2 +aufeinanderfolgende Namen oder Nummern, aber auch Firmennamen wie AVM +und Telekom. Sie muss also intelligent interpretiert werden. Obwohl die +HWR-Liste auch in aktuellen Recoveries enhalten ist pflegt AVM sie seit +HWR 190 nicht weiter. Recoveries höherer Werte haben zusätzlich den +Zuordnungseintrag für das unterstützte Modell im ``.data`` Segment, die +HWR gefolgt von mehreren Nullbytes gefolgt vom Namen. Da bei allen +neueren Recoveries das ``.data`` Segment mit der nullterminierten HWR +anfängt kann diese als Suchstring in den letzten 256 KB des Segments +genutzt werden. Ob und wie bei diesen Recoveries Fremdmodelle mit HWR > +190 erkannt werden muss noch geprüft werden. + +Bei der Analyse von 419 Recoveries mit obigem Wissen wurde `diese +Häufigkeitsverteilung `__\ `​ `__ +(tab delimited csv) ermittelt. Um Konsistenzfehler auszumaskieren +enthält die Liste nur Zuordnungen die in mindesten 5 Recoveries gefunden +wurden. Die Zähler für HWR > 190 wurden zuvor mit 10 multipliziert. + +Die HWR am Anfang des ``.data`` Segments ist Teil einer Struktur, die in +jeder Recovery mit Kernel 2.6 zu finden ist. Bei neueren Recoveries +findet sie sich an Offset 0, bei älteren an Offset 64 (0x40). Sie +Struktur enthält die unterstützte HWR an Offset 0, die Sprache an Offset +16 (0x10) und die mit Leerzeichen getrennte Liste der unterstützten +Brandings an Offset 32 (0x20). Dies ist sehr nützlich da z.B. EWE +Recoveries nicht am Dateinamen erkennbar sind. Ein vierter String dessen +genauer Zweck noch unklar ist fängt normalerweise an Offset 0x30 an und +verschiebt sich um jeweils 8 Bytes wenn der Brandings-String länger als +8 Bytes ist. Bei Congstar (und vermutlich auch Telekom) Recoveries +enthält er ``tcom``, bei allen anderen enthält er unabhängig von Sprache +und Anbieter immer ``avm``. + +In allen Kernel 2.4 Recoveries befindet sich am Ende des ``.data`` +Segments eine Reihe von mit einem oder mehreren Nullbytes terminierten +Strings. Dies ist eine 2- oder 3-stellige Zahl unbekannten Zwecks +(leider nicht die HWR) oder der String ``IE``, der optionale String +``en`` oder ``de`` und die Firmwareversion in punktierter Schreibweise +(z.B. ``29.04.01``) mit dem optionalen Zusatz +``-prerelease-``. Dahinter steht der optionale String +``avm`` oder ``freenet``, gefolgt von der optionalen Liste der +unterstützten Brandings. Lediglich die älteste bekannte Recovery mit +integrierter Firmware (03.14) enthält diese Information nicht. Sie ist +deutsch und kannte noch kein Branding. Die HWR muss bei Kernel 2.4 +Recoveries aus dem Urlader ermittelt werden. + +Der Vergleich der ermittelten Brandings mit den /etc Defaults bestätigt +die Zuverlässigkeit obiger Methoden, sowohl bei Release- als auch bei +Labor-Recoveries. Es existieren allerdings 2 Labor-Recoveries die einen +falschen Bootloader enthalten. Die Datei +``FRITZ.Box_2110.04.47-9457.recover-image.exe`` enthält einen HWR 130 +Bootloader einer nie auf den Markt gekommenen 2121, die Datei +``fritz.box_fon_wlan_7050.04.50.B.telnet.recover-image.exe`` den HWR 94 +Bootloader einer 7170. + +.. _BootloaderundFreetz: + +Bootloader und Freetz +--------------------- + +Da Freetz EVA benötigt sind einige Modelle schon vom Bootloader her +nicht für Freetz geeignet. Grundsätzlich sollte jede Box vor dem +Freetzen mit Originalfirmware aktualisiert werden. Dies aktualisiert +ggf. auch den Bootloader. Für einige ältere Modelle ist evtl. ein +`​Zwischenupdate `__ notwendig. + +Für folgende Modelle existiert kein EVA Update: + +- FRITZBox (alle Versionen) +- FRITZBox SL +- FRITZBox 2030 +- FRITZBox Fon (Deutsch A/CH Annex A+B) - mit Tricks evtl. deutsch oder + englisch aktualisierbar +- FRITZBox Fon ata (alle Versionen) +- FRITZBox Fon WLAN (Deutsch A/CH Annex A+B) - mit Tricks evtl. deutsch + oder englisch aktualisierbar + +Für einige dieser Modelle könnte Freetz ein EVA Update einer anderen Box +Alien patchen. Bei der FRITZBox SL und 2030 mit 2MB Flash und 8MB RAM +wird es wohl nie Freetz geben. + +Anhänge (1) +~~~~~~~~~~~ + +- `hwr.txt `__\ `​ `__ + (4.0 KB) - hinzugefügt von *hippie2000* `vor 4 + Jahren `__. + “Komplette HWR-Liste aller 419 bekannten Recoveries, CSV” + +Alle Anhänge herunterladen als: +`.zip `__ diff --git a/wiki/help/howtos/development/analyse_image_names.rst b/wiki/help/howtos/development/analyse_image_names.rst new file mode 100644 index 0000000..94dad96 --- /dev/null +++ b/wiki/help/howtos/development/analyse_image_names.rst @@ -0,0 +1,366 @@ +.. _Firmware-Image-Namenanalysierenundinterpretieren: + +Firmware-Image-Namen analysieren und interpretieren +=================================================== + +.. _Einleitung: + +Einleitung +---------- + +Dieses How-To ist nicht besonders wichtig, eher ein Abfallprodukt meines +Versuchs, mal herauszufinden, wie weit man kommt, wenn zur Manipulation +von Zeichenketten (Strings) nicht ständig externe Werkzeuge wie *grep*, +*sed*, *awk* oder gar *Perl* oder *Python* aufruft und somit Subprozesse +erzeugt, sondern man sich innerhalb der von der *Bash* zur Verfügung +gestellten Kommandos bewegt. Nebenbei macht mein Code-Schnipsel auch +noch etwas ansatzweise Nützliches, nämlich aus Dateinamen von +Firmware-Images Informationen über Hardware, Firmware-Version u.a. +abzuleiten. + +Wer sich schon mit Mühe an die Syntax von *sed* & Co. mit ihren +Regulären Ausdrücken gewöhnen mußte und von Parameter-Expansion und +Globbing innerhalb der Shell - ich benutze *Bash*, weil das unser +Standard in **Freetz** ist - noch wenig gehört hat, möchte sich +vielleicht einlesen unter: + +- `​Parameter-Expansion `__ +- `​Muster(erkennung) `__ +- `​erweiterte Mustererkennung mit Shell-Option + "extglob" `__ +- `​Prüfen und Setzen von Shell-Optionen mit + "shopt" `__ + +Jetzt aber direkt zum Skript-Code: + +.. _Skript-Code: + +Skript-Code +----------- + +:: + + #!/bin/bash + + analyse_image_name() + { + # Basic mode + local name + local product + local version + local fw_variant + # Verbose mode + local oem + local model + local model_no + local v_major + local v_minor + local v_labor + local annex + local language + # Helpers + local is_extglob + local verbose + + [ "$1" == "-v" ] && shift && verbose=y + + # Activate extended globbing if necessary (usually already active) + shopt -q extglob && is_extglob=y || shopt -s extglob + + # --------------------------------------------------------------- + # Step 1: clean up file name + # --------------------------------------------------------------- + + # General + name="$(basename "$1")" + name=${name%.image*} + # AVM + name=${name/[Ff][Rr][Ii][Tt][Zz]./FRITZ!} + name=${name/box/Box} + name=${name/fon/Fon} + name=${name/wlan/WLAN} + name=${name/_sl_/_SL_} + name=${name/_Labor/.Labor} + name=${name/annexa/AnnexA} + name=${name/annexb/AnnexB} + # Deutsche Telekom (ex T-Home, T-Com) + name=${name#fw_} + name=${name/V_v_/V.} + name=${name/V_v/V.} + name=${name/_W_/_W} + + # --------------------------------------------------------------- + # Step 2: split into logical parts + # --------------------------------------------------------------- + + product=${name%%.+([0-9]).+([0-9]).+([0-9])?(-+([0-9]))} + version=${name##$product.} + name=$product + product=${product%%.*} + fw_variant=${name##$product?(.)} + product=${product//_/ } + + # Determine more detailed parameters for verbose mode + if [ "$verbose" ]; then + [ "$product" == "${product#FRITZ!}" ] && oem="Telekom" || oem="AVM" + model=${product%%?(W)+([0-9])*} + model_no=${product##$model} + v_major=${version%%.*} + v_minor=${version##$v_major.} + v_minor=${v_minor%%-*} + v_labor=${version##*$v_minor?(-)} + [ "$fw_variant" == "${fw_variant/AnnexA/}" ] && annex=B || annex=A + language=${fw_variant/@(Annex?|Labor)?(.)/} + language=${language:-de} + fi + + # Reset extended globbing to previous state + [ "$is_extglob" ] || shopt -u extglob + + # --------------------------------------------------------------- + # Step 3: print result + # --------------------------------------------------------------- + + if [ ! "$verbose" ]; then + printf "%-30s %-15s %-22s\n" "$product" "$version" "$fw_variant" + return + fi + + echo "Firmware image: $(basename "$1")" + echo "Producer/OEM: $oem" + echo "Model: $model" + echo "Model no.: $model_no" + echo "Version: $version" + echo "Version major: $v_major" + echo "Version minor: $v_minor" + echo "Version labor: $v_labor" + echo "DSL annex: $annex" + echo "Language: $language" + } + + # Loop over Freetz firmware image names + for img in $(sed -nr "s/^[^#]*[\"']([^\"']+\.image)[\"'].*$/\1/p" Config.in | sort | uniq); do + # Print raw image names + echo "$img" + done + + # Loop over Freetz firmware image names + for img in $(sed -nr "s/^[^#]*[\"']([^\"']+\.image)[\"'].*$/\1/p" Config.in | sort | uniq); do + # Print basic info in tabular layout + analyse_image_name "$img" + done + + # Loop over Freetz firmware image names + for img in $(sed -nr "s/^[^#]*[\"']([^\"']+\.image)[\"'].*$/\1/p" Config.in | sort | uniq); do + # Print extended information in vertical layout + analyse_image_name -v "$img" + echo -e "\n-----------------------------------------------------------------------------\n" + done + +.. _DatenimRohformat: + +Daten im Rohformat +------------------ + +So sehen aktuell die Firmware-Namen aus, welche sich in der +`Config.in `__\ `​ `__ +befinden: + +.. code:: bash + + FRITZ.Box_2170.51.04.57.image + FRITZ.Box_6840_LTE.105.05.09.image + FRITZ.Box_7330.107.05.08.image + fritz.box_fon.06.04.33.image + fritz.box_fon_5010.annexa.48.04.43.image + fritz.box_fon_5050.12.04.31.image + FRITZ.Box_Fon_5124.AnnexA.en.57.04.76.image + FRITZ.Box_Fon_5124.AnnexB.en.56.04.76.image + FRITZ.Box_Fon_5140.AnnexB.43.04.67.image + fritz.box_fon.annexa.en.06.04.49.image + fritz.box_fon.en.06.04.49.image + fritz.box_fon_wlan.08.04.34.image + fritz.box_fon_wlan_7050.14.04.33.image + FRITZ.Box_Fon_WLAN_7112.87.04.87.image + FRITZ.Box_Fon_WLAN_7113.60.04.68.image + FRITZ.Box_Fon_WLAN_7113.AnnexA.de-en-es-it-fr.90.04.84.image + FRITZ.Box_Fon_WLAN_7140.AnnexA.39.04.76.image + FRITZ.Box_Fon_WLAN_7140.AnnexA.en.39.04.67.image + fritz.box_fon_wlan_7140.annexb.30.04.33.image + FRITZ.Box_Fon_WLAN_7140.AnnexB.en.30.04.67.image + fritz.box_fon_wlan_7141.40.04.37.image + FRITZ.Box_Fon_WLAN_7141.40.04.76.image + FRITZ.Box_Fon_WLAN_7170.29.04.87.image + FRITZ.Box_Fon_WLAN_7170.AnnexA.58.04.76.image + FRITZ.Box_Fon_WLAN_7170.AnnexA.en.58.04.84.image + FRITZ.Box_Fon_WLAN_7170.AnnexB.en.29.04.82.image + FRITZ.Box_Fon_WLAN_7240.73.05.05.image + FRITZ.Box_Fon_WLAN_7270_16.en-de-es-it-fr.54.05.06.image + FRITZ.Box_Fon_WLAN_7270_v1.54.04.88.image + FRITZ.Box_Fon_WLAN_7270_v2.54.05.05.image + FRITZ.Box_Fon_WLAN_7270_v2.en-de-es-it-fr.54.04.90.image + FRITZ.Box_Fon_WLAN_7270_v2_Labor.54.05.09-21499.image + FRITZ.Box_Fon_WLAN_7270_v3.74.05.05.image + FRITZ.Box_Fon_WLAN_7270_v3.en-de-es-it-fr.74.05.06.image + FRITZ.Box_Fon_WLAN_7270_v3_Labor.74.05.09-21499.image + FRITZ.Box_Fon_WLAN_7320.100.04.89.image + FRITZ.Box_Fon_WLAN_7340.en-de-es-it-fr.99.05.05.image + FRITZ.Box_Fon_WLAN_7390.84.05.05.image + FRITZ.Box_Fon_WLAN_7390.en-de-es-it-fr.84.05.06.image + FRITZ.Box_Fon_WLAN_7390_Labor.84.05.09-21499.image + FRITZ.Box_Fon_WLAN_7570_vDSL.en-de-fr.75.04.91.image + FRITZ.Box_Fon_WLAN.AnnexA.en.08.04.49.image + FRITZ.Box_Fon_WLAN.AnnexB.en.08.04.49.image + fritz.box_sl_wlan.09.04.34.image + fritz.box_wlan_3030.21.04.34.image + fritz.box_wlan_3130.44.04.34.image + fritz.box_wlan_3131.50.04.57.image + fritz.box_wlan_3170.49.04.58.image + fritz.box_wlan_3270.67.05.05.image + fritz.box_wlan_3270_v3.96.05.05.image + fritz.box_wlan_3370.103.05.08.image + fritz.fon_7150.annexb.38.04.71.image + fw_Speedport_W501V_v_28.04.38.image + fw_Speedport_W701V_v33.04.57.image + fw_Speedport_W900V_v34.04.57.image + Sinus_W_500V.27.04.27.image + Speedport_W_920V.AnnexB.65.04.78.image + +Das ist nicht besonders übersichtlich und außerdem im Detail sehr +uneinheitlich. Geht das nicht irgendwie hübscher?! + +.. _AusgabegrundlegenderInformationen: + +Ausgabe grundlegender Informationen +----------------------------------- + +Das Ergebnis sieht für Fall 1 (grundlegende Informationen, +tabellarisches Layout) so aus: + +.. code:: bash + + FRITZ!Box 2170 51.04.57 + FRITZ!Box 6840 LTE 105.05.09 + FRITZ!Box 7330 107.05.08 + FRITZ!Box Fon 06.04.33 + FRITZ!Box Fon 5010 48.04.43 AnnexA + FRITZ!Box Fon 5050 12.04.31 + FRITZ!Box Fon 5124 57.04.76 AnnexA.en + FRITZ!Box Fon 5124 56.04.76 AnnexB.en + FRITZ!Box Fon 5140 43.04.67 AnnexB + FRITZ!Box Fon 06.04.49 AnnexA.en + FRITZ!Box Fon 06.04.49 en + FRITZ!Box Fon WLAN 08.04.34 + FRITZ!Box Fon WLAN 7050 14.04.33 + FRITZ!Box Fon WLAN 7112 87.04.87 + FRITZ!Box Fon WLAN 7113 60.04.68 + FRITZ!Box Fon WLAN 7113 90.04.84 AnnexA.de-en-es-it-fr + FRITZ!Box Fon WLAN 7140 39.04.76 AnnexA + FRITZ!Box Fon WLAN 7140 39.04.67 AnnexA.en + FRITZ!Box Fon WLAN 7140 30.04.33 AnnexB + FRITZ!Box Fon WLAN 7140 30.04.67 AnnexB.en + FRITZ!Box Fon WLAN 7141 40.04.37 + FRITZ!Box Fon WLAN 7141 40.04.76 + FRITZ!Box Fon WLAN 7170 29.04.87 + FRITZ!Box Fon WLAN 7170 58.04.76 AnnexA + FRITZ!Box Fon WLAN 7170 58.04.84 AnnexA.en + FRITZ!Box Fon WLAN 7170 29.04.82 AnnexB.en + FRITZ!Box Fon WLAN 7240 73.05.05 + FRITZ!Box Fon WLAN 7270 16 54.05.06 en-de-es-it-fr + FRITZ!Box Fon WLAN 7270 v1 54.04.88 + FRITZ!Box Fon WLAN 7270 v2 54.05.05 + FRITZ!Box Fon WLAN 7270 v2 54.04.90 en-de-es-it-fr + FRITZ!Box Fon WLAN 7270 v2 54.05.09-21499 Labor + FRITZ!Box Fon WLAN 7270 v3 74.05.05 + FRITZ!Box Fon WLAN 7270 v3 74.05.06 en-de-es-it-fr + FRITZ!Box Fon WLAN 7270 v3 74.05.09-21499 Labor + FRITZ!Box Fon WLAN 7320 100.04.89 + FRITZ!Box Fon WLAN 7340 99.05.05 en-de-es-it-fr + FRITZ!Box Fon WLAN 7390 84.05.05 + FRITZ!Box Fon WLAN 7390 84.05.06 en-de-es-it-fr + FRITZ!Box Fon WLAN 7390 84.05.09-21499 Labor + FRITZ!Box Fon WLAN 7570 vDSL 75.04.91 en-de-fr + FRITZ!Box Fon WLAN 08.04.49 AnnexA.en + FRITZ!Box Fon WLAN 08.04.49 AnnexB.en + FRITZ!Box SL WLAN 09.04.34 + FRITZ!Box WLAN 3030 21.04.34 + FRITZ!Box WLAN 3130 44.04.34 + FRITZ!Box WLAN 3131 50.04.57 + FRITZ!Box WLAN 3170 49.04.58 + FRITZ!Box WLAN 3270 67.05.05 + FRITZ!Box WLAN 3270 v3 96.05.05 + FRITZ!Box WLAN 3370 103.05.08 + FRITZ!Fon 7150 38.04.71 AnnexB + Speedport W501V 28.04.38 + Speedport W701V 33.04.57 + Speedport W900V 34.04.57 + Sinus W500V 27.04.27 + Speedport W920V 65.04.78 AnnexB + +.. _AusgabeerweiterterInformationen: + +Ausgabe erweiterter Informationen +--------------------------------- + +Im zweiten Fall ist die Ausgabe wesentlich länger, ich gebe hier also +nur exemplarische Ausschnitte wieder: + +.. code:: bash + + Firmware image: FRITZ.Box_6840_LTE.105.05.09.image + Producer/OEM: AVM + Model: FRITZ!Box + Model no.: 6840 LTE + Version: 105.05.09 + Version major: 105 + Version minor: 05.09 + Version labor: + DSL annex: B + Language: de + + ----------------------------------------------------------------------------- + + Firmware image: FRITZ.Box_Fon_WLAN_7113.AnnexA.de-en-es-it-fr.90.04.84.image + Producer/OEM: AVM + Model: FRITZ!Box Fon WLAN + Model no.: 7113 + Version: 90.04.84 + Version major: 90 + Version minor: 04.84 + Version labor: + DSL annex: A + Language: de-en-es-it-fr + + ----------------------------------------------------------------------------- + + Firmware image: FRITZ.Box_Fon_WLAN_7270_v2_Labor.54.05.09-21499.image + Producer/OEM: AVM + Model: FRITZ!Box Fon WLAN + Model no.: 7270 v2 + Version: 54.05.09-21499 + Version major: 54 + Version minor: 05.09 + Version labor: 21499 + DSL annex: B + Language: de + + ----------------------------------------------------------------------------- + + Firmware image: fw_Speedport_W701V_v33.04.57.image + Producer/OEM: Telekom + Model: Speedport + Model no.: W701V + Version: 33.04.57 + Version major: 33 + Version minor: 04.57 + Version labor: + DSL annex: B + Language: de + +Viel Spaß beim Herumspielen. |:-)| + +`​Alexander Kriegisch +(kriegaex) `__ + +.. |:-)| image:: ../../../../chrome/wikiextras-icons-16/smiley.png + diff --git a/wiki/help/howtos/development/bandwidth_svg.rst b/wiki/help/howtos/development/bandwidth_svg.rst new file mode 100644 index 0000000..c99de13 --- /dev/null +++ b/wiki/help/howtos/development/bandwidth_svg.rst @@ -0,0 +1,54 @@ +.. _DynamischeBandbreitenanzeigeperSVG: + +Dynamische Bandbreitenanzeige per SVG +===================================== + +Bei dd-wrt und OpenWRT gibt's ein putziges SVG, das den aktuellen +Durchsatz der verschiedenen Interfaces anzeigt - In/Out mit Werten und +als Graphik, jede Sekunde aktualisiert. Firefox zeigt SVG an, aber auch +z.B. Opera 9.51 für Windows Mobile. Mit winzigen Änderungen läuft das +auch auf Freetz, ausgeführt vom busybox-httpd. + +.. _AnleitungzurTest-Installation: + +Anleitung zur Test-Installation +------------------------------- + +#. Das + `​graph_if.tar.gz `__ + auf die Box übertragen und irgendwo auspacken: + + :: + + tar xzf graph_if.tar.gz + + Dadurch wird ein Unterverzeichnis graph_if erstellt. + +#. In das Verzeichnis wechseln und den BusyBox-httpd auf einem freien + Port starten: + + :: + + cd graph_if + httpd -f -v -p 83 + + Wenn es dann läuft, kann man das -f -v weglassen. + +#. Jetzt sollte beim Aufruf von + `​http://fritz.box:83/cgi-bin/graph_if_svg.cgi?eth0 `__ + der Graph für die Schnittstelle ``eth0`` zu sehen sein. Die anderen + Interfaces kann man sehen, wenn man sie in der URL statt eth0 angibt. +#. Eine Test-HTML-Seite, auf der alle Interfaces ausser lo angezeigt + werden, findet sich unter + `​http://fritz.box:83/cgi-bin/all_ifs.cgi `__ + +Zu Testzwecken kann man als Parameter "object", "embed" oder "iframe" +angeben, dann werden die SVG-Graphen in die entsprechenden Tags gehüllt. +"iframe" ist der Default. + +*(Quelle:*\ `​IPPF +Thread `__\ *)* + +- Tags +- `howtos `__ +- `install `__ diff --git a/wiki/help/howtos/development/compile_own_progs.rst b/wiki/help/howtos/development/compile_own_progs.rst new file mode 100644 index 0000000..dca32c3 --- /dev/null +++ b/wiki/help/howtos/development/compile_own_progs.rst @@ -0,0 +1,50 @@ +.. _EigeneProgrammekompilieren: + +Eigene Programme kompilieren +============================ + +Nachdem die Toolchain heruntergeladen oder gebaut wurde, kann sie +verwendet werden, um eigene Programme, oder solche, die noch nicht als +Paket zur Verfügung stehen, zu übersetzen. + +Den MIPS-Compiler zum Pfad hinzufügen: + +.. code:: bash + + export PATH=/pfad/zu/freetz/toolchain/target/bin:$PATH + +Optionen für ``./configure``: + +.. code:: bash + + ./configure --build=i386-linux-gnu --target=mipsel-linux --host=mipsel-linux + +(i386-linux-gnu ist nicht unbedingt notwendig, nur beschwert sich +``configure``, wenn es nicht angegeben ist. Auf 64-Bit-Plattformen oder +Nicht-Intel-Architekturen muß es natürlich anders heißen.) + +Statisches Linken der Binaries, damit sie keine separaten Libraries +benutzen, sondern sie gleich enthalten (funktioniert aber nicht bei +jeder Software): + +.. code:: bash + + LDFLAGS=-static ./configure ... + +Statisch gelinkte Binaries sind einfacher zu installieren, weil sie eben +alles enthalten - aber dadurch sind sie größer, und wenn sie mit anderen +Programmen gemeinsam genutzte Funktionalität haben, verschwenden sie +Speicherplatz. Außerdem müssen sie separat upgedatet werden, wenn z.B. +in einer Library eine Sicherheitslücke gepatcht wurde. Es ist also am +besten, statische Binaries nur zum Testen, oder wenn es anders nicht +geht, zu verwenden. + +In manchen Fällen ist es ratsam die CC-Variable explizit zu setzen. Auch +die Angabe der *CFLAGS* kann nicht schaden: + +.. code:: bash + + ./configure ... CC="mipsel-linux-gcc" CFLAGS="-Os -pipe -march=4kc -Wa,--trap" + +- Tags +- `howtos `__ diff --git a/wiki/help/howtos/development/create_cross-compiler_toolchain.rst b/wiki/help/howtos/development/create_cross-compiler_toolchain.rst new file mode 100644 index 0000000..4c5a82b --- /dev/null +++ b/wiki/help/howtos/development/create_cross-compiler_toolchain.rst @@ -0,0 +1,155 @@ +.. _Cross-CompilerToolchainerstellen: + +Cross-Compiler / Toolchain erstellen +==================================== + +Das Erstellen eines Cross-Compilers ist mit Freetz denkbar einfach: + +#. ``make menuconfig`` Hier unter *Advanced options → Compiler options* + die Optionen für den Cross-Compiler wählen. Soll der Compiler + Programme für eine mit Freetz erzeugte Firmware kompilieren, so ist + in der Regel nichts zu ändern. Soll der Compiler hingegen für eine + originale Firmware kompilieren können, so solltest du bei "uClibc + config" die entsprechende Konfiguration auswählen. + |Warning| **ACHTUNG:** Im zweiten Fall sollte diese entpackte Instanz + von Freetz nicht mehr zum Erstellen von Images verwendet werden, + sondern nur noch der Cross-Compiler selbst. +#. Benötigt wird + `​gcc `__, + `​binutils `__, + `​make `__, + `​bison `__, + `​flex `__ und + `​texinfo `__: + ``make toolchain`` + Eine ganze Weile und ca 2 GB später wurden zwei Cross-Compiler + erstellt: + + - ``./toolchain/kernel/bin/*-unknown-linux-gnu-gcc`` : + Cross-Compiler für die Kernel Sourcen + - ``./toolchain/target/bin/*-linux-uclibc-gcc`` : Cross-Compiler für + Userspace Programme + +#. ``make libs`` Erstellt alle im menuconfig ausgewählten Libraries und + installiert deren Header. + +.. _EigeneDownload-Toolchainerstellen: + +Eigene Download-Toolchain erstellen +=================================== + +Aus und seit `r9983 `__: + +From now on one can build his own toolchains and use them as download +toolchains by overriding the corresponding options under "Override +options/Override precompiled toolchain options": + +#. activate "Toolchain options/Build own toolchains" +#. set toolchain related options to the desired ones under "Toolchain + options" +#. (optional) make your own modifications under $(freetz_root)/toolchain +#. call "make KTV=freetz-${MY_VERSION}-${MY_SUFFIX} + TTV=freetz-${MY_VERSION}-${MY_SUFFIX} toolchain" +#. wait the build to complete +#. (optional) upload created download toolchain files to some site + +The toolchains created in steps above can then be reused: + +7. activate "Toolchain options/Download and use precompiled toolchains" +8. activate "Override options/Override precompiled toolchain options" +9. set version/suffix/md5/download-site values to the values used in + the steps above +10. adjust gcc/uClibc versions under "Toolchain options", set them to + the same values as in step 2 + +.. _TargetNative-Compiler-Toolchainerstellen: + +Target/Native-Compiler-Toolchain erstellen +========================================== + +Some times it is easier to use a native development tools and compiler +on the FritzBox directly by calling ./configure and build dependent +libraries, test the according binaries directly on the box and find out +configure options for packages which do not work for cross-compiling. +Compiling can already be done for an 7270 box, performance-wise. + +.. _Therearesomegeneralpre-requisitetomeet:: + +There are some general pre-requisite to meet: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- connect an external USB-drive with an additional swap and ext3 + partition +- add a directory/mountpoint /usr/local , easy creatable with the addon + package to point to your writeable USB drive achievable with a mount + command which is executed with the autorun.sh script using the + Freetzmount mechanism, e.g. + ``mount -o /var/InternerSpecher/uStor03/local /usr/local`` + +.. _Nowyouhaveonlytocreatetheaccordingtargetcompilerandlibraries: + +Now you have only to create the according target compiler and libraries +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- select Level of user (Expert), select Toolchain options → Build + binutils and gcc for target and select needed libraries in Shared + libraries +- select Busybox applets → developer tools and the make binaries +- build freetz image and copy some necessary libs to the addon package + and re-build the image + ``cp -R toolchain/target/target-utils/lib addon/own-files-0.1/root`` +- now you have only to archive the cross compiled native binaries and + unpack this binaries on your box to /usr/local and to correct some + links: + ``tar -cf ~/compiler.tar -C toolchain/target/target-utils/usr .`` + ``tar -cf ~/libsincs.tar -C toolchain/target/ bin lib include share`` + ``rm /usr/local/lib/libc.so /usr/local/lib/libpthread.so && (cd /usr/local/lib; ln -s /lib/libc.so.0 libc.so; ln -s /lib/libpthread.so.0 libpthread.so)`` + +This is already enough for writing and testing hello world programs. + +.. _Usingthelinuxconfiguremechanismontheboxneedssomefurtherthingstodo: + +Using the linux configure mechanism on the box needs some further things to do +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- adapting the paths in pkgconfig files (*.pc), config files and + library linker files (*.la) + ``for i in /usr/local/lib/pkgconfig/*.pc; do sed 's~/home.*uclibc/usr~/usr/local~' $i > $i.tmp; mv $i.tmp $i; done`` + ``for i in /usr/local/bin/*-config; do sed 's~/home.*uclibc/usr~/usr/local~' $i > $i.tmp; mv $i.tmp $i; chmod a+x $i; done`` + ``for i in /usr/local/lib/*.la; do sed 's~/home.*uclibc/usr~/usr/local~' $i > $i.tmp; mv $i.tmp $i; done`` +- the tools m4, autoconf, automake, bison and flex have to be + downloaded and installed, whereas the sources should be unpacked to + /usr/local/src + ``./configure --prefix=/usr/local --disable-nls && make install`` + +There you are, now configuring and making perl or other complex linux +packages from source should be fine. + +.. _Usingthedev-toolspackagetoinstallcompilerandtools: + +Using the dev-tools package to install compiler and tools +--------------------------------------------------------- + +- add dev-tools patch from `#2722 `__ and toolchain.patch + from `#2650 `__ using similar commands as: + ``for f in $(svn --dry-run patch dev-tools_v4.patch | grep target | tr -d "'" | cut -d' ' -f4); do mkdir -p $(dirname $f); touch $f; svn add $(dirname $f) 2> /dev/null; rm $f; done`` + ``svn patch dev-tools_v4.patch`` + ``svn patch toolchain.patch`` +- use your `Download <../../../Download.html>`__ toolchain and select + Dev-Tools package and choose Amount of tools → compiler (fully + functional ..), select External processing → Dev-Tools +- create image and external file, the external file can be uploaded via + the Freetz web interface + (only if the external file becomes too big, you have to split it into + several files package-wise with acccording option or you have to copy + it manually to your box and to untar into the external directory + ``tar -xf *.external -C /usr/local`` +- before building you have to set the environment by sourcing the + compiler settings /usr/local/bin/CFLAGS.sh + ``. /usr/local/bin/CFLAGS.sh`` + +- Tags +- `howtos `__ + +.. |Warning| image:: ../../../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/help/howtos/development/create_gui.rst b/wiki/help/howtos/development/create_gui.rst new file mode 100644 index 0000000..af328fa --- /dev/null +++ b/wiki/help/howtos/development/create_gui.rst @@ -0,0 +1,382 @@ +.. _ErstelleneinerGUIfürPaketeinFreetz: + +Erstellen einer GUI für Pakete in Freetz +======================================== + +.. _Motivation: + +Motivation +---------- + +Ein großer Faktor für den Erfolg von Freetz ist die Tatsache, dass die +Pakete dort über eine GUI zu konfigurieren sind. Über den Aufbau und die +Vorgehensweise zur Erstellen einer solchen GUI soll es in diesem Beitrag +gehen. Als Grundlage nehmen wir ein virtuelles Paket mit Namen "hugo" +an, um einen Bezug zu haben + +.. _Grundlagen: + +Grundlagen +---------- + +Bevor man sich Gedanken über die GUI machen kann, sind ein paar +grundlegende Dinge über die Art und Weise zu sagen, wie in Freetz Pakete +funktionieren. Als grundlegende Information sei auf die `​Doku von +Daniel `__ +verwiesen, hier soll das ganze nur kurz wiedergegeben werden (ich hoffe +das "fast wortwörtliche direkte Kopieren" aus dem Thread von Daniel ist +mir hier erlaubt): + +.. _EigenePakete: + +Eigene Pakete +~~~~~~~~~~~~~ + +An ein Paket stellen sich folgende Anforderungen: + +- rc Skript: + ``etc/init.d/rc. [start|stop|load|unload|restart|status]`` + +Wenn konfigurierbar: + +- Default Konfiguration: ``etc/default./.cfg`` +- Optional: cgi Skript für die Weboberfläche: + ``usr/lib/cgi-bin/.cgi`` +- Optional: Extra cgi Skripte in ``usr/lib/cgi-bin//`` + +Sonstige Default Dateien sollten auch ins Verzeichnis +etc/default./ gepackt werden. + +- ``/mod/etc/init.d/rc.`` +- ``/mod/etc/default./*`` +- ``/mod/usr/lib/cgi-bin/.cgi`` +- ``/mod/usr/lib/cgi-bin//*`` + +sind immer gültig (sofern im Paket enthalten) und werden bei statischen +Paketen über Symlinks realisiert. Binaries sollten nach ``bin``, +``sbin``, ``usr/bin`` oder ``usr/sbin``, damit sie sowohl in statischen +als auch dynamischen Paketen aufrufbar sind (die PATH Variable enthält +auch ``/mod/bin``, ``/mod/sbin``, ``/mod/usr/bin`` und +``/mod/usr/sbin``). Libraries funktionieren mit statischen wie auch +dynamischen Paketen in lib (``LD_LIBRARY_PATH=/mod/lib`` ⇒ Library wird +in ``/lib`` und ``/mod/lib`` gesucht) + +Benötigt ein Daemon eines Paketes eine Konfigurationsdatei (z.B. +``hugo.conf``), die für diesen Daemon spezifisch ist, so wird sie in der +Regel im rc Skript vor dem Starten des Daemons erzeugt. Ich habe dafür +folgende Konvention gewählt (ist aber kein muss), welche am Beispiel der +``bftpd.conf`` erläutert ist: + +#. Suche nach Skript ``/tmp/flash/hugo_conf``, welches die ``hugo.conf`` + als Ausgabe hat; existiert? → goto 3. +#. Führe Skript ``/etc/default.hugo/hugo_conf`` aus, die Ausgabe ergibt + wie bei 1. die ``hugo.conf`` (meistens ist dies der Fall) +#. Existiert ``/tmp/flash/hugo.conf.extra``? → füge sie an die in 1. + oder 2. generierte ``hugo.conf`` an + +Das sollte alle Möglichkeiten des "Feintunings" offen lassen. 3. macht +nicht immer Sinn, darum ist es optional. Wäre schön, wenn jeder, der ein +Paket erstellt, die Konventionen einhält. Das Skript ``hugo_conf`` muss +stets mit exportierten Variablen aus ``/mod/etc/conf/hugo.cfg`` +aufgerufen werden. So wird die ``hugo.conf`` je nach Paket-Konfiguration +individuell erstellt. + +.. _Konfiguration: + +Konfiguration +~~~~~~~~~~~~~ + +Jedes Paket besitzt ein Konfigurationsdatei +``/mod/etc/conf/.cfg``, welche wie folgt aufgebaut ist: + +.. code:: bash + + export _OPTION1='bla' + export _OPTION2='blub' + ... + +Sie enthält alle Optionen, die auch übers Webinterface eingestellt +werden können und ist in Shell Syntax. Damit kann die aktuelle +Konfiguration mit + +.. code:: bash + + . /mod/etc/conf/.cfg + +eingelesen werden. In der Datei +``/mod/etc/default./.cfg`` sind die default +Einstellungen gespeichert. Beim Speichern werden nur die sich von den +Defaults unterscheidenden Variablen in die +``/tmp/flash/.diff`` transferiert und mit dem ganzen +Verzeichnis ``/tmp/flash/`` ins tffs abgelegt. Die Basis-Konfiguration +hat den Paketnamen 'mod'. Die Befehle dazu sind: + +:: + + modconf load + # -> erzeugt die Datei /mod/etc/conf/.cfg aus den Defaults und der .diff + + + modconf save + # -> erzeugt die Datei .diff aus den Defaults und der /mod/etc/conf/.cfg + + modsave + # -> ruft unter anderem für alle Pakete 'modconf save' auf und speichert das Verzeichnis /tmp/flash ins tffs + + modsave flash + # -> speichert nur das Verzeichnis /tmp/flash ins tffs + +Das dauerhafte Abschalten des Webinterfaces geht damit so (Variable +MOD_HTTPD in der Basis-Konfiguration 'mod'): + +.. code:: bash + + vi /mod/etc/conf/mod.cfg # -> MOD_HTTPD='yes' durch MOD_HTTPD='no' ersetzen + modconf save mod # nun ist mod.diff up-to-date + modsave flash # damit ist mod.diff im tffs + + # oder + + vi /mod/etc/conf/mod.cfg # -> MOD_HTTPD='yes' durch MOD_HTTPD='no' ersetzen + modsave # erzeugt alle diff Dateien neu und speichert ins tffs + +Soviel zur Veranschaulichung. Komfortabler ist folgendes: + +.. code:: bash + + modconf set mod MOD_HTTPD=no + modconf save mod + modsave flash + + # bzw. + + modconf set mod MOD_HTTPD=no + modsave + +.. _WiefunktioniertdasmitderGUI: + +Wie funktioniert das mit der GUI? +--------------------------------- + +Im vorigen Abschnitt wurde beschrieben, welche Dateien es gibt und wie +ich die Werte von Variablen direkt von der Shell aus ändern kann. Die +Freetz GUI's basieren auf dem Konzept des +`​Proccgi `__ von Frank +Pilhofer. Hierzu bedienen sie sich Umgebungsvariablen, die wie oben +beschrieben dem Muster ``_`` folgen. In den +HTML-Seiten der GUI werden Input-Felder mit dem Tag +``name=""`` versehen. Diese Felder korrespondieren dann +mit den Variablen. Alle GUI-Seiten sind in einen Rahmen-Formular von +Freetz untergebracht, das über den Button "Übernehmen" diese Variablen +ausliest und der Umgebungsvariable zuweist. + +.. _EinBeispiel: + +Ein Beispiel +~~~~~~~~~~~~ + +Ich hoffe, ein kleines Beispiel macht das deutlicher, unser "Paket" +heisst wie schon gesagt "hugo". Als erstes legen wir das "default" +Verzeichnis und die hugo.cfg Datei an. + +:: + + mkdir /mod/etc/default.hugo + touch /mod/etc/default.hugo/hugo.cfg + +Im "default" Verzeichnis des Paketes ``/etc/default.hugo/hugo.cfg`` +werden die benutzten Variablen über einen export definiert und zugleich +auch mit einem "default-Wert" belegt. Wenn man später also im +Webinterface auf "Standard" klickt, werden die dort festgelegten Werte +aus der GUI übernommen. So eine Datei sähe dann in etwa so aus: + +:: + + export HUGO_ACTION='ACCEPT' + export HUGO_CHAIN='INPUT' + export HUGO_DESTINATION='anywhere' + export HUGO_ENABLED='no' + +Damit sind die Variablen ``ACTION``, ``CHAIN``, ``DESTINATION``, +``ENABLED``, etc. definiert. Diese Variablennamen werden in der GUI, +einem "cgi-File" belegt (per Eingabe oder auch per javascript). + +Der entsprechende Abschnitt dazu im Code + +:: + +

DESTINATION:

+ +man sieht hier auch, dass dieses "cgi"-File Shellauswertung nutzt, um im +HTML-Code den Wert von "DESTINATION" als Vorbelegung nutzt. + +Beim "Übernehmen" werden diese Variablen mit den "default-Variablen" +verglichen und beim Abweichen direkt resetfest im Flash abgespeichert. + +Gibt man hier nun in das Feld "Blabla" ein, erzeugt das "Übernehmen" die +Datei ``/var/tmp/flash/hugo.diff`` mit diesem Inhalt: + +:: + + export HUGO_DESTINATION='Blabla' + +die mit ``modsave`` auch gleich gesichert wird. Auch wird aus der +Zusammenführung der default-Werte und der geänderten Werte im +*diff*-file die aktuelle Datei ``/mod/etc/conf/hugo.cfg`` erstellt, die +für jede Variable den aktuellen Wert zuweist (das alles macht übrigens +das cgi ``/usr/mww/cgi-bin/save.cgi``, der beim Abschicken des Formulars +aufgerufen wird). + +hat man also die ``hugo.cfg`` Datei im "default" Verzeichnis fertig +gestellt, so kopiert man diese nach ``/mod/etc/conf`` + +:: + + modconf load hugo + +Jetzt kommt die GUI Programmierung dran. Die Datei ``hugo.cgi`` wird im +Verzeichnis ``/mod/usr/lib/cgi-bin/`` angelegt und sollte ungefähr so +aussehen. + +:: + + #!/bin/sh + + PATH=/bin:/usr/bin:/sbin:/usr/sbin + . /usr/lib/libmodcgi.sh + + # setzt auto_chk oder man_chk auf ' checked', je nach Wert von HUGO_ENABLED + check "$HUGO_ENABLED" yes:auto "*":man + + sec_begin 'Activation' + cat << EOF +
Version 1.0.3
+

+ + +

+ EOF + sec_end + + sec_begin 'hugo Überschrift' + cat << EOF + ... +

DESTINATION:

+ ... + EOF + sec_end + +Wollen wir eine zusätzliche Datei fest ins Flash speichern, so müssen +wir diese mit ``modreg file`` registrieren und eine Datei namens +``hugo_file.def`` im Verzeichnis ``/mod/etc/default.hugo`` anlegen. +Inhalt muss so aussehen: + +:: + + CAPTION='Überschrift' + DESCRIPTION='Beschreibung dieser Datei. Bla bla bla...' + CONFIG_FILE='/tmp/flash/hugo_file' + CONFIG_SAVE='modsave flash;' + CONFIG_TYPE='text' + +(Falls die zu bearbeitende Datei zunächst generiert werden muss, kann +die nötige Anweisung in ``CONFIG_PREPARE`` angegeben werden.) + +Der Daemon, der unsere Arbeiten ausführt, heisst ``rc.hugo`` und wird +unter ``/mod/etc/init.d`` angelegt. Die ersten Zeilen müssen so +aussehen: + +:: + + #!/bin/sh + + DAEMON=hugo + + # Liest Paketkonfiguration ein und definiert einige Hilsfunktionen + . /etc/init.d/modlibrc + + start() { + # HIER KOMMEN DIE VERARBEITUNGEN REIN + echo "Starting hugo..." + } + + stop() { + # HIER KOMMEN DIE VERARBEITUNGEN REIN + echo "Stopping hugo..." + } + + case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + stop + start + ;; + status) + if [ -z "$(pidof "$DAEMON")" ]; then + echo 'stopped' + else + echo 'running' + fi + ;; + ""|load) + # CGI registrieren + modreg cgi $DAEMON Bezeichnung + # File registrieren (wird resetfest ins flash gespeichert) + # modreg file <sec-level> <desc-file (ohne Pfad und .def-Endung)> + modreg file 'hugo' 'config' 'HUGO: File' 0 "hugo_file" + + if [ "$HUGO_ENABLED" != "yes" ]; then + echo "$DAEMON is disabled" 1>&2 + exit 1 + else + start + fi + ;; + + ;; + unload) + stop + modunreg file 'hugo' + modunreg cgi 'hugo' + ;; + *) + echo "Usage: $0 [start|stop|restart|status]" 1>&2 + exit 1 + ;; + esac + + exit 0 + +Jetzt löschen den cache und bauen wir den Menüpunkt "hugo" in das +Webmenü ein. + +:: + + rm /var/mod/var/cache/menu/packages + modreg cgi hugo hugo + +**TIPP:** Wenn man ein CGI entwickelt, sollte man seine Arbeiten auf +einen angeschlossenen USB-Stick ablegen und die entsprechenden Dateien +ins RAM von Freetz kopieren bzw. Softlinks setzen. Hier ein Beispiel für +ein kleines Script, welches die Dateien temporär ins RAM kopiert. + +:: + + #!/bin/sh + mkdir /mod/etc/default.hugo + cp hugo.cfg /mod/etc/default.hugo + modconf load hugo + cd /mod/usr/lib/cgi-bin + ln -s /var/media/ftp/uStor01/hugo.cgi hugo.cgi + cd /mod/etc/init.d + ln -s /var/media/ftp/uStor01/rc.hugo rc.hugo + modreg cgi hugo hugo + cd - + +- Tags +- `development </tags/development>`__ diff --git a/wiki/help/howtos/development/developer_information.rst b/wiki/help/howtos/development/developer_information.rst new file mode 100644 index 0000000..f345970 --- /dev/null +++ b/wiki/help/howtos/development/developer_information.rst @@ -0,0 +1,159 @@ +.. _DeveloperInformation: + +Developer Information +===================== + +Most of the information for developers is still only available in the +`​IPPF wiki <http://wiki.ip-phone-forum.de/software:ds-mod:start>`__, +but it is partly outdated and quite disarranged. This shall be a +starting point for writing current developer information regarding +freetz. + +Table of Contents +^^^^^^^^^^^^^^^^^ + +#. `Package + Development <developer_information/package_development.html#PackageDevelopment>`__ + + #. `Persistent Package + Settings <developer_information/package_development.html#PersistentPackageSettings>`__ + +#. `Package Developing - Advanced + Topics <developer_information/package_development_advanced.html#PackageDeveloping-AdvancedTopics>`__ + + #. `Adding conditional + patches <developer_information/package_development_advanced.html#Addingconditionalpatches>`__ + #. `Adding multi-binary + packages <developer_information/package_development_advanced.html#Addingmulti-binarypackages>`__ + +#. `Paketverwaltung für + Freetz <developer_information/package_development_dynamic.html#PaketverwaltungfürFreetz>`__ + + #. `Erweiterung des + Dateisystems <developer_information/package_development_dynamic.html#ErweiterungdesDateisystems>`__ + #. `Paketverwaltung <developer_information/package_development_dynamic.html#Paketverwaltung>`__ + #. `Links <developer_information/package_development_dynamic.html#Links>`__ + #. `Kommentare <developer_information/package_development_dynamic.html#Kommentare>`__ + +#. `First steps - How to start your first freetz + package <developer_information/package_development_start.html#Firststeps-Howtostartyourfirstfreetzpackage>`__ + + #. `Info <developer_information/package_development_start.html#Info>`__ + #. `Build + Environment <developer_information/package_development_start.html#BuildEnvironment>`__ + #. `File + Structure <developer_information/package_development_start.html#FileStructure>`__ + #. `Examples Binary + Package <developer_information/package_development_start.html#ExamplesBinaryPackage>`__ + #. `Configuration + Handling <developer_information/package_development_start.html#ConfigurationHandling>`__ + #. `Examples + Web-Interface <developer_information/package_development_start.html#ExamplesWeb-Interface>`__ + #. `Trouble + shooting <developer_information/package_development_start.html#Troubleshooting>`__ + +#. `Example 1: + Httptunnel <developer_information/package_development_start/example_1.html#Example1:Httptunnel>`__ + + #. `Build + manually <developer_information/package_development_start/example_1.html#Buildmanually>`__ + #. `Add package to + Freetz <developer_information/package_development_start/example_1.html#AddpackagetoFreetz>`__ + #. `Call Procedures "make menuconfig" and + "make" <developer_information/package_development_start/example_1.html#CallProceduresmakemenuconfigandmake>`__ + #. `Testing <developer_information/package_development_start/example_1.html#Testing>`__ + #. `Preparing New Package for Public Integration to Freetz + Trunk <developer_information/package_development_start/example_1.html#PreparingNewPackageforPublicIntegrationtoFreetzTrunk>`__ + +#. `Example 2: + par2cmdline <developer_information/package_development_start/example_2.html#Example2:par2cmdline>`__ + + #. `Build + manually <developer_information/package_development_start/example_2.html#Buildmanually>`__ + #. `Add package to + Freetz <developer_information/package_development_start/example_2.html#AddpackagetoFreetz>`__ + #. `Create new image with added + package <developer_information/package_development_start/example_2.html#Createnewimagewithaddedpackage>`__ + #. `Testing <developer_information/package_development_start/example_2.html#Testing>`__ + #. `Preparing New Package for Public Integration to Freetz + Trunk <developer_information/package_development_start/example_2.html#PreparingNewPackageforPublicIntegrationtoFreetzTrunk>`__ + +#. `Example 3: + NZBGet <developer_information/package_development_start/example_3.html#Example3:NZBGet>`__ + + #. `Build + manually <developer_information/package_development_start/example_3.html#Buildmanually>`__ + #. `Add package to + Freetz <developer_information/package_development_start/example_3.html#AddpackagetoFreetz>`__ + #. `Create new image with added + package <developer_information/package_development_start/example_3.html#Createnewimagewithaddedpackage>`__ + #. `Testing <developer_information/package_development_start/example_3.html#Testing>`__ + #. `Preparing New Package for Public Integration to Freetz + Trunk <developer_information/package_development_start/example_3.html#PreparingNewPackageforPublicIntegrationtoFreetzTrunk>`__ + +#. + + #. `Web-interface + HTTPTunnel <developer_information/package_development_start/webinterface_example_1.html#Web-interfaceHTTPTunnel>`__ + +#. `Trac + Hooks <developer_information/post_commit_hook.html#TracHooks>`__ + + #. `trac-post-commit-hook <developer_information/post_commit_hook.html#trac-post-commit-hook>`__ + #. `trac-post-revprop-change-hook <developer_information/post_commit_hook.html#trac-post-revprop-change-hook>`__ + +#. `Shell Coding + Conventions <developer_information/shell_coding_conventions.html#ShellCodingConventions>`__ + + #. `Shell + Language <developer_information/shell_coding_conventions.html#ShellLanguage>`__ + #. `Basic + Format <developer_information/shell_coding_conventions.html#BasicFormat>`__ + #. `If, For, and + While <developer_information/shell_coding_conventions.html#IfForandWhile>`__ + #. `Test + Built-in <developer_information/shell_coding_conventions.html#TestBuilt-in>`__ + #. `Single-line conditional + statements <developer_information/shell_coding_conventions.html#Single-lineconditionalstatements>`__ + #. `Infinite + Loops <developer_information/shell_coding_conventions.html#InfiniteLoops>`__ + #. `Exit Status and If/While + Statements <developer_information/shell_coding_conventions.html#ExitStatusandIfWhileStatements>`__ + #. `Variable + References <developer_information/shell_coding_conventions.html#VariableReferences>`__ + #. `Variable + Naming <developer_information/shell_coding_conventions.html#VariableNaming>`__ + #. `Quoting <developer_information/shell_coding_conventions.html#Quoting>`__ + #. `Variable + Assignments <developer_information/shell_coding_conventions.html#VariableAssignments>`__ + #. `Testing for (Non-)Empty + Strings <developer_information/shell_coding_conventions.html#TestingforNon-EmptyStrings>`__ + #. `Commenting <developer_information/shell_coding_conventions.html#Commenting>`__ + #. `Pathnames <developer_information/shell_coding_conventions.html#Pathnames>`__ + #. `Interpreter + Magic <developer_information/shell_coding_conventions.html#InterpreterMagic>`__ + +#. `libmodcgi.sh <developer_information/webif/libmodcgi.html#libmodcgi.sh>`__ + + #. `cgi <developer_information/webif/libmodcgi.html#cgi>`__ + #. `cgi_begin <developer_information/webif/libmodcgi.html#cgi_begin>`__ + #. `cgi_end <developer_information/webif/libmodcgi.html#cgi_end>`__ + #. `sec_begin <developer_information/webif/libmodcgi.html#sec_begin>`__ + #. `sec_end <developer_information/webif/libmodcgi.html#sec_end>`__ + #. `html <developer_information/webif/libmodcgi.html#html>`__ + #. `check, + select <developer_information/webif/libmodcgi.html#checkselect>`__ + #. `href <developer_information/webif/libmodcgi.html#href>`__ + #. `back_button <developer_information/webif/libmodcgi.html#back_button>`__ + #. `sec_level <developer_information/webif/libmodcgi.html#sec_level>`__ + #. `stat_bar <developer_information/webif/libmodcgi.html#stat_bar>`__ + #. `cgi_param <developer_information/webif/libmodcgi.html#cgi_param>`__ + #. `cgi_error, + print_error <developer_information/webif/libmodcgi.html#cgi_errorprint_error>`__ + #. `path_info <developer_information/webif/libmodcgi.html#path_info>`__ + #. `valid <developer_information/webif/libmodcgi.html#valid>`__ + +- `Writing Wiki Articles <../../wikiedit.html>`__ + +- Interner Entwicklerbereich: Nur für Entwickler: Interner Bereich zur + Abstimmung. diff --git a/wiki/help/howtos/development/developer_information/package_development.rst b/wiki/help/howtos/development/developer_information/package_development.rst new file mode 100644 index 0000000..e90e4a0 --- /dev/null +++ b/wiki/help/howtos/development/developer_information/package_development.rst @@ -0,0 +1,66 @@ +.. _PackageDevelopment: + +Package Development +=================== + +This page is primarily for freetz package developers. + +.. _PersistentPackageSettings: + +Persistent Package Settings +--------------------------- + +Freetz provides a package configuration framework easing implementation +and allows settings to be stored persistently. Packages must provide two +files to use the framework: + +#. /etc/default.$package/$package.cfg — This file must contain all + configuration settings as exported shell variables; each variable has + to start with the capitalized package name. Example: + + .. code:: bash + + export PACKAGE_VAR1='var1' + export PACKAGE_VAR2='var2' + +2. /usr/lib/cgi-bin/$package.cgi — This is the cgi file used for package + configuration. It has to be registered via 'modreg cgi'. For + examples, have a look at some package providing a web interface page. + +If this is implemented correctly, freetz takes care of saving and also +restarting the service, if the package provides one. + +.. _Custompackagesavingmechanism: + +Custom package saving mechanism +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Freetz also provides a mechanism to hook into the 'normal' saving +procedure and execute custom code or do manual saving. An example using +this mechanism is the package mini_fo. This mechanism comes in quite +handy if the package needs to re-create configuration files or +start/stop special (non-default) services on changing the configuration. +It works as follows: If a package provides a file +/etc/default.$package/$package.save, it will be sourced by the saving +mechanism as a shell script (but it should not have a shebang line!). +The .save-script can implement any or all of the following shell +functions, which are executed at some special point during the saving +mechanims: + +pkg_pre_save() + Executed before saving happens. +pkg_apply_save() + Executed after settings were changed, but before they are saved to + flash. ATTENTION! This is not executed if there are no settings (no + $package.cfg file)! +pkg_post_save() + Executed after settings were saved to flash. +pkg_pre_def() + Executed before saving happens when loading the package defaults. +pkg_apply_def() + Executed after settings were changed, but before they are saved to + flash when loading the package defaults. ATTENTION! This is not + executed if there are no settings (no $package.cfg file)! +pkg_post_def() + Executed after settings were saved to flash when loading the package + defaults. diff --git a/wiki/help/howtos/development/developer_information/package_development_advanced.rst b/wiki/help/howtos/development/developer_information/package_development_advanced.rst new file mode 100644 index 0000000..a4565b6 --- /dev/null +++ b/wiki/help/howtos/development/developer_information/package_development_advanced.rst @@ -0,0 +1,308 @@ +.. _PackageDeveloping-AdvancedTopics: + +Package Developing - Advanced Topics +==================================== + +This chapter deals with some advanced topics on creating +freetz-packages. It assumes that you are already familiar with the basic +concepts described `here <package_development_start.html>`__. + +.. _Addingconditionalpatches: + +Adding conditional patches +-------------------------- + +If you'd like to add conditional patches which could be enabled/disable +by the user via menuconfig, a good example is +`r11348 </changeset/11348>`__ + +.. _Addingmulti-binarypackages: + +Adding multi-binary packages +---------------------------- + +Imagine you would like to add a freetz-package for some set of tools +developed within the same source tree and thus distributed together as a +single tarball file. Furthermore, you would like the user to be able to +select which tool should be included in the image and which not. The +simple straightforward solution might look like this: + +``Config.in`` + +.. code:: bash + + FREETZ_PACKAGE_FOO_BINARY1 + bool "include binary1" + default n + help + Adds binary1 to the image + + FREETZ_PACKAGE_FOO_BINARY2 + bool "include binary2" + default n + help + Adds binary2 to the image + + .... + + FREETZ_PACKAGE_FOO_BINARYN + bool "include binaryN" + default n + help + Adds binaryN to the image + +``foo.mk`` + +.. code:: bash + + $(call PKG_INIT_BIN, 0.0.1) + $(PKG)_SOURCE:=$(pkg)-$($(PKG)_VERSION).tar.gz + $(PKG)_SOURCE_MD5:=0123456789abcdef0123456789abcdef + $(PKG)_SITE:=http://www.foo.net/ + + $(PKG)_BINARY1 := $($(PKG)_DIR)/binary1 + $(PKG)_TARGET_BINARY1 := $($(PKG)_DEST_DIR)/usr/bin/binary1 + $(PKG)_BINARY2 := $($(PKG)_DIR)/binary2 + $(PKG)_TARGET_BINARY2 := $($(PKG)_DEST_DIR)/usr/bin/binary2 + ... + $(PKG)_BINARYN := $($(PKG)_DIR)/binaryN + $(PKG)_TARGET_BINARYN := $($(PKG)_DEST_DIR)/usr/bin/binaryN + + $(PKG_SOURCE_DOWNLOAD) + $(PKG_UNPACKED) + $(PKG_CONFIGURED_CONFIGURE) + + $($(PKG)_BINARY1) $($(PKG)_BINARY2) ... $($(PKG)_BINARYN): $($(PKG)_DIR)/.configured + PATH="$(TARGET_PATH)" \ + $(MAKE) -C $(FOO_DIR) \ + all + + $($(PKG)_TARGET_BINARY1): $($(PKG)_BINARY1) + ifeq ($(strip $(FREETZ_PACKAGE_FOO_BINARY1)),y) + $(INSTALL_BINARY_STRIP) + else + $(RM) $@ + endif + + $($(PKG)_TARGET_BINARY2): $($(PKG)_BINARY2) + ifeq ($(strip $(FREETZ_PACKAGE_FOO_BINARY2)),y) + $(INSTALL_BINARY_STRIP) + else + $(RM) $@ + endif + + ... + + $($(PKG)_TARGET_BINARYN): $($(PKG)_BINARYN) + ifeq ($(strip $(FREETZ_PACKAGE_FOO_BINARYN)),y) + $(INSTALL_BINARY_STRIP) + else + $(RM) $@ + endif + + $(pkg): + + $(pkg)-precompiled: $($(PKG)_TARGET_BINARY1) $($(PKG)_TARGET_BINARY2) ... $($(PKG)_TARGET_BINARYN) + + $(pkg)-clean: + -$(MAKE) -C $(FOO_DIR) clean + + $(pkg)-uninstall: + $(RM) $(FOO_TARGET_BINARY1) $(FOO_TARGET_BINARY2) ... $(FOO_TARGET_BINARYN) + + $(PKG_FINISH) + +There is nothing wrong with this solution. It is perfectly suitable for +packages providing two or three binaries. For packages providing more +binaries you would however quickly realize that by adding new binary to +the package you don't write any new code but actually copying and +adjusting the old one (in software engineering this process is called +code cloning and is advised to be avoided as it may inflate maintenance +costs). + +Make is a very powerful tool and allows the same task to be solved +writing much less code by using **patterns** and the so called **static +pattern rules**. Let's take a look at the real Makefile of the +dosfstools package. + +`dosfstools.mk </browser/trunk/make/dosfstools/dosfstools.mk>`__\ `​ </export/HEAD/trunk/make/dosfstools/dosfstools.mk>`__ + +.. code:: bash + + $(call PKG_INIT_BIN, 3.0.5) + $(PKG)_SOURCE:=$(pkg)-$($(PKG)_VERSION).tar.gz + $(PKG)_SOURCE_MD5:=d48177cde9c6ce64333133424bf32912 + $(PKG)_SITE:=http://www.daniel-baumann.ch/software/dosfstools + + $(PKG)_BINARIES_ALL := dosfsck dosfslabel mkdosfs + $(PKG)_BINARIES := $(strip $(foreach binary,$($(PKG)_BINARIES_ALL),$(if $(FREETZ_PACKAGE_$(PKG)_$(shell echo $(binary) | tr [a-z] [A-Z])),$(binary)))) + $(PKG)_BINARIES_BUILD_DIR := $($(PKG)_BINARIES:%=$($(PKG)_DIR)/%) + $(PKG)_BINARIES_TARGET_DIR := $($(PKG)_BINARIES:%=$($(PKG)_DEST_DIR)/usr/sbin/%) + $(PKG)_NOT_INCLUDED := $(patsubst %,$($(PKG)_DEST_DIR)/usr/sbin/%,$(filter-out $($(PKG)_BINARIES),$($(PKG)_BINARIES_ALL))) + + # always compile with LFS enabled + $(PKG)_CFLAGS := $(subst $(CFLAGS_LARGEFILE),,$(TARGET_CFLAGS)) $(CFLAGS_LFS_ENABLED) -fomit-frame-pointer + + $(PKG_SOURCE_DOWNLOAD) + $(PKG_UNPACKED) + $(PKG_CONFIGURED_NOP) + + $($(PKG)_BINARIES_BUILD_DIR): $($(PKG)_DIR)/.configured + PATH="$(TARGET_PATH)" \ + $(MAKE) -C $(DOSFSTOOLS_DIR) \ + CC="$(TARGET_CC)" \ + CFLAGS="$(DOSFSTOOLS_CFLAGS)" \ + all + + $($(PKG)_BINARIES_TARGET_DIR): $($(PKG)_DEST_DIR)/usr/sbin/%: $($(PKG)_DIR)/% + $(INSTALL_BINARY_STRIP) + + $(pkg): + + $(pkg)-precompiled: $($(PKG)_BINARIES_TARGET_DIR) + + $(pkg)-clean: + -$(MAKE) -C $(DOSFSTOOLS_DIR) clean + + $(pkg)-uninstall: + $(RM) $(DOSFSTOOLS_BINARIES_ALL:%=$(DOSFSTOOLS_DEST_DIR)/usr/sbin/%) + + $(PKG_FINISH) + +This line + +.. code:: bash + + $(PKG)_BINARIES_ALL := dosfsck dosfslabel mkdosfs + +simply defines a variable containing the names (just the names not the +full paths) of all binaries of the package. + +This next line + +.. code:: bash + + $(PKG)_BINARIES := $(strip $(foreach binary,$($(PKG)_BINARIES_ALL),$(if $(FREETZ_PACKAGE_$(PKG)_$(shell echo $(binary) | tr [a-z] [A-Z])),$(binary)))) + +is probably the most complex one in the whole makefile. It defines a +variable containing the names of all binaries selected in menuconfig. +This is done by iterating +(`​foreach <http://www.gnu.org/software/make/manual/make.html#Foreach-Function>`__ +function) over the names of all binaries (``$($(PKG)_BINARIES_ALL)``) +and evaluating the variable with dynamically constructed name +``FREETZ_PACKAGE_$(PKG)_$(shell echo $(binary) | tr [a-z] [A-Z])``. The +expression ``$(shell echo $(binary) | tr [a-z] [A-Z])`` is a simple +invocation of ``tr`` program which returns the upper-cased binary name. +In case the variable with dynamically constructed name evaluates to some +non-empty value (the only possible non-empty value is **y**) the binary +is added to the ``$(PKG)_BINARIES`` variable. For those of you who is +familiar with other programming languages, this line is equivalent to +the following pseudo-code: + +.. code:: bash + + $(PKG)_BINARIES := {}; # {} represents an empty set + for binary in $($(PKG)_BINARIES_ALL); do + if isNotEmpty($(FREETZ_PACKAGE_$(PKG)_$(UPPERCASED_BINARY_NAME))); then + $(PKG)_BINARIES += $(binary); + fi + done + +The outter +`​strip <http://www.gnu.org/software/make/manual/make.html#Text-Functions>`__ +function ensures that $(PKG)_BINARIES remains empty if no binary at all +is selected in menuconfig (the foreach function always adds spaces in +between regardless of whether +``FREETZ_PACKAGE_$(PKG)_$(UPPERCASED_BINARY_NAME)`` evaluates to +something non-empty or not). + +The advantage of this line is that it is absolutely generic. It depends +neither on the number of binaries the package provides nor on the +package name. You could use it on your packages without a change and +without actually understanding how exactly it does what it does. + +The next two lines + +.. code:: bash + + $(PKG)_BINARIES_BUILD_DIR := $($(PKG)_BINARIES:%=$($(PKG)_DIR)/%) + $(PKG)_BINARIES_TARGET_DIR := $($(PKG)_BINARIES:%=$($(PKG)_DEST_DIR)/usr/sbin/%) + +are absolutely identical in the sense of makefile techniques used. They +both use a shorthand for the make +`​patsubst <http://www.gnu.org/software/make/manual/make.html#Text-Functions>`__ +function. Each word in the list defined by ``$(PKG)_BINARIES`` variable +matching the ``'%'``-pattern is replaced with ``$($(PKG)_DIR)/%``. I.e. +provided ``$(PKG)_BINARIES`` is equal to ``'dosfsck mkdosfs'``, +``$(PKG)_BINARIES_BUILD_DIR`` would be equal to +``'$($(PKG)_DIR)/dosfsck $($(PKG)_DIR)/mkdosfs'`` (see +`​this <http://www.gnu.org/software/make/manual/make.html#Text-Functions>`__ +page for the explanations of what ``'%'``-sign means when used in +**pattern** and what it means when used in **replacement**). Both lines +could also be written this way: + +.. code:: bash + + $(PKG)_BINARIES_BUILD_DIR := $(addprefix $($(PKG)_DIR)/,$($(PKG)_BINARIES)) + $(PKG)_BINARIES_TARGET_DIR := $(addprefix $($(PKG)_DEST_DIR)/,$($(PKG)_BINARIES)) + +The next line + +.. code:: bash + + $(PKG)_NOT_INCLUDED := $(patsubst %,$($(PKG)_DEST_DIR)/usr/sbin/%,$(filter-out $($(PKG)_BINARIES),$($(PKG)_BINARIES_ALL))) + +does absolutely the same as the line defining the +``$(PKG)_BINARIES_TARGET_DIR`` variable with the only difference that it +contains the list of dosfstools-binaries not selected in menuconfig. +This part of it + +.. code:: bash + + $(filter-out $($(PKG)_BINARIES),$($(PKG)_BINARIES_ALL)) + +computes the difference between the ``$(PKG)_BINARIES_ALL`` and +``$(PKG)_BINARIES`` sets, i.e. it contains all binaries contained in +``$(PKG)_BINARIES_ALL`` and not contained in ``$(PKG)_BINARIES``. + +The variable ``$(PKG)_NOT_INCLUDED`` has a special meaning in freetz +framework. It is expected to contain a list of all package files to be +excluded from the image. Defining this variable allows all explicit +``$(RM) $@`` lines existing in the 1st example to be removed. Freetz' +build system will take care of removing unnecessary files. + +The last fragment we take a look at is the following one: + +.. code:: bash + + $($(PKG)_BINARIES_TARGET_DIR): $($(PKG)_DEST_DIR)/usr/sbin/%: $($(PKG)_DIR)/% + $(INSTALL_BINARY_STRIP) + +It defines the so called `​static pattern +rule <http://www.gnu.org/software/make/manual/make.html#Static-Pattern>`__, +a rule which specifies multiple targets and constructs the prerequisite +names for each target based on the target name. These two lines are +\_absolutely\_ equivalent to the following ones from the 1st example, +they are just a shorthand for them: + +.. code:: bash + + $($(PKG)_TARGET_BINARY1): $($(PKG)_BINARY1) + $(INSTALL_BINARY_STRIP) + + $($(PKG)_TARGET_BINARY2): $($(PKG)_BINARY2) + $(INSTALL_BINARY_STRIP) + + ... + + $($(PKG)_TARGET_BINARYN): $($(PKG)_BINARYN) + $(INSTALL_BINARY_STRIP) + +That is actually it. There is absolutely no magic behind it. + +You might want to take a look at the Makefiles of the following +packages: +`e2fsprogs </browser/trunk/make/e2fsprogs/e2fsprogs.mk>`__\ `​ </export/HEAD/trunk/make/e2fsprogs/e2fsprogs.mk>`__, +`lighttpd </browser/trunk/make/lighttpd/lighttpd.mk>`__\ `​ </export/HEAD/trunk/make/lighttpd/lighttpd.mk>`__, +`subversion </browser/trunk/make/subversion/subversion.mk>`__\ `​ </export/HEAD/trunk/make/subversion/subversion.mk>`__. +They all use the techniques like those described above. diff --git a/wiki/help/howtos/development/developer_information/package_development_dynamic.rst b/wiki/help/howtos/development/developer_information/package_development_dynamic.rst new file mode 100644 index 0000000..70bb502 --- /dev/null +++ b/wiki/help/howtos/development/developer_information/package_development_dynamic.rst @@ -0,0 +1,166 @@ +.. _PaketverwaltungfürFreetz: + +Paketverwaltung für Freetz +========================== + +Der folgende Beitrag beschreibt die Grundlagen, die notwendig sind, um +mit Freetz Pakete nach dem Flashvorgang installieren zu können. +Grundlage dafür sind ein transluzentes Dateisystem (mini_fo) und ein +Paketverwaltungssystem (ipkg, opkg). Diese Erweiterung bietet gegenüber +dem mitkompilieren der Pakete beim Image-Build folgende Vorteile: + +- Für jedes FritzBox-Modell existiert pro AVM Image-Version ein + Basis-Image, das nur geringfügige Änderungen gegenüber dem originalen + AVM-Image enthält (Stabilität) +- Weitere Pakete können zur Laufzeit hinzugefügt werden. Alle + dazugehörigen Modifikationen am Dateisystem werden dabei extern + gespeichert (z.B. auf einem USB-Stick) +- Treten Probleme im Betrieb auf, kann durch das Entfernen des + USB-Sticks und anschließendem Reboot das Basis-Image verwendet + werden. +- Die benötigten Erweiterungen bzw. Pakete müssen beim Erstellen des + Images nicht kompiliert werden. Sie können nach dem Flashen des + Images von einem Paket-Repository im Internet geladen werden +- Im Idealfall wird bei einem Firmware-Update (z.B. bei einer neuen + Version des AVM-Images) nur das Basis-Image aktualisiert. Die bereits + installierten Erweiterungen können, falls die Abhängigkeiten zum + Basisystem nicht zu groß sind, mit dem neuen Image weiterverwendet + werden +- das Verzeichnis /etc kann wie unter Linux üblich als + Konfigurationsverzeichnis verwendet werden. + +.. _ErweiterungdesDateisystems: + +Erweiterung des Dateisystems +---------------------------- + +.. _TransluzenteDateisystems: + +Transluzente Dateisystems +~~~~~~~~~~~~~~~~~~~~~~~~~ + +Transluzente Dateisysteme (TFS) ermöglichen den schreibenden Zugriff auf +Read-Only-Dateisysteme (ROFS). Dazu wird das TFS über das ROFS gelegt. +Lesezugriffe auf bereits existierende Dateien werden an das ROFS +weitergeleitet, Modifikationen werden abgefangen und in einen +zusätzlichen Speicher geschrieben. Alle Lese- und Schreibzugriffe auf +das Dateisystem sind für den Benutzer bzw. die Anwendungen transparent. + +.. _AnbindungexternerMedien: + +Anbindung externer Medien +~~~~~~~~~~~~~~~~~~~~~~~~~ + +Als Speicherort für die Änderungen am Dateisystem kann je nach +FritzBox-Modell entweder ein über USB angeschlossenes Medium (USB-Stick, +Festplatte) oder der interne Speicher der FritzBox verwendet werden. Um +das Rechtesystem von Linux auf dem beschreibbaren Dateisystem abbilden +zu können, muss ein Dateisystem wie ext2 oder ext3 verwendet werden +(SquashFS scheidet aus, da es ein Read-Only-Dateisystem ist). Aufgrund +der niedrigen Speicherpreise sollte es kein Problem mehr sein, den +ganzen USB-Stick für das TFS zu verwenden. Man könnte alternativ auch +eine Image-Datei auf einem mit FAT formatierten USB-Stick anlegen, die +wiederum mit ext2/3 formatiert wird. Um diese Datei einzubinden, müsste +jedoch zunächst der USB-Stick ins Dateisystem eingebunden werden um +anschließend auf die Image-Datei zugreifen zu können. Dieser Vorgang +würde die automatische Einbindung des TFS komplizierter machen und wird +zunächst vernachlässigt. + +.. _IntegrationindenBootvorgang: + +Integration in den Bootvorgang +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Das externe Dateisystem sollte baldmöglichst nach dem Start des Kernels +eingehängt werden, damit auch Änderungen bzw. Erweiterungen an den +Init-Skripten, die durch installierte Pakete erzeugt werden, beim +Startvorgang berücksichtigt werden. (Inittab????). Das +Integrationsskript prüft zunächst, ob ein USB-Stick mit einem der +unterstützten Dateisysteme angeschlossen ist und bindet ihn ein, falls +verfügbar. Ist kein USB-Stick vorhanden, wird das Basissystem ohne TFS +gestartet. (Man sollte vielleicht noch überprüfen, ob bestimmte +"Markierungen" im Dateisystem des USB-Sticks vorhanden sind, um +sichzerzustellen, dass der richtige USB-Stick verwendet wird). + +.. _Paketverwaltung: + +Paketverwaltung +--------------- + +.. _UnterstützungmehrererArchitekturen: + +Unterstützung mehrerer Architekturen +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. _ErstellungvonPaketen: + +Erstellung von Paketen +~~~~~~~~~~~~~~~~~~~~~~ + +.. _BereitstellungderPakete: + +Bereitstellung der Pakete +~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. _InstallationvonPaketen: + +Installation von Paketen +~~~~~~~~~~~~~~~~~~~~~~~~ + +.. _Links: + +Links +----- + +`​Ein Beispiel zur Verwendung von mini_fo mit +Freetz <http://wwerther.de/2011/04/avm-fritz-box-freetz-mod/>`__ + +`​Diskussionsthread über Opkg und mini_fo im IP Phone +Forum <http://www.ip-phone-forum.de/showthread.php?t=166751>`__ + +`​Ein weiterer Diskussionsthread über Opkg und mini_fo im IP Phone +Forum <http://www.ip-phone-forum.de/showthread.php?t=102000>`__ + +`​Homepage von mini_fo <http://www.denx.de/wiki/Know/MiniFOHome>`__ + +`​Homepage von Opkg <http://code.google.com/p/opkg/>`__ + +`​Debian New Maintainers' +Guide <http://www.debian.org/doc/devel-manuals#maint-guide>`__ + +.. _Kommentare: + +Kommentare +---------- + +.. _CommentbyoliveronMi26Jan201111:44:01CET: + +Comment by oliver on Mi 26 Jan 2011 11:44:01 CET +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Zu dem Punkt Integration in den Bootvorgang: Das frühe Mounten eines +USB-Sticks ist nicht so einfach, da der Vorgang boxspezifisch ist. Das +mounten von mini_fo dagegen funktioniert für alle Boxen gleich. Daher +würde es die Sache sehr erleichtern, wenn wir erstmal mit mini_fo und +jffs2 auskämen. Praktikabel ist das natürlich nur für die 16 MB Flash +Boxen. Ich nehme an, dass man mit unionfs den USB-Stick später auch noch +irgendwie einbinden könnte? Es müsste dann bei der Installation der +dynamischen Pakete irgendwo vermerkt werden, ob sie im ersten (jffs2) +oder zweiten (usb) Schritt gestartet werden sollen. + +Das ganze hätte natürlich den Nachteil, dass man keine Änderungen oder +Erweiterungen an den Init-Skripten machen kann. Da die Pakete erst nach +Abschluss des Bootvorgangs verfügbar wären. Andererseits haben wir mit +external ja schon ein Grundgerüst, wie das dynamisch (Stick rein/raus) +funktioniert. + +.. _Commentbyhippie2000onDi01Mär201123:51:14CET: + +Comment by hippie2000 on Di 01 Mär 2011 23:51:14 CET +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Siehe auch + +`/ticket/1173 </ticket/1173>`__ + +AddComment? diff --git a/wiki/help/howtos/development/developer_information/package_development_start.rst b/wiki/help/howtos/development/developer_information/package_development_start.rst new file mode 100644 index 0000000..beb4a22 --- /dev/null +++ b/wiki/help/howtos/development/developer_information/package_development_start.rst @@ -0,0 +1,321 @@ +.. _Firststeps-Howtostartyourfirstfreetzpackage: + +First steps - How to start your first freetz package +==================================================== + +.. _Info: + +Info +---- + +| In this howto you will find a number of examples for building + packages, each with their own parameters. +| The first part will describe the build environment, and preparing the + Toolchain. +| Than the `first example + package <package_development_start/example_1.html>`__ is the `​HTTP + tunnel server <http://www.nocrew.org/software/httptunnel.html>`__. + This package is an easy to compile, and a good choice for your first + freetz package. `Httptunnel <../../../../packages/httptunnel.html>`__ + is already included in freetz nowadays. + +| The `second example <package_development_start/example_2.html>`__ will + show the package `​par2cmdline <http://parchive.sourceforge.net/>`__. + Par2cmdline doesn’t require much additional parameters, but does + require a patch. This package require a lot of CPU and memory + resources so that makes this package less interesting for inclusion + into Freetz. + +The `third example <package_development_start/example_3.html>`__ is for +package `​nzbget <http://nzbget.sourceforge.net/>`__. NZBget needs a few +additional parameters, a small patch, and a library that is already part +of Freetz. Also this package requires a lot of CPU and memory resources, +and maybe only useful on the most powerful FritzBox models. + +.. _BuildEnvironment: + +Build Environment +----------------- + +There are `different platforms <../../common/install.html>`__ which you +may use to build your package, but usually all involve Linux in some +way. Currently Freetz-Linux looks to be the most updated choice. + +Just use the latest +`​freetz-linux <http://sourceforge.net/projects/freetz-linux/files/?source=navbar>`__ +availble. I used: + +- `​freetz-linux + 1.2.1 <http://www.ip-phone-forum.de/showthread.php?t=199449&page=28>`__ + (with xz added with: sudo apt-get install xz-utils) + (from `revision 11347 </changeset/11347>`__ the following is needed: + sudo apt-get install libacl1-dev libattr1-dev libcap-dev) + (from revision ??? the following is also needed: sudo apt-get install + imagemagick) + +Very helpful information on *make*-targets such as +`menuconfig <../../common/install/menuconfig.html>`__, *toolchain*, +*precompiled*, *recover* etc. may be retrieved in the +`HowTos <../../../howtos.html>`__ section of the Freetz wiki. + +.. _Toolchain: + +Toolchain +~~~~~~~~~ + +The toolchain is built automatically with "make" (see below). + +| If you want to have your toolchain ready at an earlier stage, you can + create it now: +| Go to your build environment and change to your freetz directory, + usually ``~/freetz-trunk``. + +In make menuconfig, select your hardware type (e.g. 7170), and after +setting the Level of user competence to Expert you can look around in +'Toolchain options', but no changes are normally needed. + +.. code:: bash + + $ make menuconfig + Level of user competence (Expert) ---> + Hardware type (7170) ---> + Firmware language (en - international) ---> + Toolchain options ---> + No changes needed + +Then create your toolchain: + +.. code:: bash + + $ make toolchain + + (for older revisions:) + FINISHED: toolchain/kernel/ - glibc compiler for the kernel + toolchain/target/ - uClibc compiler for the userspace + (for later revisions:) + FINISHED: new download toolchains can be found in dl/ + +In order to build your new package manually (without integration in the +freetz build system), you should see that your toolchain is also +included in the search path. + +.. _FileStructure: + +File Structure +-------------- + +Below the file structure used in the build environment (cross-compile +environment) e.g. Freetz-linux mentioned earlier. + +| \`--make +|    `--<package> +|      |-- Config.in +|      |-- external.in +|      |-- external.files +|      |-- external.services +|      |-- files +|      |    `-- .language +|      |    `-- root +|      |          `-- etc +|      |           |    `-- default.<package> +|      |           |     |   `--<package>.cfg +|      |           |     |   `--<package>_conf +|      |           |     |   `--<package>.save +|      |           |     `-- init.d +|      |           |          `--rc.<package> +|      |            \`-- usr +|      |                 `-- lib +|      |                      `--cgi-bin +|      |                          `--<package>.cgi +|      |                          `--<package> +|      `--patches +|      |    `--<numbered-patch_file_name>.patch +|      `-- <package>.mk + +| Font Green = executable +| Font Blue = directory + +| The following files are required for compiling the package, e.g. for + entries in ``make menuconfig`` and cross-compile steps. +| The patches are optional, and only needed if the downloadable source + needs some changes. + + | make/<package>/Config.in + | make/<package>/patches/\* + | make/<package>/<package>.mk + +| The following group of files are applicable if you plan to build a + web-interface. +| The + `<package>.cfg <package_development_start/%3Cpackage%3E.cfg.html>`__ + contains the default configuration parameters. +| The + `<package>_conf <package_development_start/%3Cpackage%3E_conf.html>`__ + is an optional script for generating a config file if the deamon + (binary) needs it. +| The `rc.<package> <package_development_start/rc.%3Cpackage%3E.html>`__ + is responsible to start/stop the deamon with the proper parameters, + and having the package included in the menu of the web-interface. +| The + `<package>.cgi <package_development_start/%3Cpackage%3E.cgi.html>`__ + is used to create the body of the web-interface, where you can find + the more HTML like statements. +| The `.language <package_development_start/.language.html>`__ is used + to translate the + `<package>.cgi <package_development_start/%3Cpackage%3E.cgi.html>`__ + web-interface to the selected language. The file should highlight the + files with ``lang`` statements, to translate/select the target + language. +| The directory ``usr/lib/cgi-bin/<package>/`` is used for optional + extra cgi scripts. + + | make/files/root/etc/default.<package>/\ `<package>.cfg <package_development_start/%3Cpackage%3E.cfg.html>`__ + | make/files/root/etc/default.<package>/\ `<package>_conf <package_development_start/%3Cpackage%3E_conf.html>`__ + | make/files/root/etc/default.<package>/<package>.save + | make/files/root/etc/init.d/\ `rc.<package> <package_development_start/rc.%3Cpackage%3E.html>`__ + | make/files/root/usr/lib/cgi-bin/\ `<package>.cgi <package_development_start/%3Cpackage%3E.cgi.html>`__ + | make/files/root/usr/lib/cgi-bin/<package>/\* + +.. _ExamplesBinaryPackage: + +Examples Binary Package +----------------------- + +- `Example 1 - httptunnel <package_development_start/example_1.html>`__ +- `Example 2 - + par2cmdline <package_development_start/example_2.html>`__ +- `Example 3 - NZBget <package_development_start/example_3.html>`__ + +.. _ConfigurationHandling: + +Configuration Handling +---------------------- + +| The configuration is saved in the non-volatile memory (tffs) via a + character device ``/var/flash/freetz/``. +| This is done by saving (writing) a tar file containing all config data + to this character device. +| You can test this with: + + | ``cat /var/flash/freetz > /var/tmp/config.tar`` + | ``tar tf /var/tmp/config.tar`` + +| Freetz has a number of tools for handling configuration data and + ‘saving them to’ / ’reading them from’ tffs. +| The data from the character device is taken-from / saved-to + ``/var/tmp/flash``. +| ``/tmp`` is a symbolic-link (symlink) to ``/var/tmp``, so this makes + ``/tmp/flash/`` is the same as ``/var/tmp/flash`` + + | ``# ls -al /tmp`` + | ``lrwxrwxrwx 1 root root 7 Jan 12 01:56 /tmp -> var/tmp`` + +| ``/tmp/flash`` is the location where all configuration data is + gathered. A look into this directory should let you recognize the + files also seen with the previous ``tar tf`` command. +| The default configuration file (e.g. the file you need to create for + the package) is located at + ``/mod/etc/default.<package>/<package>.cfg``. +| This is a static file containing a pre-defined value (can be empty) + for each variable (config parameter) in the following format: + +.. code:: bash + + export <PACKAGE>_<VARIABLE1>=’<value1>’ + export <PACKAGE>_<VARIABLE2>=’<value2>’ + export <PACKAGE>_<VARIABLE3>=’<value3>’ + . + . + . + export < PACKAGE>_<VARIABLEn>=’<valuen>’ + +| These are also the values that will be used if you revert back to the + default parameters via the web-interface using the ‘default’ button. +| This config file is using Shell syntax which makes it possible to use + the file as command lines. +| After changes are made via the web-interface, and saved with the + ‘Apply’ button they are written to ``/mod/etc/conf/<package>.cfg`` +| This file contains all the variables, so some changed, others still + default, depending on the changes made (so the actual config values). +| So the file ``/mod/etc/conf/<package>.cfg`` containing the actual + values, and ``/mod/etc/default.<package>/<package>.cfg`` with the + default values contain the same parameters, but not necessarily in the + same order. +| Again using the Shell syntax and the variables can be exported using: + ``. /mod/etc/conf/<package>.cfg`` +| To preserve space in the non-volatile memory (tffs) only the + difference with the default parameters + (/mod/etc/default.<package>/<package>.cfg) and the actual changed + parameters (/mod/etc/conf/<package>.cfg) are saved to ``/tmp/flash``. + This can be seen from the ‘.diff’ extension e.g. + ``/tmp/flash/<package>.diff``. +| The main package for controlling all package config is mod. Mod + contains a number of tools for handling package config: + ++-----------------------------------+-----------------------------------+ +| | modconf load <package> | | Create the data | +| | modconf save <package> | /mod/etc/conf/<package>.cfg | +| | modsave | from the default conf file | +| | modsave flash | /mod/etc/default.<package>/<pac | +| | kage>.cfg | +| | and /tmp/flash/<package>.diff | +| | | Create the data | +| | /tmp/flash/<package>.diff from | +| | the default conf file | +| | /mod/etc/default.<package>/<pac | +| | kage>.cfg | +| | and /mod/etc/conf/<package>.cfg | +| | | Initiate for each package | +| | 'modconf save' and saves the | +| | results located in ‘/tmp/flash’ | +| | to tffs (non-volatile memory) | +| | | Saves the content of | +| | ‘/tmp/flash/’ to tffs | +| | (non-volatile memory) | ++-----------------------------------+-----------------------------------+ + +- `Examples explaining these + commands <package_development_start/example_config_handling.html>`__. + +.. _ExamplesWeb-Interface: + +Examples Web-Interface +---------------------- + +- `Example 1 - + httptunnel <package_development_start/webinterface_example_1.html>`__ + +.. _Troubleshooting: + +Trouble shooting +---------------- + +- If you see during ``make`` or ``make menuconfig`` only dots appear + you probably started creating a new package stucture, which is still + unfinished. + Just remove the unfinshed directory. + +- A failure like *checking whether the C compiler (mipsel-linux-gcc -O2 + -Wall -fomit-frame-pointer ) works… no* + *configure: error: installation or configuration problem: C compiler + cannot create executables.* most likely point to a wrong PATH + environment setting. + Use ``echo $PATH`` for trouble shooting. + This can be expected if you first manually compiled the package, and + than add the package to Freetz and try to create an image, with the + previous exports still present. + A reboot might be the savest option. + +.. _References: + +References +~~~~~~~~~~ + +- `/wiki/help/howtos/development/create_gui <../create_gui.html>`__ +- `​http://www.ip-phone-forum.de/showthread.php?t=90425 <http://www.ip-phone-forum.de/showthread.php?t=90425>`__ + +- Tags +- `development </tags/development>`__ +- `howto </tags/howto>`__ +- `howtos </tags/howtos>`__ +- `packages <../../../../packages.html>`__ diff --git a/wiki/help/howtos/development/developer_information/package_development_start/.language.rst b/wiki/help/howtos/development/developer_information/package_development_start/.language.rst new file mode 100644 index 0000000..1ac5796 --- /dev/null +++ b/wiki/help/howtos/development/developer_information/package_development_start/.language.rst @@ -0,0 +1,19 @@ +.. _a.language: + +.language +~~~~~~~~~ + +The .language file list the files with ``lang`` statements. + +Below a generic .language file with only one file listed: + +.. code:: bash + + languages + { de en } + default + { en } + files + { + usr/lib/cgi-bin/<package>.cgi + } diff --git a/wiki/help/howtos/development/developer_information/package_development_start/example_1.rst b/wiki/help/howtos/development/developer_information/package_development_start/example_1.rst new file mode 100644 index 0000000..078ed9a --- /dev/null +++ b/wiki/help/howtos/development/developer_information/package_development_start/example_1.rst @@ -0,0 +1,402 @@ +.. _Example1:Httptunnel: + +Example 1: Httptunnel +===================== + +| This first example if for the `​HTTP tunnel + server <http://www.nocrew.org/software/httptunnel.html>`__ package. + +With `httptunnel <../../../../../packages/httptunnel.html>`__ you can +tunnel TCP connections over the http protocol and thus get access to +your box even through restrictive proxies, e.g. such proxies where only +ports 80 (http) and 443 (https) are open. More details can be read +`​here <http://linuxwiki.de/HttpTunnel>`__. + +`​This thread <http://www.ip-phone-forum.de/showthread.php?t=167980>`__ +in the IPPF is the right place where you can read about the evolution of +this project, with a lot of really helpful hints from the gurus. + +.. _Buildmanually: + +Build manually +-------------- + +| If you do not want to build it manually, but rather within the freetz + build system, the following commands are not necessary. +| But executing the following steps will help a lot in understanding the + steps for intergrading the package into Freetz. + +In order to build your new package manually (without integration in the +freetz build system), you should see that your toolchain is also +included in the search path. This is achieved with the PATH= export +command below. + +.. code:: bash + + mkdir httptunnel + cd httptunnel + wget http://www.nocrew.org/software/httptunnel/httptunnel-3.0.5.tar.gz + tar xfz httptunnel-3.0.5.tar.gz + cd ~/freetz-trunk/httptunnel/httptunnel-3.0.5/ + export CC="mipsel-linux-gcc" + export PATH=/home/freetz/freetz-trunk/toolchain/target/bin/:$PATH + ./configure --build=i386-linux-gnu --target=mipsel-linux --host=mipsel-linux + make + file hts * + file htc * + mipsel-linux-strip hts htc + file hts * + file htc * + +.. + + :sup:`\*` Optional, to see the impact of stripping. The file command + should also show the executable is a MIPS executable. + +| A failure like *checking whether the C compiler (mipsel-linux-gcc -O2 + -Wall -fomit-frame-pointer ) works… no* +| *configure: error: installation or configuration problem: C compiler + cannot create executables.* most likely point to a wrong PATH + environment setting. Use ``echo $PATH`` for trouble shooting. + +| Next you might want to see that "``make clean``" properly works for + this package. This will remove all generated files. +| (For packages involving a .config file you might want to save that + file to a save location, because make clean often will also delete + this file. But this is not applicable for httptunnel.) + +.. code:: bash + + cd ~/freetz-trunk/httptunnel/httptunnel-3.0.5/ + make clean + +| The Freetz environment makes use of "``make clean``" of each package + to remove all generated files during compiling. +| So testing this with this manual created package should give an idea + what happens giving a "``make clean``" within Freetz. + +.. _AddpackagetoFreetz: + +Add package to Freetz +--------------------- + +In this first example we will use an existing package, and modify the +files. + +.. _UseoftheemptyPackageasStartingPoint: + +Use of the "empty" Package as Starting Point +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Note: "empty" is the name of a real package, it is not just an starting +point for a new package. + +Because httptunnel is already integrated in Freetz the files are already +present. Lets tar them in a file and remove them: + +.. code:: bash + + cd ~/freetz-trunk/make/ + tar cfz httptunnel_orig.tar.gz httptunnel/ + ls -la httptunnel_orig.tar.gz + tar tfz httptunnel_orig.tar.gz + sudo rm -r httptunnel + +We also need to delete some auto generated files to make sure the +changes are recognized (no need to save these, as they will be generated +again): + +.. code:: bash + + rm make/external.in.generated + rm make/Config.in.generated + +(sudo will execute the command with root rights, so be carefull.) + +| Go to ``~/freetz-trunk/make/empty``. This package will serve as your + starting point to build your own httptunnel package. +| There are two files: ``Config.in``, ``empty.mk``, (and a directory + "``.svn``"). + +| For your http tunnel project you may copy the complete "empty" + directory with the two files as a new package. Let us call it + "httptunnel". + +.. code:: bash + + cp -r ~/freetz-trunk/make/empty ~/freetz-trunk/make/httptunnel + +Please go into that new "``httptunnel``" directory and remove the +sub-directory "``.svn``". You will not need it. Now it should look like +this: + +.. code:: bash + + -rw-r--r-- 1 slightly slightly 480 2008-06-07 08:17 Config.in + -rw-r--r-- 1 slightly slightly 701 2008-06-07 08:17 empty.mk + +Rename "``empty.mk``" to "``httptunnel.mk``", because this is what your +project is about now: httptunnel. The base name of the file +("``httptunnel``") will be used to define the variables ``$(PKG)`` to +``HTTPTUNNEL`` and ``$(pkg)`` to ``httptunnel`` within the file +"``httptunnel.mk``". + +Now let us have a look at the "``Config.in``" file. Open it with your +favorite editor, and it should look like this: + +.. code:: bash + + config FREETZ_PACKAGE_EMPTY + bool "Empty 0.6.15b" + select FREETZ_LIB_libutil + default n + help + empty is an utility that provides an interface to execute and/or + interact with processes under pseudo-terminal sessions (PTYs). + This tool is definitely useful in programming of shell scripts + designed to communicate with interactive programs like telnet, + ssh, ftp, etc. In some cases, empty can be the simplest + replacement for TCL/expect or other similar programming tools. + +In this file you basically find the package name (bool) and a short help +text. + +You should change this to reflect your http tunnel project. Please note +that the line "select FREETZ_LIB_libutil" is not necessary for your +project, thus remove it: + +.. code:: bash + + config FREETZ_PACKAGE_HTTPTUNNEL + bool "httptunnel 3.0.5 (binary only)" + default n + help + httptunnel is a utility that provides a HTTP tunnel server on your box. + +.. + + (the indents should be tab's not spaces) + +The next file "``httptunnel.mk``" (copied from "``empty.mk``") should be +edited like this: + +.. code:: bash + + $(call PKG_INIT_BIN, 3.0.5) + $(PKG)_SOURCE:=$(pkg)-$($(PKG)_VERSION).tar.gz + $(PKG)_SITE:=http://www.nocrew.org/software/httptunnel + $(PKG)_BINARY:=$($(PKG)_DIR)/hts + $(PKG)_TARGET_BINARY:=$($(PKG)_DEST_DIR)/usr/bin/hts + $(PKG)_CATEGORY:=Unstable + + $(PKG_SOURCE_DOWNLOAD) + $(PKG_UNPACKED) + $(PKG_CONFIGURED_CONFIGURE) + + $($(PKG)_BINARY): $($(PKG)_DIR)/.configured + $(SUBMAKE) -C $(HTTPTUNNEL_DIR) \ + CC="$(TARGET_CC)" \ + CFLAGS="$(TARGET_CFLAGS)" + + $($(PKG)_TARGET_BINARY): $($(PKG)_BINARY) + $(INSTALL_BINARY_STRIP) + + $(pkg): + + $(pkg)-precompiled: $($(PKG)_TARGET_BINARY) + + $(pkg)-clean: + -$(MAKE) -C $(HTTPTUNNEL_DIR) clean + + $(pkg)-uninstall: + $(RM) $(HTTPTUNNEL_TARGET_BINARY) + + $(PKG_FINISH) + +Explanation: + +.. code:: bash + + $(call PKG_INIT_BIN, 3.0.5) + +| This defines the version of your package. + +.. code:: bash + + $(PKG)_SOURCE:=httptunnel-$($(PKG)_VERSION).tar.gz + +| This defines the file name of the package source code, which has to be + exactly as the filename on the server where the file is located. + +.. code:: bash + + $(PKG)_SITE:=http://www.nocrew.org/software/httptunnel + +| This defines the basis of the download URL from where the package + source code will be downloaded during the build process. +| In this case, the complete path would be: + `​http://www.nocrew.org/software/httptunnel/httptunnel-3.0.5.tar.gz <http://www.nocrew.org/software/httptunnel/httptunnel-3.0.5.tar.gz>`__ + +.. code:: bash + + $(PKG)_BINARY:=$($(PKG)_DIR)/hts + +| This defines the file name of the binary in the source directory. + +.. code:: bash + + $(PKG)_TARGET_BINARY:=$($(PKG)_DEST_DIR)/usr/bin/hts + +| This defines the path of the binary of your package where it will be + stored on your box when your new package and FW is installed on your + box. + +.. code:: bash + + $(PKG)_CATEGORY:=Unstable + +| This causes the package to be listed under the list of unstable + packages in the menu. +| If a package if found stable this line can be removed, so it becomes + listed under the normal packages. + +.. code:: bash + + $(PKG_CONFIGURED_CONFIGURE) + +| This assumes that the program is configured by calling the GNU + "``configure``", which is true for most programs. For some programs + "``configure``" will fail to find out settings because it is cross + compiling and can't run a test program. In this case, look at the + "``configure``" around the line numbers given in th error message. You + will find tests and assignments to variables like + ac_cv_func_setvbuf_reversed. Find the correct value and add a line + like this to "``httptunnel.mk``" + +.. code:: bash + + $(PKG)_CONFIGURE_ENV += ac_cv_func_setvbuf_reversed=no + +| You may need to set $(PKG)_DEPENDS_ON if your package depends on other + packages (e.g. see example 3). List the names of corresponding .mk + files with all plus-signs replaced by x's and all minus-signs replaced + by underscores and separate package names by spaces. + +.. code:: bash + + $(SUBMAKE) -C $(HTTPTUNNEL_DIR) + +This calls the package's Makefile with the Freetz environment set (e.g. +FREETZ_LD_RUN_PATH) + +Now we also need to make sure that the following is changed, because +"configure" needs to be called for this package to be built: + +Go back to file "httptunnel.mk" and edit the line PKG_CONFIGURED_NOP to +PKG_CONFIGURED_CONFIGURE: + +.. code:: bash + + $(PKG_SOURCE_DOWNLOAD) + $(PKG_UNPACKED) + $(PKG_CONFIGURED_CONFIGURE) + +If you left it as PKG_CONFIGURED_NOP, this would mean that "configure" +was not necessary to be called. However, with this package you will need +it to be built. + +.. _CallProceduresmakemenuconfigandmake: + +Call Procedures "make menuconfig" and "make" +-------------------------------------------- + +Now it is time to call "``make menuconfig``" and to choose your new +package from the "packages > unstable" section, where it should be +available now for selection. + +.. code:: bash + + cd ~/freetz-trunk/ + make menuconfig + +After you have finished and saved your various selections (starting just +with your new package to test the build procedure), you will issue the +"``make``" command. + +Please be patient during the build procedure. Depending on your CPU(s) +this may take some (longer) time. + +A successful FW build with your new package included should end with +these lines: + +.. code:: bash + + STEP 3: PACK + Checking for left over Subversion directories + squashfs blocksize + root filesystem: 65536 + packing var.tar + creating filesystem image + merging kernel image + kernel image size: 7354112 (max: 7798784, free: 444672) + packing 7170_04.57-freetz-1.0-2315M.de_20080611-222651.image + done. + + FINISHED + +.. _Testing: + +Testing +------- + +Lets see if "``make clean``" works as expected. This should bring the +state back to like it was before the "``make``" command. + +.. code:: bash + + cd ~/freetz-trunk/ + make clean + +Well, since further testing depends on which package you have created, +there is not much more to say here - except that testing is easier if +you did not include too many other packages, because these might +interfere with your new package. Add more packages step by step only +when you are pretty sure that it works. + +.. _PreparingNewPackageforPublicIntegrationtoFreetzTrunk: + +Preparing New Package for Public Integration to Freetz Trunk +------------------------------------------------------------ + +In order to create a file which displays the changes which would be +needed in freetz to add your package, issue the following commands: + +.. code:: bash + + svn add make/httptunnel + svn diff ./make > patchfile + +In our case "patchfile" may be called "httptunnel". Please note that +there is no need for an extension here. You may only need an extension +(e.g. .txt) for uploading it in the IPPF, because else it would not be +recognized as a valid file for upload. + +In addition you could even create a ready (and compressed) package of +the two files which you had edited above: + +.. code:: bash + + tar cfz httptunnel.tar.gz make/httptunnel --exclude .svn + +| Well, that is it for the moment. I will add further stuff as I see + fit. Of course everybody is invited to correct mistaked, add more + information etc. +| In case of questions, please do not hesitate to visit `​this + thread <http://www.ip-phone-forum.de/showthread.php?t=167980>`__ in + the IPPF. Thank you. + +- Tags +- `development </tags/development>`__ +- `howto </tags/howto>`__ +- `howtos </tags/howtos>`__ +- `packages <../../../../../packages.html>`__ diff --git a/wiki/help/howtos/development/developer_information/package_development_start/example_2.rst b/wiki/help/howtos/development/developer_information/package_development_start/example_2.rst new file mode 100644 index 0000000..56b0d29 --- /dev/null +++ b/wiki/help/howtos/development/developer_information/package_development_start/example_2.rst @@ -0,0 +1,367 @@ +.. _Example2:par2cmdline: + +Example 2: par2cmdline +====================== + +This second example is a cmdline program for creating and using PAR2 +files to detect damage in data files and repair them if necessary. + +More info about par2cmdline can be found +`​here <http://sourceforge.net/projects/parchive>`__. + +Be aware that while trying this package on my 7270v3 I got a +“Segmentation fault”, but didn’t look further for a solution (using +par2cmdline-0.1 might be an option). + +.. _Buildmanually: + +Build manually +-------------- + +| The toolchain should be part of the search path. This is achieved with + the PATH= export command below. +| You can look with ``echo $PATH`` what the current search path variable + is. + +.. code:: bash + + mkdir par2cmdline + cd par2cmdline + wget http://sourceforge.net/projects/parchive/files/par2cmdline/0.4/par2cmdline-0.4.tar.gz + tar xfvz par2cmdline-0.4.tar.gz + cd par2cmdline-0.4 + wget http://sourceforge.net/p/parchive/bugs/_discuss/thread/e9911edb/b6aa/attachment/par2cmdline-0.4-gcc4.patch + patch -p0 < par2cmdline-0.4-gcc4.patch + ./configure --help + export CC="mipsel-linux-gcc" + export CXX="mipsel-linux-uclibc-g++-wrapper" + export PATH=/home/freetz/freetz-trunk/toolchain/target/bin/:$PATH + ./configure \ + --prefix=/usr \ + --build=i686-pc-linux-gnu \ + --host=mipsel-linux + make + ls -la par2 * + file par2 * + mipsel-linux-strip par2 + ls -la par2 * + file par2 * + +.. + + :sup:`\*` Optional, to see the impact of stripping. The file command + should also show the executable is a MIPS executable. + +Next you might want to see that "``make clean``" properly works for this +package. This will (should) remove all generated files during ``make``. + +.. code:: bash + + cd ~/freetz-trunk/par2cmdline/par2cmdline-0.4/ + make clean + +| The Freetz environment makes use of "``make clean``" of each package + to remove all generated files during compiling. +| So testing this with this manual created package should give an idea + what happens giving a "``make clean``" within Freetz. + +.. _AddpackagetoFreetz: + +Add package to Freetz +--------------------- + +In this example we will create the directory and file structure +ourselves. + +For each new package a directory under ~/freetz-trunk/make/ should be +created with a minimum of two files: + +.. code:: bash + + `--make + `--<package-name> + |-- Config.in + `-- <package-name>.mk + +Optional there are more directories and files in case e.g. patches are +needed like with par2cmdline. + +Lets create the directory structure and the two files for Par2cmdline: + +.. code:: bash + + cd /home/freetz/freetz-trunk/ + mkdir –p /home/freetz/freetz-trunk/make/par2cmdline/patches/ + vi /home/freetz/freetz-trunk/make/par2cmdline/Config.in + +.. code:: bash + + config FREETZ_PACKAGE_PAR2CMDLINE + bool "par2cmdline 0.4" + default n + help + Cmdline program for creating and using PAR2 files to detect damage in data files and repair them if necessary. + +The indents should be replaced with tabs. + +For the second file keep in mind that $(pkg) will have the value +par2cmdline, and $(PKG) with be PAR2CMDLINE. + +``vi /home/freetz/freetz-trunk/make/par2cmdline/par2cmdline.mk`` + +.. code:: bash + + $(call PKG_INIT_BIN, 0.4) + $(PKG)_SOURCE:=$(pkg)-$($(PKG)_VERSION).tar.gz + $(PKG)_SOURCE_MD5:=1551b63e57e3c232254dc62073b723a9 + $(PKG)_SITE:=http://sourceforge.net/projects/parchive/files/$(pkg)/$($(PKG)_VERSION)/ + + $(PKG)_BINARY:=$($(PKG)_DIR)/par2 + $(PKG)_TARGET_BINARY:=$($(PKG)_DEST_DIR)/usr/sbin/par2 + $(PKG)_CATEGORY:=Unstable + + $(PKG_SOURCE_DOWNLOAD) + $(PKG_UNPACKED) + $(PKG_CONFIGURED_CONFIGURE) + + $($(PKG)_BINARY): $($(PKG)_DIR)/.configured + $(SUBMAKE) -C $(PAR2CMDLINE_DIR) \ + CXX="$(TARGET_CXX)" + + $($(PKG)_TARGET_BINARY): $($(PKG)_BINARY) + $(INSTALL_BINARY_STRIP) + + $(pkg): + + $(pkg)-precompiled: $($(PKG)_TARGET_BINARY) + + $(pkg)-clean: + -$(SUBMAKE) -C $(PAR2CMDLINE_DIR) clean + + $(pkg)-uninstall: + $(RM) $(PAR2CMDLINE_TARGET_BINARY) + + $(PKG_FINISH) + +| The indents should be replaced with tabs. + +.. code:: bash + + wget http://sourceforge.net/p/parchive/bugs/_discuss/thread/e9911edb/b6aa/attachment/par2cmdline-0.4-gcc4.patch -O 100-gcc4.patch + mv 100-gcc4.patch make/par2cmdline/patches/ + +| Note: Also tried with parameter -P make/par2cmdline/patches , but this + wasn't accepted with the wget command, so I had to move the patch to + the correct location. + +Explanation of the lines: + +.. code:: bash + + $(call PKG_INIT_BIN, 0.4) + +| From this line the package version is determined. In this case 0.4 + +.. code:: bash + + $(PKG)_SOURCE:=$(pkg)-$($(PKG)_VERSION).tar.gz + +| This variable translate to the source file name that will be + downloaded and used further. Here it will be + PAR2CMDLINE_SOURCE:=par2cmdline-0.4.tar.gz + +.. code:: bash + + $(PKG)_SOURCE_MD5:=1551b63e57e3c232254dc62073b723a9 + +| This is the md5 hash value to verify successful download. + PAR2CMDLINE_SOURCE_MD5:=1551b63e57e3c232254dc62073b723a9 + +.. code:: bash + + $(PKG)_SITE:=http://sourceforge.net/projects/parchive/files/$(pkg)/$($(PKG)_VERSION)/ + +| The download url. PAR2CMDLINE_SITE:= + `​http://sourceforge.net/projects/parchive/files/par2cmdline/0.4/ <http://sourceforge.net/projects/parchive/files/par2cmdline/0.4/>`__ + +.. code:: bash + + $(PKG)_BINARY:=$($(PKG)_DIR)/par2 + +| The binary file as result of compiling the package. Here it will be + PAR2CMDLINE_BINARY:= + source/target-mipsel_gcc-4.6.4_uClibc-0.9.32.1/par2cmdline-0.4/par2 +| (source/target-mipsel_gcc-4.6.4_uClibc-0.9.32.1/par2cmdline-0.4/ is + where the source is unpacked before it is compiled) + +.. code:: bash + + $(PKG)_TARGET_BINARY:=$($(PKG)_DEST_DIR)/usr/sbin/par2 + +| The location in the Freetz structure where the stripped binary will be + saved. PAR2CMDLINE_TARGET_BINARY:= + packages/target-mipsel_gcc-4.6.4_uClibc-0.9.32.1/par2cmdline-0.4/root/usr/sbin/par2 + +.. code:: bash + + $(PKG)_CATEGORY:=Unstable + +| This line determines where in the ‘menuconfig’ this package will be + located. Without this line the package will be located in ‘package’. +| The following options are possible ‘Unstable’, ‘Web interfaces’, and + ‘Debug helpers’. + +.. code:: bash + + $(PKG_SOURCE_DOWNLOAD) + +| This line triggers the download of the package. It will be downloaded + to ./dl/par2cmdline-0.4.tar.gz + +.. code:: bash + + $(PKG_UNPACKED) + +| This line not only unpack the download, but also applies any patches + that are available in make/par2cmdline/patch/\* + +.. code:: bash + + $(PKG_CONFIGURED_CONFIGURE) + +| This will indicate that the ./configure step needs to be performed, + and initiate the ./configure step. + +The lines below have the structure of Makefiles: + +.. code:: bash + + target: dependencies + [tab] system command + +| + +.. code:: bash + + $($(PKG)_BINARY): $($(PKG)_DIR)/.configured + $(SUBMAKE) -C $(PAR2CMDLINE_DIR) \ + CXX="$(TARGET_CXX)" + +This will initiate make with the specified CXX compiler as parameter. +PAR2CMDLINE : +source/target-mipsel_gcc-4.6.4_uClibc-0.9.32.1/par2cmdline-0.4/.configured + + make -j2 -C + source/target-mipsel_gcc-4.6.4_uClibc-0.9.32.1/par2cmdline-0.4 + CXX="mipsel-linux-uclibc-g++-wrapper" + +| + +.. code:: bash + + $($(PKG)_TARGET_BINARY): $($(PKG)_BINARY) + $(INSTALL_BINARY_STRIP) + +| Will strip the binary file. This will remove any unnecessary data from + the executable to make it smaller. Something that is preferred for + embedded systems with small flash space. + packages/target-mipsel_gcc-4.6.4_uClibc-0.9.32.1/par2cmdline-0.4/root/usr/sbin/par2 + : source/target-mipsel_gcc-4.6.4_uClibc-0.9.32.1/par2cmdline-0.4/par2 + +.. code:: bash + + $(pkg): + +| par2cmdline: + +.. code:: bash + + $(pkg)-precompiled: $($(PKG)_TARGET_BINARY) + +| par2cmdline-precompiled: + packages/target-mipsel_gcc-4.6.4_uClibc-0.9.32.1/par2cmdline-0.4/root/usr/sbin/par2 + +.. code:: bash + + $(pkg)-clean: + -$(SUBMAKE) -C $(PAR2CMDLINE_DIR) clean + +par2cmdline-clean: + + make -C + source/target-mipsel_gcc-4.6.4_uClibc-0.9.32.1/par2cmdline-0.4 clean + +| + +.. code:: bash + + $(pkg)-uninstall: + $(RM) $(PAR2CMDLINE_TARGET_BINARY) + +par2cmdline-uninstall: + + rm -f + packages/target-mipsel_gcc-4.6.4_uClibc-0.9.32.1/par2cmdline-0.4/root/usr/sbin/par2 + +| + +.. code:: bash + + $(PKG_FINISH) + +Ends the make script. + +.. _Createnewimagewithaddedpackage: + +Create new image with added package +----------------------------------- + +| Like normal with creating an image execute ``make menuconfig`` and + select your router model and all options and packages to be included. +| First select two additional libraries that are needed for par2cmdline: +| ``Shared libraries ---> C++ ---> [*] libstdc++ (libstdc++-6.0.x.so)`` +| and +| ``Shared libraries ---> C++ ---> [*] uClibc++ (libuClibc++-0.2.3.so)``. +| It is also possible to automatically get this package selected using + the files we created. This is something shown in example 3. +| The newly added package is located in: + ``Packages ---> Unstable ---> [*] par2cmdline 0.4``. + +.. _Testing: + +Testing +------- + +Lets see if "``make clean``" works as expected. This should bring the +state back to like it was before the "``make``" command. + +.. code:: bash + + cd ~/freetz-trunk/ + make clean + +.. _PreparingNewPackageforPublicIntegrationtoFreetzTrunk: + +Preparing New Package for Public Integration to Freetz Trunk +------------------------------------------------------------ + +In order to create a file which displays the changes which would be +needed in freetz to add your package, issue the following commands: + +.. code:: bash + + svn add make/par2cmdline + svn diff ./make > patchfile + +In our case "patchfile" may be called "par2cmdline". Please note that +there is no need for an extension here. You may only need an extension +(e.g. .txt) for uploading it in the IPPF, because else it would not be +recognized as a valid file for upload. + +In addition you could even create a ready (and compressed) package of +the two files which you had edited above: + +.. code:: bash + + tar cfz par2cmdline.tar.gz make/par2cmdline --exclude .svn + tar tfz par2cmdline.tar.gz diff --git a/wiki/help/howtos/development/developer_information/package_development_start/example_3.rst b/wiki/help/howtos/development/developer_information/package_development_start/example_3.rst new file mode 100644 index 0000000..584e074 --- /dev/null +++ b/wiki/help/howtos/development/developer_information/package_development_start/example_3.rst @@ -0,0 +1,278 @@ +.. _Example3:NZBGet: + +Example 3: NZBGet +================= + +| This third example is the package + `​nzbget <http://nzbget.sourceforge.net/>`__. + +| NZBget is for downloading from Usenet servers using nzb-files. +| This package requires the `​libxml2 <http://www.xmlsoft.org>`__ + library which is already part of Freetz. + +This package worked on my 7270v3, but didn't go as far as creating a +config file and download something, just executed ``nzbget`` and +``nzbget -v``. + +.. _Buildmanually: + +Build manually +-------------- + +During compile time of NZBget we need to have the library include files, +and the compiled library available. An option is to download the +`​libxml2 source +files <ftp://xmlsoft.org/libxml2/libxml2-2.9.1.tar.gz>`__, and first +compile the library, but we can just as well let Freetz do that work for +us. + +Compile an image with at least libxml2 selected: + +.. code:: bash + + cd ~/freetz-trunk/ + make menuconfig + Shared libraries ---> XML & XSLT ---> [X] libxml2 (libxml2.so) + make + +Verify the library file and include files are available: + +.. code:: bash + + ls /home/freetz/freetz-trunk/toolchain/target/include/libxml2/ + ls -la /home/freetz/freetz-trunk/toolchain/target/lib/libxml2* + +The first ls should show the sub-directory ``libxml``, and the second ls +a number of lines with one being \`libxml2.so.2.9.1' (or later), a a few +symlinks pointing to this file. + +Now lets manual compile this application. + +.. code:: bash + + mkdir nzbget + cd ~/freetz-trunk-11230/nzbget/ + wget http://sourceforge.net/projects/nzbget/files/nzbget-11.0.tar.gz + tar xfvz nzbget-11.0.tar.gz + cd nzbget-11.0 + less README + export CC="mipsel-linux-gcc" + export CXX="mipsel-linux-uclibc-g++-wrapper" + export PATH=/home/freetz/freetz-trunk/toolchain/target/bin/:$PATH + export LIBS="-L~/freetz-trunk/libxml2/libxml2-2.9.1/builds/usr/lib/" + export CPPFLAGS="-I~/freetz-trunk/libxml2/libxml2-2.9.1/builds/usr/include/" + export libxml2_CFLAGS=/home/freetz/freetz-trunk/toolchain/target/include/libxml2/ + export libxml2_LIBS=/home/freetz/freetz-trunk/toolchain/target/lib/ + + ./configure \ + --prefix=/usr \ + --build=i686-pc-linux-gnu \ + --host=mipsel-linux \ + --with-libxml2-includes=/home/freetz/freetz-trunk/toolchain/target/include/libxml2/ \ + --with-libxml2-libraries=/home/freetz/freetz-trunk/toolchain/target/lib/ \ + --disable-curses \ + --disable-parcheck \ + --disable-tls \ + --disable-gzip + + vi ParCoordinator.cpp + add the following line somewhere between the existing include lines, e.g. somewhere above line 38 (but not between an if/endif): + #include <ctype.h> + make + + ls -la nzbget * + file nzbget * + mipsel-linux-strip nzbget + ls -la nzbget * + file nzbget * + +.. + + :sup:`\*` Optional, to see the impact of stripping. The file command + should also show the executable is a MIPS executable. + +| Next you might want to see that "``make clean``" properly works for + this package. This will remove all generated files. +| (For packages involving a .config file you might want to save that + file to a save location, because make clean often will also delete + this file. But this is not applicable for nzbget.) + +.. code:: bash + + cd ~/freetz-trunk/nzbget/nzbget-11.0/ + make clean + +| The Freetz environment makes use of "``make clean``" of each package + to remove all generated files during compiling. +| So testing this with this manual created package should give an idea + what happens giving a "``make clean``" within Freetz. + +.. _AddpackagetoFreetz: + +Add package to Freetz +--------------------- + +In this example we will create the directory and file structure ourself. + +For each new package a directory under ~/freetz-trunk/make/ should be +created with a minimum of two files: + +.. code:: bash + + `--make + `--<package-name> + |-- Config.in + `-- <package-name>.mk + +Optional there are more directories and files in case e.g. patches are +needed. + +| Lets create the directory structure and the two files for NZBget: + +.. code:: bash + + cd /home/freetz/freetz-trunk/ + mkdir -p ~/freetz-trunk/make/nzbget/patches/ + vi ~/freetz-trunk/make/nzbget/Config.in + +.. code:: bash + + config FREETZ_PACKAGE_NZBGET + bool "nzbget 11.0" + select FREETZ_LIB_libxml2 + default n + help + NZBGet is a cross-platform binary newsgrabber for nzb files, written in C++. + It supports client/server mode, automatic par-check/-repair and web-interface. + NZBGet requires low system resources and runs great on routers, NAS-devices and media players. + +The indents should be replaced with tabs. + +``vi ~/freetz-trunk/make/nzbget/nzbget.mk`` + +.. code:: bash + + $(call PKG_INIT_BIN, 11.0) + $(PKG)_SOURCE:=$(pkg)-$($(PKG)_VERSION).tar.gz + $(PKG)_SOURCE_MD5:=4f00039cc36e50fe68fc75e37b5a0406 + $(PKG)_SITE:=http://sourceforge.net/projects/$(pkg)/files/ + + $(PKG)_BINARY:=$($(PKG)_DIR)/nzbget + $(PKG)_TARGET_BINARY:=$($(PKG)_DEST_DIR)/usr/bin/nzbget + $(PKG)_CATEGORY:=Unstable + + $(PKG)_DEPENDS_ON += libxml2 + + $(PKG)_CONFIGURE_OPTIONS += --with-libxml2-includes=$(TARGET_TOOLCHAIN_STAGING_DIR)/include/libxml2/ + $(PKG)_CONFIGURE_OPTIONS += --with-libxml2-libraries=$(TARGET_TOOLCHAIN_STAGING_DIR)/lib/ + $(PKG)_CONFIGURE_OPTIONS += --disable-curses + $(PKG)_CONFIGURE_OPTIONS += --disable-parcheck + $(PKG)_CONFIGURE_OPTIONS += --disable-tls + $(PKG)_CONFIGURE_OPTIONS += --disable-gzip + + $(PKG_SOURCE_DOWNLOAD) + $(PKG_UNPACKED) + $(PKG_CONFIGURED_CONFIGURE) + + $($(PKG)_BINARY): $($(PKG)_DIR)/.configured + $(SUBMAKE) -C $(NZBGET_DIR) \ + CXX="$(TARGET_CXX)" + + $($(PKG)_TARGET_BINARY): $($(PKG)_BINARY) + $(INSTALL_BINARY_STRIP) + + $(pkg): + + $(pkg)-precompiled: $($(PKG)_TARGET_BINARY) + + $(pkg)-clean: + -$(SUBMAKE) -C $(NZBGET_DIR) clean + + $(pkg)-uninstall: + $(RM) $(NZBGET_TARGET_BINARY) + + $(PKG_FINISH) + +The indents should be replaced with tabs. + +We also need to add a small patch file to add the one missing include. + +``vi make/nzbget/patches/100-ParCoordinator_ctype.h.patch`` + +.. code:: bash + + diff -dur ParCoordinator.cpp.orig ParCoordinator.cpp + --- ParCoordinator.cpp.orig 2013-11-18 23:46:41.720138807 +0100 + +++ ParCoordinator.cpp 2013-11-18 23:47:18.700129701 +0100 + @@ -35,6 +35,7 @@ + #include <string.h> + #include <stdio.h> + #include <stdarg.h> + +#include <ctype.h> + #ifdef WIN32 + #include <direct.h> + #else + +.. _Createnewimagewithaddedpackage: + +Create new image with added package +----------------------------------- + +| Like normal with creating an image execute ``make menuconfig`` and + select your router model and all options and packages to be included. +| The newly added package is located in: + ``Packages ---> Unstable ---> [*] nzbget 11.0``. Also select an + additional library that is needed for nzbget: +| ``Shared libraries ---> C++ ---> [*] uClibc++ (libuClibc++-0.2.3.so)``. + +If you manually created this package you might need a +``rm /home/freetz/freetz-trunk/source/target-mipsel_gcc-4.6.4_uClibc-0.9.32.1/config.cache`` +or ``make distclean``. And also be aware that the exports are still +there, this can be easily solved with a reboot. + +After exiting, create the package with ``make``. + +.. _Testing: + +Testing +------- + +Lets see if "``make clean``" works as expected. This should bring the +state back to like it was before the "``make``" command. + +.. code:: bash + + cd ~/freetz-trunk/ + make clean + +.. _PreparingNewPackageforPublicIntegrationtoFreetzTrunk: + +Preparing New Package for Public Integration to Freetz Trunk +------------------------------------------------------------ + +In order to create a file which displays the changes which would be +needed in freetz to add your package, issue the following commands: + +.. code:: bash + + svn add make/nzbget + svn diff ./make > patchfile + +In our case "patchfile" may be called "nzbget". Please note that there +is no need for an extension here. You may only need an extension (e.g. +.txt) for uploading it in the IPPF, because else it would not be +recognized as a valid file for upload. + +In addition you could even create a ready (and compressed) package of +the two files which you had edited above: + +.. code:: bash + + tar cfz nzbget.tar.gz make/nzbget --exclude .svn + tar tfz nzbget.tar.gz + +- Tags +- `development </tags/development>`__ +- `howto </tags/howto>`__ +- `howtos </tags/howtos>`__ +- `packages <../../../../../packages.html>`__ diff --git a/wiki/help/howtos/development/developer_information/package_development_start/example_config_handling.rst b/wiki/help/howtos/development/developer_information/package_development_start/example_config_handling.rst new file mode 100644 index 0000000..59fa27e --- /dev/null +++ b/wiki/help/howtos/development/developer_information/package_development_start/example_config_handling.rst @@ -0,0 +1,35 @@ +| Here some examples using the tools for configuration handling to + explain the behavior of the available commands. + +Example to disable the freetz http web-interface (web-server): + ++-----------------------------------+-----------------------------------+ +| #. vi /mod/etc/conf/mod.cfg | | Change MOD_HTTPD=’yes’ to | +| #. modconf save mod | MOD_HTTPD=’no’ | +| #. modsave flash | | will update/ (create if not | +| | existing) | +| | /tmp/flash/mod.diff | +| | | saves content of /tmp/flash/ | +| | to tffs, including the new | +| | mod.diff file | ++-----------------------------------+-----------------------------------+ + +or use a shortcut for step 2 and 3: + ++-----------------------------------+-----------------------------------+ +| 2. modsave | This will update all | +| | /tmp/flash/<package>.diff | +| | files, and save resulting | +| | content of /tmp/flash/ to tffs | ++-----------------------------------+-----------------------------------+ + +| The above steps is to give examples of the available commands. +| To more comfortably obtain the same results: + +#. modconf set mod MOD_HTTPD=no +#. modconf save mod +#. modsave flash + +or use a shortcut for step 2 and 3: + +2. modsave diff --git a/wiki/help/howtos/development/developer_information/package_development_start/webinterface_example_1.en.rst b/wiki/help/howtos/development/developer_information/package_development_start/webinterface_example_1.en.rst new file mode 100644 index 0000000..f774b68 --- /dev/null +++ b/wiki/help/howtos/development/developer_information/package_development_start/webinterface_example_1.en.rst @@ -0,0 +1 @@ +See: `webinterface_example_1 <webinterface_example_1.html>`__. diff --git a/wiki/help/howtos/development/developer_information/package_development_start/webinterface_example_1.rst b/wiki/help/howtos/development/developer_information/package_development_start/webinterface_example_1.rst new file mode 100644 index 0000000..65afd27 --- /dev/null +++ b/wiki/help/howtos/development/developer_information/package_development_start/webinterface_example_1.rst @@ -0,0 +1,366 @@ +.. _Web-interfaceHTTPTunnel: + +Web-interface HTTPTunnel +------------------------ + +| This example explains how to create a web-page for the package + `httptunnel <../../../../../packages/httptunnel.html>`__. + +Usages information: + +.. code:: bash + + # hts --help + Usage: hts [OPTION]... [PORT] + Listen for incoming httptunnel connections at PORT (default port is 8888). + When a connection is made, I/O is redirected to the destination specified + by the --device, --forward-port or --stdin-stdout switch. + + -c, --content-length BYTES use HTTP PUT requests of BYTES size + (k, M, and G postfixes recognized) + -d, --device DEVICE use DEVICE for input and output + -F, --forward-port HOST:PORT connect to PORT at HOST and use it for + input and output + -h, --help display this help and exit + -k, --keep-alive SECONDS send keepalive bytes every SECONDS seconds + (default is 5) + -M, --max-connection-age SEC maximum time a connection will stay + open is SEC seconds (default is 300) + -s, --stdin-stdout use stdin/stdout for communication + (implies --no-daemon) + -S, --strict-content-length always write Content-Length bytes in requests + -V, --version output version information and exit + -w, --no-daemon don't fork into the background + -p, --pid-file LOCATION write a PID file to LOCATION + + Report bugs to bug-httptunnel@gnu.org. + # + +| First some characteristics of the HTTPTunnel package. + +- There is no configuration file, all arguments are options on the + command line. +- The binary (daemon) name (hts) differs from the package name + (httptunnel). +- The command line options allows to specify the PID file. + +| Based on the usage information we can select the following variables + for inclusion in the web-interface: +| -F <HOST>:<HOSTPORT> +| -k <KEEPALIVE> +| -M <MAXCONNECTIONAGE> +| -d <DEVICE> +| <CLIENTPORT> + +httptunnel.cfg +~~~~~~~~~~~~~~ + +| Next we need to create the `<package>.cfg <%3Cpackage%3E.cfg.html>`__ + file with the default values. +| We always need the <PACKAGE>_ENABLED variable with default value 'no'. +| For HOST I selected 'localhost', but I actually never used this + package, so I'm not sure if this default value is good from a security + point of view. + +.. code:: bash + + export HTTPTUNNEL_ENABLED='no' + export HTTPTUNNEL_HOST='localhost' + export HTTPTUNNEL_HOSTPORT='22' + export HTTPTUNNEL_CLIENTPORT='443' + export HTTPTUNNEL_KEEPALIVE='5' + export HTTPTUNNEL_MAXCONNECTIONAGE='300' + export HTTPTUNNEL_DEVICE='' + +httptunnel.cgi +~~~~~~~~~~~~~~ + +| Now the `<package>.cgi <%3Cpackage%3E.cgi.html>`__ can be created. +| The first part is ``Start Type`` and is enclosed with the + ``sec_begin`` and ``sec_end`` keywords. +| This part is uses the HTTPTUNNEL_ENABLED variable, and determines if + the package should be started automatically at system startup. +| Two `​input elements <http://www.w3schools.com/html/html_forms.asp>`__ + with radio buttons are declared within a + `​paragraph <http://www.w3schools.com/html/html_paragraphs.asp>`__. + +| On the actual web-page the first item is ``Status``, displaying the + current status of the package and a Start, Stop and Restart button. + This part is probably generated by ``/usr/lib/libmodcgi.sh``. + +| For each displayed text you see a ``lang`` statement and the text in + both German and the English language. This ``lang`` statement is used + during build on the build environment. +| To be able to test your created + `<package>.cgi <%3Cpackage%3E.cgi.html>`__ file directly on the router + you can first create one without the ``lang`` statements, using just + your preferred language. +| After the web-interface behaves as required you can add the ``lang`` + statements and the text in both languages. +| See page `<package>.cgi <%3Cpackage%3E.cgi.html>`__ for more + information on the ``lang`` statement. + +| The second part, enclosed with the ``sec_begin`` and ``sec_end`` + keywords, is for configuring the selected parameters. +| In this case a + `​table <http://www.w3schools.com/html/html_tables.asp>`__ is used + with a table row (tr) for each parameter, and a column for to display + the parameter name, and a column for entering the value in an input + field. +| A table has the advantage that the cells in the columns are + automatically aligned. +| In the first table data cell (td) the displays the parameter name in + the correct language. The second table data cell (td) displays the + current value using the Shell instruction + ``html "$HTTPTUNNEL_<VALUE>"`` as + `​value <http://www.w3schools.com/tags/tag_input.asp>`__, in the input + field of `​size <http://www.w3schools.com/tags/att_input_size.asp>`__ + characters length displayed, and a maximum of + `​maxlength <http://www.w3schools.com/tags/att_input_maxlength.asp>`__ + characters that can be entered. +| The entered value is assigned to the input-field element + `​name <http://www.w3schools.com/tags/att_input_name.asp>`__ like + name='<**value**>', which correspond to the parameter name + <PACKAGE>_<**VALUE**>. +| The input `​type <http://www.w3schools.com/tags/att_input_type.asp>`__ + is here always text. +| After selecting the Apply button the entered values are assigned to + the <PACKAGE>_<VALUE> parameters located in + ``/mod/etc/conf/<package>.cfg``. + +httptunnel.cgi without ``lang`` statements: + +.. code:: bash + + #!/bin/sh + + . /usr/lib/libmodcgi.sh + + check "$HTTPTUNNEL_ENABLED" yes:auto "*":man + + sec_begin 'Start type' + + cat << EOF + <p> + <input id="e1" type="radio" name="enabled" value="yes"$auto_chk><label for="e1">Automatic</label> + <input id="e2" type="radio" name="enabled" value="no"$man_chk><label for="e2">Manual</label> + EOF + cat << EOF + </p> + EOF + + sec_end + sec_begin 'httptunnel' + + cat << EOF + <table border="0"> + <tr> + <td>Destination Host:</td> + <td><input type="text" name="host" size="60" maxlength="255" value="$(html "$HTTPTUNNEL_HOST")"></td> + </tr> + <tr> + <td>Destination Port:</td> + <td><input type="text" name="hostport" size="5" maxlength="5" value="$(html "$HTTPTUNNEL_HOSTPORT")"></td> + </tr> + <tr> + <td>Client Port:</td> + <td><input type="text" name="clientport" size="5" maxlength="5" value="$(html "$HTTPTUNNEL_CLIENTPORT")"></td> + </tr> + <tr> + <td>Keep Alive:</td> + <td><input type="text" name="keepalive" size="3" maxlength="3" value="$(html "$HTTPTUNNEL_KEEPALIVE")"></td> + </tr> + <tr> + <td>Max Connection Age:</td> + <td><input type="text" name="maxconnectionage" size="4" maxlength="4" value="$(html "$HTTPTUNNEL_MAXCONNECTIONAGE")"></td> + </tr> + <tr> + <td>Device:</td> + <td><input type="text" name="device" size="10" maxlength="10" value="$(html "$HTTPTUNNEL_DEVICE")"></td> + </tr> + </table> + EOF + + sec_end + +httptunnel.cgi with ``lang`` statements and an entry for each language: + +.. code:: bash + + #!/bin/sh + + . /usr/lib/libmodcgi.sh + + check "$HTTPTUNNEL_ENABLED" yes:auto "*":man + + sec_begin '$(lang de:"Starttyp" en:"Start type")' + + cat << EOF + <p> + <input id="e1" type="radio" name="enabled" value="yes"$auto_chk><label for="e1">$(lang de:"Automatisch" en:"Automatic")</label> + <input id="e2" type="radio" name="enabled" value="no"$man_chk><label for="e2">$(lang de:"Manuell" en:"Manual")</label> + EOF + cat << EOF + </p> + EOF + + sec_end + sec_begin '$(lang de:"httptunnel" en:"httptunnel")' + + cat << EOF + <table border="0"> + <tr> + <td>$(lang de:"Destination Host" en:"Destination Host"):</td> + <td><input type="text" name="host" size="80" maxlength="255" value="$(html "$HTTPTUNNEL_HOST")"></td> + </tr> + <tr> + <td>$(lang de:"Destination Port" en:"Destination Port"):</td> + <td><input type="text" name="hostport" size="5" maxlength="5" value="$(html "$HTTPTUNNEL_HOSTPORT")"></td> + </tr> + <tr> + <td>$(lang de:"Client Port" en:"Client Port"):</td> + <td><input type="text" name="clientport" size="5" maxlength="5" value="$(html "$HTTPTUNNEL_CLIENTPORT")"></td> + </tr> + <tr> + <td>$(lang de:"Keep Alive" en:"Keep Alive"):</td> + <td><input type="text" name="keepalive" size="3" maxlength="3" value="$(html "$HTTPTUNNEL_KEEPALIVE")"></td> + </tr> + <tr> + <td>$(lang de:"Max Connection Age" en:"Max Connection Age"):</td> + <td><input type="text" name="maxconnectionage" size="4" maxlength="4" value="$(html "$HTTPTUNNEL_MAXCONNECTIONAGE")"></td> + </tr> + <tr> + <td>$(lang de:"Device" en:"Device"):</td> + <td><input type="text" name="device" size="10" maxlength="10" value="$(html "$HTTPTUNNEL_DEVICE")"></td> + </tr> + </table> + EOF + + sec_end + +rc.httptunnel +~~~~~~~~~~~~~ + +| Now we only need to write the `rc.<package> <rc.%3Cpackage%3E.html>`__ + file. +| For this package the package name ``httptunnel`` and the binary + ``hts`` differ. This requires the use of variable ``DAEMON`` for the + package name, and ``DAEMON_BIN`` for the binary. +| From the usage information we get that the binary gives an option to + specify the PID-file. We will use this option in the rc.httptunnel + file. +| The binary is executed with the ``modlib_startdaemon`` function, which + is using in the ``start ()`` function. As parameter the ``DAEMON_BIN`` + with its parameters is used. +| For this package we have one conditional parameter. The ``DEVICE`` + option should only be added to the list of parameters is it contains a + non-zero amount of characters. +| This is accomplished using a if [ test ] then function. +| The case function test for a match. See the + `rc.<package> <rc.%3Cpackage%3E.html>`__ page for more information. + +.. code:: bash + + #!/bin/sh + + DAEMON=httptunnel + DAEMON_BIN=hts + PID_FILE=/var/run/$DAEMON_BIN.pid + . /etc/init.d/modlibrc + + start() { + OPTIONS="-F $HTTPTUNNEL_HOST:$HTTPTUNNEL_HOSTPORT \ + -k $HTTPTUNNEL_KEEPALIVE \ + -M $HTTPTUNNEL_MAXCONNECTIONAGE \ + -p $PID_FILE \ + $HTTPTUNNEL_CLIENTPORT" + [ -n "$HTTPTUNNEL_DEVICE" ] && OPTIONS="$OPTIONS -d $HTTPTUNNEL_DEVICE" + modlib_startdaemon $DAEMON_BIN $OPTIONS + } + + case $1 in + ""|load) + modreg cgi 'httptunnel' 'httptunnel' + modreg daemon httptunnel + + modlib_start $HTTPTUNNEL_ENABLED + ;; + unload) + modunreg daemon httptunnel + modunreg cgi 'httptunnel' + modlib_stop + ;; + start) + modlib_start + ;; + stop) + modlib_stop + ;; + restart) + modlib_restart + ;; + status) + modlib_status + ;; + *) + echo "Usage: $0 [load|unload|start|stop|restart|status]" 1>&2 + exit 1 + ;; + esac + + exit 0 + +.. _Testonrouter: + +Test on router +~~~~~~~~~~~~~~ + +| The following scripts can help to test the created files directly on + the router. +| For this the files are located on a USB-stick. +| If the web-interface is working you can add the parameter ``2`` to + obtain the config parameter values from tffs. + +For the initial development of all files: + +.. code:: bash + + #!/bin/sh + export package=httptunnel + echo Will add webinterface for $package + [ ! -e /mod/etc/default.$package ] && mkdir /mod/etc/default.$package + [ ! -e /mod/etc/default.$package/$package.cfg ] && cp $package.cfg /mod/etc/default.$package/ + if [ $1 -eq 2 ]; then + modconf load $package + else + [ ! -e /mod/etc/conf/$package.cfg ] && cp $package.cfg /mod/etc/conf/ + fi + cd /var/mod/usr/lib/cgi-bin/ + [ ! -e /var/mod/usr/lib/cgi-bin/$package.cgi ] && ln -s /var/media/ftp/uStor01/freetz/webinterface/$package/$package.cgi $package.cgi + cd /mod/etc/init.d/ + [ ! -e /mod/etc/init.d/rc.$package ] && ln -s /var/media/ftp/uStor01/freetz/webinterface/$package/rc.$package rc.$package + rm /var/mod/var/cache/menu/packages + modreg cgi $package $package + +For verifying changes to just the rc.<package> file e.g. after already +including the files in the Freetz image: + +.. code:: bash + + #!/bin/sh + export package=httptunnel + cd /mod/etc/init.d/ + [ -h /mod/etc/init.d/rc.$package ] && rm /mod/etc/init.d/rc.$package + [ ! -e /mod/etc/init.d/rc.$package ] && ln -s /var/media/ftp/uStor01/freetz/webinterface/$package/rc.$package rc.$package + +.. _References: + +References +~~~~~~~~~~ + +To help with Bash Shell scripts: + +- `​http://steve-parker.org/sh/test.shtml <http://steve-parker.org/sh/test.shtml>`__ +- `​http://www.linuxjournal.com/content/bash-preserving-whitespace-using-set-and-eval <http://www.linuxjournal.com/content/bash-preserving-whitespace-using-set-and-eval>`__ +- `/wiki/help/howtos/development/developer_information/shell_coding_conventions#ShellCodingConventions <../shell_coding_conventions.html#ShellCodingConventions>`__ +- `​http://www.ooblick.com/text/sh/ <http://www.ooblick.com/text/sh/>`__ diff --git a/wiki/help/howtos/development/developer_information/post_commit_hook.rst b/wiki/help/howtos/development/developer_information/post_commit_hook.rst new file mode 100644 index 0000000..f18ae42 --- /dev/null +++ b/wiki/help/howtos/development/developer_information/post_commit_hook.rst @@ -0,0 +1,69 @@ +.. _TracHooks: + +Trac Hooks +========== + +trac-post-commit-hook +--------------------- + +The trac-post-commit-hook script searches commit messages for text in +the form of: + +.. code:: bash + + command #1 + command #1, #2 + command #1 & #2 + command #1 and #2 + +You can have more then one command in a message. The following commands +are supported. There is more then one spelling for each command, to make +this as user-friendly as possible. + +.. code:: bash + + closes, fixes + +- The specified issue numbers are closed with the contents of this + commit message being added to it. + +.. code:: bash + + references, refs, addresses, re + +- The specified issue numbers are left in their current status, but the + contents of this commit message are added to their notes. + +A fairly complicated example of what you can do is with a commit message +of: + +.. code:: bash + + Changed blah and foo to do this or that. Fixes #10 and #12, and refs #12. + +- This will close #10 and #12, and add a note to #12. + +trac-post-revprop-change-hook +----------------------------- + +With the trac-post-revprop-change-hook script one could change the +svn:log property. The syntax is: + +.. code:: bash + + 1. svn propset svn:log --revprop -r <REVISION> "My corrected log message" <URL> + 2. svn propset svn:log --revprop -r <REVISION> -F <file-with-corrected-log-message.txt> <URL> + 3. svn propedit svn:log --revprop -r <REVISION> + +For easy usage add a "svn comment edit" alias to your .bash_profile: + +.. code:: bash + + export SVN_EDITOR=vi (or whatever) + alias svnceF='svn propedit svn:log --revprop http://svn.freetz.org/ -r' + +Your editor will start after + +.. code:: bash + + svnceF <REVISION> diff --git a/wiki/help/howtos/development/developer_information/shell_coding_conventions.rst b/wiki/help/howtos/development/developer_information/shell_coding_conventions.rst new file mode 100644 index 0000000..7cc3676 --- /dev/null +++ b/wiki/help/howtos/development/developer_information/shell_coding_conventions.rst @@ -0,0 +1,420 @@ +.. _ShellCodingConventions: + +Shell Coding Conventions +======================== + +As many (if not most) functional parts of freetz are implemented using +(bourne) shell scripts, a need for some shell coding conventions arose. +Currently, this page has the draft status. Some parts seem to be quite +settled, others are just a recommendation or `​need further +discussion <http://www.ip-phone-forum.de/showthread.php?t=163148&highlight=coding+style>`__. +This style guide is based on +`​http://www.opensolaris.org/os/community/on/shellstyle/ <http://web.archive.org/web/20070422195703/http://opensolaris.org/os/community/on/shellstyle/>`__ +(archive.org). + +Table of contents +^^^^^^^^^^^^^^^^^ + +#. `Shell Language <shell_coding_conventions.html#ShellLanguage>`__ +#. `Basic Format <shell_coding_conventions.html#BasicFormat>`__ +#. `If, For, and While <shell_coding_conventions.html#IfForandWhile>`__ +#. `Test Built-in <shell_coding_conventions.html#TestBuilt-in>`__ +#. `Single-line conditional + statements <shell_coding_conventions.html#Single-lineconditionalstatements>`__ +#. `Infinite Loops <shell_coding_conventions.html#InfiniteLoops>`__ +#. `Exit Status and If/While + Statements <shell_coding_conventions.html#ExitStatusandIfWhileStatements>`__ +#. `Variable + References <shell_coding_conventions.html#VariableReferences>`__ +#. `Variable Naming <shell_coding_conventions.html#VariableNaming>`__ +#. `Quoting <shell_coding_conventions.html#Quoting>`__ +#. `Variable + Assignments <shell_coding_conventions.html#VariableAssignments>`__ +#. `Testing for (Non-)Empty + Strings <shell_coding_conventions.html#TestingforNon-EmptyStrings>`__ +#. `Commenting <shell_coding_conventions.html#Commenting>`__ +#. `Pathnames <shell_coding_conventions.html#Pathnames>`__ +#. `Interpreter + Magic <shell_coding_conventions.html#InterpreterMagic>`__ + +.. _ShellLanguage: + +Shell Language +-------------- + +The shell language for any shell scripts is the bourne shell language. +An adequate technical manual to the (posix) shell seems to be +`​http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html <http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html>`__. + +.. _BasicFormat: + +Basic Format +------------ + +The basic format is that all lines are indented by TABs (4 spaces!), and +continuation lines (which in the shell end with "\") are indented by an +equivalent number of TABs and then an additional two spaces, e.g. + +:: + + cp foo bar + cp some_realllllllllllllllly_realllllllllllllly_long_path \ + to_another_really_long_path_with_er-ror + +.. _IfForandWhile: + +If, For, and While +------------------ + +The sh token equivalent to the C "{" should appear on the same line, +separated by a ";", as in: + +:: + + if [ "$x" = hello ]; then + echo $x + fi + + for i in 1 2 3; do + echo $i + done + + i=0 + while [ $i -le 20 ]; do + echo $i + i=$(($i + 1)) + done + +.. _TestBuilt-in: + +Test Built-in +------------- + +DO NOT use the test built-in. Instead, use the [ builtin. + +So, instead of + +:: + + if test $1 -gt 0; then + +use: + +:: + + if [ "$1" -gt 0 ]; then + +.. _Single-lineconditionalstatements: + +Single-line conditional statements +---------------------------------- + +It is permissible to use ``&&`` and ``||`` to construct shorthand for an +"if" statement in the case where the if statement has a single +consequent line: + +:: + + [ "$1" -eq 0 ] && exit 0 + +instead of the longer: + +:: + + if [ $1 -eq 0 ]; then + exit 0 + fi + +DO NOT combine ``&&`` with ``{ }``, as in: + +:: + + [ "$1" -eq 0 ] && { + do something + do something else + } + +Use a complete "if-then-fi" construct for this instead. + +Remark by kriegaex (2012-01-21): Nobody ever asked me for my opinion, +yet I get bugged by one or two people whenever I do this: + +:: + + [ $foo -eq 0 ] \ + && echo "tea" + || echo "coffee" + + [ $foo -eq 0 ] && [ "$bar" != "oops" ] \ + && command1 | grep "xxx" \ + || command2 + +I will continue to use this as a shorthand for if-else as long as there +are no nested ``&&`` or ``||`` constructs or brackets involved. Whenever +I use it, I indent it cleanly and use it exactly analogous to if-else, +so it is always ``condition && true-case || false-case``, never anything +more complicated. I am even putting ``&&`` or ``||`` to the beginning of +the indented lines on purpose so as to document the condition for +executing the statements. + +I also think that this + +:: + + while condition; do + command1 && + command2 && + command3 && + command4 && + echo "result" + done + +should be permitted because it is more readable than (and still trivial +enough) + +:: + + while condition; do + command1 || continue + command2 || continue + command3 || continue + command4 || continue + echo "result" + done + +There is a reason why ``&&`` and ``||`` were invented, and I believe +that this case does not look obfuscated in any way. + +.. _InfiniteLoops: + +Infinite Loops +-------------- + +*This should be discussed:* The original solaris sh style guide says not +to use "true", as this is normally not a shell builtin, and instead use +:, which also evaluates to true. In the busybox sh used with freetz, +"true" is also a shell builtin, and as it is more readable, it should be +prefered over ":": + +:: + + while true; do + echo infinite loop + done + +.. _ExitStatusandIfWhileStatements: + +Exit Status and If/While Statements +----------------------------------- + +Recall that "if" and "while" operate on the exit status of the statement +to be executed. In the shell, zero (0) means true and non-zero means +false. The exit status of the last command which was executed is +available in the $? variable. When using "if" and "while", it is +typically not necessary to use $? explicitly, as in: + +:: + + grep foo /etc/passwd >/dev/null 2>&1 + if [ $? -eq 0 ]; then + echo found + fi + +Instead, you can more concisely write: + +:: + + if grep foo /etc/passwd >/dev/null 2>&1; then + echo found + fi + +Or, when appropriate: + +:: + + grep foo /etc/passwd >/dev/null 2>&1 && echo found + +.. _VariableReferences: + +Variable References +------------------- + +Variable references begin with $ and \*may\* have their name enclosed in +{}'s. They should only be used when required. + +Braces are required around variable names in two specific cases: + +(1) when you are forming the string concatenation of your variable with +another string: + +:: + + [ "$install" = yes ] && root="/a/" || root="/" + hosts=${root}etc/inet/hosts + +and (2) when you are using one of the various substitution/assignment +operators: + +:: + + echo ${BASEDIR:-/a} + +.. _VariableNaming: + +Variable Naming +--------------- + +Shell variables should usually be all lower case, except for a few +exceptions, where CAPTITAL letters are to be used: + +(1) variables that are exported into the environment: + +:: + + BASEDIR=/a; export BASEDIR + +(2) variables that are used like constants + +:: + + TMP=/var/tmp + FLASH=$TMP/flash + +This helps your reader immediately understand the implication of +modifying a given variable (i.e. whether it will be inherited by child +processes). + +.. _Quoting: + +Quoting +------- + +Quick review of the quoting basics: + +.. code:: bash + + single quotes ('') mean quote but do not expand variable or backquote substitutions. + Double quotes ("") mean quote but allow expansion. + Backquotes () mean execute the command and substitute its standard output + (note: stderr is unchanged and may "leak" through unless properly redirected)'' + +Use quotes wherever they *could* be necessary, even when knowing that +for example a variable does only expand to one word at the moment. This +can save us from possible side effects of later code changes. + +But please do not unnecessarily quote everything. Literals should +usually not be quoted: + +:: + + [ -r /path/to/some/file ] && rm /path/to/some/file + +The usage of backquotes (``) is discouraged in favor of the "new" form +$(). + +.. _VariableAssignments: + +Variable Assignments +-------------------- + +Variable assignments should not be quoted if unnecessary: + +:: + + variable=yes + variable=$(ls) + variable="some text" + +.. _TestingforNon-EmptyStrings: + +Testing for (Non-)Empty Strings +------------------------------- + +DO NOT test for non-/empty strings by comparing to "" or *. ALWAYS use +the test operators -n (non-zero-length string) and -z (zero-length +string):* + +:: + + if [ -z "$foo" ]; then + echo 'you forgot to set $foo' + fi + + if [ -n "$BASEDIR" ]; then + echo "\$BASEDIR is set to $BASEDIR" + fi + +.. _Commenting: + +Commenting +---------- + +|Warning| As usual, comments are mainly intended for maintainers of the +files, that means probably not you but someone else. Comments should +describe why something is done the way it is done, or explain +complicated statements that are not obvious. A summary for a whole block +of code or the synopsis of a function are also useful. Comments should +**not** explain what a simple line of code does, as it should be assumed +that the reader is familiar with the language. + +Shell comments are preceded by the '#' character. Both single and +multi-line comments are to be placed at line begin. Use an extra '#' +above and below the comment in the case of multi-line comments: + +:: + + # Copy foo to bar (this is an example of a useless comment, the purpose of cp should be known). + cp foo bar + + # + # Modify the permissions on bar. (This is obvious from the code and not necessary.) + # We need to set them to root/sys in order to match the package prototype. + # (This information is useful because it is not contained in the code.) + # + chown root bar + chgrp sys bar + +.. _Pathnames: + +Pathnames +--------- + +It is always a good idea to be careful about $PATH settings and +pathnames when writing shell scripts. This allows them to function +correctly even when the user invoking your script has some strange $PATH +set in their environment. + +There are two acceptable ways to do this: + +(1) make *all* command references in your script use explicit pathnames: + +:: + + /usr/bin/chown root bar + /usr/bin/chgrp sys bar + +or (2) explicitly reset $PATH in your script: + +:: + + PATH=/usr/bin; export PATH + + chown root bar + chgrp sys bar + +DO NOT use a mixture of (1) and (2) in the same script. Pick one method +and use it consistently. + +.. _InterpreterMagic: + +Interpreter Magic +----------------- + +The proper interpreter magic (aka shebang) for shell script is: + +:: + + #!/bin/sh + +.. |Warning| image:: ../../../../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/help/howtos/development/developer_information/webif/libmodcgi.rst b/wiki/help/howtos/development/developer_information/webif/libmodcgi.rst new file mode 100644 index 0000000..31bc516 --- /dev/null +++ b/wiki/help/howtos/development/developer_information/webif/libmodcgi.rst @@ -0,0 +1,205 @@ +libmodcgi.sh +============ + +Diese Bibliothek dient der Erzeugung von Webseiten innerhalb des +Freetz-Webinterface. Einzubinden durch + +.. code:: bash + + source /usr/lib/libmodcgi.sh + +cgi +--- + +**Diese Schnittstelle ist in Entwicklung und kann sich täglich ändern.** + +Mithilfe der Funktion ``cgi`` können verschiedene Einstellungen für die +aktuelle Seite vorgenommen werden. ``cgi`` darf nur vor ``cgi_begin`` +aufgerufen werden. + +Die Optionen sind im Einzelnen: + +``--style=URI`` + + Das CSS-Stylesheet an der Adresse ``URI`` wird zusätzlich + eingebunden. Diese Option kann mehrfach verwendet werden. + +.. + + Relative URLs werden relativ zu ``/style/`` im Freetz-Webinterface + ausgewertet. Sollte ein Stylesheet also im Dateisystem unter + ``/usr/share/style/pkg/status.css`` abgelegt sein, so kann es über + ``--style=pkg/status.css`` eingebunden werden. + +``--id=ID`` + + Das body-Tag der Seite erhält diese ID; die ID dient außerdem der + Auswahl des aktiven Menüpunkts in der Navigation. + +``--help=PATH`` + + Ein Pfad (beginnend mit "/"), der die Hilfe-Seite zu der aktuellen + Seite angibt. (Für das Haupt-Freetz-Interface wird dieser Pfad + momentan an + `​http://trac.freetz.org/wiki <http://trac.freetz.org/wiki>`__ + angehängt.) + +cgi_begin +--------- + +Startet eine HTML-Seite im Freetz-Stil. (Vom HTTP-Header über den +HTML-Header bis zu Navigationselementen und ähnlichem wird alles +geschrieben, was an den Anfang einer Seite gehört.) + +Alle Seiten im Freetz-Webinterface sind momentan in ISO-8859-1 (Latin 1) +kodiert. + +Aufruf: + +.. code:: bash + + cgi_begin TITLE + +- TITEL ist der bereits HTML-kodierte Titel der Seite + +cgi_end +------- + +Schließt eine HTML-Seite im Freetz-Stil ab. + +sec_begin +--------- + +Startet einen Abschnitt mit dem Titel TITLE. Wie ein "Abschnitt" im +Detail in der HTML-Ausgabe umgesetzt wird, obliegt dem gewählten Skin; +garantiert wird jedoch ein umgebendes ``<div class="section">`` + +.. code:: bash + + sec_begin TITLE [ID] + +Optional kann eine ID angegeben werden, um sich auf den Abschnitt +beziehen zu können. Auf HTML-Ebene wird dies die ID des genannten +div-Elements. + +sec_end +------- + +Beendet einen Abschnitt. + +html +---- + +Diese Funktion HTML-kodiert ihre Eingaben. Kurze Eingaben können als +Argument übergeben werden, bei längeren sollte ``html`` als Filter +benutzt werden: + +:: + + echo "<input value='$(html "$VALUE")'> ..." + log_output | html + +.. _checkselect: + +check, select +------------- + +TODO + +href +---- + +Erzeugt einen Link zu einer dynamisch registrierten Seite im +Freetz-Webinterface: Die Argumente sind denen von ``modreg`` ähnlich: + +.. code:: bash + + href file <pkg> <id> + href extra <pkg> <cgi-name> + href status <pkg> [<cgi-name>] + href cgi <pkg> [<key-value>]... + +Typischer Einsatz in einem Paket foo: + +:: + + cat << EOF + <a href="$(href file foo advanced)">Konfigurationsdatei bearbeiten</a> + EOF + +(wenn die Datei vorher per ``modreg file foo advanced ...`` registriert +wurde.) + +back_button +----------- + +TODO + +sec_level +--------- + +TODO + +stat_bar +-------- + +TODO + +cgi_param +--------- + +TODO + +.. _cgi_errorprint_error: + +cgi_error, print_error +---------------------- + +.. code:: bash + + cgi_error MESSAGE + print_error MESSAGE + +``cgi_error`` erzeugt eine komplette Fehlerseite (inkl. +cgi_begin/cgi_end) mit der angegeben Meldung. ``print_error`` erzeugt +nur die Fehlermeldung und kann innerhalb einer bestehenden Seite genutzt +werden. + +path_info +--------- + +Splits PATH_INFO into segments at "/"; returns the segments in the given +variables. If there are not more variables than segments, the final +variable will receive the remaining unsplit PATH_INFO. + +.. code:: bash + + PATH_INFO=/foo/bar/baz + path_info package id rest + +will set + +.. code:: bash + + package=foo + id=bar + rest=/baz + +valid +----- + +Validiert bestimmte Arten von Eingabedaten. Momentan unterstützt: + +``valid package PACKAGE`` + + Ist wahr, wenn PACKAGE ein gültiger Paket-Name ist. + +``valid id NAME`` + + Ist wahr, wenn NAME eine gültiger Bezeichner ist (der Dateien, + Extras, Status-Seiten innerhalb eines Pakets identifiziert) + +Die Prüfung ist momentan recht lax (hauptsächlich nur Schutz gegen +Pfadoperationen wie "." und "/" im Namen). Die Ausgabe von ``valid`` +sollte momentan nicht als Maßstab genommen werden, um gültige Namen zu +konstruieren. diff --git a/wiki/help/howtos/development/firmware_update_details.rst b/wiki/help/howtos/development/firmware_update_details.rst new file mode 100644 index 0000000..827f601 --- /dev/null +++ b/wiki/help/howtos/development/firmware_update_details.rst @@ -0,0 +1,125 @@ +.. _AblaufeinesFirmware-Updates: + +Ablauf eines Firmware-Updates +============================= + +Bei einem Firmware-Update über das AVM-Web-Interface passiert in etwa +Folgendes (kein Anspruch auf Vollständigkeit): + +- Die Steuerung des gesamten Vorgangs übernimmt das Binary + ``/usr/www/cgi-bin/firmwarecfg``. Es wird vom Webserver aufgerufen. +- ``firmwarecfg`` ruft zunächst das Shell-Skript + ``/bin/prepare_fwupgrade`` auf, um diverse Dienste zu stoppen und + somit Platz im RAM für das Firmware-Archiv zu schaffen. Auch Spuren + von evtl. früheren Updates in der RAM-Disk (``/var``) werden + gelöscht. ``prepare_fwupgrade`` wird entweder mit dem Parameter + *start* oder mit *start_from_internet* aufgerufen, je nachdem, ob ein + Update von der AVM-Seite geladen werden soll oder von Festplatte. Der + Unterschied besteht v.a. darin, daß der DSL-Daemon ``dsld`` im + zweiten Fall zunächst nicht gestoppt wird. +- Nachdem nun ein Großteil der Aktivitäten der FritzBox stillgelegt + ist, wird das Firmware-Image in die RAM-Disk übertragen und dort + mittels tar entpackt. Dabei wird die digitale Signatur des Pakets + geprüft. Falls sie nicht korrekt verifiziert werden kann oder fehlt, + wird später die bekannte Meldung über eine nicht freigegebene + Firmware im Web-Interface angezeigt. Zunächst wird der Benutzer des + Web-Interfaces via Rückmeldung von ``firmwarecfg`` aber einfach nur + gefragt, ob er trotzdem die Firmware installieren möchte. Nehmen wir + an, er bejaht das. +- Die wichtigsten Dateien des entpackten Firmware-Archivs liegen nun + unter + + - ``/var/install`` + - ``/var/tmp/kernel.image`` + - ``/var/tmp/filesystem.image`` + +- Die letzten beiden Dateien liegen nur vor, wenn es sich um ein + "echtes" Update und nicht um ein Pseudo-Update, z.B. zum Aktivieren + von Telnet oder zur Installation einer Software wie dem *LCR Updater* + handelt. ``filesystem.image`` hat in vielen Fällen die Länge null, + weil in ``kernel.image`` alle benötigten Daten fürs Flashen enthalten + sind. +- Ein zweites Mal wird ``/bin/prepare_fwupgrade`` aufgerufen, dieses + Mal mit dem Parameter *end*. Jetzt werden endgültig die verbleibenden + Dienste gestoppt, die noch während des Updates stören könnten, indem + sie z.B. auf den Flash-Speicher zugreifen. +- Jetzt wird das mit dem Firmware-Image entpackte Shell-Skript + ``/var/install`` aufgerufen. Darin passiert eine ganze Menge, z.B.: +- Es werden diverse Prüfungen durchgeführt, die bestimmen, auf welchem + Stand die Box momentan ist, wie der Flash-Bereich partitioniert ist + und was zu tun ist in Vorbereitung aufs Update. Je nachdem, was das + Skript herausfindet über die Situation, gibt es am Ende einen der + folgenden Werte zurück: + + - *INSTALL_SUCCESS_NO_REBOOT (0)* - alles okay, Neustart der Box + nicht erforderlich. Dieser Wert sollte nur zurückgegeben werden, + wenn an Dateisystem und Kernel im Flash nichts geändert wird. + - *INSTALL_SUCCESS_REBOOT = 1* - der Standardwert bei "richtigen" + Firmware-Updates. Alles okay, Box neu starten. + - *INSTALL_WRONG_HARDWARE = 2* - Installation zurückweisen, weil + etwas an der Hardware nicht zum Firmware-Image paßt (Problem mit + dem Annex, falscher OEM). + - *INSTALL_KERNEL_CHECKSUM = 3* - fehlerhafte Kernel-Checksumme. + Falls die beiden Image-Dateien (Kernel und Filesystem) existieren, + werden ihre CRC-Checksummen durch Aufruf des ebenfalls in + AVM-Paketen enthaltenen ``/var/chksum`` geprüft. Sind die + Checksummen - nicht Verwechseln mit der o.g. Signatur - nicht in + Ordnung, findet kein Update statt. + - *INSTALL_FILESYSTEM_CHECKSUM = 4* - siehe voriger Punkt. + - *INSTALL_URLADER_CHECKSUM = 5* - würde bedeuten, dass der zu + installierende neue Urlader eine falsche Checksumme hat. Meistens + enthalten Firmware-Updates jedoch keinen neuen Urlader. + - *INSTALL_OTHER_ERROR = 6* - sonstiger Fehler. + - *INSTALL_FIRMWARE_VERSION = 7* - Problem mit der aktuellen + Firmware-Version. Entweder kann die aktuelle Version aus + irgendeinem Grund nicht festgestellt werden oder der + Versionssprung ist zu groß, weil noch jemand eine Uralt-Version + installiert hat und zunächst ein Zwischen-Update auf eine andere + Version ebötigt, um anschließend die neue einspielen zu können. + - *INSTALL_DOWNGRADE_NEEDED = 8* - es wird versucht, eine Firmware + mit niedrigerer Versionsnummer zu installieren. Normalerweise + blockieren aktuelle Firmwares das, weswegen man den Umweg über ein + Recover bzw. einen manuellen Downgrade machen muss, um diese Hürde + zu nehmen. (Man könnte auch einfach die Prüfung in diesem Skript + auskommentieren.) + +- Das Skript hat auch einen Schalter *-f*, welcher es dazu veranlaßt, + eine beliebige Firmware-Versionsnummer zu akzeptieren und somit ggf. + auch einen Downgrade durchzuführen. Allerdings lässt sich der + Schalter übers Web-Interface meines Wissens nicht setzen. Vermutlich + wird er von den AVM-Recovery-Tools benutzt. Verbunden mit dem Setzen + dieses Schalters ist, dass das gerade besprochene Install-Skript auch + die Einstellungen im Flash löscht und somit die Box auf die + Werkseinstellungen zurücksetzt. Grundsätzlich könnte man Letzteres + durch Auskommentieren im Skript verhindern, aber es macht oft genug + Sinn, es so zu lassen. Ein Downgrade bedeutet nun einmal, dass evtl. + vorhandene Einstellungen für Features einer neuen Firmware-Version + von einer älteren nicht richtig interpretiert werden könnten und + somit schlimmstenfalls die Box schon beim Starten hängen bleiben und + endgültig zum Recover-Fall werden würde. +- Zum Schluß werden ggf. noch einige Spezialitäten abgehandelt, z.B. + Entfernen veralteter Einstellungen oder Konvertierung alter + Wahlregeln. +- Das Skript schreibt während des Ablaufs parallel auch noch ein + weiteres Skript nach ``/var/post_install``, welches anschließend über + ``init reboot`` indirekt vom führenden Prozeß ``firmwarecfg`` + aufgerufen wird, sofern nicht einer der Fehler-Rückgabewerte dies + verhindert. ``post_install`` wiederum setzt für den Flash-Vorgang + notwendige Umgebungsvariablen und lädt das im Firmware-Image + enthaltene Modul ``/var/flash_update.o`` (Kernel 2.4) bzw. + ``/var/flash_update.ko`` (Kernel 2.6). +- Übrigens gibt es auch standardmäßig ein ``/var/post_install``, das + beim Systemstart aus ``/var.tar`` extrahiert wird und vor jedem + Reboot aufgerufen wird. Der Aufruf-Mechanismus über ``/etc/inittab`` + ist der gleiche, der Inhalt des Skripts jedoch völlig anders als in + der Spezialversion vor dem Flashen. +- Jetzt erfolgt der eigentliche Flash-Vorgang (falls notwendig). + +Nach dem eventuellen Reboot hat man ggf. eine nagelneue Firmware auf der +Box, andernfalls die gewünschte nachinstallierte Funktionalität. Was +``/var/install`` macht und welchen Return-Wert es liefert, ist +grundsätzlich für jeden Firmware-Bastler frei entscheidbar. Die anderen +Rahmenbedingungen sind so, wie ich es eben beschrieben habe. + +`​Alexander Kriegisch +(kriegaex) <http://www.ip-phone-forum.de/member.php?u=117253>`__ diff --git a/wiki/help/howtos/development/flash.rst b/wiki/help/howtos/development/flash.rst new file mode 100644 index 0000000..a197e9f --- /dev/null +++ b/wiki/help/howtos/development/flash.rst @@ -0,0 +1,379 @@ +.. _FlashPartitionierung: + +Flash Partitionierung +===================== + +Im Flash der Fritzbox befinden sich bei jedem Modell folgende +funktionale Einheiten: + +- Bootloader: `ADAM2 <adam2.html>`__ / EVA (+ Werkseinstellungen) +- Kernel: Linux 2.4.17_mvl21-malta-mips_fp_le, 2.6.13.1-ar7/ohio oder + höher *(gzip oder lzma komprimiert)* +- Dateisystem: `​SquashFS <http://de.wikipedia.org/wiki/Squashfs>`__ + *(gzip oder lzma)* oder + `​YAFFS2 <http://de.wikipedia.org/wiki/YAFFS2>`__ +- Konfigurations-Dateien + Environment: TFFS + +Bei der Flash Einteilung der Fritzboxen entstanden über die Jahre einige +"Geschmacksrichtungen". Das Grundkonzept entspringt TI und deren ADAM2 +Bootloader, der die Partitionstabellen verwaltet. Unabhängig von der +Reihenfolge im Speicher wurde festgelegt dass ``mtd0`` das root +Dateisystem enthalten soll, ``mtd1`` das Kernel, ``mtd2`` ADAM2 selbst +und ``mtd3`` die Konfiguration. Letztere muss häufig geschrieben werden +und trotzdem fehlerfrei sein und nutzt dabei das Flash ab. Um dies +sicherer zu gestalten entwickelte AVM das TFFS, das durch doppelte +"Pufferung" zwei gleich grosse Partitionen ``mtd3`` und ``mtd4`` +benötigt. + +ADAM2 bzw später AVM's funktionsgleicher Ersatz EVA wird ab Werk +installiert und wurde nur in eher seltenen Sonderfällen aktualisiert. +Ein Firmware Update aktualisiert dagegen immer Kernel und root +Dateisystem, beim ursprünglichen Konzept mit den enthaltenen Dateien +``filesystem.image`` für ``mtd0`` und ``kernel.image`` für ``mtd1``. + +Uber die Jahre stellte sich heraus dass der Platzbedarf für Kernel und +Dateisystem kaum dauerhaft vorhersagbar ist und dass die Partitionierung +gar eine Hürde wurde da beide Komponenten verschieden stark wuchsen. Es +entstanden einige trickreiche Abwandelungen die diese Barriere +aushebelten. Ab Kernel 2.6 verzichtete man dann ganz auf die Trennung um +die Problematik zu umgehen. Bei neuen Modellen mit im Vergleich fast +unbegrenztem NAND-Flash führte man die Trennung wieder ein. + +**Achtung:** Alle in diesem Artikel genannten mtd Nummern beziehen sich +auf die im Environment gespeicherten Partitionstabellen. Die Nummern der +im Linux erreichbaren mtd Devices werden vom Kernel vergeben und weichen +oft von den ADAM2/EVA Numerierung ab! + +Um aus dem Linux heraus auf das Environment zugreifen zu können gibt es +die ADAM2 API, die je nach Kernel Version an verschiedenen Stellen in +/proc erreichbar ist. + +Um die Environment mtd Tabelle unter Kernel 2.4 zu lesen kann + +.. code:: bash + + cat /proc/sys/dev/adam2/environment | grep mtd + +abgerufen werden. Ab Kernel 2.6 muss es so aussehen: + +.. code:: bash + + cat /proc/sys/urlader/environment | grep mtd + +Die Liste aller Linux mtd Devices erhält man mit: + +.. code:: bash + + cat /proc/mtd + +Da die Linux Partitionen von den MTD Treibern im Kernel ermittelt werden +weichen Nummerierung und Größen teilweise erheblich von der +Partitionierung im Environment ab. + +Im Folgenden werden alle verwendeten Partitionsschemata einzeln +beleuchtet. + +.. _HiddenSquashFS: + +Hidden SquashFS +--------------- + +.. figure:: /screenshots/55.png + :alt: Flash Legende + + Flash Legende + +Folgende Firmware verwendet Hidden SquashFS im NOR-Flash mit Kernel 2.4: + +- 2 MB Flash + + - Fritzbox SL (03.48 bis 03.73) + - Fritzbox 2030 (03.73 bis 03.80) + +- 4 MB Flash + + - Eumex 300 IP (alte) + - Fritzbox (03.29 bis 4.02, auch int) + - Fritzbox SL WLAN (03.65 bis 04.15) + - Fritzbox WLAN 3030 (03.65 bis 04.15) + - Fritzbox WLAN 3050 (03.63 bis 04.07) + - Fritzbox Fon (03.37 bis 04.27, auch int) + - Fritzbox Fon 5050 (03.69 bis 04.26) + - Fritzbox Fon ATA (03.64 bis 04.28-Beta, auch int) + - Fritzbox Fon WLAN (03.42 bis 04.27, auch int) + - Fritzbox Fon WLAN 7050 (03.58 bis 4.01) + +Das Hidden SquashFS beginnt direkt hinter dem Kernel (256 Byte Padding) +und enthält vor allem Treiber. Es wird während des Bootvorgangs im +Startskript ``rc.S`` gemounted. Der Kernel und das Hidden SquashFS +befinden sich in ``kernel.image``, das root Dateisystem in +``filesystem.image``. Diese Technik wurde verwendet um proprietäre +Binär-Module von TI vom root Dateisystem zu separieren. Das Hidden +SquashFS enthält Dateien wie ``avalanche_cpmac.o``, ``avalanche_usb.o``, +``tiatm.o`` ohne jegliche Unterverzeichnisse und wird nach +``/lib/modules/2.4.17_mvl21-malta-mips_fp_le/kernel/hidden`` gemountet. + +.. figure:: /screenshots/56.png + :alt: Flash Hidden Squashfs + + Flash Hidden Squashfs + +.. _ContiguousSquashFS: + +Contiguous SquashFS +------------------- + +.. figure:: /screenshots/55.png + :alt: Flash Legende + + Flash Legende + +Folgende Firmware verwendet Contiguous SquashFS im NOR-Flash mit Kernel +2.4: + +- 2 MB Flash + + - Fritzbox SL (03.92 bis 03.94) + - Fritzbox 2030 (03.92 bis 03.93) + +- 4 MB Flash + + - Fritzbox Fon WLAN 7050 (04.03-Beta bis 04.26, auch int) + +Beim Contiguous SquashFS fängt das root Dateisystem direkt nach dem +Kernel an (256 Byte Padding). Da das root Dateisystem nun über ``mtd0`` +und ``mtd1`` verteilt liegt, muss es im Firmware Update auch +dementsprechend auf die Dateien ``kernel.image`` (Kernel + Anfang des +root Dateisystems) und ``filesystem.image`` (Rest des root Dateisystems) +aufgeteilt werden. Diese Technik wurde verwendet um ohne +Umpartitionierung Platz für das wachsende root Dateisystem aus der +Kernel Partition zu borgen. + +.. figure:: /screenshots/57.png + :alt: Flash Contiguous + + Flash Contiguous + +.. _HiddenRoot: + +Hidden Root +----------- + +.. figure:: /screenshots/55.png + :alt: Flash Legende + + Flash Legende + +Folgende Firmware verwendet Hidden Root im NOR- oder Serial-Flash mit +Kernel 2.6: + +- alle Firmware ab Kernel 2.6.13.1 die kein NAND Root nutzt + +Bei Hidden Root befindet sich das root Dateisystem — ähnlich wie bei +`Contiguous SquashFS <flash.html#ContiguousSquashFS>`__ — direkt hinter +dem Kernel (256 Byte Padding). Diese Boxen kann man daran erkennen, dass +die Start- und End-Adresse von ``mtd0`` in der mtd Tabelle gleich 0 und +die Datei ``filesystem.image`` im Firmware Update leer ist. +``kernel.image`` enthält sowohl den Kernel als auch das root +Dateisystem. Diese Technik wurde verwendet um ohne Behinderung durch +Partitionsgrenzen den vorhandenen Platz dynamisch zwischen Kernel und +root Dateisystem aufzuteilen. + +.. figure:: /screenshots/58.png + :alt: Flash Hidden Root + + Flash Hidden Root + +.. _NANDRoot: + +NAND Root +--------- + +.. figure:: /screenshots/55.png + :alt: Flash Legende + + Flash Legende + +Folgende Modelle verwenden NAND Root mit Kernel 2.6: + +- Fritzbox 3272 +- Fritzbox 3370 +- Fritzbox 3390 +- Fritzbox 6840 LTE +- Fritzbox 7272 +- Fritzbox 7362 SL +- Fritzbox 7490 + +Alle bisher genannten Partitionsschemata basieren auf parallelem oder +seriellem NOR-Flash mit vorhersagbarem Speicherplatz. +`​NAND-Flash <https://de.wikipedia.org/wiki/NAND-Flash>`__ kann dagegen +bereits ab Werk Fehler aufweisen und daher nur mit +Fehlererkennungsmechanismen zuverlässig genutzt werden. Dies erfordert +spezielle Controller oder Dateisysteme die Listen defekter Blöcke +verwalten. Der Speicherplatz ist also nicht mehr zwingend durchgehend +nutzbar und kann nicht mehr ohne Intelligenz geschrieben werden ohne die +Liste defekter Blöcke zu zerstören (was sehr dumm wäre). + +Bei Modellen die NAND nur als Datenspeicher für den NAS nutzen (z.B. die +7390) ist das kein Problem. Dieser Speicher wird nur intelligent aus +Linux heraus angesprochen und enthält normalerweise keine Systemteile. +Alle Partitionen die über den Bootloader recovered werden liegen im +NOR-Flash. + +Modelle bei denen auch das System im NAND-Flash liegt haben nur noch ein +kleines serielles NOR-Flash für den Bootloader ``mtd2`` und zwei TFFS +Partitionen ``mtd3`` und ``mtd4``. Alle weiteren Partitionen befinden +sich im NAND-Flash. Da es bei NAND keinen Platzmangel gibt wurden je 2 +Partitionen für Kernel und Dateisystem vorhesehen. Dies hat den Vorteil +aus dem kaufenden System heraus aktualisieren zu können (hot flashable). +Dabei werden die beiden jeweils nicht in Betrieb befindlichen +Partitionen geschrieben, als aktiv markiert, und das System +neugestartet. Beim nächsten Update wechselt der Vorgang wieder die +aktiven Partitionen. Das Kernel befindet sich auf ``mtd1``, das +Dateisystem wieder getrennt auf ``mtd0``. Welche beiden Partitionen +damit gemeint sind definiert die EVA Variable ``linux_fs_start``. + +.. figure:: /screenshots/277.png + :alt: + +Um unabhängig vom verwendeten Dateisystem die Vorteile des effizient +komprimierbaren SquashFS weiter nutzen zu können entschied sich AVM für +ein interessantes Konzept. Auf die Filesystem-Partition wird ein +minimales Wrapper-System installiert, das nur aus 190 inodes und dem +eigentlichen System ``filesystem_core.squashfs`` besteht. Letzteres wird +als Loop-Device als / gemountet. Dies benötigt natürlich mehr +RAM-Speicher, hat aber zusätzlich den Vorteil schneller zu sein und das +NAND-Flash erheblich weniger zu beanspruchen. + +Die beiden (sehr spartanischen) TFFS Partitionen im NOR-Flash dienen nur +der Werkseinrichtung, EVA und der Recovery. Im Betrieb wird eine neue +Config-Partition im NAND-Flash verwendet, die YAFFS2 zur Speicherung der +Konfiguration nutzt. + +Diese "NAND Root" Modelle erforderten auch einen komplett überdachten +Mechanismus zur Aktualisierung und zur Recovery. + +WIP + +.. _Dateisystem: + +Dateisystem +----------- + +Grundsätzlich enthält jedes FRITZ!OS basierte Firmware-Image mindestens +ein `​SquashFS <http://de.wikipedia.org/wiki/Squashfs>`__ Dateisystem. +Dieses ist nahezu immer lzma oder gzip komprimiert, selten auch +unkomprimiert. Modelle mit Hidden SquashFS enthalten 2 Dateisysteme +nebeneinander in der Firmware, bei Modellen mit NAND Root sind es 2 +ineinander verschachtelte Dateisysteme. + +Ein SquashFS Image enthält einen immer unkomprimierten Superblock, der +mit der Signatur ``sqsh`` für Big Endian oder ``hsqs`` für Little Endian +anfängt. Diese Unterscheidung ist sehr wichtig, da alle weiteren Daten +den jeweiligen Endian nutzen. Der Superblock kann mit jeder Variante mit +``unsquashfs -s`` gelesen werden. Leider gibt es viele Varianten von +SquashFS, keinen globalen Standard und kein Werkzeug das für alle +Varianten funktioniert. Auf der FRITZBox 3 SquashFS Generationen +verwendet, Version 1 bis 3. Diese Versionsnummer wird im Superblock als +``versionmajor`` gespeichert. ``versionminor`` dient als Ersatz für das +vergessene Feld zur Angabe der Kompressionsart. 0 und 1 bedeutet gzip +Kompression die jedes Standard ``unsquashfs`` unterstützt - 76 ist bei +der FRITZBox der häufigste Wert, der lzma Kompression symbolisiert. Da +dies kein Standard ist baut Freetz ``tools/unsquashfs3-lzma``. Um es +nicht mit einer reinen Versionsnummer zu verwechseln hat sich sie +Schreibweise mit ':' zur Trennumg von major/minor eingebürgert - z.B. +``3:76``. + +Bei der Analyse von 1800 verschiedenen unmodifizierten Firmware-, Labor- +und Recovery-Images ergab sich folgende Verteilung: + +- 1:0 - SquashFS 1, gzip komprimiert - ca. 0,1% +- 2:0 - SquashFS 2, gzip komprimiert - ca. 0,5% +- 2:1 - SquashFS 2, gzip komprimiert - ca. 8% +- 2:76 - SquashFS 2, lzma komprimiert - ca. 23% +- 3:0 - SquashFS 3, gzip komprimiert - ca. 12,2% +- 3:76 - SquashFS 3, lzma komprimiert - ca. 56,5% + +Die als 3:0 genannten Images sind die ``filesystem.image`` und die darin +enthaltenen ``filesystem_core.squashfs`` der NAND-Root Modelle, die +beide gzip komprimiert sind. Es gibt auch neuere SquashFS 4 Varianten +die auch ``xz`` Kompression unterstützen. Auf der FRITZBox kamen diese +jedoch bisher nicht zum Einsatz. + +Auch Recoveries enthalten das SquashFS in binärer Form, in der ``.data`` +Sektion die leicht mit 7zip isolierbar ist. Darin kann man nach den +beiden Signaturen suchen und Fehlfunde mit nicht plausiblen major/minor +Werten ausmaskieren. Die Grösse des SquashFS steht normalerweise im +Superblock als ``bytesused``, der Wert kann jedoch auch 0 sein. Dies ist +nicht wirklich ein Problem, da ein SquashFS nicht durch überflüssige +Daten am Ende gestört wird. + +Es gibt einen (ca 5%) Anteil (leider auch 3 neuerer) Recoveries die eine +Extraktion nicht ermöglichen. So wurden runlength encoded Firmwareteile +entdeckt die auf überoptimierende Compiler hindeuten. In einigen älteren +Recoveries mit Contiguous SquashFS befindet sich die SquashFS Signatur +am Ende des ``.data`` Segments, das beschnittene SquashFS befindet sich +also nicht automatisch auffindbar vor dem Kernel. In beiden Fällen ist +das extrahierte Datenmaterial dann unbrauchbar. + +Recoveries mit Contiguous SquashFS (bisher sind 10 bekannt) lassen sich +mit Kenntnis von Position und Länge des größeren SquashFS-Teils +extrahieren, runlength encoded Recoveries nur mit ``bsdiff`` generierten +Binärpatches des extrahierten Datenmaterials. Letztere sind recht klein +(1,5-3,5KB), lassen sich aber nur erstellen wenn eine Firmware oder ein +Partitionsdump der selben Version existiert. Dumps sehr alter Versionen +sind nur schwer erstellbar, da sie zum Einspielen meist einen älteren +Bootloader benötigen. + +.. _Kernel: + +Kernel +------ + +Das FRITZ!OS Kernel ist immer komprimiert. Hierbei kommen 3 Techniken +zum Einsatz, die vom installierten Bootloader abhängen. + +Alle Kernels die auf ADAM2 lauffähig sind fangen mit der Hexfolge +``42 FA ED FE`` an (0xFEEDFA42), die ADAM2 Signatur für MIPS-LE. Da +ADAM2 noch keine eingebaute Unterstützung für komprimierte Kernels hatte +enthalten diese einen ``zimage`` Dekompressor (`​TI Avalanche +Inflater <http://gpl.back2roots.org/source/fritzbox/ALL_4.06/GPL-release_kernel/linux/arch/mips/mips-boards/ti_avalanche/inflater/>`__, +8,5-12,5 KB) vor dem eigentlichen gzip komprimierten Kernel. Man erkennt +diesen auch am String ``zimage`` innerhalb der ersten 13 KB des Kernels. +Der Anfang der Kerneldaten ist durch die gzip Signatur ``1F 8B 08`` +auffindbar. ADAM2-Kernels sind auch auf EVA lauffähig. + +Alle Kernels die EVA benötigen fangen mit der Hexfolge ``81 12 ED FE`` +an, unabhängig vom Endian. Eine zweite Signatur ab Offset 12 (0x0C) +signalisiert die Art der Kompression der folgenden Kerneldaten. Die +Hexfolge ``01 02 5A 07`` bedeutet ``lzma``, die Folge ``10 20 5A 70`` +bedeutet ``zlib`` Kompression, auch hier unabhängig vom Endian. + +Bei der Analyse von 1800 verschiedenen unmodifizierten Firmware-, Labor- +und Recovery-Images ergab sich folgende Verteilung: + +- zimage - gzip komprimiertes Kernel 2.4 für ADAM2 oder EVA - ca. 10,2% +- zlib - roher zlib Stream mit Kernel 2.6 für EVA - ca. 0,1% +- lzma - lzma Stream mit Kernel 2.4 oder 2.6 für EVA - ca. 89,5% + +EVA wurde also bereits unter Kernel 2.4 eingeführt. Von allen +untersuchten Kernel 2.4 Proben waren etwa 75% zimage komprimiert, der +Rest benötigt bereits EVA wegen lzma. Alle Kernel 2.6 Firmware benötigt +EVA. + +Mit den beiden Signaturen lassen sich ADAM2- und EVA-Kernels in +Recoveries finden. Durch Prüfen der 3 Kompressions-Signaturen können +Fehlfunde ausmaskiert werden. Wie beim SquashFS funktioniert dies bei +runlength encoded Recoveries (bisher sind 11 bekannt) nur mit ``bsdiff`` +generierten Binärpatches des extrahierten Datenmaterials. Interessant +ist, dass die Patches für das Kernel 3x grösser sind als die Patches für +das sehr viel umfangreichere SquashFS. Hier besteht offensichtlich noch +Forschungsbedarf. + +.. _Weblinks: + +Weblinks +-------- + +- `​Avalanche MTD Treiber, Kernel + 2.4 <http://gpl.back2roots.org/source/fritzbox/ALL_4.06/GPL-release_kernel/linux/drivers/mtd/maps/avalanche-flash.c>`__ diff --git a/wiki/help/howtos/development/freetz_make.rst b/wiki/help/howtos/development/freetz_make.rst new file mode 100644 index 0000000..a7dae5d --- /dev/null +++ b/wiki/help/howtos/development/freetz_make.rst @@ -0,0 +1,439 @@ +.. _FreetzBuild-Prozeß: + +Freetz Build-Prozeß +=================== + +.. _VorwortundMotivation: + +Vorwort und Motivation +---------------------- + +In den `HowTos <../../howtos.html>`__ gibt es einige wichtige +Informationen darüber, was man mit *Make*-Targets wie +`menuconfig <../common/install/menuconfig.html>`__, *toolchain*, +*precompiled*, *recover* usw. erreichen kann beim Bau einer +*Freetz*-Firmware. Trotzdem gibt es im Forum regelmäßig eine Menge +Fragen zum Build-Prozess - meistens, wenn der Prozess nicht durchläuft +und der betreffende Benutzer nicht weiß, woran das liegt. Der Grund ist +meistens, dass es sich um einen unerfahrenen Benutzer handelt, der mit +`​GNU make <http://www.gnu.org/software/make/>`__ keine Erfahrung hat, +weil er erstens nicht C/C++-Programmierer ist und/oder zweitens bereits +die Linux-Kommandozeile per se ein Buch mit sieben Siegeln für ihn ist. +Zumindest Ersteres trifft auf mich auch zu, und deshalb habe ich mich +mal oberflächlich eingelesen, um das ``Makefile`` von *Freetz* besser +(oder überhaupt) zu verstehen. Das Ergebnis meiner Arbeit dokumentiere +ich hier. + +Die Probleme der Hilfesuchenden im Forum hören nämlich nicht damit auf, +dass der Build manchmal hängen bleibt. Da viele Fragen aus Sicht der +Cracks "dumm" klingen, sich häufig wiederholen - nicht jeder ist +geschickt darin, die Suchfunktion des Forums oder Google zu benutzen, +manche sind auch einfach zu faul - und somit manchen Profis lästig sind, +fallen die Antworten entsprechend kurz aus, was wiederum zu Rückfragen +und mehr "Müll" im Forum führt. Wenn dann der Hilfesuchende die Ursache +des Problems beseitigt hat (Linux-Package nachinstalliert, richtige +Option in ``make menuconfig`` an-/abgewählt, Patch installiert), bekommt +er oftmals den Build trotzdem nicht mehr ans Laufen, weil die +Abhängigkeiten nicht hunderprozentig sauber gepflegt sind und er +zunächst nochmal ein *xy-clean* und/oder *xy-precompiled* aufrufen +müsste, ihm das aber keiner gesagt hat, weil es auch schwer +vorherzusehen ist. + +Der Traum vom perfekten ``Makefile``, das bei jeder Dateiänderung genau +das tut, was minimal zu tun wäre, um das aktuelle Target zu bauen, ist +grundsätzlich erreichbar, bei uns aber nicht realisiert. Obwohl man +sagen muss, daß der Freetz *Make*-Prozess schon relativ gut ist - nur +eben nicht idiotensicher. Das war wohl auch nicht das Ziel, denn ein +"Idiot" sollte keine Firmware für seinen DSL-Router bauen wollen. +Andererseits ist es aber auch gut für unsere Gemeinschaft, wenn neuen +Mitgliedern die Lernkurve etwas angenehmer gestaltet wird. Es ergibt +keinen Sinn, dass jeder das Rad neu erfindet und sich alles selbst +erarbeitet, nur weil andere das früher hatten tun müssen. + +.. _Grundsätzliches: + +Grundsätzliches +--------------- + +Basis dieser Dokumentation ist **Freetz-1.1.4**. Da es inzwischen neuere +Freetz-Versionen gibt wird an einige Stellen auf Abweichungen +hingewiesen. + +.. _Wastutmake: + +Was tut make? +~~~~~~~~~~~~~ + +Das würde hier wirklich den Rahmen sprengen, daher nur ein paar Links. +Sich einzulesen, lohnt sich - Bildung ist nie umsonst: + +- `​Wikipedia-Artikel zu Make <http://de.wikipedia.org/wiki/Make>`__ +- `​Eine Einführung in + Makefiles <http://www.ijon.de/comp/tutorials/makefile.html>`__ + (deutsch, kurz und knackig, leicht zu verstehen) +- `​Recursive Make Considered + Harmful <http://members.tip.net.au/~millerp/rmch/recu-make-cons-harm.html>`__ + (hochspannend für Fortgeschrittene und Philosophen, PDF zum + Herunterladen) +- `​Wikipedia-Artikel zu + Autoconf <http://de.wikipedia.org/wiki/GNU_autotools>`__ (nicht von + *Freetz* selbst verwendet, aber von diversen Paketen) + +.. _WorausbestehtFreetz: + +Woraus besteht Freetz? +~~~~~~~~~~~~~~~~~~~~~~ + +Die modifizierte Firmware wird zusammengebaut aus mehreren Komponenten: + +- **Original-Firmware**, bestehend aus Linux-Kernel und -Dateisystem. + Sie bildet die Basis und das Grundgerüst für den Mod. + Fälschlicherweise wird von vielen Einsteigern angenommen, die + Original-Firmware werde weggeworfen und komplett durch etwas + Selbstgebautes ersetzt. Dem ist nicht so. Viele wichtige Bestandteile + werden übernommen, wie sie sind und um neue Funktionen ergänzt bzw. + Einzelteile gezielt ausgetauscht. Wichtige Bestandteile der + Original-FW sind + + - **Kernel** (früher 2.4, aktuell 2.6). Für Daniels Mod konnte ein + 2.4er Kernel übernommen werden, für Freetz muß er durch einen + selbst gebauten 2.6er ersetzt werden. Nimmt man als Basis eine + Original-FW mit 2.6er Kernel, kann man diesen übernehmen oder + wahlweise ebenfalls ersetzen. + - **Dateisystem** mit Standard-UNIX-Tools und AVM-spezifischen + Werkzeugen (z.B. Web-Oberfläche). Wird (fast) unverändert + übernommen mit einer wichtigen Ausnahme (siehe nächster Punkt). + - **Busybox**: Sammlung der wichtigsten Kommandozeilenwerkzeuge, + optimiert für Embedded-Systeme und enthalten in einer einzigen + ausführbaren Datei. Die einzelnen Werkzeuge werden über + symbolische Links auf die + `​Busybox <http://de.wikipedia.org/wiki/Busybox>`__ als scheinbar + eigenständige Namen realisiert. + +**Freetz** selbst präsentiert sich nach dem Auspacken des entsprechenden +Archivs (z.B. ``freetz-1.1.4.tar.bz2``) entsprechend der folgenden +alphabetisch, nicht nach Wichtigkeit, sortierten Liste. (Die +Unterverzeichnisse ``build``, ``packages``, ``source`` werden erst beim +ersten *Make*-Lauf erzeugt.) + +- **Root-Verzeichnis**: Hier befinden sich einige Konfigurationsdateien + (später mehr dazu) sowie Change-Log, Firmwares und Read-Me. + Desweiteren gibt es diverse Unterverzeichnisse: + + - **addon**: Hierhin werden statische und (theoretisch) dynamische + Packages (bereits kompiliert) entpackt, die mit ins Dateisystem + der Firmware sollen und über den "Lieferumfang" des Standard-Mods + hinausgehen. + - **build**: Nach *build/original* wird das Original-Firmware-Image + entpackt. Die drei Einzelbestandteile liegen dann wiederum in den + Unterverzeichnissen *kernel* (Linux-Kernel), *filesystem* + (Root-Dateisystem) und *firmware* (im Firmware-Image auf oberster + Ebene enthaltene, zu dessen Installation notwendige Werkzeuge). + Diese Bestandteile werden, wie bereits erwähnt, verwebt mit den + generierten Bestandteilen (Kernel, Busybox, Packages, Sonstiges) + und in einer parallelen Verzeichnisstruktur *build/modified* + gespeichert. Von dort wiederum werden sie geholt, um letztendlich + das Firmware-Image mit *Tar* zusammenzupacken. + - **busybox**: Ablageort der neu gebauten Busybox für den Mod (ab + Freetz-1.2 unter + packages/target-mips(el)_uClbic-$(uClibc-Version)/busybox zu + finden) + - **dl**: `Downloads <../../../Download.html>`__ von Quell- und + Binärpaketen für Toolchain und Mod. Die Webinterfaces zu den + Paketen sind bis auf wenige Ausnahmen direkt im Mod enthalten, + andere Dateien werden während des Builds aus dem Internet mittels + *wget* nachgeladen. + - **favicon**: Hier liegen (momentan) zwei kleine Sätze von + Favicons, die man über ``make menuconfig`` auswählen kann, um das + Web-Interface von Freetz mit hübschen kleinen Icons im Browser zu + versehen (werden angezeigt in der Adreßzeile und bei den + Favoriten). + - **howtos**: ein paar deutsche und englische Kurzanleitungen zum + Bauen des Mods bzw. eigener Erweiterungen. + - **kernel**: Ablageort des neu gebauten Linux-Kernels und dessen + Modulen für den Mod + - **make**: Pro Package liegen hier die Include-Files und + Konfigurationsdaten für das "große" ``Makefile`` im + Wurzelverzeichnis, sowie die Startskripte, cgi-Dateien und + sonstige zum Paket gehörigen Files. Die Konfigurationsdaten + enthalten auch die Versionsnummern der nach *dl* + herunterzuladenden Pakete. + - **packages**: Hierhin werden die gebauten Packages abgelegt. In + einem Unterverzeichnis pro Paket (wie unter ``make``) liegen dann + die entsprechenden Binär- und Konfigurationsdaten, welche ins + Dateisystem eingewebt werden - zu bewundern unter + ``build/modified``, vgl. voriger Punkt. (ab Freetz-1.2 kommt unter + packages/ eine weitere Verzeichnis-Ebene hinzu; diese trennt nach + big oder little endian und uClibc-Version) + - **patches**: Patches, welche nach dem Entpacken in die Sourcen + eingearbeitet werden, je nachdem, welche Hardware und/oder + Konfigurationseinstellung man verwendet. + - **root**: Abbild des (Root-)Dateisystems der späteren Firmware. + Hier liegen Webseiten, Startskripte, Konfigurationsdaten usw.. Sie + werden beim Bauen der Firmware mit den Originaldaten und weiteren + erzeugten Dateien (z.B. Kernel, Busybox) zu einem kompletten Image + verwoben. + + - Freetz-1.2: Das Verzeichnis wurde nach make/mod/files/root + verschoben, um eine Vereinheitlichung zu erreichen. + + - **source**: Hierhin werden sämtliche Quelltexte für Toolchain, + AVM-GPL-Paket, Tools, Packages, Busybox und Kernel entpackt, um + anschließend die entsprechenden Build-Prozesse darüber laufen + lassen zu können. + + - Freetz-1.2: Um eine bessere Trennung zu erreichen und unnötige + *make dirclean*\ s zu vermeiden werden die Sourcen wie folgt + aufgetrennt: + + - **host-tools**: Hierin werden die Tools (busybox, + mksquashfs, fakeroot usw.) für den Host gebaut. + - **kernel**: Kernelsourcen + - **target-mips(el)_uClibc-$(uClibc-Version)**: Hier werden + die ausgewählten Pakete entpackt und gebaut. + - **toolchain-mips(el)_gcc-$(GCC-Version)_uClibc-$(uClibc-Version)**: + Toolchain Sourcen und Build. Enthält abhängig von der + menuconfig-Auswahl binutils, ccache, gcc, gdb, uClibc, + libtool. + + - **toolchain**: Nach dem Entpacken des Mods liegen hier die + *Makefile*-Includes für das Bauen der Toolchains. Eine Toolchain + i.a. ist eine Sammlung von Werkzeugen, welche notwendig sind, um + Software zu bauen und enthalten z.B. Compiler und Linker. In + unserem Fall gibt es zwei separate Toolchains für das Bauen des + Kernels zum einen (``gcc-3.4.6``) und der übrigen Targets zum + anderen (``gcc-4.2.1-uClibc-0.9.28/0.9.29``). In entsprechende + Unterverzeichnisse werden die Toolchains dann auch übersetzt. Das + Bauen der Toolchains ist optional, da es vorkompilierte Versionen + zum `Download <../../../Download.html>`__ gibt. Abhängig von der + Geschwindigkeit des Hosts kann der Toolchain Bau zwischen 20 - 60 + Minuten dauern. + + - Freetz-1.2: Die GCC-Versionen wurden auf einen aktuellen Stand + gebracht (gcc-4.4.6, gcc-4.5.3 und gcc-4.6.0). + + - **tools**: Hier liegen weitere Werkzeuge bzw. deren + ``Makefile``-Includes, welche zum Bauen der Firmware-Images bzw. + für ``make recover`` notwendig sind. Mit den Werkzeugen werden + z.B. die Original-Firmwares entpackt (SquashFS-Dateisystem) und + die späteren Mod-Images nach dem Einweben aller Bestandteile + wieder zusammen geschnürt. Eine ältere tar-Version (15.1), die mit + den in den Original-Firmwares enthaltenen Entpackern kompatible + Firmware-Archive erzeugt, gehört neben anderen Helferlein + ebenfalls dazu. + + - Freetz-1.2: Das tar-Paket wird nicht mehr als Tool gebaut. Es + wird abhängig von der Aufgabe das Host-tar oder busybox-tar + verwendet. + +.. _AblaufdesBuild-Prozesses: + +Ablauf des Build-Prozesses +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Es dürfte allgemein bekannt sein, daß die drei wichtigsten Make-Targets +- in dieser Reihenfolge aufzurufen - lauten: + +- ``make menuconfig`` - interaktiv Pakete zusammenstellen, zusätzliche + Bibliotheken auswählen, Konfiguration speichern +- ``make`` - Tools bauen, Toolchains bauen (sofern kein externer + Compiler ausgewählt wurde), danach Bibliotheken, Linux-Kernel und + Packages bauen, abschließen Firmware bauen. + +Daneben gibt es eine beträchtliche Anzahl weiterer +`Make-Targets <../../../FAQ.html#Wasbedeutendieeinzelnenmake-targetsz.B.dircleandistcleanconfig-clean-depsetc.>`__, +die teilweise nicht direkt im Makefile sichtbar sind, sondern durch +automatisierte Ersetzungsvorgänge erzeugt werden. Das hat den Vorteil, +daß es z.B. pro Package jeweils die gleichen Sub-Targets gibt und man +somit immer die Möglichkeit hat, durch einen *Make*-Aufruf direkt +Einfluß auf einzelne Pakete zu nehmen (z.B. aufräumen, nochmal neu +übersetzen). Wenn also ``make precompiled`` beispielsweise im Paket +`mc <../../../packages/mc.html>`__ hängen geblieben ist, weil ein zum +Bauen notwendiges Linux-Paket in unserer Distribution gefehlt hat, das +wir erst noch per Paketmanager installieren mussten, kann es sein, dass +ein erneuter Aufruf des globalen *precompiled* anschließend trotzdem +nicht durchläuft, weil es Inkonsistenzen im Package-Build gibt. Da hilft +dann meistens eine Sequenz wie ``make <Paket>-clean``, +``make <Paket>-precompiled``, also z.B. *mc-clean* und *mc-precompiled*. +Wie die Pakete heißen, sieht man an den Namen der Unterverzeichnisse im +Verzeichnis ``make``. + +.. _Include-Kette: + +Include-Kette +~~~~~~~~~~~~~ + +Es gibt generell zwei Arten, *Make* für hierarchisch strukturierte +Builds zu benutzen. Die eine, althergebrachte, geht von einem +``Makefile`` im Hauptverzeichnis und jeweils einem weiteren ``Makefile`` +pro Unterverzeichnis aus. Daß dies keine gute Idee ist, wird in +`​Recursive Make Considered +Harmful <http://members.tip.net.au/~millerp/rmch/recu-make-cons-harm.html>`__ +überzeugend dargelegt. Die gute Nachricht ist: Freetz verwendet die +zweite Methode, und zwar Include-Dateien in den Unterverzeichnissen. +D.h., das ``Makefile`` lädt die für das aktuelle Target notwendigen +Includes dynamisch nach und erzeugt so ein einziges, großes, virtuelles +``Makefile``, welches dann abgearbeitet wird. Das ist schön, führt aber +dazu, daß wir im ``Makefile`` sehen, wie Dinge aufgerufen und +abgearbeitet werden, deren Herkunft nicht ganz so leicht festzustellen +ist, wenn man sich nicht im Detail die Verzeichnisstruktur ansieht. Ich +versuche hier, das ein wenig transparenter zu machen. + +- Zunächst inkludiert das ``Makefile`` die Konfigurationsdatei + ``.config`` im Hauptverzeichnis. Sie wiederum enthält die in + ``make menuconfig`` festgelegten Optionen für die Zusammenstellung + des Firmware-Images. Damit wird schon klar, weshalb wir + ``make menuconfig`` immer als erstes aufrufen sollten. Die Datei + existiert übrigens direkt nach dem Auspacken des Mod-Archivs auch + noch gar nicht. Ausnahme für den Include: Sofern wir nur Targets aus + der Gruppe *menuconfig, config, oldconfig, defconfig, tools* bauen + wollen, erfolgt kein Include an dieser Stelle, da diese Targets ihn + nicht benötigen. +- Etwas später erfolgt das Inkludieren von ``tools/make/Makefile.in`` + sowie ``tools/make/*.mk``, was dazu führt, daß die einzelnen + Tool-Targets (*find-squashfs, lzma, squashfs, tichksum, makedevs, + fakeroot*) der Variablen *TOOLS* hinzugefügt werden. Anschließend + wird pro Tool-Target noch eine Liste von Sub-Targets erzeugt: + + - **<tool>**: Baut das Tool. + - **<tool>-source**: Packt die Quelldateien aus, damit anschließend + das Tool gebaut werden kann. + - **<tool>-clean**: Ruft im Tool-Unterverzeichnis das eigene + ``Makefile`` des Tools mit ``make clean`` auf. Das Target *clean* + löscht meistens sämtliche generierten Dateien und Verzeichnisse, + um anschließend sauber neu aufsetzen zu können. + - **<tool>-dirclean**: Löscht das gesamte Tool-Unterverzeichnis. Das + ist praktisch, wenn man eine neuere Version auspacken und die alte + vorher komplett wegräumen möchte. + - **<tool>-distclean**: Löscht im Tool-Unterverzeichnis das + Distributions-Verzeichnis, in dem die gebauten Dateien + installationsfertig liegen. + +- Jetzt ist ``.config.cmd`` dran. Dadurch werden rekursiv + Konfigurations-Schalter diverser Pakete eingelesen, die später dem + Build zur Verfügung stehen. +- Richtig rund geht es jetzt, denn include ``make/Makefile.in``, + ``make/*/Makefile.in``, ``toolchain/make/Makefile.in`` und die + entsprechenden **\*.mk**-Dateien sorgen für noch mehr Informationen + im virtuellen ``Makefile``. Anschließend haben wir, analog zu den + Tools oben, folgende Targets zur Verfügung, die sich in die Gruppen + *TARGETS, PACKAGES, LIBS, TOOLCHAIN* aufteilen: + + - **<target>-precompiled**: Baut ein Target, das nicht zu einem + Package, zur Gruppe der Bibliothekten-Targets oder zur Toolchain + gehört. Darunter fallen z.B. der Linux-Kernel, der CGI-Mod + (Web-Oberfläche von Freetz), die Busybox, das CGI-Tool Haserl + (momentan kein Package), iptables sowie die AVM-GPL-Quellen. + + - Freetz-1.2: Zu den Targets zählen nur noch der Kernel sowie die + Busybox. + + - **<target>-source**: Packt die Quelldateien aus, damit + anschließend das Target gebaut werden kann. + - **<target>-clean**: Ruft im Target-Unterverzeichnis das eigene + ``Makefile`` des Targets mit ``make clean`` auf. Das Target + *clean* löscht meistens sämtliche generierten Dateien und + Verzeichnisse, um anschließend sauber neu aufsetzen zu können. + - **<target>-dirclean**: Löscht das gesamte Target-Unterverzeichnis. + Das ist praktisch, wenn man eine neuere Version auspacken und die + alte vorher komplett wegräumen möchte. + - **<package>-precompiled**: Baut ein Package. + - **<package>-source**: Packt die Quelldateien aus, damit + anschließend das Package gebaut werden kann. + - **<package>-clean**: Ruft im Package-Unterverzeichnis das eigene + ``Makefile`` des Packages mit ``make clean`` auf. Das Target + *clean* löscht meistens sämtliche generierten Dateien und + Verzeichnisse, um anschließend sauber neu aufsetzen zu können. + - **<package>-dirclean**: Löscht das gesamte + Package-Unterverzeichnis. Das ist praktisch, wenn man eine neuere + Version auspacken und die alte vorher komplett wegräumen möchte. + - **<package>-list**: Fügt das Package entweder der Liste der + statischen oder der dynamischen Pakete hinzu. + - **<lib>-precompiled**: Baut eine Bibliothek, z.B. ncurses, + libgcrypt, openSSL. + - **<lib>-source**: Packt die Quelldateien aus, damit anschließend + die Bibliothek gebaut werden kann. + - **<lib>-clean**: Ruft im Bibliotheks-Unterverzeichnis das eigene + ``Makefile`` der Bibliothek mit ``make clean`` auf. Das Target + *clean* löscht meistens sämtliche generierten Dateien und + Verzeichnisse, um anschließend sauber neu aufsetzen zu können. + - **<lib>-dirclean**: Löscht das gesamte + Bibliotheks-Unterverzeichnis. Das ist praktisch, wenn man eine + neuere Version auspacken und die alte vorher komplett wegräumen + möchte. + - **<toolchain>**: Baut die Toolchains (Kernel- und + Target-Toolchain). + - **<toolchain>-source**: Packt die Quelldateien aus, damit + anschließend die Toolchain gebaut werden kann. + - **<toolchain>-clean**: Ruft im Toolchain-Unterverzeichnis das + eigene ``Makefile`` der Toolchain mit ``make clean`` auf. Das + Target *clean* löscht meistens sämtliche generierten Dateien und + Verzeichnisse, um anschließend sauber neu aufsetzen zu können. + - **<toolchain>-dirclean**: Löscht das gesamte + Toolchain-Unterverzeichnis. Das ist praktisch, wenn man eine + neuere Version auspacken und die alte vorher komplett wegräumen + möchte. + - **<toolchain>-distclean**: Löscht im Toolchain-Unterverzeichnis + das Distributions-Verzeichnis. + +- Im vorigen Schritt kamen noch zwei weitere Targets hinzu, die es + ermöglichen, zwei zentrale Teile der Firmware noch individueller zu + gestalten: + + - **kernel-menuconfig**: Auch der Linux-Kernel hat eine hübsche + Konfigurationsoberfläche, in der man allerhand einstellen kann. + Ich halte es persönlich für wenig empfehlenswert, hier etwas zu + ändern - es sei denn, man kennt sich wirklich gut damit aus. Es + wird sehr schwierig, im Forum Hilfe zu finden, wenn man einen + anders konfigurierten Kernel hat als der Rest der Welt. + - **busybox-menuconfig**: Auch die Busybox kann man an diversen + Stellen um Features ergänzen auf Kosten ihrer Größe. Die Besitzer + der 8-MB-Boxen (z.B. 7170) haben in der Regel noch genug Platz, um + hier das eine oder andere Feature hinzuzufügen. Hier empfehle ich, + nichts wegzulassen, was standardmäßig enthalten ist, damit auch + wieder die Vergleichbarkeit bei Diskussionen im Forum da ist. Es + bringt nichts, das *Gunzip*-Feature in *Tar* zu deaktivieren und + hinterher dann im Forum zu fragen, weshalb ein *Gzip*-Archiv nicht + entpackt werden konnte. Hingegen stört es wenig, wenn man + zusätzlich *Bunzip2* aktiviert, weil es ja nur ein Zusatz ohne + Seiteneffekte (nach menschlichem Ermessen) ist. + +.. _SonstigeMake-Targets: + +Sonstige Make-Targets +~~~~~~~~~~~~~~~~~~~~~ + +Direkt im Top-Level-\ ``Makefile``, also nicht inkludiert, sind weitere +Targets enthalten. + +- Teilweise handelt es sich um **Hilfs-Targets**, welche man selten + manuell aufrufen wird, weil sie hauptsächlich zur Verwendung seitens + übergeordneter Targets gedacht sind. Beispiele hierfür sind *config, + oldconfig, defconfig*. +- Desweiteren gibt es das Utility-Target **recover**, mit welchem man + eine zerschossene Box wiederbeleben kann (Details würden den Rahmen + des Artikels sprengen). +- Dann gibt es noch **Sammel-Targets** wie *sources, precompiled, libs, + packages-precompiled*, welche eine ganze Gruppe ähnlich lautender + oder dem Zweck nach verwandter Sub-Targets aufrufen. +- Wenn man nur eine Firmware zusammenbauen möchte und alle dafür + notwendigen Vorarbeiten (Toolchains bauen, ``make precompiled``) + bereits erledigt sind, kann man das Target **firmware** benutzen. Es + baut bei Bedarf noch die Tools (nicht mit den Toolchains zu + verwechseln) und macht sich dann ans Werk. Am Ende hat man ein + Firmware-Image im images-Verzeichnis mit dem Namen *\*.image*. Das + Target wird implizit aufgerufen, wenn mann einfach ``make`` aufruft, + also das Default-Target baut. Übrigens erledigt das Skript ``fwmod`` + im Wurzelverzeichnis die ganze Arbeit des Firmware-Bauens. Es ist + sicher interessant, sich dieses Skript mal im Detail anzusehen, wenn + man wissen möchte, was da so alles passiert. + +So, ich hoffe, dieser Artikel bringt dem einen oder anderen Modder +etwas. Diskussionen, Feedback, Korrekturen hierzu sind wie immer +willkommen und können im zugehörigen +`​Forums-Thread <http://www.ip-phone-forum.de/showthread.php?t=129115>`__ +eingebracht werden. + +| `​Alexander Kriegisch + (kriegaex) <http://www.ip-phone-forum.de/member.php?u=117253>`__ +| Überarbeitet von Oliver Metz diff --git a/wiki/help/howtos/development/install_addon.rst b/wiki/help/howtos/development/install_addon.rst new file mode 100644 index 0000000..da8fb75 --- /dev/null +++ b/wiki/help/howtos/development/install_addon.rst @@ -0,0 +1,27 @@ +.. _AddonPaketinstallieren: + +Addon Paket installieren +======================== + +Pakete, die noch nicht in Freetz integriert sind, können als sogenanntes +*Addon Paket* installiert werden. Dazu das gewünschte Paket **vor** dem +Erstellen des Image herunterladen und nach ``./addon`` entpacken. +Folgendes Beispiel geht davon aus, dass man sich im Verzeichnis des +entpackten Freetz befindet: + +.. code:: bash + + tar -C addon -xjvf /pfad/zu/addon-paket-0.1-freetz.tar.bz2 + +Danach muss das Paket in der Liste ``./addon/static.pkg`` in eine neue +Zeile eingetragen werden (im obigen Beispiel: ``addon-paket-0.1``). +Addon Pakete werden nach den integrierten Paketen in der Reihenfolge des +Auftretens in ``./addon/static.pkg`` gestartet. Falls es sich bei dem +Addon Paket um eine andere Version eines bereits integrierten Pakets +handelt, so sollte das ursprüngliche Paket in ``make menuconfig`` unter +*Package selection* deaktiviert werden, um Versionskonflikte zu +vermeiden. + +- Tags +- `addons </tags/addons>`__ +- `howtos </tags/howtos>`__ diff --git a/wiki/help/howtos/development/integrate_own_files.rst b/wiki/help/howtos/development/integrate_own_files.rst new file mode 100644 index 0000000..8d1b8a4 --- /dev/null +++ b/wiki/help/howtos/development/integrate_own_files.rst @@ -0,0 +1,262 @@ +.. _EigeneDateienindieFirmwareintegrieren: + +Eigene Dateien in die Firmware integrieren +========================================== + +Die Fritzbox besitzt zwei Speicherbereiche: + +#. den `Flash <flash.html>`__ +#. den Arbeitsspeicher (RAM) + +Um im laufenden Betrieb Dateien anzulegen und zu verändern, lässt sich +das Verzeichnis ``/tmp`` nutzen. Es liegt im Arbeitsspeicher in einer +RAM-Disk und arbeitet wie ein normales beschreibbares Dateisystem. +Folgende Dinge sind jedoch zu beachten: + +- Es nutzt den vorhandenen Arbeitsspeicher mit, der je nach Box bis zu + 64MB gross ist. Wird die Menge der Daten im Arbeitsspeicher zu groß, + startet die Box ohne Vorwarnung neu. +- Alles, was im Arbeitsspeicher liegt, ist nach einem Reboot oder + Stromausfall verloren. + +Für die "feste Integration" gibt es mehrere Möglichkeiten: + ++-----------------------+-----------------------+-----------------------+ +| Variante | Pros | Contras | ++=======================+=======================+=======================+ +| via Freetz Image | - einfaches Handling | - die modifizierte | +| | - keine bestehende | Firmware muss | +| | Internetverbindung | geflasht werden | +| | erforderlich | - der Flash-Speicher | +| | | ist kleiner als | +| | | das RAM und oft eh | +| | | schon fast voll | ++-----------------------+-----------------------+-----------------------+ +| via ``debug.cfg`` | - funktioniert auf | - funktioniert nur | +| | jeder Box | mit ASCII-Dateien, | +| | - keine bestehende | wie z.B. mit | +| | Internetverbindung | Skripten oder | +| | erforderlich | Konfigurationsdate | +| | | ien | +| | | - werden Änderungen | +| | | an diesen Dateien | +| | | vorgenommen, | +| | | müssen diese auch | +| | | wieder in die | +| | | debug.cfg | +| | | übernommen werden | ++-----------------------+-----------------------+-----------------------+ +| Nachladen von | - funktioniert mit | - bestehende | +| Webserver | allen Dateien, | Internetverbindung | +| | auch mit binären. | oder laufender | +| | Notwendig z.B. für | interner Webserver | +| | nachgeladene | erforderlich | +| | Programme wie z.B. | - private Dateien | +| | bFTP, | wie z.B. secret | +| | dropbear(SSH) oder | keys für SSH oder | +| | OpenVPN, | VPN dürfen | +| | - funktioniert auf | keinesfalls im Web | +| | jeder Box | abgelegt werden! | +| | - Umgeht die | Wer dies tut, kann | +| | Probleme des | sich | +| | knappen | Verschlüsselung | +| | Flash-Speichers | gleich sparen. | +| | - Änderungen lassen | | +| | sich leicht am | | +| | Rechner mit dem | | +| | eigenen Editor | | +| | (z.B. TextPad) | | +| | vornehmen | | +| | (Achtung: Auf | | +| | UNIX-Formatierung | | +| | achten!) und dann | | +| | auf den Webspace | | +| | hochladen. | | +| | - wer mehrere | | +| | Fritz!Boxen oder | | +| | Router hat, kann | | +| | so auf einmal die | | +| | Konfiguration für | | +| | alle gleichzeitig | | +| | anpassen | | ++-----------------------+-----------------------+-----------------------+ +| Nachladen vom USB | - funktioniert mit | - funktioniert nur | +| Stick | allen Dateien, | bei vorhendenem | +| | auch mit binären. | USB Slot mit einem | +| | Notwendig z.B. für | USB Stick (bzw. | +| | nachgeladene | anderem USB | +| | Programme wie z.B. | Speichermedium) | +| | bFTP, | - Die USB devices | +| | dropbear(SSH) oder | werden, je nach | +| | OpenVPN, | Firmware, leider | +| | - Umgeht die | unter | +| | Probleme des | verschiedenen | +| | knappen | Namen eingebunden, | +| | Flash-Speichers | sodaß in der | +| | - Änderungen lassen | debug.cfg darau | +| | sich leicht am | eingegangen werden | +| | Rechner mit dem | muß. | +| | eigenen Editor | | +| | (z.B. Notepadplus) | | +| | vornehmen | | ++-----------------------+-----------------------+-----------------------+ +| WebDAV- bzw. NFS- | - RAM wird nicht mit | - bestehende | +| Share mounten | lokalen Kopien von | Internetverbindung | +| | Dateien gefüllt | und WebDAV-Server | +| | (abgesehen von der | (z.B. GMX/1&1 | +| | Ausführung) | MediaCenter) | +| | - funktioniert mit | erforderlich | +| | allen Dateien, | - private Dateien | +| | auch mit binären | wie z.B. secret | +| | - funktioniert auf | keys für SSH oder | +| | jeder Box | VPN dürfen | +| | - umgeht die | keinesfalls im Web | +| | Probleme des | abgelegt werden! | +| | knappen | Wer dies tut, kann | +| | Flash-Speichers | sich | +| | - sehr komfortabel, | Verschlüsselung | +| | da kein Nachladen | gleich sparen. | +| | per debug.cfg | | +| | nötig ist | | +| | - Änderungen lassen | | +| | sich leicht am | | +| | Rechner mit dem | | +| | eigenen Editor | | +| | (z.B. TextPad) | | +| | vornehmen | | +| | (Achtung: Auf | | +| | UNIX-Formatierung | | +| | achten!) und dann | | +| | auf den | | +| | WebDAV-Share | | +| | hochladen. | | +| | - wer mehrere | | +| | Fritz!Boxen oder | | +| | Router hat, kann | | +| | so auf einmal die | | +| | Konfiguration für | | +| | alle gleichzeitig | | +| | anpassen | | ++-----------------------+-----------------------+-----------------------+ + +Die "perfekte Lösung" gibt es natürlich nicht. Je nach Anwendungsfall +werden die Möglichkeiten kombiniert. + +.. _FesteIntegrationüberdasFreetzImage: + +Feste Integration über das Freetz Image +--------------------------------------- + +- Freetz-1.1.x: Die Datei kann unter ``./root`` an die gewünschte + Stelle kopiert werden. +- Ab Freetz-1.2: Dies kann ohne großen Aufwand über das Beispiel Addon + ``own-files-0.1`` realisiert werden. Einfach das Kommentarzeichen vor + ``own-files-0.1`` in addon/static.pkg entfernen und die gewünschten + Dateien in das Verzeichnis ``./addon/own-files-0.1/root/`` an die + Stelle kopieren, an der sie im root Dateisystem der Box landen + sollen. + Beispiel: eine Datei ``./addon/own-files-0.1/root/usr/bin/foo`` wird + auf der Box in ``/usr/bin/foo`` landen. + +.. + + Dateien und Verzeichnisse, die unterhalb von ``/var`` liegen sollen + können nach ``./addon/own-files-0.1/var.tar`` kopiert werden. + Änderungen an diesen Dateien gehen bei jedem Reboot verloren. + +.. _ErzeugenderDateienausderdebug.cfg: + +Erzeugen der Dateien aus der debug.cfg +-------------------------------------- + +Beim Booten werden die gewünschten Dateien im Verzeichnis ``/tmp`` neu +erstellt. Dazu wird das Script ``debug.cfg`` missbraucht, das beim +Starten der FritzBox automatisch ausgeführt wird. Da die ``debug.cfg`` +selbst im beschreibbaren TFFS des Flash (mtd3/4) liegt, gehen ihre +Inhalte beim Reboot nicht verloren. + +Beispiel: + +Der Code wird einfach in die ``debug.cfg`` eingefügt. Am einfachsten +geht es mit Putty: + +- Code in Zwischenablage kopieren +- mit der Box via telnet / SSH verbinden +- nvi /var/flash/debug.cfg +- mit *: set paste RETURN* in den Einfügen/Paste Modus wechseln +- an der passenden stelle "i" für insert drücken +- rechte Maustaste auf Putty fügt den Text ein +- nacheinander *ESC ESC : w q RETURN* drücken (Abbrechen wäre: *ESC ESC + : q ! RETURN*) +- Neustarten + +Hier wird ein Skript erzeugt, das sich mit ``/var/tmp/checkonline.sh`` +aufrufen lässt. Es zeigt an, welcher der neun Rechner im FB-LAN online +ist. Wichtig ist, daß der "Endmarker" (hier 'ENDCHECK') **nicht +eingerückt** ist. Die letzte Zeile macht das Script ausführbar. Abbruch +mit STRG+C. + +:: + + cat > /var/tmp/checkonline.sh << 'ENDCHECK' + #!/bin/sh + + while [ 1 = 1 ] + do + clear + echo Online: + date + echo ------------------------------------------------ + for a in "2 Desktop1" "3 Michael" "20 Christina" "21 -" "22 -" "23 -" "24 -" "25 -" "26 -" "27 -" "28 -" "29 -" "45 FB WLAN SL(WDS)" + + do + ping -c 1 192.168.178.$a |grep "bytes from ">/dev/null && echo 192.168.178.$a & + done + sleep 1 + echo ------------------------------------------------ + sleep 9 + done + + ENDCHECK + chmod +x /var/tmp/checkonline.sh + +.. _NachladenvomWebserver: + +Nachladen vom Webserver +----------------------- + +Beim Booten werden alle gewünschten Dateinen aus dem Internet oder von +einem Webserver im Intranet auf die Box geladen. + +.. _NachladenvomUSB-Stick: + +Nachladen vom USB-Stick +----------------------- + +Beim Booten werden alle gewünschten Dateinen direkt vom USB Stick bzw. +via FTP vom internen FTP Server auf die Box geladen. + +.. _WebDAVSharemounten: + +WebDAV Share mounten +-------------------- + +Für `Freetz <../../../index.html>`__ gibt es das Paket +`WebDAV <../../../packages/davfs2.html>`__, über das man einen +WebDAV-Share direkt mounten kann. Als Konsequenz werden alle +Remote-Dateien so behandelt, als wären sie lokal vorhanden, und zwar +ohne gesondertes Nachladen. + +.. _NFS-Sharemounten: + +NFS-Share mounten +----------------- + +Mit dem `NFS Paket <../../../packages/nfs.html>`__ lässt sich gleiches +erreichen wie mit WebDAV (s.o.), nur etwas stabiler |:)| + +- Tags +- `howtos </tags/howtos>`__ + +.. |:)| image:: ../../../../chrome/wikiextras-icons-16/smiley.png + diff --git a/wiki/help/howtos/development/integrate_patches.rst b/wiki/help/howtos/development/integrate_patches.rst new file mode 100644 index 0000000..e1a2767 --- /dev/null +++ b/wiki/help/howtos/development/integrate_patches.rst @@ -0,0 +1,30 @@ +.. _PatchesinFreetzeinspielen: + +Patches in Freetz einspielen +============================ + +|Warning| Hinweis: Wenn ihr Freetz aus dem svn (trunk oder stable branch) +ausgecheckt habt, dann erhaltet ihr die neuesten Patches durch +``svn up``. + +Bei dringenden oder kleinen Änderungen / Neuerungen werden passend zum +letzten Release so genannte Patches angeboten. Diese Patches haben einen +Dateinamen ähnlich diesem: freetz\ *-version-patch-name*.patch.bz2. Der +Patch muss **nach** dem Entpacken des zugehörigen Freetz +freetz\ *version*.tar.bz2 und **vor** dem Erstellen des Image +eingespielt werden. Folgende Anleitung geht davon aus, dass beide +Dateien im aktuellen Verzeichnis liegen: + +#. *Falls noch nicht geschehen*: Freetz entpacken + ``tar -xvjf freetz-version.tar.bz2`` +#. Patch entpacken ``bunzip2 freetz-version-patch-name.patch.bz2`` +#. Patch anwenden ``patch -p0 < freetz-version-patch-name.patch`` + +Nun ist der Patch in den entpackten Freetz eingespielt und man kann mit +dem Erstellen des Image fortfahren. + +- Tags +- `howtos </tags/howtos>`__ + +.. |Warning| image:: ../../../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/help/howtos/development/make_busybox.rst b/wiki/help/howtos/development/make_busybox.rst new file mode 100644 index 0000000..cf7682c --- /dev/null +++ b/wiki/help/howtos/development/make_busybox.rst @@ -0,0 +1,28 @@ +.. _Busyboxkonfigurierenundkompilieren: + +Busybox konfigurieren und kompilieren +===================================== + +Vorraussetzung ist eine Toolchain (siehe `Cross-Compiler / Toolchain +erstellen <create_cross-compiler_toolchain.html>`__). Sollten jemals +Probleme mit nicht vorhandenen Verzeichnissen auftauchen, so kann ein +``make world`` Abhilfe schaffen. In der Regel sollte das aber nicht +nötig sein. + +#. Der Boxtyp (Type) sollte richtig in der Freetz Konfiguration (make + menuconfig)gewählt sein, da nur die Busybox für die entsprechende Box + kompiliert wird +#. ``make busybox-dirclean`` Löscht die aktuell entpackten Sourcen der + Busybox (wir werden von komplett sauberen Busybox Sourcen + kompilieren; wer das nicht will, kann es mit ``make busybox-clean`` + versuchen) +#. ``make busybox-menuconfig`` Die Konfiguration der Busybox wird danach + wieder nach ``./make/busybox/Config.<target-ref>`` zurückgespeichert +#. ``make busybox-precompiled`` Dies kompiliert die Busybox und + aktualisiert: + + - ``./busybox/busybox-<target-ref>`` + - ``./busybox/busybox-<target-ref>.links`` + +- Tags +- `howtos </tags/howtos>`__ diff --git a/wiki/help/howtos/development/make_kernel.rst b/wiki/help/howtos/development/make_kernel.rst new file mode 100644 index 0000000..e477488 --- /dev/null +++ b/wiki/help/howtos/development/make_kernel.rst @@ -0,0 +1,27 @@ +.. _Kernelkonfigurierenundkompilieren: + +Kernel konfigurieren und kompilieren +==================================== + +Vorraussetzung ist eine Toolchain (siehe `Cross-Compiler / Toolchain +erstellen <create_cross-compiler_toolchain.html>`__). Sollten jemals +Probleme mit nicht vorhandenen Verzeichnissen auftauchen, so kann ein +``make world`` Abhilfe schaffen. In der Regel sollte das aber nicht +nötig sein. + +#. Der Boxtyp (Type) sollte richtig gewählt sein, da nur der Kernel für + die entsprechende Box kompiliert wird +#. ``make kernel-dirclean`` Löscht den aktuell entpackten Source Tree + des Kernels (wir werden von komplett sauberen Kernel Sourcen + kompilieren; wer das nicht will, kann es mit ``make kernel-clean`` + versuchen) +#. ``make kernel-menuconfig`` Die Konfiguration des Kernels wird danach + wieder nach ``./make/linux/Config.<kernel-ref>`` zurückgespeichert +#. ``make kernel-precompiled`` Nun werden der Kernel und die Kernel + Module kompiliert: + + - ``./kernel/kernel-<kernel-ref>.bin`` + - ``./kernel/modules-<kernel-ref>/`` + +- Tags +- `howtos </tags/howtos>`__ diff --git a/wiki/help/howtos/development/make_room.rst b/wiki/help/howtos/development/make_room.rst new file mode 100644 index 0000000..0183659 --- /dev/null +++ b/wiki/help/howtos/development/make_room.rst @@ -0,0 +1,466 @@ +.. _PlatzsparenimDateisystemderFritzBox: + +Platz sparen im Dateisystem der FritzBox +======================================== + +.. _VorwortundMotivation: + +Vorwort und Motivation +---------------------- + +Dass der Speicherplatz im Dateisystem der FritzBox - insbesondere bei +den heute noch verbreiteten "kleinen" Routern wie der 5050 oder der 7050 +- begrenzt ist, dürfte jedem Modder klar sein, der schon einmal +entsprechende Fehlermeldungen von ``fwmod`` während des Zusammenbauens +der Firmware (FW) gesehen hat und daraufhin anfangen mußte zu überlegen, +welche Freetz-Pakete er weglässt. Diskutiert wird über dieses Problem +bspw. im IPPF-Thread `​7050 zu eng: DS-Mod-Teile manuell auf externe +Platte +auslagern <http://www.ip-phone-forum.de/showthread.php?t=132936>`__, +aber auch woanders. + +Ohne ein hier ein fertiges "Abspeck-Werkzeug" präsentieren zu wollen, +möchte ich an dieser Stelle einfach mal übersichtshalber zusammenfassen, +welche Mittel und Wege mir derzeit einfallen würden, wenn ich Platz +sparen müsste auf meiner Box. Es geht darum, Hilfe zur Selbsthilfe zu +leisten und ein paar Gedanken mit auf den Weg zu geben, um es jedem zu +ermöglichen, die ihm am erfolgversprechendsten erscheinenden Wege weiter +zu verfolgen. Weder erhebt diese kleine Übersicht Anspruch auf +Vollständigkeit noch auf absolute Korrektheit oder Praxiserprobtheit. +Mit meiner 7170 habe ich momentan keine Platzprobleme, da ich auch nicht +der Typ bin, der "alles" auf seiner Box laufen haben möchte - übrigens +schon der erste und mit effektivste Weg zum Sparen: nicht übertriebene, +aber angemessene Bescheidenheit und Konzentration aufs Notwendige. + +.. _Bestandsaufnahme:WosteckendiePlatzfresser: + +Bestandsaufnahme: Wo stecken die Platzfresser? +---------------------------------------------- + +Bevor wir darüber nachdenken, an welchen Ecken wir sparen können, +sollten wir uns zunächst einen Überblick darüber verschaffen, wo am +meisten Platz verbraucht wird. Im zweiten Schritt unterscheiden wir dann +zwischen notwendigen und überflüssigen Platzfressern, im Folgenden PFs +genannt. Schließlich gehen wir nach dem +`​Pareto-Prinzip <http://de.wikipedia.org/wiki/Pareto-Verteilung#Pareto-Prinzip>`__ +vor, um mit überschaubarem Aufwand einen möglichst hohen Effekt zu +erzielen. + +.. _Schritt1:UntersuchungOriginal-Firmware: + +Schritt 1: Untersuchung Original-Firmware +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Welche Dateien verbrauchen am meisten Platz in der Original-Firmware? +Dazu schauen wir uns am einfachsten nach einem ``make`` das Verzeichnis +an, in welchem die entpackten Firmware-Dateien abgelegt sind: +``build/original/filesystem``. Mit folgendem Befehl durchsuchen wir das +Verzeichnis nach Dateien (``find -type f``) und übergeben all diese +Dateien dem ``ls``-Befehl, um diesen dazu veranlassen, sie nach ihrer +Größe absteigend zu sortieren. Als Beispiel diene hier die AVM-FW +29.04.29 für die Box vom Typ 7170. (Der Übersicht halber lasse ich +unwichtige Spalten der Ergebnisliste weg.) + +.. code:: bash + + $ cd build/original/filesystem + $ find . -type f | xargs ls -lSR | more + + 1291372 lib/libcrypto.so.0.9.8 + 858208 lib/modules/2.6.13.1-ohio/kernel/drivers/isdn/isdn_fon4/zzz/isdn_fbox.ko + 730844 lib/modules/2.6.13.1-ohio/kernel/drivers/dsld/kdsldmod.ko + 551944 usr/bin/telefon + 473772 lib/modules/2.6.13.1-ohio/kernel/drivers/net/wireless/avm_wlan/wlan/tiap.ko + 425652 lib/libuClibc-0.9.28.so + 416632 bin/busybox + 314836 lib/libavmcsock.so.2.0.0 + 303784 lib/modules/microvoip-dsl.bin + 283853 lib/modules/microvoip_isdn_top.bit1 + 274704 usr/bin/ctlmgr + 274352 lib/libsiplib.so.2.0.0 + 259052 lib/libssl.so.0.9.8 + 252344 usr/share/ctlmgr/libtr069.so + 234684 usr/share/ctlmgr/libfon.so + 212468 lib/modules/microvoip_isdn_top.bit + 212432 sbin/dsld + 202684 lib/libmscodex.so.2.0.0 + 167180 sbin/fsck.ext2 + 163360 sbin/multid + 158332 lib/modules/2.6.13.1-ohio/kernel/drivers/usb/core/usbcore.ko + 154224 usr/bin/wpa_authenticator + 142624 lib/modules/2.6.13.1-ohio/kernel/drivers/atm/avm_atm/tiatm.ko + 142104 lib/libosipparser2.so.4.0.0 + 134308 lib/modules/2.6.13.1-ohio/kernel/drivers/scsi/scsi_mod.ko + 132296 lib/libar7cfg.so.1.0.0 + 117056 lib/libm-0.9.28.so + 116804 bin/voipd + 106192 lib/modules/fw_dcrhp_1150_ap.bin + 102712 usr/lib/libext2fs.so.2.4 + 102472 sbin/fdisk + +Jetzt kann man anfangen zu überlegen, was wohl verzichtbar wäre. Eine +Busybox oder den DSL-Daemon wegzulassen, ergibt keinen Sinn - eher +schon, bei der Busybox auf unnötige Applets zu verzichten. Mancher mag +sich überlegen, dass er die WLAN-Bestandteile nicht braucht, stattdessen +vielleicht lieber mehr Platz für OpenVPN schaffen möchte. Das ist nur +ein Beispiel und unabhängig davon, ob die Box ohne die WLAN-Binaries +überhaupt sauber startet (Kommentar: Das WLAN-Modul, tiap.ko, lässt sich +ohne Probleme entfernen). Wenn man die Dateien weglässt, sollte man z.B. +dafür sorgen, daß die entsprechenden Dienste deaktiviert werden oder in +den entsprechenden Startskripten ggf. Dinge zur Sicherheit +auskommentiert werden. Bei anderen Programmen fällt die Entscheidung +wieder leichter: ``fdisk`` braucht man beispielsweise im Normalfall +nicht, solange man nicht mit ``mkfs.ext2`` ein Dateisystem anlegen +möchte. Ein bisschen sparen kann man also, indem man es weglässt, +vielleicht die entscheidenden KB, damit eine andere Erweiterung auf die +Box passt. Für andere Kandidaten wie die +`libtr069 <../../../patches/remove_tr069.html>`__ gibt es bei den +kleinen Boxen sogar schon Schalter in der +`Menükonfiguration <../common/install/menuconfig.html>`__ von Freetz, um +sie wegzulassen. Im Allgemeinen untersucht man die Startdateien unter +``/etc/init.d``, um herauszufinden, ob und wann eine bestimmte Datei +geladen wird. Bei benötigten Bibliotheken ist die Analyse etwas +schwieriger, aber auch möglich. + +.. _Schritt2:UntersuchungMod-Firmware: + +Schritt 2: Untersuchung Mod-Firmware +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Das Gleiche, was wir gerade für die Original-Firmware gemacht haben, tun +wir nun für die nach unseren Wünschen konfigurierte Mod-Firmware. Selbst +wenn diese evtl. nicht erfolgreich gebaut werden konnte, weil z.B. der +Platz nicht genügte, sehen wir doch das erzeugte Dateisystem unter +``build/modified/filesystem``. Es folgt ein Beispiel von meiner 7170 mit +Mod-Version ds-0.2.9_26-14.2 und, grob gesprochen, folgenden aktivierten +Optionen und Erweiterungen: 1&1-Branding, keine Hilfetexte und +Assistenten, Original-Kernel, Bftp, Callmonitor, Cifsmount, Dropbear +(nur Server), MC, Mini_fo, Samba, Screen, Syslogd-CGI, WoL-CGI, Lua, +Matrixtunnel. Das sieht dann so aus: + +.. code:: bash + + $ cd build/modified/filesystem + $ find . -type f | xargs ls -lSR | more + + 1291372 lib/libcrypto.so.0.9.8 + 913456 usr/sbin/smbd + 858208 lib/modules/2.6.13.1-ohio/kernel/drivers/isdn/isdn_fon4/zzz/isdn_fbox.ko + 779956 usr/bin/mc.bin + 730844 lib/modules/2.6.13.1-ohio/kernel/drivers/dsld/kdsldmod.ko + 599740 bin/busybox + 551944 usr/bin/telefon + 473772 lib/modules/2.6.13.1-ohio/kernel/drivers/net/wireless/avm_wlan/wlan/tiap.ko + 436344 usr/sbin/nmbd + 413184 lib/libuClibc-0.9.28.so + 372060 usr/bin/screen.bin + 323371 lib/modules/2.6.13.1-ohio/kernel/fs/cifs/cifs.ko + 314836 lib/libavmcsock.so.2.0.0 + 303784 lib/modules/microvoip-dsl.bin + 283853 lib/modules/microvoip_isdn_top.bit1 + 274704 usr/bin/ctlmgr + 274352 lib/libsiplib.so.2.0.0 + 273900 usr/lib/libncurses.so.5.5 + 259052 lib/libssl.so.0.9.8 + 252344 usr/share/ctlmgr/libtr069.so + 234684 usr/share/ctlmgr/libfon.so + 212468 lib/modules/microvoip_isdn_top.bit + 212432 sbin/dsld + 204336 usr/bin/lua + 202684 lib/libmscodex.so.2.0.0 + 200256 usr/lib/libreadline.so.5.2 + 183224 usr/sbin/dropbearmulti + 167180 sbin/fsck.ext2 + 163360 sbin/multid + 155037 lib/modules/2.6.13.1-ohio/kernel/drivers/usb/core/usbcore.ko + 154224 usr/bin/wpa_authenticator + 142624 lib/modules/2.6.13.1-ohio/kernel/drivers/atm/avm_atm/tiatm.ko + 142104 lib/libosipparser2.so.4.0.0 + 132296 lib/libar7cfg.so.1.0.0 + 132124 lib/modules/2.6.13.1-ohio/kernel/drivers/scsi/scsi_mod.ko + 131614 usr/share/samba/unicode_map.850 + 117746 usr/lib/mc/mc.hlp + 116804 bin/voipd + 116148 lib/libm-0.9.28.so + 106192 lib/modules/fw_dcrhp_1150_ap.bin + 102712 usr/lib/libext2fs.so.2.4 + 102472 sbin/fdisk + +Wir erkennen: Samba, MC und Screen scheinen recht groß zu sein, aber so +richtig übersichtlich ist das Ganze nicht, denn die zuvor analysierten +Dateien der Original-Firmware sind ja immer noch in der Liste. Wenn wir +nur die exklusiv im Mod vorkommenden sehen wollen, müssen wir erst ein +bißchen aussieben: + +:: + + $ cd build + $ find original/filesystem -type f | sed 's/^original\/filesystem\///' > orig-files + $ find modified/filesystem -type f | sed 's/^modified\/filesystem\///' > modi-files + $ diff -u orig-files modi-files | \ + grep '^+' | grep -v '^+++' | sed 's/^+/modified\/filesystem\//' > new-files + $ cat new-files | xargs ls -lSR | more + + 913456 usr/sbin/smbd + 779956 usr/bin/mc.bin + 436344 usr/sbin/nmbd + 372060 usr/bin/screen.bin + 323371 lib/modules/2.6.13.1-ohio/kernel/fs/cifs/cifs.ko + 273900 usr/lib/libncurses.so.5.5 + 204336 usr/bin/lua + 200256 usr/lib/libreadline.so.5.2 + 183224 usr/sbin/dropbearmulti + 131614 usr/share/samba/unicode_map.850 + 117746 usr/lib/mc/mc.hlp + 85680 lib/modules/2.6.13.1-ohio/kernel/fs/mini_fo/mini_fo.ko + 85072 usr/lib/libmatrixssl.so + 68816 usr/sbin/bftpd + 57005 lib/modules/2.6.13.1-ohio/kernel/net/ipv4/netfilter/ip_conntrack.ko + 34309 usr/lib/mc/syntax/html.syntax + 31232 lib/modules/2.6.13.1-ohio/kernel/net/ipv4/netfilter/ip_tables.ko + 26432 usr/lib/libhistory.so.5.2 + 24544 usr/bin/haserl + 23940 usr/sbin/matrixtunnel + 21708 usr/sbin/mount.cifs + 20392 lib/modules/2.6.13.1-ohio/kernel/drivers/block/loop.ko + 11461 usr/lib/mc/syntax/perl.syntax + 10684 lib/modules/2.6.13.1-ohio/kernel/net/ipv4/netfilter/ipt_LOG.ko + +Wir sehen Verschiedenes: *Samba* ist tatsächlich ein Platzfresser, wenn +man *smbd* und *nmbd* zusammenzählt. *MC* mit *ncurses* ist auch nicht +zu verachten - evtl. könnten wir wenigstens die Hilfedatei *mc.hlp* +weglassen. Allerdings muß man bei textlastigen Dateien wie der MC-Hilfe +aufpassen und die Erwartungen nicht zu hoch schrauben: **Unsere +Vergleiche hinken im Grunde alle, denn wir müßten uns die Dateien +LZMA-komprimiert anschauen, um einen Eindruck davon zu erhalten, wieviel +Platz sie in einem SquashFS auf der Box wirklich brauchen würden. +Textdateien z.B. sind extrem stark komprimierbar. Sie also wegzulassen, +bringt oft weniger als erhofft.** + +Was noch auffällt, sind diverse *Netfilter*-Bibliotheken, die wohl mit +in die Firmware kopiert wurden, als ich mal testweise *Iptables* +kompiliert habe. Offensichtlich bleibt dabei so Manches übrig, das gar +nicht hinein gehört in die FW, weil es längst abgewählt wurde. Das gilt +übrigens auch für so manche Shared Library und diverse Kernelmodule. +Also hier bitte aufpassen und kontrollieren, evtl. mal die +entsprechenden Verzeichnisse leeren oder, falls man nicht weiß, wo man +hinfassen soll, mal neu aufsetzen und mit korrekt eingestellter +Konfiguration (Datei ``.config``) von vorne anfangen. + +.. _Schritt3:Vorher-Nachher-VergleichexistierenderDateien: + +Schritt 3: Vorher-Nachher-Vergleich existierender Dateien +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Wir haben uns bisher alte und neue Dateien angeschaut, aber nicht +geprüft, ob sich gleichnamige, in beiden FW-Versionen vorhandene Dateien +evtl. signifikant in der Größe geändert haben. Auch das kann uns evtl. +Hinweise darauf geben, wo man noch sparen kann, wenngleich vermutlich in +geringerem Umfang. Aber wer den Heller nicht ehrt, … + +Das folgende Shell-Skript mag etwas verwirrend sein, und optimal +programmiert ist es sicher nicht, aber es dient seinem Zweck. (Ich kann +übrigens nicht mit *Awk* umgehen, sonst wäre das Ganze vermutlich +übersichtlicher geworden.) Was es tut, ist Folgendes: + +- zwei Dateilisten generieren (wie oben schon gesehen) +- in beiden Listen auftauchende Dateinamen herausfiltern (d.h. übrig + lassen) +- ein weiteres Shell-Skript erzeugen und ausführbar machen +- das Shell-Skript ausführen +- Das Skript selbst gibt für alle gemeinsamen Dateien die + Größendifferenz (neu minus alt) in Bytes und den Pfadnamen aus. +- Die Ergebnisliste wird aufsteigend sortiert und gefiltert (Dateien + ohne Unterschied in der Größe werden eliminiert). +- Uns interessieren dann die Dateien mit den größten absoluten + Unterschieden. Negative Werte bedeuten dabei Platzersparnis gegenüber + der Original-Firmware, positive zusätzlich beanspruchten + Speicherplatz. + +:: + + $ cd build + $ find original/filesystem -type f | sed 's/^original\/filesystem\///' > orig-files + $ find modified/filesystem -type f | sed 's/^modified\/filesystem\///' > modi-files + $ diff -u 99999 orig-files modi-files | grep '^ ' | sed 's/^ //' > before-after-files + $ echo '#!/bin/bash' > before-after-script + $ chmod +x before-after-script + $ cat before-after-files | sed -r \ + 's/(.*)/printf "%10d %s\\n" $(( $(stat -c "%s" modified\/filesystem\/\1) - $(stat -c "%s" original\/filesystem\/\1) )) \1/' \ + >> before-after-script + $ ./before-after-script | grep -v ' 0 ' | sort -g > before-after-diffs + + -12468 lib/libuClibc-0.9.28.so + -7508 lib/libgcc_s.so.1 + -3295 lib/modules/2.6.13.1-ohio/kernel/drivers/usb/core/usbcore.ko + -2184 lib/modules/2.6.13.1-ohio/kernel/drivers/scsi/scsi_mod.ko + -1088 lib/modules/2.6.13.1-ohio/kernel/fs/fat/fat.ko + ... ... + 9756 lib/libpthread-0.9.28.so + 10240 var.tar + 183108 bin/busybox + +Wir erkennen in diesem Fall nichts Aufregendes: Die *uClibc* wurde ca. +12 KB kleiner, die *Busybox* allerdings um ca. 180 KB größer. Das ist +doch nicht zu vernachlässigen. Allerdings kann die *Busybox* damit auch +mehr als das Original. + +War das jetzt umsonst? Nein! Denn wenn wir das Gleiche mal bei der +7050-FW machen, sehen wir, daß dort die *libgcc_s*, wenn sie denn in der +Konfiguration ausgewählt und somit ersetzt wurde, von 215 auf knappe 60 +KB schrumpft (siehe +`​dort <http://www.ip-phone-forum.de/showpost.php?p=840715&postcount=17>`__). +Das liegt daran, daß in dieser FW-Version das Original - wohl +versehentlich - nicht gestrippt oder gar mit zusätzlicher +Debug-Information freigegeben wurde. Ergo: Wer eine FW modifiziert und +Platz sparen möchte, sollte tunlichst auch auf scheinbare Kleinigkeiten +achten. + +.. _WeitereSpartricks: + +Weitere Spartricks +------------------ + +.. _AuslagerungvonDateien: + +Auslagerung von Dateien +~~~~~~~~~~~~~~~~~~~~~~~ + +Eine Möglichkeit mit viel Potential ist das Auslagern von Dateien, +entweder auf direkt zugreifbare USB-Datenträger (Speicherstift, +Festplatte) oder auf Netzlaufwerke, die mittels NFS, Cifsmount oder +Smbmount beim Hochfahren der Box eingebunden werden, so daß die erst +nach dem Einbinden (Mounten) benötigten Dateien direkt vom externen +Speicher bzw. übers Netz geladen werden können. Damit kann man eine +Firmware in ``build/modified`` bauen, die eigentlich zu groß ist für ein +Image und abbricht beim Bauen, welche man jedoch hinterher so verändert, +daß große Dateien durch Symlinks auf die zu mountenden Speicher ersetzt +werden. Die entnommenen Dateien werden entsprechend bereitgestellt, das +ausgedünnte ``build/modified`` im zweiten Durchgang erfolgreich zu einem +Image verbaut. Die Startskripten der FW wurden vorher ebenfalls +entsprechend angepaßt. + +*Update 05.10.2007:* Bereits seit ds26-15.1 ist das Paket +`​Downloader-CGI <http://www.ip-phone-forum.de/showthread.php?t=134934>`__ +Bestandteil des DS-Mod. Es erleichtert das automatische Herunterladen +von Dateien beim Start der Box. + +.. _KomprimierteBinariesundNutzdaten: + +Komprimierte Binaries und Nutzdaten +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Eine häufig geäußerte Idee im IPPF ist, man könne doch beispielsweise +einen EXE-Packer verwenden, um die Binaries zu verkleinern. Das ist +**ziemlich sinnlos** und kostet nur unnötig Rechenzeit, denn das +SquashFS (Dateisystem der Boxen) ist bereits so extrem gut komprimiert, +daß eine weitere Kompression gar nicht zum Tragen kommen würde (siehe +`​dort <http://www.ip-phone-forum.de/showthread.php?p=832868&highlight=lzma#post832868>`__). +Warum das manchmal dazu führt, daß eine scheinbar große weggelassene +Datenmenge kaum Ersparnisse bei der FW-Größe bringt, sofern es sich um +gut komprimierbare Daten handelt, erkläre ich `​in diesem +Beitrag <http://www.ip-phone-forum.de/showthread.php?p=844325&highlight=lzma#post844325>`__. + +.. _Älterebzw.alternativeSoftware-Versionen: + +Ältere bzw. alternative Software-Versionen +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Oft wird im `​IPPF <http://www.ip-phone-forum.de/>`__ gefragt, weshalb +beispielsweise der *Midnight Commander (mc-4.5.0)* oder *Samba 2.0.10* +so alte Stände haben. Das hängt teilweise einfach damit zusammen, daß +die alten Versionen vom Leistungsumfang her ausreichen, dafür aber viel +kleiner sind als die neueren Versionen mit mehr Features. Im Falle des +*MC* kommt noch dazu, daß neuere Versionen gegen Bibliotheken gelinkt +sind, welche über das, was die *uClibC* als *libc*-Ersatz bietet, ein +wenig hinaus gehen und das Ersetzen entsprechender Aufrufe durch eigene +Makros einen großen Aufwand bedeuten würde. + +Weitere Sparmöglichkeiten bestehen in der Suche nach Alternativen zu +bekannten Softwarepaketen. Beispiele: + +- *Matrixssl* ist kleiner als *OpenSSL*, genügt aber oft, z.B. um einen + HTTPS-Tunnel zu bauen. Nur wenn auf SSL-Bibliotheken aufsetzende + Software wie *OpenVPN* nicht mit *Matrixssl* funktionieren, man aber + glaubt, diese zu brauchen, bleibt keine Wahl. +- *Deco* ist kleiner als *MC*, dafür aber auch wesentlich weniger + leistungsfähig. +- Die *Rudi-Shell* ist phantastisch klein, kann aber sehr viel. Sie + führt beliebige Shell-Skripten aus, hat eine Befehlshistorie, kann + Dateien von und zur Box transferieren (sogar komprimiert) und taugt + sogar zum Remote-Flashen der Box. Mittels *Matrixtunnel* wird sie ein + funktional (nicht komfortmäßig) vollwertiger Ersatz für *SSH* bei + weit geringerem Platzbedarf und ohne die Notwendigkeit, einen + SSH-Zugang zu haben, was hinter manchen Firewalls einfach nicht + erlaubt ist, weil es nur einen Web-Proxy für HTTP und HTTPS gibt. + Rudi + Matrixtunnel genügt dies. Einen *vi* kann Rudi zwar nicht + remote bedienbar machen, aber dafür kann man ja einfach Dateien hin + und her übertragen. Lokal bequem editieren, zurück auf die Box - + fertig! +- *Cifsmount* stellt Verbindungen zu Windows- und Samba-Freigaben her, + ist aber deutlich kleiner als *Smbmount*. +- *Mini_fo* kleiner als *UnionFS*, läuft aber sehr stabil (bisher keine + mir bekannten Fehlermeldungen dazu im Forum). Dafür kann man einen + *Mini_fo*-Mount nicht über NFS exportieren, aber wer braucht das + schon? Außerdem gibt es Samba, damit geht es. +- *Perl* oder *PHP* würden die FritzBox ressourcentechnisch überlasten + - *Lua* nicht. *Lua* ist eine sehr schlanke und dabei einfach zu + lernende und leistungsfähige Skriptsprache, nicht nur für CGI. + *Update 05.10.2007:* Inzwischen habe ich gelernt, daß Apache + PHP, + die man jetzt auch per Freetz bauen kann, sehr wohl stabil und + performant auf der FritzBox laufen, aber der Platzverbrauch ist + enorm. Und ums Platzsparen geht es ja hier. +- A propos CGI-Handling: *Haserl* ist klein und leistet alles, was ich + auf der Box brauche. Da brauche ich nicht einmal *Lua*, und manchmal + verzichte ich sogar auf Haserl, weil es ein Shellskript tut. + +.. _Firmware-PatchesausMenuconfig: + +Firmware-Patches aus Menuconfig +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Schon seit langer Zeit gibt es Firmware-Patches, die nicht benötigte +Original-Bestandteile aus dem FW-Image entfernen und Platz für +Zusatz-Pakete schaffen. Dabei muß jeder selbst entscheiden, ob er +Hilfetexte und Assistenten für die AVM-Weboberfläche, den +Original-AVM-Webserver selbst (durch BusyBox-httpd ersetzbar), UPnP, +DSL, VoIP, Kindersicherung usw. benötigt. + +Wer z.B. seine Box als reinen IP-Client betreibt, der über einen +weiteren vorgeschalteten Router die Internet-Verbindung bekommt und auch +keine PPoE-Anmeldung benötigt, kann viel Platz sparen mit einem +entsprechenden Patch, welcher *dsld* plus Zubehör aus der Firmware +entfernt. Normalanwender benutzen die Box als DSL-Router und können den +Patch dann eben nicht anwenden. + +Beispiel Webserver: Auf den AVM-Webserver kann man nach heutigem +Wissensstand problemlos verzichten und stattdessen den kleineren und +ressourcenschonenderen *httpd* verwenden, der für Freetz ohnehin benutzt +wird. Leider wurde der AVM-Server bei neueren Firmwares (Neue +AVM-Weboberflächen seit etwa Mitte-Ende 2007) anders realisiert, sodass +der *httpd*-Ersatz nicht mehr möglich ist. + +Beispiel UPnP: Wer nicht mit Client-Programmen (z.B. von AVM) den Status +der Box per Universal Plug'n'Play (UPnP) abfragt - mir persönlich genügt +die Web-Oberfläche vollkommen - oder Client-Programmen erlauben möchte, +dynamisch die Firmware-Einstellungen zu verändern (d.h. Löcher hinein zu +bohren), kann auch die entsprechenden Bestandteile (``igdd`` u.a. +Dateien) weglassen. Das spart zum einen Platz im Firmware-Image, zum +anderen läuft ein Prozess weniger. Das Weglassen von UPnP macht jedoch +das Versenden der Faxe mit FritzFax nicht möglich. Wer darauf verzichten +kann, kann UPnP abwählen. + +.. _Schlußwort: + +Schlußwort +---------- + +Das soll es fürs Erste gewesen sein. Wie eingangs gesagt: Es gibt sicher +noch diverse weitere Sparmöglichkeiten. Anregungen werden gern in diese +Seite von mir eingepflegt. In diesem Sinne: + +**Geiz ist nicht geil, sondern dumm - aber sinnvoll sparen ist +hilfreich.** + +`​Alexander Kriegisch +(kriegaex) <http://www.ip-phone-forum.de/member.php?u=117253>`__ diff --git a/wiki/help/howtos/development/manipulation_detection.rst b/wiki/help/howtos/development/manipulation_detection.rst new file mode 100644 index 0000000..da95099 --- /dev/null +++ b/wiki/help/howtos/development/manipulation_detection.rst @@ -0,0 +1,460 @@ +.. _WiedieFritzBoxManipulationenerkennt: + +Wie die FritzBox Manipulationen erkennt +======================================= + +Wer kennt sie nicht, diese schöne Meldung auf der Startseite des +Web-Interface? + + **In Ihrer FRITZBox wurden vom Hersteller nicht unterstützte + Änderungen durchgeführt.** + +.. _Ursachen: + +Ursachen +-------- + +Was haben wir Böses gemacht, um diese Meldung zu verdienen? Da kommen +i.a. zwei Dinge in Frage: + +- **Telnet-Login:** Sobald der Benutzer sich auch nur ein einziges Mal + via Telnet angemeldet hat, merkt sich die Box diesen Umstand - wie + nachtragend - bis zum nächsten Recover, also normalerweise für alle + Zeiten. Wer macht schon deswegen einen Recover? +- **Nicht autorisiertes Firmware-Update:** Des Modding-Freaks Freude + ist offenbar der FritzBox Leid. Auch das Einspielen eines + Firmware-Updates, egal ob echter (Freetz-)Mod oder Pseudo-Update ohne + Firmware-Änderung (LCR-Updater, Telnet-Aktivierung usw.), wird mit + einem Eintrag ins Klassenbuch geahndet und führt zur eingangs + erwähnten Meldung. + +.. _Diagnose: + +Diagnose +-------- + +Für beide Arten der Manipulation schreibt die Box Flags persistent in +den Flash-Speicher, allerdings nicht in eine der unter ``/var/flash`` +sicht- und änderbaren Konfigurationsdateien. + +eventsdump +~~~~~~~~~~ + +Es gibt allerdings ein Werkzeug, um sich die gesetzten Flags anzeigen zu +lassen, wenn man auf der Box via Telnet oder SSH angemeldet ist: +``/sbin/eventsdump``. + +.. code:: bash + + eventsdump -d | head -n 1 + +*Eventsdump* gibt eigentlich eine Ereignisliste auf die Konsole aus, wie +man sie auch über das Web-Interface zu sehen bekommmt. Der Parameter +*-d* führt dazu, dass eventuell gesetzte Manipulations-Flags mit +ausgegeben werden, und zwar direkt in der ersten Zeile. Die filtern wir +mit ``head`` heraus. Mögliche Ausgaben sind + +- *DEBUGCFG*, +- *TELNET*, +- *NOT_SIGNED*, +- *IMPORT*, +- *NOT_SIGNED,IMPORT,TELNET* (oder andere Zusammenstellung/Reihenfolge, + ohne Leerzeichen) +- oder etwas anderes, also die erste Zeile des regulären Ereignis-Logs. + +So sehen wir also, was wir alles Böses getan haben. + +strace +~~~~~~ + +Wenn wir jetzt wissen wollen, woher ``eventsdump`` seine Informationen +nimmt, müssen wir mit einem Werkzeug wie +`​strace <http://sourceforge.net/projects/strace>`__ nachverfolgen, +welche Systemaufrufe ``eventsdump`` macht. Hier ist ein Ausschnitt aus +einem ``strace``-Log: + +.. code:: bash + + 01 mkdir("/var", 0777) = -1 EEXIST (File exists) + 02 mkdir("/var/flash", 0777) = -1 EEXIST (File exists) + 03 unlink("/var/flash/fw_attrib") = -1 ENOENT (No such file or directory) + 04 mknod("/var/flash/fw_attrib", S_IFCHR|0666, makedev(240, 87)) = 0 + 05 open("/var/flash/fw_attrib", O_RDONLY) = 3 + 06 ioctl(3, TIOCNXCL, 0x7fc22230) = -1 EOPNOTSUPP (Operation not supported) + 07 read(3, "NOT_SIGNED,TELNET", 4096) = 17 + 08 write(1, "NOT_SIGNED,TELNET\n", 3) = 18 + 09 close(3) = 0 + 10 unlink("/var/flash/fw_attrib") = 0 + +Den Ausschnitt habe ich leicht umformatiert. Links steht statt der +Zeilennummern normalerweise jeweils die PID des beobachteten Prozesses. +Rechts nach dem Gleichheitszeichen steht übrigens immer der Rückgabewert +des Aufrufs. + +Was passiert hier im Einzelnen? + +#. Verzeichnis ``/var`` wird angelegt, falls es noch nicht existiert. +#. Verzeichnis ``/var/flash`` wird angelegt, falls es noch nicht + existiert. +#. Datei ``/var/flash/fw_attrib`` wird gelöscht, falls vorhanden. +#. ``/var/flash/fw_attrib`` wird als Character Device mit den + Major/Minor-Nummern 240/87 neu angelegt. Mehr dazu später. +#. ``/var/flash/fw_attrib`` wird zum Lesen geöffnet. Der aufmerksame + Leser fragt sich: zum Lesen?! Der Node wurde doch gerade erst + angelegt. +#. Die Systemfunktion *ioctl* wird aufgerufen, vermutlich um das + "magische Verhalten" von ``fw_attrib`` zu initialisieren. Worin + dieses besteht, werden wir gleich sehen. Hintergründe zu *ioctl* + finden sich z.B. in `​Linux-Gerätetreiber, 2. Auflage (OpenBook von + O'Reilly) <http://www.oreilly.de/german/freebooks/linuxdrive2ger/book1.html>`__ + oder in der `​englischen + Wikipedia <http://en.wikipedia.org/wiki/Ioctl>`__. +#. Es wird aus ``fw_attrib`` gelesen. 17 Zeichen werden gefunden, sie + enthalten den Text *NOT_SIGNED,TELNET*. Bingo! +#. Genau dieser Text plus Zeilenvorschub wird auf die Standardausgabe + des Prozesses geschrieben. (Das ist, was wir zu sehen bekommen, wenn + wir ``eventsdump -d`` aufrufen. +#. ``fw_attrib`` wird wieder geschlossen. +#. ``fw_attrib`` wird gelöscht, genauer gesagt der Node entfernt. Die + Daten im Flash-Speicher überleben das, denn sie sind immer noch da, + wenn wir genau das gleiche Character Device mit der selben + Major/Minor-Kombination erneut öffnen. + +.. _CharacterDeviceNodes: + +Character Device Nodes +~~~~~~~~~~~~~~~~~~~~~~ + +Wie versprochen, mehr zu Ziffer 4. Das Erzeugen des Character Device +Nodes kann man auch selbst nachvollziehen, indem man den Shell-Befehl +``mknod`` verwendet. Die Schritte 4 bis 8 sehen auf der Shell wie folgt +aus: + +:: + + mknod /var/flash/fw_attrib c 240 87 + cat /var/flash/fw_attrib + +Ausgabe (ohne Zeilenvorschub): + +.. code:: bash + + NOT_SIGNED,TELNET + +Vorsichtshalber sollte man aber die auf diesem Character Device +arbeitende Befehlssequenz mit vor- und nachherigem Löschen des Nodes +umschließen, wie im Trace zu sehen. Also einfach +``rm -f /var/flash/fw_attrib``. + +.. _MajorNumber: + +Major Number +^^^^^^^^^^^^ + +Offenbar ist nicht bei jeder Box bzw. jedem Firmware-Stand die Major +Number dieselbe. Statt 240 kann also auch 250 oder etwas anderes als +Major festgelegt sein. Darum wollen wir die Major Number allgemein +feststellen können. Wie man in */etc/init.d/rc.S* sehr schön sehen kann, +wird beim Systemstart die Major fürs *tffs* so bestimmt: + +:: + + major=$(grep tffs /proc/devices) + tffs_major=${major%%tffs} + +Das können wir in unserem Code weiter verwenden, um ihn allgemeiner zu +machen. + +*Anmerkung: Ob die Minor Number auch geräte- oder firmwareabhängig ist, +ist momentan nicht bekannt. Im ersten Fall einer unterschiedlichen Major +war die Minor gleich.* + +.. _Wannwirdfw_attribautomatischgelöscht: + +Wann wird fw_attrib automatisch gelöscht? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Interessantes Detail: Auch ohne manuelles Löschen der Datei wird diese +vom System alle paar Sekunden automatisch gelöscht, sofern das +Web-Interface im Browser geöffnet ist. Das liegt daran, daß sich die +Seite regelmäßig automatisch neu lädt, und dabei wird wegen des Aufrufs +von ``eventsdump -d`` abgeräumt - security by obscurity. AVM möchte wohl +nicht, daß die Benutzer die Datei sehen und manipulieren. Deshalb müssen +wir den Node jedesmal wieder neu erzeugen. Aber das stört ja nicht, wenn +man es erst einmal weiß. + +Um das Löschen zu verhindern, kann man der Datei auch einfach einen +anderen Namen geben, z.B. ``/var/tmp/fw_attrib``. Wichtig sind die Major +und Minor Number. + +.. _Lösungen: + +Lösungen +-------- + +.. _InHandarbeit: + +In Handarbeit +~~~~~~~~~~~~~ + +Wenn wir aus ``fw_attrib`` lesen können, wieso dann nicht auch hinein +schreiben? Andere Prozesse tun es ja auch, wenn sie +"Klassenbucheinträge" vornehmen. Das geht so: + +:: + + major=$(grep tffs /proc/devices) + tffs_major=${major%%tffs} + rm -f /var/flash/fw_attrib + mknod /var/flash/fw_attrib c $tffs_major 87 + echo -n "" > /var/flash/fw_attrib + rm -f /var/flash/fw_attrib + +Beachten Sie, daß ``echo -n`` nichts, also auch keinen Zeilenvorschub in +die Datei schreibt. Das kommt einem Löschen des Inhalts gleich. Ein +Kontroll-Aufruf von ``eventsdump -d | head -n 1`` bestätigt das, und +wenn man jetzt `​http://fritz.box <http://fritz.box>`__ aufruft, ist auf +der Übersichtsseite die Meldung verschwunden - das Führungszeugnis ist +sozusagen wieder sauber. |:-)| + +Aber freuen wir uns nicht zu früh, denn nach dem nächsten +unautorisierten FW-Update bzw. dem folgenden Telnet-Login ist die +Meldung wieder da. Was kann man also noch tun? + +.. _SäuberungsaktionbeimSystemstart: + +Säuberungsaktion beim Systemstart +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Obige Befehlssequenz kann man selbstverständlich auch +``/var/flash/debug.cfg`` ausführen lassen. Solange man sich nicht per +Telnet anmeldet, ist die Meldung damit weg, auch wenn man zuvor gerade +ein FW-Update eingespielt hat. Tip: Mit SSH zu arbeiten, stört die +FritzBox nicht, denn damit rechnet sie nicht und kreidet es uns somit +auch nicht als Manipulation an. Wer also ein Freetz mit +`Dropbear <../../../packages/dropbear.html>`__ hat, ist fein heraus. + +.. _RegelmäßigesAufräumenmitcron: + +Regelmäßiges Aufräumen mit cron +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Mit Freetz hat man auch die Möglichkeit, einen *cron*-Job nach dem +Rechten sehen und aufräumen zu lassen. Selbst wenn man also *Telnet* +benutzt, ist, je nach eingestellter Frequenz, nach ein paar Minuten +wieder das Flag gelöscht. + +.. _TelnetruhigstellenperHex-Editor: + +Telnet ruhig stellen per Hex-Editor +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Wenn wir uns ein wenig in den Eingeweiden der Firmware umschauen, +stellen wir fest, daß nicht ``telnetd`` selbst das entsprechende Flag +setzt. Nein, es ist ``/sbin/ar7login``. ``telnetd`` selbst wird ja wie +folgt aufgerufen, um eine Anmeldung zu ermöglichen: + +:: + + telnetd -l /sbin/ar7login + +Wer mit einem Hex-Editor (unter Linux z.B. *hexedit* aus dem +gleichnamigen Paket) ``ar7login`` öffnet, findet schnell die +Zeichenkette "TELNET" in Großbuchstaben. Genau diese Zeichenkette +schreibt das Programm nach ``fw_attrib``. Ersetzt man den ersten +Buchstaben durch ein Null-Byte, entspricht das dem Ersetzen des Wortes +durch eine Zeichenkette der Länge null, Strings in C sind schließlich +null-terminiert. (Ziemlich oft das Wort "null", Entschuldigung.) +Abspeichern, Firmware neu bauen, flashen - fürderhin bleiben wir +verschont von Klassenbucheinträgen für Telnet-Logins. + +.. _NachgelagertesAufräumenperProxy-SkriptFirmware-Variante: + +Nachgelagertes Aufräumen per Proxy-Skript (Firmware-Variante) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Vielleicht traut sich nicht jeder die Arbeit mit dem Hex-Editor zu. Es +geht auch ohne. Anstatt ``ar7login`` binär zu manipulieren, wenden wir +einen Proxy-Ansatz an: Wir benennen ``/sbin/ar7login`` um in z.B. +``/sbin/ar7login-binary`` und setzen an seine Stelle ein Shell-Skript +``/sbin/ar7login``: + +:: + + #!/bin/sh + /sbin/ar7login-binary $* + major=$(grep tffs /proc/devices) + tffs_major=${major%%tffs} + rm -f /var/flash/fw_attrib + mknod /var/flash/fw_attrib c $tffs_major 87 + echo -n "" > /var/flash/fw_attrib + +Wir reichen also einfach alle Parameter durch an ``ar7login`` und +löschen danach umgehend wieder dessen Spuren im Klassenbuch. |;-)| +Anschließend gilt analog zu Variante 1: Firmware bauen, flashen, +glücklich sein. |Warning| **Achtung: Das Flag wird erst gelöscht, nachdem +die Telnet-Sitzung wieder beendet wird.** + +.. _NachgelagertesAufräumenperProxy-SkripttransienteVariante: + +Nachgelagertes Aufräumen per Proxy-Skript (transiente Variante) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Wem das Firmware-Bauen zu umständlich ist, kann die Proxy-Methode auch +dynamisch zur Laufzeit einsetzen, indem folgende Sequenz in +``/var/flash/debug.cfg`` eingebaut wird: + +:: + + cat << EOF > /var/tmp/ar7login-proxy + #!/bin/sh + /var/tmp/ar7login-binary \$* + major=\$(grep tffs /proc/devices) + tffs_major=\${major%%tffs} + rm -f /var/flash/fw_attrib + mknod /var/flash/fw_attrib c \$tffs_major 87 + echo -n "" > /var/flash/fw_attrib + EOF + + chmod +x /var/tmp/ar7login-proxy + cp /sbin/ar7login /var/tmp/ar7login-binary + mount -o bind /var/tmp/ar7login-proxy /sbin/ar7login + +Wie man sieht, wird ``ar7login`` zunächst nach +``/var/tmp/ar7login-binary`` kopiert. Das dynamisch erzeugte Skript +``/var/tmp/ar7login-proxy`` wird ausführbar gemacht und überlagert durch +``mount - o bind`` die Datei ``/sbin/ar7login``, nur um als Proxy +wiederum auf das kopierte Binary zu verweisen und nach Ende der Sitzung +dann wieder das Telnet-Flag zu löschen. + +.. _AufräumendirektnachdemLoginFirmware-Variante: + +Aufräumen direkt nach dem Login (Firmware-Variante) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Die beiden Proxy-Varianten haben den Nachteil, während der Dauer der +Telnet-Sitzung auf deren Beendigung zu warten und erst anschließend das +Flag zu löschen. Wenn wir stattdessen unseren Aufräum-Code ins globale +Shell-Profil ``/etc/profile`` einbauen, wird er jeweils direkt nach dem +Login ausgeführt. Es gibt also keine signifikante Latenzzeit, in der die +Flags gesetzt sind, denn das Aufräumen erfolgt ja bereits zu Beginn der +Telnet-Sitzung. + +:: + + # ... normaler Inhalt von /etc/profile ... + + major=$(grep tffs /proc/devices) + tffs_major=${major%%tffs} + rm -f /var/flash/fw_attrib + mknod /var/flash/fw_attrib c $tffs_major 87 + echo -n "" > /var/flash/fw_attrib + +.. _AufräumendirektnachdemLogintransienteVariante: + +Aufräumen direkt nach dem Login (transiente Variante) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Ebenso wie bei der Proxy-Methode gilt auch hier: Das Profil kann auch +beim Booten aus ``/var/flash/debug.cfg`` heraus umgeschrieben werden, +indem man es per ``mount`` der Original-Datei überlagert: + +:: + + cp /etc/profile /var/tmp/profile + + cat << EOF >> /var/tmp/profile + major=\$(grep tffs /proc/devices) + tffs_major=\${major%%tffs} + rm -f /var/flash/fw_attrib + mknod /var/flash/fw_attrib c \$tffs_major 87 + echo -n "" > /var/flash/fw_attrib + EOF + + mount -o bind /var/tmp/profile /etc/profile + +Man beachte, daß dieses Mal ``cat`` keine Datei erzeugt, sondern seine +Ausgabe an die zuvor kopierte Originaldatei anhängt. Da wir auch nicht +irgendwelche komplizierten Proxy-Konstrukte haben, brauchen wir uns auch +nicht zu verrenken mit der Namensgebung der Shell-Profile. + +.. _FreetzPatch: + +Freetz Patch +~~~~~~~~~~~~ + +Mit einem `Patch <../../../patches/signed.html>`__ für +`Freetz <../../../freetz.html>`__ lässt sich der ganze obige Stress +vermeiden, und die vermaledeite Meldung ist weg. Da unterstreicht das +"Free" in "Freetz" doch gleich, was es heißt |:-)| + +.. _einfacheresLöschen: + +einfacheres Löschen +~~~~~~~~~~~~~~~~~~~ + +Man kann tffs-Dateien auch über /proc/tffs löschen. In diesem Fall ist +der Befehl: + +.. code:: bash + + echo clear_id 87 > /proc/tffs + +.. _SchlußwortundAusblick: + +Schlußwort und Ausblick +----------------------- + +Wozu die vielen Varianten, wenn es mit dem Patch doch so einfach geht? +Ich dachte mir, ich erkläre mal die unterschiedlichen Ansätze, wie man +beim FritzBox-Modding grundsätzlich vorgehen kann - von minimal-invasiv +aus der ``debug.cfg`` heraus über die Manipulation von Skripten in der +Firmware bis hin zum Patchen einer Binärdatei. Ich hoffe, meine +Anregungen helfen anderen Mitstreitern beim Entwickeln von Konzepten, um +die gute AVM-Firmware mit neuen Ideen noch ein bißchen besser, bequemer +oder einfach cooler zu machen - kurz: um zu erreichen, was auch AVM uns +nicht übel nehmen dürfte: optimale Ausnutzung der Hard- und Software, +die wir beim Hersteller oder einem seiner Vertriebspartner gekauft +haben. + +Was bleibt bzgl. dieses Themas noch offen? Nun, da sind immer noch die +digitalen Signaturen, mit denen die Firmware-Images versehen sind. Sie +sind an sich nichts Schlechtes, im Gegenteil. AVM, T-Com und 1&1 tun gut +daran, ihre jeweiligen Firmware-Versionen eindeutig als solche zu +kennzeichnen und weisen mit Recht bei fehlerhafter Verifikation der +Signaturen darauf hin, daß Support-Ansprüche für modifizierte Firmwares +nicht mehr bestehen. Was ist aber, falls eines Tages der Hersteller oder +einer seiner OEM-Partner beschließen sollten, die Boxen so zu +konfigurieren, daß nicht korrekt signierte Firmware-Versionen nicht mehr +zum Flashen angenommen würden? Das wäre eine Beschneidung der +Benutzerrechte, für die es keinen triftigen Grund gäbe. Deswegen habe +ich mir kürzlich die Signatur-Mechanismen angeschaut und auch hier +Mittel und Wege gefunden, sie zu entschärfen. Mehr dazu gibt es ein +anderes Mal. + +Weiterhin happy modding wünscht Euch + +`​Alexander Kriegisch +(kriegaex) <http://www.ip-phone-forum.de/member.php?u=117253>`__ + +—- + +Anmerkung: Ich habe eben in meiner neuen FBF 7170 (FW 29.4.32-7153) das +schreiben in ``/var/flash/fw_attrib`` versucht. Zunächst lies dies die +Meldung im Web-Interface jedoch vollkommen unbeeindruckt. Erst als ich +mit + +:: + + echo -n "\0\0\0\0\0\0" >/var/flash/fw_attrib + +mein "TELNET" in dem fw_attrib überschrieben habe, verschwand die +Meldung im Web-Interface! Kann es sein, daß es notwendig ist die +betreffenden Daten zu überschreiben (mit binär 0 = Stringende)? + +Harald Becker (ralda) + +.. |:-)| image:: ../../../../chrome/wikiextras-icons-16/smiley.png +.. |;-)| image:: ../../../../chrome/wikiextras-icons-16/smiley-wink.png +.. |Warning| image:: ../../../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/help/howtos/development/menuconfig.rst b/wiki/help/howtos/development/menuconfig.rst new file mode 100644 index 0000000..cabd701 --- /dev/null +++ b/wiki/help/howtos/development/menuconfig.rst @@ -0,0 +1,362 @@ +.. _Menükonfigurationpflegen: + +Menükonfiguration pflegen +========================= + +Einer der ersten Schritte jedes **Freetz**-Benutzers ist die Auswahl der +gewünschten Firmware (FW)-Konfiguration mit ``make menuconfig``. Die +Menükonfiguration (MK) ist mithin die primäre Benutzerschnittstelle +neben der Linux-Shell für alle Nicht-Entwickler. Fehler und +Unstimmigkeiten, welche dort auftauchen, können bestenfalls zu +Verwirrung und Fragen im `​IPPF +Freetz-Forum <http://www.ip-phone-forum.de/forumdisplay.php?f=525>`__ +führen, aber auch zu seltsamen Warnungen auf der Konsole nach dem +Speichern der Konfiguration, zu fehlenden oder überflüssigen +FW-Bestandteilen oder schlimmstenfalls zu Freetz-Boxen, die nicht mehr +booten oder in Reboot-Schleifen festhängen. In jedem Fall entsteht +Support-Aufwand. Am billigsten sind, gemäß dem agilen Mantra "fail +early", jedoch Fehler, die frühestmöglich bemerkt werden oder am besten +gar nicht erst entstehen. Die Pflege der Menükonfiguration ist ein +wichtiger Qualitäts-Baustein unseres Projektes. + +.. _Einstieg: + +Einstieg +-------- + +Pflichtlektüre jedes Entwicklers, bevor er zum ersten Mal die MK anpaßt, +sollte die `Beschreibung der +Kconfig-Sprache </browser/trunk/tools/config/kconfig-language.txt>`__\ `​ </export/HEAD/trunk/tools/config/kconfig-language.txt>`__ +sein. Dort werden Syntax-Features und deren Gebrauch grundlegend +erklärt. Die Beschreibung entstammt der Dokumentation des +`​Linux-Kernels <http://kernel.org>`__, welchem wir (und auch andere +quelloffene Projekte) diese Art der MK und die dazu notwendigen +Werkzeuge entlehnt haben. + +Die wichtigste Dateien und *Make*-Targets, mit welchen wir es im +Folgenden zu tun haben werden, sind + +- Config.in + + - enthält das Hauptgerüst der MK + - ist in der *Kconfig*-Sprache geschrieben + - inkludiert hierarchisch (Baumstruktur) mittels + ``source``-Direktive weitere MK-Definitionen, welche ebenfalls + Namen wie *Config.in, externals.in* o.ä. tragen + - wird zukünftig (Trunk-Merge steht kurz bevor) als Ganzes, also mit + allen Includes, gepuffert in *Config.in.cache*, um Ladezeiten beim + Aufruf von ``make menuconfig`` zu verringern. + +- *.config* + + - enthält die vom Benutzer erstellte FW-Konfiguration als + maßgebliche Vorausstzung für folgende Builds + - ist als Kopie in der FW unter */etc/.config* enthalten, sofern das + nicht in der MK vor dem Build deselektiert wird + - ist eines der primären Debugging-Werkzeuge, wenn Benutzer Fehler + mit einer bestimmten Konfiguration melden + - kann, sollte aber nicht manuell editiert werden + +- *tools/config/mconf* + + - ist das Binary, welches von ``make menuconfig`` aufgerufen wird, + um die MK anzuzeigen und zu speichern + - wird mittels ``make tools`` bzw. ``make kconfig`` automatisch + gebaut, sobald es benötigt wird + - hat auch ein *Make*-Target ``menuconfig-single``, welches die KM + als Baumstruktur ohne Unterseiten darstellt (manchmal nett, wenn + man die Gesamtstruktur sehen bzw. bearbeiten möchte) + +- *tools/config/conf* + + - ist die Kommandozeilenversion von *mconf* + - hat mehr Features + - wird ebenfalls mittels ``make tools`` bzw. ``make kconfig`` + automatisch gebaut, sobald es benötigt wird + - wird von den *Make*-Targets ``config``, ``oldconfig``, + ``oldnoconfig``, ``defconfig``, ``allnoconfig``, ``allyesconfig``, + ``randconfig``, ``listnewconfig``, ``config-clean-deps`` und + ``config-clean-deps-keep-busybox`` benutzt + - zeigt folgende Hilfe an, wenn ohne Parameter aufgerufen (klappt + Stand 15.10.2011 im Trunk, nicht in älteren Stable-Versionen, also + frühestens ab *Freetz 1.2*): + + .. code:: bash + + Usage: tools/config/conf [option] <kconfig-file> + [option] is _one_ of the following: + --listnewconfig List new options + --oldaskconfig Start a new configuration using a line-oriented program + --oldconfig Update a configuration using a provided .config as base + --silentoldconfig Same as oldconfig, but quietly, additionally update deps + --oldnoconfig Same as silentoldconfig but set new symbols to no + --defconfig <file> New config with default defined in <file> + --savedefconfig <file> Save the minimal current configuration to <file> + --allnoconfig New config where all options are answered with no + --allyesconfig New config where all options are answered with yes + --allmodconfig New config where all options are answered with mod + --alldefconfig New config with all symbols set to default + --randconfig New config with random answer to all options + +.. _Beispiel-KonfigurationfüreinneuesPaket: + +Beispiel-Konfiguration für ein neues Paket +------------------------------------------ + +TODO + +.. _Menuconfig-Warnungenbeheben: + +Menuconfig-Warnungen beheben +---------------------------- + +TODO + +Siehe vorerst `#1532 </ticket/1532>`__, insbes. Kommentare Nr. + +- `10 </ticket/1532#comment:10>`__\ **: Erklärung einer Warnung mit + Vorschlägen zur Problembehebung** + + Diese *unmet dependencies* behebt am besten jeder so, wie der + gerade drauf stößt. Es sind ja nur Warnings, aber die sind auch + wichtig, damit wir Unsauberkeiten aus den *Config.in* heraus + bekommen. Das ist also gut für die Projekthygiene. Ich gebe mal + ein Beispiel: + + .. code:: bash + + warning: (FREETZ_PACKAGE_AUTOFS_NFS && FREETZ_PACKAGE_NFSROOT) + selects FREETZ_MODULE_nfs which has unmet direct dependencies + (FREETZ_KERNEL_VERSION_2_6_13_1 || FREETZ_KERNEL_VERSION_2_6_28 || + FREETZ_KERNEL_VERSION_2_6_32) + + Aha, hier hat also jemand (ich) NFS-Root ausgewählt. Klar, daß + dazu auch das NFS-Kernelmodul ausgewählt werden muß. Jetzt hat + dieser Jemand aber bspw. eine 7270_v1 mit Kernel 2.6.19.2. Das + Problem liegt auf der Hand: Entweder sollte beim NFS-Modul dieser + Kernel mit in die Dependencies-Liste, oder für diesen Kernel + sollten alle NFS-relevanten Sachen deaktiviert werden. Alles + andere ist ein Widerspruch, und der wird moniert von *Kconfig*. + Was in diesem Fall sachlich zutreffend ist, weiß ich momentan + nicht, dafür war ich zu lange zu weit weg von der Entwicklung. + +- `24 </ticket/1532#comment:24>`__\ **: Liste aktueller Warnungen mit + Erläuterungen zu Ursachen und möglichen Lösungen** +- `31 </ticket/1532#comment:31>`__\ **: konkretes Beispiel einer von + Alexander Kriegisch eingecheckten Problembehebung** + + Ich versuche es einfach statt in Prosa mal schematisch: |:-)| + + :: + + FREETZ_PACKAGE_DAVFS2 + select FREETZ_REMOVE_WEBDAV if FREETZ_HAS_AVM_WEBDAV + + FREETZ_REMOVE_WEBDAV + depends on FREETZ_HAS_AVM_WEBDAV + + FREETZ_HAS_AVM_WEBDAV + depends on FREETZ_TYPE_FON_WLAN_7240 || ... + + Das sieht mir sauber genug aus, obwohl das "if + FREETZ_HAS_AVM_WEBDAV" - da gebe ich Dir recht - in Deinem Sinne + doppelt ist. Aber es sagt dafür genauer, was Du wirklich tun + willst (man kann die Konfigurationsanweisung diesmal wirklich wie + Prosa lesen): Wähle den Remove-Patch aus, falls es überhaupt etwas + zu entfernen gibt. Ich denke, das macht es hinreichend klar und + dokumentiert nochmals, was gewollt ist. Zudem vermeidet es die + Warnung nach dem Speichern der Konfiguration. Ohne das *If* würde + die Warnung erscheinen. + +- `54 </ticket/1532#comment:54>`__\ **: verallgemeintertes "Kochrezept" + zur Problembehebung bei Remove-Patches** + + Ich weise nochmals auf meinen Kommentar #31 hin, aus dem man im + Grunde sehr schön ablesen kann, wie einfach, elegant und lesbar + man viele Situationen beheben kann: + + :: + + FREETZ_PACKAGE_FOO + select FREETZ_REMOVE_MY_FEATURE if FREETZ_HAS_AVM_MY_FEATURE + + FREETZ_REMOVE_MY_FEATURE + depends on FREETZ_HAS_AVM_MY_FEATURE + + FREETZ_HAS_AVM_MY_FEATURE + depends on FREETZ_TYPE_A || FREETZ_TYPE_B || ... + + **Kochrezept für Remove-Patches (RP):** + + - Automatische RP-Auswahl absichern durch + ``if FREETZ_HAS_AVM_MY_FEATURE`` + - RP-Sichtbarkeit abhängig machen durch + ``depends on FREETZ_HAS_AVM_MY_FEATURE`` + - Durch RP entfernbares Feature abhängig machen von Hardware oder + Firmware usw. durch ``depends on FREETZ_TYPE_A`` + +- `55 </ticket/1532#comment:55>`__\ **: weitere Erläuterungen zur + Umsetzung des Kochrezepts** + + Replying to oliver: + + Wo ist der Sinn darin eine dependency herauszunehmen, die (bis + auf wenige Fälle) richtig ist? + + Jetzt habe ich mir den ersten + `Patch </attachment/ticket/1532/0001-patches-Drop-false-depends-on-FREETZ_HAS_USB_HOST.patch>`__ + doch schnell mal angeschaut. Es ist weder korrekt, sie so drin zu + lassen, wenn sie auch nur in wenigen Fällen falsch ist, noch, sie + ersatzlos zu streichen, wenn unsinnige Optionen dafür in neuen, + falschen Fällen angezeigt werden. Was hingegen Sinn (und etwas + Mühe) machen würde, wäre, mein Kochrezept anzuwenden und neue + Variablen FREETZ_HAS_AVM_AURA_USB, FREETZ_HAS_AVM_PRINTSERV und + FREETZ_HAS_AVM_RUNCLOCK anzulegen. Die könnte FREETZ_HAS_USB_HOST + ja von mir aus in den Fällen, wo es keine gegenteiligen + Erkenntnisse gibt, automatisch auswählen. Sobald aber auch nur + eine einzige Ausnahme bekannt ist, ist eine Box-Liste beim + jeweiligen FREETZ_HAS_AVM_\* zu hinterlegen. Die Remove-Patches + sollten immer von FREETZ_HAS_AVM_\* abhängen, nie von einem + billigen Ersatz der nur *fast* immer funktioniert. + + Das ist keine Kritik i.S.v. "das hättest Du aber vorher wissen + sollen", denn die Erkenntnisse sind ja relativ neu und m.E. ein + Segen des neuen *Kconfig*. Ich will durch meine Hinweise den + anderen Entwicklern Hilfe zur Selbsthilfe geben. + + Ergänzung: Es ist auch sowas vorstellbar: + + :: + + FREETZ_HAS_AVM_MY_FEATURE + depends on FREETZ_HAS_USB_HOST && !(FREETZ_TYPE_A || FREETZ_TYPE_B) + + So hält man die Boxen-Liste klein, indem man einfach klar sagt, + was Sache ist. Es ist wieder fast wie Prosa lesbar: "Zeig das + AVM-Feature X an, wenn die Box einen USB-Host hat, außer in den + Ausnahmefällen A und B." + +.. _ErklärungundAnwendungdererweitertenMK-Targets: + +Erklärung und Anwendung der erweiterten MK-Targets +-------------------------------------------------- + +TODO + +.. _Syntax-FehlerinMK-Dateienfinden: + +Syntax-Fehler in MK-Dateien finden +---------------------------------- + +Wir sehen einen Fehler wie diesen: + +.. code:: bash + + $ make menuconfig + + Config.in.cache:4951: syntax error + Config.in.cache:4950: unknown option "xconfig" + Config.in.cache:4951:warning: prompt redefined + make: *** [menuconfig] Error 1 + +Gemäß Beschreibung in `r8466 </changeset/8466>`__ gibt es zwei Wege, bei +einem von ``make menuconfig`` angezeigten Syntax-Fehler schnell die +fehlerhafte Stelle zu finden: + +#. In ``Config.cache.in`` direkt zu der Fehlerzeile 4950 springen, die + auf der Konsole angezeigt wurde. Von dort aus rückwärts(!) suchen + nach ``INCLUDE_BEGIN`` - voilà, dort steht der Dateiname, wo die + fehlerhafte MK zu finden ist. +#. ``make menuconfig-nocache`` aufrufen und die problematische Datei + (*make/davfs2/Config.in*) direkt von der Konsole ablesen: + + .. code:: bash + + $ make menuconfig-nocache + + make/davfs2/Config.in:2: syntax error + make/Config.in:84: missing end statement for this entry + Config.in:851: missing end statement for this entry + make/davfs2/Config.in:1: invalid statement + make/davfs2/Config.in:2: unexpected option "bool" + make/davfs2/Config.in:3: unexpected option "select" + make/davfs2/Config.in:4: unexpected option "select" + make/davfs2/Config.in:5: unexpected option "select" + make/davfs2/Config.in:6: unexpected option "select" + make/davfs2/Config.in:7: unexpected option "select" + make/davfs2/Config.in:8: unexpected option "select" + make/davfs2/Config.in:9: unexpected option "default" + make/davfs2/Config.in:10: invalid statement + make/davfs2/Config.in:11: unknown statement "davfs" + make/davfs2/Config.in:12: unknown statement "WebDAV" + make/davfs2/Config.in:13: unknown statement "HTTP" + make/davfs2/Config.in:14: unknown statement "resources" + make/Config.in:199: unexpected end statement + Config.in:862: unexpected end statement + make: *** [menuconfig-nocache] Error 1 + +.. _Syntax-HervorhebungfürMK-Dateien: + +Syntax-Hervorhebung für MK-Dateien +---------------------------------- + +Gemäß `Patch +1 </browser/trunk/tools/developer/kconfig.pygments.patch>`__\ `​ </export/HEAD/trunk/tools/developer/kconfig.pygments.patch>`__ +habe ich (Alexander Kriegisch, kriegaex) zunächst einen sog. +`​Lexer <http://de.wikipedia.org/wiki/Lexikalischer_Scanner>`__ für +`​Pygments <http://pygments.org>`__ gebaut (siehe auch +`​Pygments-Doku <http://pygments.org/docs/lexerdevelopment/>`__), +welcher es ermöglicht, MK-Dateien mit Syntax-Hervorhebung zu versehen. +*Pygments* wird von `​Trac <http://trac.edgewall.org>`__, also dem +System, auf welchem unser Wiki und der Repository Browser basieren, +automatisch benutzt, sofern es installiert ist. + +*Trac* erkennt den MIME-Typ einer Datei aber nur aufgrund der Endung +(also z.B. *.py, .sh, .pl, .c, .h*) oder aufgrund Infos wie +`​Shebang <http://de.wikipedia.org/wiki/Shebang>`__ oder +*Vi-/Emacs*-Header, und das ist ein Problem bei MK-Dateien, da es keine +standardisierte Dateiendung im Allgemeinen und auch nicht bei uns im +Projekt gibt. Unsere einzige Chance ist es, den Wildwuchs an Dateinamen +(z.B. *Config.in, external.in, standard-modules.in, external.in.libs*) +so im Zaum zu halten, daß man mit `​Regex +Matching <http://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck>`__ die +entsprechenden Dateien identifizieren kann. Das ist Stand heute möglich, +allerdings beherrscht *Trac* von Haus aus kein Regex Matching, weswegen +`Patch +2 </browser/trunk/tools/developer/mime_map_patterns.trac.patch>`__\ `​ </export/HEAD/trunk/tools/developer/mime_map_patterns.trac.patch>`__ +notwendig wird. *(Anm.: Bevor es Patch 2 gab, war es notwendig, in SVN +die Eigenschaft ``svn:mime-type`` für jede MK-Datei manuell zu setzen, +was inzwischen zum Glück obsolet ist, aber auch nicht schaden würde.)* + +Auf unserem Webserver sind beide Patches nebst der notwendigen +Konfiguration in ``trac.ini`` aktiv, so daß MK-Dateien aus dem +SVN-Repository automatisch mit Syntax-Hervorhebung versehen werden. + +Noch ein kleiner Tip: Wie man Syntax Highlighting im *Trac*-Wiki direkt +in Code-Blocks einsetzt, sieht man hier direkt im Artikel für MK- und +Shell-Code: Entweder man erwähnt am Anfang des Code-Blocks mit führendem +Shebang den MIME-Typ (``text/x-kconfig``, übrigens selbst erfunden und +kein allgemeiner Standard) oder das in ``trac.ini`` konfigurierte +Schlüsselwort ``kconfig``, also in etwa so: + +.. code:: bash + + {{{ + #!text/x-kconfig + ... MK-Code ... + }}} + +Oder so: + +.. code:: bash + + {{{ + #!kconfig + ... MK-Code ... + }}} + +- Tags +- `development </tags/development>`__ + +.. |:-)| image:: ../../../../chrome/wikiextras-icons-16/smiley.png + diff --git a/wiki/help/howtos/development/package_creation.rst b/wiki/help/howtos/development/package_creation.rst new file mode 100644 index 0000000..0751090 --- /dev/null +++ b/wiki/help/howtos/development/package_creation.rst @@ -0,0 +1,141 @@ +**Diese Beschreibung ist höchstwahrscheinlich nicht das Gesuchte, +Verwendung auf eigene Gefahr! +**\ `Hier gibt es eine Beschreibung zur Erstellung eines Pakets für ein +fertiges +Programm <developer_information/package_development_start.html>`__ + +.. _WiebaueicheineigenesPaketfürFreetz: + +Wie baue ich ein eigenes Paket für Freetz? +========================================== + +Anmerkung: Dieser Beitrag Beitrag vermischt zwei verschiedenen +Fragestellungen: + +- Wie schreibe ich mein erstes Programm? +- Wie integriere ich ein vorhandenes Programm als Package in Freetz? + +Die zweite Frage wird schon an anderer Stelle behandelt. Wenn Interesse +an der ersten Frage besteht, sollte man das entsprechend aufteilen. +Normalerweise werden eher fertige Programme in Freetz integriert und +nicht welche, die komplett neu geschrieben werden. Als Grundlage für ein +komplexeres Programm ist möglicherweise `​GNU +Hello <http://ftp.gnu.org/gnu/hello/hello-2.3.tar.gz>`__ besser +geeignet, da hier auch mit automake eine cofigure-Datei erstellt wird. +(ralf) + +Da dies mein erster Wiki-Eintrag ist, möchte ich Euch um Nachsicht +bitten, wenn nicht gleich alles so aussieht wie es sein sollte. + +Um für Freetz ein Paket selbst zu erstellen, musste ich erst einmal ein +geeignetes "Projekt" finden, für das es auch Sourcecode gibt, der sich +für die Fritzbox überhaupt kompilieren lässt. + +Bei der Suche stieß ich auf den `​HTTP Tunnel +Server <http://www.nocrew.org/software/httptunnel.html>`__. Mit +*httptunnel* kann man TCP-Verbindungen über das http-Protokoll tunneln +und damit von überall sogar durch sehr restriktive Proxies Zugriff zu +seiner Fritzbox bekommen. Näheres dazu ist +`​hier <http://linuxwiki.de/HttpTunnel>`__ nachzulesen. + +Die Evolution meiner Erfahrungen, bereichert um zahlreiche hilfreiche +Tipps und Hinweise der Linux-Gurus und Entwickler hier im Forum könnt +Ihr in `​diesem +Thread <http://www.ip-phone-forum.de/showthread.php?t=167980>`__ +nachlesen, wo auch der richtige Platz für weitere Fragen und Diskussion +ist. + +Folgende Umgebung habe ich zum Bau des Pakets verwendet: + +- Fritzbox 7170 mit Freetz-1.0 +- StinkyLinux 1.06 in einer VM auf einem Macbook + +Es gibt aber auch noch andere Umgebungen, um FW bzw. Freetz-Pakete zu +bauen, welche `hier <../common/install.html>`__ nachzulesen sind. + +In den `HowTos <../../howtos.html>`__ gibt es einige wichtige +Informationen darüber, was man mit *Make*-Targets wie +`menuconfig <../common/install/menuconfig.html>`__, *toolchain*, +*precompiled*, *recover* usw. erreichen kann beim Bau einer +`Freetz <../../../freetz.html>`__-Firmware. Die Infos dort sind durchaus +lesenswert, wenn man besser verstehen will, was genau beim Bau einer FW +bzw. eines neuen Pakets für Freetz abläuft, wenngleich ich diese Infos +auch erst hinterher gelesen habe (mea culpa). + +Eine sehr gute Anleitung ist +`hier <developer_information/package_development_start.html>`__ zu +finden. + +Es gibt ein kleines Demo Package (demopackagea). Weiteres dazu hier: + +`DemoPackageA <../../../packages/DemoPackageA.html>`__ Ein Demo-Package +"Hello World" —- `​Forum-Beitrag incl. +Download <http://www.ip-phone-forum.de/showthread.php?t=177052>`__ + +Kurz-Anleitung um ein bestehendes Package anzupassen + +- Annahme es ist ein Build-System vorhanden. Dies kann das oben + genannte StinkyLinux, in dem Freetz ausgecheckt wurde, sein. Alle + hier genannten Verzeichnisse sind im Freetz-Ordner, dieser wird im + folgenden Kurz-Anleitung mit "/" Symbolisiert. +- Es gibt ein kompaktes Package mit dem Namen: "Empty". Hierbei handelt + es sich um ein konkretes Package, das man als Vorlage nutzen kann. + Dies einfach mal ansehen. ("freetz.ordner"/make/empty/\* ). +- Einen kurzen prägnanten Namen für das eigene Package ausdenken. +- In dem Verzeichnis "make" einen Ordner erstellen. Dieser Ordner + sollte so heißen wie das Package, dieser wird im folgenden + Package-Ordner genannt. +- Von dem "Empty-Package" die Datei "empty.mk" in den Package-Ordner + übernehmen (und natürlich umbenennen. Der Name dieser Datei bestimmt + den Namen des Packages). +- Die Datei "package.mk" muss auch Inhaltlich angepasst werden. (In der + Datei sollte kein "empty" (CASE-LESS) mehr stehen). Die Version + sollte man auf "0.0.01" ändern. Der SITE-Eintrag ist nicht relevant, + solange sich die Datei im Verzeichnis /dl befindet. Wenn man später + die Datei zum `Download <../../../Download.html>`__ anbietet, muß + hier der entsprechende Wert eingetragen werden. +- Die Dateien "Config.in" und "Makefile.in" anpassen, aber nicht + umbenennen. +- Damit das Package über "make menuconfig" gefunden werden kann muss in + der Datei /make/Config.in das eigene Package eingetragen werden (Wie + z.B. das Package empty eingetragen ist). Für ein neues Package ist + erstmal der Bereich "Testing" angemessen. +- make menuconfig aufrufen und das Package auswählen. +- Jetzt kennt Freetz das Package, es muss aber noch erstellt werden. + Dieses Mini-Package besteht aus zwei Dateien (pluginName.c und + Makefile) +- Erstelle einen Ordner (egal wo wird gleich wieder gelöscht) der Name + des Orders muss "pluginName-Version" lauten. (Version=0.0.01) +- Erstelle in diesem Ordner die Datei "pluginName.c" mit dem Inhalt: + + :: + + /* "plugin_name".c Version:0.0.01 */ + #include <stdio.h> + + main(){ + printf("Hello World \n"); + } + +- Erstelle in diesem Ordner die Date Makefile mit dem Inhalt: + + .. code:: bash + + BINARY=plugin_name + OBJS=plugin_name.o + + all: $(BINARY) + + $(BINARY): $(OBJS) + + clean: + $(RM) $(BINARY) $(OBJS) + +- wechsle eine Verzeichnisebende runter +- erstelle ein tgz Archiv (der Ordner kann danach gelöscht werden)(tar + cfz plugin-0.0.01.tgz plugin-0.0.01) +- kopiere das tgz Archiv in das Verzeichnis /dl +- Jetzt kann das Package mittels make Packagename-precompiled das erste + Mal erzeugt werden (aus: "/") + +to be continued… diff --git a/wiki/help/howtos/development/release_management.rst b/wiki/help/howtos/development/release_management.rst new file mode 100644 index 0000000..dd06bde --- /dev/null +++ b/wiki/help/howtos/development/release_management.rst @@ -0,0 +1,102 @@ +.. _ReleaseManagement: + +Release Management +================== + +**Warning Work In Progress Warning** + +.. _SubversionRepository: + +Subversion Repository +--------------------- + +The subversion repository of Freetz follows the recommended repository +layout by the subversion maintainers. [1] + +.. code:: bash + + / + trunk + branches + tags + +The main development is done in the trunk. A branch could be created if +a developer wants to work on a topic without the guaranteed stability of +his checkins all the time. Also a branch is forked when a new stable +release is planned. This branch holds the future major version (e.g. +1.2). + +Mainly bugfixes should be commited to this branch. But security version +bumps are allowed, too. + +Later on the Releases 1.2.1, 1.2.2 and so on should be tagged from this +branch. + +Tagged versions should never be modified afterwards even if they seem +nothing else like a branch from the repository view. + +.. _Checklists: + +Checklists +---------- + +In the following sections you can find the TODOs before branching and +tagging. + +.. _Creatinganewstablebranch: + +Creating a new stable branch +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- Before creating a new stable branch: + + - Update CHANGELOG file + - Merge changes from last stable-branch (if not done already) + - Rename devel-section to new stable version + +- Copy branch +- After creating the new branch: + + - Update version in .version file + - Update Config.in (set VERBOSITY_LEVEL=0 and SUBVERSION_STRING=n) + - Remove labor firmwares (Config.in and FIRMWARES file) + - Add new devel-section to CHANGELOG file in trunk + +.. _Tagginganewrelease: + +Tagging a new release +~~~~~~~~~~~~~~~~~~~~~ + +TODO + +.. _GIT: + +GIT +--- + +As the popularity of GIT is growing rapidly, we provide a GIT mirror on +`​github <https://github.com/>`__. At the moment only the trunk is +mirrored to github because of the different repository layout it's +difficult to sync all branches and tags. The mirror can be found +`​here <https://github.com/Freetz/freetz>`__. [2] + +.. _Downloads: + +Downloads +--------- + +TODO + +.. _References: + +References +---------- + +| `[1] </changeset/1>`__ `​Subversion Best + Practices <http://svn.apache.org/repos/asf/subversion/trunk/doc/user/svn-best-practices.html>`__ +| `[2] </changeset/2>`__ `​Freetz Github + Mirror <https://github.com/Freetz/freetz>`__ + +- Tags +- `development </tags/development>`__ +- `howtos </tags/howtos>`__ diff --git a/wiki/help/howtos/development/repack_fw.rst b/wiki/help/howtos/development/repack_fw.rst new file mode 100644 index 0000000..0ed826c --- /dev/null +++ b/wiki/help/howtos/development/repack_fw.rst @@ -0,0 +1,204 @@ +.. _EntpackenundPackenvonFirmware-Images: + +Entpacken und Packen von Firmware-Images +======================================== + +Wenn man ein Firmware-Image entpacken, ändern und wieder packen möchte, +geht das wie folgt (nach Anleitung von `​Alexander +Kriegisch <http://www.ip-phone-forum.de/member.php?u=117253>`__ - in +`​diesem +Forums-Thread <http://www.ip-phone-forum.de/showthread.php?t=175974>`__: + +.. _ToolsundSyntax: + +Tools und Syntax +---------------- + +Am einfachsten ist es, Freetz als Infrastruktur zu benutzen, und zwar +das Skript ``fwmod`` aus dem Freetz-Hauptverzeichnis. Wenn man es ohne +Parameter aufruft, verrät es wie es benutzt werden möchte: + +.. code:: bash + + $ ./fwmod + + Usage: fwmod [-u|-m|-p|-a] [-i <cfg>] [-d <dir>] <orig_fw> [<tk_fw> [<aux_fw>]] + actions + -u unpack firmware image + -m modify previously unpacked image + -p pack firmware image + -a all: unpack, modify and pack firmware image (-u -m -p, default) + special actions + -n firmware-nocompile: do not install kernel and busybox + -f force pack even if image is too big for flash (AVM SDK) + -z zip file system into archive for USB/NFS root + -c <dir> copy file system to target directory for NFS/USB root (implies -z) + input/output + -i <cfg> input file for configuration data (default: .config) + -d <dir> build directory (default: <orig_firmware>.mod) + <orig_fw> original firmware name + <tk_fw> 2nd firmware name (e.g. for merging in web UI) + <aux_fw> 3rd firmware name (e.g. to borrow missing files) + +Man braucht also einmal den Aufruf mit ``-u`` zum Entpacken, dann nach +der Modifikation den mit ``-p`` zum erneuten Packen. + +.. _Vorgehensweise: + +Vorgehensweise +-------------- + +Im Folgenden wird davon ausgegangen, dass sich der Benutzer im +Hauptverzeichnis des frisch ausgepackten oder ausgecheckten Freetz +befindet und das zu modifizierende Firmware-Image bereits in dieses +Verzeichnis heruntergeladen hat. Dann sind folgende Schritte +auszuführen: + +#. Zunächst muss man eine passende Konfigurationsdatei *.config* + erzeugen, damit beim Packen später das Skript *fwmod* die + erforderlichen Informationen findet. Dazu ruft man einmal *make + menuconfig* auf, wählt die richtige Hardware (z.B. 7170) aus und + verlässt die Konfiguration, wobei man die Frage nach dem Abspeichern + bejaht. +#. Bevor man *fwmod* erstmals aufrufen kann, müssen einige Werkzeuge + gebaut werden, die später indirekt aufgerufen werden, um die Firmware + zu entpacken und später wieder zusammenzubauen: *make tools*. Das + kann ein Weilchen (einige Minuten) dauern. Internet-Downloads via + *wget* müssen dazu funktionieren. +#. Jetzt entpackt man das von AVM heruntergeladene Firmware-Image in ein + Verzeichnis, das hier beispielhaft *unpacked_firmware* genannt wird: + + .. code:: bash + + ./fwmod -u -d unpacked_firmware FRITZ.Box_Fon_WLAN_7170.29.04.59.image + +#. Unter *unpacked_firmware/original/filesystem* modifiziert man dann + das Dateisystem der Firmware. +#. | Zum guten Schluss packt man dann wieder das Firmware-Image: + + .. code:: bash + + ./fwmod -p -d unpacked_firmware FRITZ.Box_Fon_WLAN_7170.29.04.59.image + +Das ist also der gleiche Aufruf wie vorher, nur mit ``-p`` statt ``-u``. +Den Namen des Original-Images muss man leider mit angeben, obwohl das +Image zum Packen nicht benötigt wird. Das ist eine kleine Schwäche des +Skripts ``fwmod``. + +6. Nach einer Weile steht am Ende der Skript-Ausgabe so etwas wie + + .. code:: bash + + creating filesystem image + merging kernel image + kernel image size: 6969088 (max: 7798784, free: 829696) + packing 7170_.de_20080923-200251.image + done. + + FINISHED + +**Anmerkungen zu den Freetz-Versionen bis einschließlich 1.1:** + +- Bei diesen Versionen muss den beiden ``fwmod``-Aufrufen folgender + fakeroot-Teil vorangestellt werden ``tools/build/bin/fakeroot --`` + (fwmod hat es erwartet in fakeroot-Umgebung aufgerufen zu werden und + hat sich selbst um diese noch nicht gekümmert) +- Bei Fehlermeldung + :literal:`fakeroot: preload library `libfakeroot.so' not found, aborting.` + hilft ein vorangestelltes LD_PATH_PRELOAD: + + .. code:: bash + + LD_PATH_PRELOAD=tools/build/lib/libfakeroot.so tools/build/bin/fakeroot -- ./fwmod ... + +.. _Verwendungvonfwmodimnofreetz-Modus: + +Verwendung von fwmod im "no freetz"-Modus +----------------------------------------- + +Seit trunk-\ `r13796 </changeset/13796>`__ ist es möglich fwmod im quasi +"no freetz"-Modus zu verwenden. Vom Ablauf her entspricht dieser Modus +dem Bauen einer freetz-modifizierten Firmware. In diesem Modus wird +jedoch keine einzige freetz-Änderung vorgenommen. Stattdessen wird ein +Hook aufgerufen, in dem man eigene Modifikationen der Firmware +implementieren und automatisiert ausführen lassen kann. Konkret gehe man +wie folgt vor: + +#. Man rufe ``make menuconfig`` auf, schalte den Experten-Modus ein + ("Level of User Competence" = Expert), wähle die richtige Hardware + (z.B. 7390) aus und aktiviere anschließend unter "Firmware packaging + (fwmod) options" die Option "Skip modifying unpacked firmware, adding + Freetz stuff". Der letzte Schritt entspricht dem Aktivieren des "no + freetz"-Modus. Seit Fritz!OS-6.5x empfiehlt es sich weiterhin die + Option "Sign image" (ebenfalls unter "Firmware packaging (fwmod) + options" zu finden) zu aktivieren (s. dazu den `​Signieren von + Firmware <http://trac.freetz.org/wiki/help/howtos/development/sign_image>`__-Artikel). +#. Die eigenen Mods der Firmware sind in dem Script + `​fwmod_custom <http://trac.freetz.org/browser/trunk/fwmod_custom>`__ + in der Funktion + `​all_no_freetz <http://trac.freetz.org/browser/trunk/fwmod_custom?rev=13796#L14>`__ + zu implementieren. Das entpackte Root-Dateisystem steht dabei unter + ``./filesystem`` zur Verfügung. fwmod_custom enthält bereits einige + auskommentierte Beispiele: `​restore telnet + support <http://trac.freetz.org/browser/trunk/fwmod_custom?rev=13796#L17>`__, + `​restore debug.cfg + support <http://trac.freetz.org/browser/trunk/fwmod_custom?rev=13796#L25>`__. +#. Anschließend rufe man ``make`` auf. Das entpackte, + fwmod_custom-modifizierte, wieder zusammengepackte und ggf. signierte + Image ist unter ``images/`` zu finden. + + .. code:: bash + + STEP 1: UNPACK + unpacking firmware image + removing NMI vector from SquashFS + NMI vector v1 found at offset 0xBE0000, removing it ... done. + splitting kernel image + unpacking filesystem image + Reading a different endian SQUASHFS filesystem on build/original/kernel/kernelsquashfs.raw + Filesystem on build/original/kernel/kernelsquashfs.raw is lzma compressed (3:76) + Parallel unsquashfs: Using 1 processor + 6112 inodes (6522 blocks) to write + created 5328 files + created 373 directories + created 697 symlinks + created 87 devices + created 0 fifos + unpacking AVM plugins + tam image + webcm_interpreter image + wlan image + unpacking var.tar + done. + + detected firmware 7390_de 84.06.80 rev43122 (07.02.2017 12:23:41) + + STEP 3: PACK/SIGN + WARNING: Modifications (STEP 2) and this step should never + ever be run with different configurations! + This can result in invalid images!!! + WARNING: firmware does not seem to be modified by the script + invoking custom script + restoring support for /var/flash/debug.cfg + patching ./filesystem/etc/init.d/rc.tail.sh + checking for left over Subversion directories + packing var.tar + Image signing files found, checking their consistency + Copying /home/gene/.freetz.image_signing.asc to /etc/avm_firmware_public_key9 + creating filesystem image + SquashFS block size: 64 kB (65536 bytes) + merging kernel image + kernel image size: 14.6 MB, max 14.9 MB, free 0.3 MB (269568 bytes) + WARNING: Not enough free flash space for answering machine! + adding checksum to kernel.image + packing images/7390_06.80.de_20170220-222457.image + image file size: 16.8 MB + signing images/7390_06.80.de_20170220-222457.image + signed image file size: 16.8 MB + done. + + FINISHED + +- Tags +- `firmware </tags/firmware>`__ +- `howtos </tags/howtos>`__ diff --git a/wiki/help/howtos/development/save_mtd_1.rst b/wiki/help/howtos/development/save_mtd_1.rst new file mode 100644 index 0000000..9abd252 --- /dev/null +++ b/wiki/help/howtos/development/save_mtd_1.rst @@ -0,0 +1,480 @@ +.. _Flash-PartitionenimlaufendenBetriebsichern: + +Flash-Partitionen im laufenden Betrieb sichern +============================================== + +Dieser Artikel baut auf dem Artikel +`Flash-Partitionierung <flash.html>`__ auf. Ihn vorher zu lesen, schadet +also nicht. + +Die überarbeitete Version des Artikels füllt einige Lücken bzgl. der +Frage nach der Numerierung von Devices. Dafür gebührt unser Dank +`​Oliver +(olistudent) <http://www.ip-phone-forum.de/member.php?u=58639>`__. + +Wie man Partitionen direkt über den Urlader/Bootloader sichert, findet +sich weiter unten. + +.. _Motivation: + +Motivation +---------- + +Ich habe noch nie mit dem `ADAM2 <adam2.html>`__-Bootloader via FTP +gearbeitet und werde das auch vermutlich erst dann tun, wenn es +notwendig ist oder höchstens mal, um vorher zu üben. Um aber für den +Notfall gerüstet zu sein, wollte ich in der Lage sein, nicht nur Backups +von Kernel und Dateisystem zu ziehen, sondern auch eine Sicherungskopie +vom Bootloader selbst machen können - alles idealerweise, ohne ADAM2 +selbst zu benutzen, also einfach im laufenden Betrieb über +Shell-Skripten. Dieser Artikel beschreibt, wie das geht. + +.. _Voraussetzungen: + +Voraussetzungen +--------------- + +Ich habe eine FritzBox Fon WLAN 7170, darf mich also zu den gut +ausgestatteten AVM-Kunden zählen, weil die 7170 momentan das Modell mit +dem größten Flash-Speicher und den umfangreichsten +Anschlussmöglichkeiten ist. Ich schreibe das nicht, um Werbung zu +machen, sondern um klar zu machen, dass das Folgende nicht 1:1 für alle +anderen Boxen gelten muss und dies vermutlich auch nicht tut. +Insbesondere Zahlenwerte sind auf die Verhältnisse der anderen Boxen +anzupassen. + +Die Box hat folgende Merkmale: + +:: + + { + echo Kernel: $(uname -a) + echo Firmware: $CONFIG_VERSION_MAJOR.$CONFIG_VERSION $CONFIG_SUBVERSION + echo Flash-Partitionierung: + cat /proc/sys/urlader/environment | grep mtd + } + + # Kernel: Linux fritz.box 2.6.13.1-ohio #1 Sat Jan 27 12:00:36 CET 2007 mips unknown + # Firmware: 29.04.29 ds-0.2.9 --> _26-13 + # Flash-Partitionierung: + # mtd0 0x90000000,0x90000000 --> Hidden Root, 0 KB + # mtd1 0x90010000,0x90780000 --> Kernel + Filesystem, 7.616 KB + # mtd2 0x90000000,0x90010000 --> ADAM2 Bootloader, 64 KB + # mtd3 0x90780000,0x907C0000 --> TFFS für Konfig-Daten, 256 KB + # mtd4 0x907C0000,0x90800000 --> Kopie TFFS (Double Buffering), 256 KB + +Die Anmerkungen hinter den Pfeilen wurden manuell eingefügt. + +.. _Lösungsweg: + +Lösungsweg +---------- + +Wenn wir uns das Pseudo-Dateisystem ``/dev/`` anschauen, erkennen wir +schnell, dass es folgende Geräte (Devices) gibt, die offenbar mit +unserer Aufgabe im Zusammenhang stehen: + +- ``/dev/mtd0/`` bis ``/dev/mtd10`` +- ``/dev/mtdblock0`` bis ``/dev/mtdblock10`` + +Worin besteht nun der Unterschied zwischen diesen Geräten? Es scheint, +als seien sie alle doppelt vorhanden unter verschiedenen Namen. In +gewissem Sinne stimmt das auch, und weshalb das so ist, sehen wir hier: + +:: + + ls -l /dev/mtd* + + # crw-r----- 1 root root 90, 0 Jan 1 2000 /dev/mtd0 + # crw-r----- 1 root root 90, 1 Jan 1 2000 /dev/mtd1 + # ... + # brw-r----- 1 root root 31, 0 Jan 1 2000 /dev/mtdblock0 + # brw-r----- 1 root root 31, 1 Jan 1 2000 /dev/mtdblock1 + # ... + +Die jeweils ersten Buchstaben des File Mode bringen es an den Tag: Die +``mtd*`` sind zeichenorientierte Geräte (Character Devices, Kürzel "c"), +``mtdblock*`` sind blockorientierte Geräte (Block Devices, Kürzel "b"). +Man könnte also sagen, es gibt zwei unterschiedliche Sichten auf den +Flash-Speicher: Zum einen kann man ihn als kontinuierlichen Zeichenstrom +sehen, zum anderen als Gerät mit blockweisem Direktzugriff (wie eine +Festplatte). Genaueres gibt es in der +`​Wikipedia <http://de.wikipedia.org/wiki/Ger%C3%A4tedatei>`__. + +Für den Zweck unserer Sicherheitskopie ist es im Grunde herzlich egal, +wie diese zustande kommt (Zeichen für Zeichen oder blockweise), solange +sich am Ende nur eine komplette Datei pro Flash-Partition auf unserer +Festplatte befindet. Ich habe beide Varianten ausprobiert und bin bei +beiden auf noch ungeklärte Phänomene gestoßen, aber mit den Block +Devices funktionieren die Datensicherungen besser, wie wir sehen werden. + +Für die weiteren Erklärungen gehe ich davon aus, daß ein Mount Point +``/var/fritz`` existiert, der einen größeren Datenspeicher darstellt. +Bei mir ist das eine über *smbmount* angebundene Windows-Freigabe, es +könnten aber auch USB-Sticks oder -Festplatten in Frage kommen. Genügend +freien RAM-Speicher auf der Box vorausgesetzt, kann man die Kopien auch +irgendwo unterhalb von ``/var`` zwischenspeichern und via FTP oder SCP +abtransportieren. + +.. _KopienvonBlockDevicesmtdblock: + +Kopien von Block Devices (mtdblock*) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Ich hatte erwartet, mit folgendem Befehl den ADAM2-Bootloader, welcher +sich nach Konfiguration laut Urlader (s.o.) ja in Partition ``mtd2`` +befinden soll, sichern zu können: + +:: + + cat /dev/mtdblock2 > /var/fritz/adam2 + +Doch weit gefehlt, was finde ich auf meiner Festplatte? Eine Datei der +Größe 7.798.784 Bytes, das sind genau 7.616 KB und somit exakt die Größe +der eigentlich unter ``mtd1`` beheimateten Kombination aus Kernel und +direkt daran anschließendem Dateisystem. Das Ganze scheint mit der +Zählweise zusammenzuhängen, denn es ergibt sich folgendes Bild: + ++-----------------+-----------------+-----------------+-----------------+ +| Blockgerät | Partition | Größe | Beschreibung | ++-----------------+-----------------+-----------------+-----------------+ +| mtdblock0 | —- | —- | *Endlosschleife | +| | | | beim Auslesen* | ++-----------------+-----------------+-----------------+-----------------+ +| mtdblock1 | mtd0 | 6.966 KB | SquashFS-Filesy | +| | | | stem | +| | | | ohne Kernel | +| | | | (hinterer Teil | +| | | | von mtd1) | ++-----------------+-----------------+-----------------+-----------------+ +| mtdblock2 | mtd1 | 7.616 KB | Kernel + | +| | | | SquashFS-Filesy | +| | | | stem | ++-----------------+-----------------+-----------------+-----------------+ +| mtdblock3 | mtd2 | 64 KB | ADAM2 | +| | | | Bootloader | +| | | | ("Urlader") | ++-----------------+-----------------+-----------------+-----------------+ +| mtdblock4 | mtd3 | 256 KB | TFFS für | +| | | | Konfig-Daten | ++-----------------+-----------------+-----------------+-----------------+ +| mtdblock5 | mtd4 | 256 KB | Kopie TFFS | +| | | | (Double | +| | | | Buffering) | ++-----------------+-----------------+-----------------+-----------------+ +| mtdblock6 | (mtd5) | 1.664 KB | (Vorbereitet | +| | | | für) JFFS2 | ++-----------------+-----------------+-----------------+-----------------+ +| mtdblock7 | (mtd6) | 5.952 KB | (Vorbereitet | +| | | | für) Kernel | +| | | | ohne JFFS2 | ++-----------------+-----------------+-----------------+-----------------+ + +Die weiteren drei ``mtdblock``-Geräte ergeben Ausgaben der Länge null. + +Zusammenfassend kann man sagen: Will man eine Kopie der **Partition +``mtd[n]``** haben, muß man offenbar das **Blockgerät +``mtdblock[n+1]``** benutzen. + +Anmerkung von +`​maceis <http://www.ip-phone-forum.de/member.php?u=95502>`__ +(29.12.2011): + + *Diese Verschiebung kann ich bei meiner neuen 7270_v3 nicht + feststellen. ``cat /dev/mtdblock1`` ergibt bei mir eine Datei, die + aufs kB genau so groß ist, wie der Kernel. ``cat /dev/mtdblock2`` ist + 128 kB groß. Das deckt sich mit den Ausgaben von ``cat /proc/mtd`` + und ``cat /proc/partitions``. Der Platz für den Urlader ist also + offensichtlich größer geworden. (Warum?)* + +Antwort von `​Alexander Kriegisch +(kriegaex) <http://www.ip-phone-forum.de/member.php?u=117253>`__ +(06.01.2012): + + *Ich sehe die Verschiebung aktuell auch nicht mehr auf meinen beiden + Boxen. Das hängt wohl mit Firmware- bzw. Urladerversionen zusammen, + kann also nicht pauschal für alle Geräte gesagt werden. Der Artikel + ist ja auch schon ziemlich alt, und damals war es eben so. Zur Größe + des Urladers: Tja, auch hier ändern sich offenbar die Zeiten. Während + z.B. die 7170 und die 7270_v1 sowie alle älteren Modelle 64 kB + Urladergröße hatten, sind es bei der*\ `​7270_v2/3 128 + kB <http://www.wehavemorefun.de/fritzbox/index.php/7270#Environment>`__\ *. + Bei ganz neuen Boxen schließe ich auch 256 kB nicht aus, da müßte ich + mal nachforschen, ich habe nur die älteren Geräte.* + +.. _KopienvonCharacterDevicesmtd: + +Kopien von Character Devices (mtd*) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Jetzt wird es richtig verwirrend, denn bei den Zeichengeräten taucht +jede Partition zweimal hintereinander auf, allerdings nicht bis ganz zu +Ende, da es ja bei der laufenden Nummer 10 aufhört: + ++-----------------+-----------------+-----------------+-----------------+ +| Zeichengerät | Partition | Größe | Beschreibung | ++-----------------+-----------------+-----------------+-----------------+ +| mtd0/1 | —- | —- | *Endlosschleife | +| | | | beim Auslesen* | ++-----------------+-----------------+-----------------+-----------------+ +| mtd2/3 | mtd0 | 6.966 KB | SquashFS-Filesy | +| | | | stem | +| | | | ohne Kernel | +| | | | (hinterer Teil | +| | | | von mtd1) | ++-----------------+-----------------+-----------------+-----------------+ +| mtd4/5 | mtd1 | 7.616 KB | Kernel + | +| | | | SquashFS-Filesy | +| | | | stem | ++-----------------+-----------------+-----------------+-----------------+ +| mtd6/7 | mtd2 | 64 KB | ADAM2 | +| | | | Bootloader | +| | | | ("Urlader") | ++-----------------+-----------------+-----------------+-----------------+ +| mtd8/9 | mtd3 | 256 KB | TFFS für | +| | | | Konfig-Daten | ++-----------------+-----------------+-----------------+-----------------+ +| mtd10(/11) | mtd4 | 256 KB | Kopie TFFS | +| | | | (Double | +| | | | Buffering) | ++-----------------+-----------------+-----------------+-----------------+ +| (mtd12/13) | (mtd5) | 1.664 KB | (Vorbereitet | +| | | | für) JFFS2 | ++-----------------+-----------------+-----------------+-----------------+ +| (mtd14/15) | (mtd6) | 5.952 KB | (Vorbereitet | +| | | | für) Kernel | +| | | | ohne JFFS2 | ++-----------------+-----------------+-----------------+-----------------+ + +Die eingeklammerten Zeichengeräte in der ersten Spalte würde es geben, +wenn ``/sbin/makedevs`` sie beim Hochfahren anlegen würde. In +``/etc/device.table`` müßte dazu Folgendes geändert werden, um die +Devices bis ``mtd15`` zu erhalten: + +.. code:: bash + + # Aktuelle Einstellung bei AVM und in Freetz + /dev/mtd c 640 0 0 90 0 0 1 11 + + # Geänderte Einstellung (siehe letzte Spalte) + /dev/mtd c 640 0 0 90 0 0 1 16 + +.. + + *Zitat*\ `​Oliver + (olistudent) <http://www.ip-phone-forum.de/member.php?u=58639>`__\ *: + "In der original Firmware hört das auch bei 10 auf. Da hab ich das + halt so übernommen."* + +Verständlich, würde ich sagen. Es kann ja jeder für sich ändern, falls +er glaubt, die Geräte zu brauchen. + +Der Grund für die Doppelung ist übrigens, daß die Geräte mit den geraden +Nummern Lese-Schreib-Zugriff bieten, die mit den ungeraden +Nur-Lese-Zugriff. + +Hier lautet die Formel: Will man eine Kopie der **Partition ``mtd(n)``** +haben, benutzt man das **Zeichengerät ``mtd(2n+2)``** - oder wahlweise +``mtd(2n+3)``. + +.. _EingefährlicherTipohneGewähr: + +Ein (gefährlicher?) Tip, ohne Gewähr +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Im +`​OpenWRT-Forum <http://forum.openwrt.org/viewtopic.php?pid=18281#p18281>`__ +ist nachzulesen, daß man auf diese Weise den Bootloader im laufenden +Betrieb überschreiben könne *(Konjunktiv beachten, ich kenne keinen hier +im Forum, der es getestet hat):* + +:: + + # Annahme 1: neuer Bootloader liegt schon unter /var/adam2_new + # Annahme 2: /dev/mtdblock3 entspricht Bootloader-Partition mtd2 + + # So nicht: cp /var/adam2_new /dev/mtdblock3/ + cat /var/adam2_new > /dev/mtdblock3 + + reboot + +**Update (``cat`` statt ``cp``, s.o.):** Wie unter `ADAM2 +überschreiben <adam2.html>`__ nachzulesen, klappt das, wie mehrfach +bestätigt wurde und wie AVM auch vormacht in FW-Updates. + +Wer will es versuchen? Falls es schief geht und man den Bootloader +löscht statt überschreibt oder das neue Image Mist ist, darf man das +Paket an AVM schon fertig machen :-/, sofern man nicht glücklicher +Besitzer eines +`​JTAG-Kabels <http://feadispace.fe.funpic.de/FBF7050/>`__ (siehe auch +`​OpenWrt.org <http://wiki.openwrt.org/OpenWrtDocs/Customizing/Hardware/JTAG_Cable>`__) +mit passender Software ist. Falls man versehentlich "nur" eine andere +Partition überschreibt, sollte ein Recover reichen. + +.. _WegesichschnelleinenÜberblickzuverschaffen: + +Wege, sich schnell einen Überblick zu verschaffen +------------------------------------------------- + +Was ich schon lange beschreiben wollte, da ich es zum Zeitpunkt der +Urfassung dieses Artikels noch nicht wusste, aber später durch +voneinander unabhängige Hinweise von `​Sedat +(dileks) <http://www.ip-phone-forum.de/member.php?u=95274>`__ und +`​Enrik (enrik) <http://www.ip-phone-forum.de/member.php?u=58906>`__ +gelernt habe, ist, daß es sehr viel einfacher gewesen wäre, obige +Tabellen bzgl. Partitionen und Block Devices zu erstellen, hätte ich +folgende Befehle gekannt, die jeder auf seinem Boxtyp ausführen sollte, +um sich einen Überblick zu verschaffen, denn die Partitionen sind nicht +überall gleich groß und haben nicht überall die gleiche Nummerierung. +Beispielsweise ist der Urlader unter Kernel 2.4 unter +``/dev/mtdblock/2`` zu finden und befindet sich unter Kernel 2.6 unter +``/dev/mtdblock3`` (andere Nummer, eine Verzeichnisebene höher). Das ist +wichtig zu wissen, wenn man z.B. ein Downgrade auf eine ältere +Firmwareversion vorhat, die auch auf einen älteren Kernel und Bootloader +aufsetzt. Es bringt ja nichts, Letzteren in die falsche Partition zu +schreiben. + +/proc/partitions +~~~~~~~~~~~~~~~~ + +:: + + $ cat /proc/partitions + + major minor #blocks name + + 31 0 8192 mtdblock0 + 31 1 6966 mtdblock1 + 31 2 7616 mtdblock2 + 31 3 64 mtdblock3 + 31 4 256 mtdblock4 + 31 5 256 mtdblock5 + 31 6 1600 mtdblock6 + 31 7 6016 mtdblock7 + 8 0 64000 sda + 8 1 63984 sda1 + +Hier sieht man sehr schön die Größen der einzelnen Partitionen samt +Device Major/Minor (wer's braucht) und passenden Block-Device-Namen. + +Auf einer 7270 sieht das etwas anders aus: + +.. code:: bash + + $ cat /proc/partitions + + major minor #blocks name + + 31 0 6732 mtdblock0 + 31 1 883 mtdblock1 + 31 2 64 mtdblock2 + 31 3 256 mtdblock3 + 31 4 256 mtdblock4 + 31 5 8192 mtdblock5 + +Hier scheint mtdblock2 wirklich der Bootloader zu sein. + +/proc/mtd +~~~~~~~~~ + +.. code:: bash + + $ cat /proc/mtd + + dev: size erasesize name + mtd0: 00800000 00010000 "phys_mapped_flash" + mtd1: 006cdb00 00010000 "filesystem" + mtd2: 00770000 00010000 "kernel" + mtd3: 00010000 00010000 "bootloader" + mtd4: 00040000 00010000 "tffs (1)" + mtd5: 00040000 00010000 "tffs (2)" + mtd6: 00190000 00010000 "jffs2" + mtd7: 005e0000 00010000 "Kernel without jffs2" + +In dieser alternativen Darstellung mit in Hexadezimal-Schreibweise +angegebener Partitionsgröße sieht man noch als Kommentar eine +Beschreibung, die Auskunft darüber gibt, wofür die einzelnen Partitionen +tatsächlich vorgesehen sind. Sehr einfach, sehr praktisch. + +Und auch hier wieder die 7270: + +.. code:: bash + + $ cat /proc/mtd + + dev: size erasesize name + mtd0: 00693200 00010000 "rootfs" + mtd1: 000dce00 00010000 "kernel" + mtd2: 00010000 00010000 "urlader" + mtd3: 00040000 00010000 "tffs (1)" + mtd4: 00040000 00010000 "tffs (2)" + mtd5: 00800000 00010000 "reserved" + +.. _BackupvonUrladerKernelundDateisystem: + +Backup von Urlader, Kernel und Dateisystem +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Wie man bei einer Kernel-2.6-Firmware konkret und effizient +``urlader.image`` und ``kernel.image`` übers Netzwerk wegsichert, +beschreibe ich im +`​Forum <http://www.ip-phone-forum.de/showthread.php?p=954170#post954170>`__. + +.. _Anmerkungenzur7270v3mit2.6erKernelmitVersion74.04.88getestet: + +Anmerkungen zur 7270v3 mit 2.6er Kernel (mit Version 74.04.88 getestet) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Das in den letzten Absätzen angegebene Layout für die 7270 mit obiger +Firmware kann ich noch um folgende Informationen zur letzten „Partition“ +ergänzen. Die in „/proc/mtd“ als "reserved" angegebene „mtd5“ enthält +den gesamten Bereich von „mtd0“ bis „mtd4” hintereinander. Darauf +gebracht hat mich die Größe von 16 MiB (0x800000). Hat man in Freetz das +Programm „dd“ mit den Funktionen „if“ und „of“ (beides ist auszuwählen +im Menuconfig; getestet mit Freetz 1.2) integriert, läßt sich auf +einfache Weise eine vollständige Sicherheitskopie ziehen und +zurückspielen: + +.. code:: bash + + $ dd if=/dev/mtdblock5 of=/var/media/ftp/uStor00/mtd5.bak + +Wiederherstellen geht dann umgekehrt: + +.. code:: bash + + $ dd of=/dev/mtdblock5 if=/var/media/ftp/uStor00/mtd5.bak + +Das Programm „cat“ ist zum Sichern ebenso geeignet, hier muß dann die +Ausgabe in die Zieldatei umgeleitet werden. Der erste eingesteckte +USB-Speicher ist für gewöhnlich als „/var/media/ftp/uStor00“ eingehängt, +das kann natürlich im Einzelfall anders heißen. Mit „bzip2“ kann man es +bei Bedarf noch geringfügig komprimieren. Für die Kopien habe ich ein +Skript auf dem USB-Speicher liegen, daß regelmäßig eine solche Kopie per +Cron anfertigt. + +Getestet habe ich das auch: als der Router in einer Reboot-Schleife +hing, habe ich durch das Zurückspielen einer solchen Kopie erfolgreich +einen früheren Zustand wiederhergestellt. + +Beachte, daß AVM das Layout in künftigen Versionen ohne weiteres wieder +ändern kann, tippe also niemals ohne eigene Prüfung einfach die +Befehlszeilen oben ab. `​Christoph +Franzen <http://www.ip-phone-forum.de/member.php?u=121255>`__ + +.. _Zusammenfassung: + +Zusammenfassung +--------------- + +Wer Kopien seiner Flash-Partitionen haben möchte, macht das im laufenden +Betrieb am besten, indem er das passende Block Device auswählt (Vorsicht +bei der verschobenen Numerierung!) und mittels ``cat`` die Daten auf ein +externes Medium wegsichert. *ADAM2* benötigt man hierfür jedenfalls +nicht zwingend, es geht auch so. Am besten kontrolliert man anhand der +sich ergebenden Dateigrößen, ob man die richtigen Partitionen erwischt +hat. Der Bootloader hat immer 64 KB, das TFFS 256 KB, der Rest hängt von +der Box und der Firmware-Version ab. + +`​Alexander Kriegisch +(kriegaex) <http://www.ip-phone-forum.de/member.php?u=117253>`__ diff --git a/wiki/help/howtos/development/save_mtd_2.rst b/wiki/help/howtos/development/save_mtd_2.rst new file mode 100644 index 0000000..1cce81b --- /dev/null +++ b/wiki/help/howtos/development/save_mtd_2.rst @@ -0,0 +1,262 @@ +.. _Flash-PartitionenvonaußenmitFTPsichern: + +Flash-Partitionen von außen mit FTP sichern +=========================================== + +Dieser Artikel baut auf dem Artikel +`Flash-Partitionierung <flash.html>`__ auf. Ihn vorher zu lesen, schadet +also nicht. Mein herzlicher Dank für einige der Informationen zu diesem +Artikel gebührt Enrik Berkhan, der sich hier immer vornehm zurückhält, +aber sooo viel weiß. |:-)| + +.. _Motivation: + +Motivation +---------- + +Im verwandten Artikel `Flash-Partitionen im laufenden Betrieb +sichern <save_mtd_1.html>`__ habe ich erklärt, wie man direkt von der +Konsole (SSH, Telnet, Rudi-Shell) auf der FritzBox aus über +entsprechende Linux-Block- bzw. -Character-Devices Datensicherungen +vornehmen kann. Das gleiche geht auch "von außen", also ohne +Shell-Zugriff von der Box, indem man per FTP den Urlader - neudeutsch +Bootloader - kontaktiert. Früher hieß der Urlader +`ADAM2 <adam2.html>`__, heute EVA bei den aktuellen Kernel-2.6-Firmwares +(obwohl die Login-Daten immer noch wie früher sind, wie wir gleich sehen +werden). + +Diese Methode ist auch dann anwendbar, wenn die Box nicht mehr sauber +hochfährt oder man kein Telnet auf der Box mit Original-Firmware hat +bzw. man es nicht schafft, es zu aktivieren. + +.. _Voraussetzungen: + +Voraussetzungen +--------------- + +Wir brauchen eine FritzBox mit Kernel 2.6 und EVA-Urlader, denn seit +älteren Versionen könnten die FTP-Befehle sich mehr oder weniger stark +verändert haben. Das weiß ich aber nicht genau. Es geht auch ein +entsprechendes OEM-Gerät, also z.B. Speedport W501V, W701V, W900V. + +Außerdem benötigen wir ein **Linux**-System (auch eine virtuelle +Maschine, z.B. VMware, geht) mit installiertem +Standard-Kommandozeilen-Client *ftp* (bei mir das Debian-Paket *ftp +0.17-16*) oder aber mit `​NcFTP <http://en.wikipedia.org/wiki/Ncftp>`__ +3.2.0 (bei mir Debian-Paket *ncftp 2:3.2.0-1*). + +Alternativ funktioniert die beschriebene Prozedur mit NcFTP 3.2.0 auch +unter **Windows mit Cygwin**. Dort klappt es aber nicht mit dem +Standard-FTP-Client, mit dem Windows-FTP schon gar nicht. + +Des weiteren sollte die Boot-IP der Box bekannt sein. Kennt man sie +nicht und kommt man nicht über eine Konsole (SSH, Telnet, Rudi-Shell, +Nano-Shell) an Informationen aus der Box, so kann man sie mittels +``ping`` herausfinden, indem man verschiedene IP-Adressen "anpingt" +direkt nach dem Aus- und Einschalten/-stecken der Box. Folgende IPs +werden häufig verwendet: + +- 192.168.178.1 (allermeistens) +- 169.254.1.1 +- 192.168.2.1 +- 192.168.2.254 + +Die normale und einfache Methode, die Boot-IP herauszufinden, ist diese: + +.. code:: bash + + cat /proc/sys/urlader/environment | grep my_ipaddress + +Man sollte dafür sorgen, dass Personal Firewalls ausgeschaltet sind, +evtl. auch andere Sicherheitspakete, die den Netzwerkverkehr behindern +könnten. Spätestens, wenn es mit aktiven Programmen nicht geht, sollte +man sie ausschalten, auch wenn man sich einbildet, alles sei richtig +eingestellt und daran könne es nicht liegen. Ganz ausschalten, nicht nur +inaktiv setzen! + +Außerdem ist es hilfreich, dass der Rechner, von dem aus man die +Ping-Versuche unternimmt und die Verbindung per FTP initiieren möchte, +im gleichen Subnetz (z.B. 192.168.178.0/24 bzw. Netzmaske 255.255.255.0) +ist wie die Box, und zwar bzgl. der Adresse, die man gerade testet. Dass +übrigens der Ping von Windows aus funktioniert, bedeutet noch lange +nicht, dass man dann aus VMware heraus auch Verbindung aufnehmen kann. +Wirklich von dort probieren, wo man später arbeiten möchte. + +Verbindungsversuche benötigen evtl. mehrere Anläufe, also wenn ein Ping +oder ein FTP-Connect nach drei, vier Sekunden nach Anschalten der Box +noch nicht geklappt hat, am besten aus- und wieder einschalten, bis der +Ping oder FTP-Connect funktioniert. Unter Windows sollte man ggf. auch +noch das Media Sensing ausschalten, indem man folgendes als Textdatei +``mediasensing-aus.reg`` speichert und doppelklickt, um es danach in die +Windows-Registry eintragen zu lassen: + +.. code:: bash + + Windows Registry Editor Version 5.00 + + [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Tcpip\Parameters] + + "DisableDHCPMediaSense"=dword:00000001 + +Evtl. sollte man nach dem Ausschalten einen Windows-Neustart machen. +AVMs Recover-Werkzeug macht das jedenfalls, aber vielleicht geht es auch +ohne. Man kann das Mediasensing dauerhaft ausgeschaltet lassen, sofern +man den betreffenden Rechner nicht ständig an verschiedenen Netzwerken +ein- und ausstöpselt und das Mediasensing für unterschiedliche +DHCP-Server benötigt (z.B. Notebook abwechselnd im Büro und zu Hause). +Sollte man es doch wieder einschalten wollen, geht das so: + +.. code:: bash + + Windows Registry Editor Version 5.00 + + [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Tcpip\Parameters] + + "DisableDHCPMediaSense"=dword:00000000 + +.. _AllgemeineInformationenzurDatensicherung: + +Allgemeine Informationen zur Datensicherung +------------------------------------------- + +Das im Folgenden gezeigte Vorgehen ist immer das gleiche, auch wenn +unterschiedliche Kommandozeilen-Clients verwendet werden. Man kann das +Ganze auch manuell im Dialog im FTP-Client durchführen, und außer den +genannten Clients funktionieren vermutlich noch einige andere. Passiven +Datentransfer sollten sie aber beherrschen, und Garantien gebe ich +sowieso nicht. |;-)| Die von mir getesteten Programme sollten ein +Gelingen aber wesentlich wahrscheinlicher machen. + +Eine Seltsamkeit gibt es, auf die ich gleich hinweisen möchte: Immer +nach dem `Download <../../../Download.html>`__ einer ``mtd``-Partition +muß man manuell einmal Strg-C (engl. Ctrl-C) an der Kommandozeile des +FTP-Clients eingeben, damit der Client weiter läuft bzw. terminiert. Aus +irgendeinem Grund wird das Ende eines GET-Downloads nicht erkannt, was +wohl dem Urlader zuzuschreiben ist. Am besten kontrolliert man in einer +zweiten Konsole am Client, ob die Größe der +`Download <../../../Download.html>`__-Datei noch wächst. Nach ein paar +Sekunden sollte das nicht mehr der Fall sein. Die Urlader- und +TFFS-Partitionen sind sowieso fast augenblicklich heruntergeladen, nur +bei ``mtd1``, der Partition für Kernel + Dateisystem der Box, dauert es +ein bißchen länger, geht aber auch sehr schnell. Dabei gelten folgende +Dateigrößen: + +- Dateisystem + Kernel (``mtd1``): + + - 7.616 KB = 7.798.784 Bytes bei 8-MB-Boxen + - 3.520 KB = 3.604.480 Bytes bei 4-MB-Boxen + - 1.472 KB = 1.507.328 Bytes bei 2-MB-Boxen (theoretisch, diese + Boxen haben momentan noch alte Urlader) + +- Urlader/Bootloader/EVA (mtd2): immer 64 KB = 65.536 Bytes +- TFFS1 (mtd3): immer 256 KB = 262.144 Bytes +- TFFS2 (mtd4): immer 256 KB = 262.144 Bytes + +``mtd1-4`` summiert ergeben immer genau 8 bzw. 4 bzw. 2 MB, also die +Speichergröße der jeweiligen Box. + +.. _SicherungmitLinux-Standard-FTPftp: + +Sicherung mit Linux-Standard-FTP (ftp) +-------------------------------------- + +Folgenden Code am besten in eine Skript-Datei eintragen und von dort +ausführen wegen der Mehrzeiligkeit. Dabei die passende IP-Adresse +eintragen und nach dem vollständigen +`Download <../../../Download.html>`__ jeder Partition jeweils einmal +Strg-C drücken, damit die folgende heruntergeladen wird bzw. am Ende die +FTP-Sitzung beendet wird. + +:: + + ( + cat <<EOT + open 192.168.178.1 + user adam2 adam2 + debug + bin + quote MEDIA FLSH + get mtd1 + get mtd2 + get mtd3 + get mtd4 + quit + EOT + ) | ftp -n -p + +Im Anschluß sollten sich im aktuellen Verzeichnis vier Dateien von +``mtd1`` bis ``mtd4`` befinden. + +.. _SicherungmitLinux-NcFTPncftpget: + +Sicherung mit Linux-NcFTP (ncftpget) +------------------------------------ + +Auch hier wieder die IP-Adresse ersetzen. Das Skript jeweils einmal für +jede der vier Partitionen von ``mtd1`` bis ``mtd4`` aufrufen, alles auf +einmal geht hier nicht. Aber Strg-C am Ende des +`Downloads <../../../Download.html>`__ ist auch hier zum Beenden +erforderlich. + +.. code:: bash + + ncftpget \ + -d stdout \ + -o doNotGetStartCWD=1,useFEAT=0,useHELP_SITE=0,useCLNT=0,useSIZE=0,useMDTM=0 \ + -W "quote MEDIA FLSH" \ + -u adam2 \ + -p adam2 \ + ftp://192.168.178.1/mtd1 + +.. _SicherungmitCygwin-NcFTPncftpget: + +Sicherung mit Cygwin-NcFTP (ncftpget) +------------------------------------- + +Das funktioniert genauso wie unter Linux mit der gleichnamigen +Anwendung, siehe oben. + +.. _UploadsviaFTP: + +Uploads via FTP +--------------- + +Analog hierzu kann man auch mit ``ftp`` bzw. ``ncftpput`` Uploads +machen, allerdings sollte man das im Normalfall nur für ``mtd1`` (Kernel ++ Dateisystem) machen, und dafür gibt es in ds26-15.2 bereits ein +bequemes Skript Namens ``tools/push_firmware.sh`` (ab 15.3 entfällt die +Endung ``.sh``), welches unter Linux und Windows + Cygwin läuft und +genaus das tut. + +Das doppelt gepufferte TFFS - dort werden die Einstellungen der +Firmware, sowohl vom Hersteller als auch von Freetz, gespeichert - +sollte man nur im Notfall und immer nur auf genau die Box zurück +spielen, von der es stammt, denn es enthält einen Teil der Identität der +Box. Das hat sich seit dem Übergang von ADAM2 auf EVA zwar relativiert, +weil der wichtigste Teil der Angaben direkt in den Bootloader gewandert +ist - siehe `​Artikel von Enrik zu +EVA <http://wehavemorefun.de/fritzbox/index.php/EVA>`__ - aber man +sollte trotzdem damit aufpassen. + +Was viel brisanter geworden ist, ist ein Überschreiben des Urladers, +denn er enthält seit dem Übergang auf EVA wirklich wichtige +box-individuelle Daten. Außerdem lässt er sich sowieso nicht via FTP +überschreiben, weil er während der FTP-Sitzung ja gerade aktiv ist. Im +Artikel `ADAM-Bootloader <adam2.html>`__ wird beschrieben, wie man den +Urlader direkt im laufenden Betrieb von der Konsole auf der Box aus +überschreiben kann, aber dort steht nicht, wie man die box-individuellen +Daten dort ins Image bekommt. Sie sollten also tunlichst bereits drin +sein oder man sollte sich die Update-Prozedur aus den Original-Firmwares +(z.B. 06.04.33, darin steckt ein Bootloader samt Update-Programm) +anschauen und sich o.g. Artikel von Enrik durchlesen. + +|Warning| **Ich kann nur dringendst davon abraten, den Urlader zu +überschreiben, das sollte auch nie notwendig sein!!!** |Warning| + +`​Alexander Kriegisch +(kriegaex) <http://www.ip-phone-forum.de/member.php?u=117253>`__ + +.. |:-)| image:: ../../../../chrome/wikiextras-icons-16/smiley.png +.. |;-)| image:: ../../../../chrome/wikiextras-icons-16/smiley-wink.png +.. |Warning| image:: ../../../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/help/howtos/development/sign_image.rst b/wiki/help/howtos/development/sign_image.rst new file mode 100644 index 0000000..5270cdd --- /dev/null +++ b/wiki/help/howtos/development/sign_image.rst @@ -0,0 +1,145 @@ +.. _SignierenvonFirmware: + +Signieren von Firmware +---------------------- + +Beim Signieren von Firmware handelt es sich um einen Vorgang, bei dem +die Firmware mit einer `​digitalen +Signatur <https://de.wikipedia.org/wiki/Digitale_Signatur>`__ versehen +wird. Der Einsatzzweck dieser Signatur beschränkt sich aktuell auf die +Überprüfung, ob die Firmware bzw. nachladbare Teile davon (=AVM-Plugins) +aus einer vertrauenswürdigen Quelle stammen und damit geflasht bzw. +nachgeladen und eingebunden werden dürfen. In Bezug auf die Firmware ist +dieser Mechanismus erst seit Fritz!OS-6.5x von AVM scharf geschaltet. +Seit dieser Version kann über das Standard-Web-Interface von AVM nur +noch eine aus einer vertrauenswürdigen und zum Flash-Zeitpunkt der auf +der Box laufenden Firmware bekannten Quelle geflasht werden. + +Um zu verstehen, was der letzte Satz konkret bedeutet, sei kurz auf die +Grundprinzipien des digitalen Signierens eingegangen (für tiefgehende +Informationen sei auf zahlreiche Artikeln im Internet verwiesen, z.B. +auf `​diesen <https://de.wikipedia.org/wiki/Digitale_Signatur>`__ +Wikipedia-Artikel). + +Im Rahmen des digitalen Signierens sind im wesentlichen folgende +Schritte/Sachverhalte von Bedeutung: + +- Die Erzeugung eines aus einem privaten und aus einem öffentlichen + Schlüssel bestehenden Schlüsselpaars. Der private Schlüssel wird + dabei mit einem Passwort versehen, sodass der Schlüssel nur von der + Person verwendet werden kann, die im Besitz des Schlüssels ist und + das Passwort dazu kennt. +- Der private Schlüssel aus dem Schlüsselpaar wird vom Absender einer + digitalen Nachricht verwendet und dient dem Zweck, diese digitale + Nachricht mit einer digitalen Signatur zu versehen. +- Die digitale Signatur ermöglicht es dem Empfänger der Nachricht mit + Hilfe des öffentlichen Schlüssels (auch Verifikationsschlüssel + genannt) die nicht-abstreitbare Urheberschaft und Integrität der + Nachricht zu prüfen. + +Für unseren Anwendungsfall bedeutet es nun folgendes: + +- Die digitale Nachricht ist das Firmware-Image. +- Der Absender der Nachricht ist die Quelle, aus der das Firmware-Image + stammt. Die Quelle muss im Besitz des gesamten Schlüsselpaars sein + (also beider Schlüssel) und das Passwort kennen, mit dem der private + Schlüssel geschützt ist. +- Der Empfänger der Nachricht ist die zum Zeitpunkt des Flash-Vorgangs + auf der Box laufende Firmware-Version. Diese muss im Besitz des + öffentlichen Schlüssels (des Verifikationsschlüssels) sein. + +Ein (digital signiertes) Firmware-Image wird also dann als "aus einer +vertrauenswürdigen Quelle stammend" eingestuft, wenn der öffentliche +Schlüssel dieser Quelle der auf der Box laufenden Firmware bekannt ist +und der Signatur-Prüfungsvorgang bestanden wird. + +Der private, der geheime Schlüssel, mit dem AVM die Original-Images +signiert, liegt uns aus verständlichen Gründen nicht vor (und wenn dies +auch anders wäre, müssten wir auch noch das Passwort dazu kennen). Damit +bleibt uns nichts anderes übrig, als es zu versuchen, ein +selbstsigniertes Image zu erzeugen und die auf der Box laufende Firmware +dazu zu zwingen dieses zu akzeptieren. Dabei sind folgende Hürden zu +überwinden: + +- Der aus mathematischer/technischer Sicht schwierigste Teil besteht + darin, es zu verstehen, worin genau nun ein Signiervorgang bzw. ein + Signatur-Prüfungsvorgang in der AVM-Firmware besteht? + Glücklicherweise hat der (im IPPF-Forum sehr gut bekannte) Entwickler + `​PeterPawn <https://github.com/PeterPawn>`__ diesbezüglich eine + super Arbeit geleistet und im Rahmen seines + `​YourFritz-Projektes <https://github.com/PeterPawn/YourFritz>`__ + alles + `​dokumentiert <http://www.ip-phone-forum.de/showthread.php?t=286213>`__ + und den entsprechenden + `​Quellcode <https://github.com/PeterPawn/YourFritz/tree/master/signimage>`__ + zu Verfügung gestellt, der inzwischen auch in Freetz eingebaut ist. +- Wie oben schon mehrfach erwähnt, damit ein signiertes Image den + Prüfungsvorgang besteht, muss die auf der Box laufende Firmware den + öffentlichen Schlüssel der Quelle kennen. Dies ist für unser + selbstsigniertes Image natürlich nicht der Fall. D.h. wir müssen es + irgendwie schaffen, unseren öffentlichen Schlüssel auf die Box + einzuschleusen. Haben wir dies einmal geschafft, so kann jedes + weitere selbstsignierte Image über das reguläre AVM-Web-Interface + geflasht werden, vorausgesetzt man verwendet genau dasselbe + Schlüsselpaar zum Signieren und vergisst es nicht, den öffentlichen + Schlüssel in jedes neue Image mitaufzunehmen. + +Diese zweite Aufgabe ist streng genommen nicht ganz trivial. Es ist +geplant, einen eigenen Artikel zu diesem Thema zu verfassen. An dieser +Stelle seien stichwortartig mögliche Lösungen angedeutet: + +- Ein Downgrade (mittels Recovery) auf eine ältere Firmware-Version, + die noch unsignierte Images akzeptiert hat. Aus dieser älteren + Firmware-Version heraus muss dann eine jüngere Firmware-Version + geflasht werden, die unseren öffentlichen Schlüssel enthält. +- Hat man zufälligerweise einen Telnet-Zugang auf die Box, so kann + mittels der "drüber mounten"-Methode (``mount -o bind ... ...``) + eines der AVM-Schlüssel temporär durch den eigenen ersetzt werden. +- Bei NOR-Boxen kann ein den öffentlichen Schlüssel enthaltendes Image + mittels + `​push_firmware <http://trac.freetz.org/browser/trunk/tools/push_firmware>`__ + auf die Box gebracht werden. +- Bei NAND-Boxen kann ein den öffentlichen Schlüssel enthaltendes Image + mittels der + `​eva-to-memory-Methode <https://github.com/PeterPawn/YourFritz/blob/master/eva_tools/eva_to_memory>`__ + auf die Box gebracht werden. + +.. _KonkreteAnwendunginFreetz: + +Konkrete Anwendung in Freetz +---------------------------- + +- Man aktiviere die Experten-Ansicht in Freetz ("Level of User + Competence" = Expert). +- Unter "Firmware packaging (fwmod) options" aktiviere man die Option + "Sign image" und gebe das Passwort für den privaten Schlüssel direkt + dadrunter ein (das Passwort wird aus der ins Image kopierten Version + der .config entfernt). +- Anschließend baue man ganz normal eine Freetz-Firmware. + +Durch das Aktivieren dieser Optionen wird folgendes bewirkt: + +- Handelt es um den allerersten Durchlauf, bei dem ein selbstsigniertes + Image erzeugt werden soll, so werden die zum Signieren benötigten + Dateien erzeugt und im Homeverzeichnis des Users unter den Namen mit + folgendem Präfix abgelegt: ``.freetz.image_signing``. Diese Dateien + sind vom User zu sichern und von dem Zeitpunkt an beim + Bauen/Signieren aller weiteren Images zu verwenden. Oder andersrum + ausgedrückt - es macht keinen Sinn, sich diese Dateien immer wieder + aufs Neue erzeugen zu lassen, da man dann jedes Mal aufs Neue das + Problem lösen muss "wie bringt man den neu erzeugten öffentlichen + Schlüssel auf die Box". Dies ist auch der Grund, warum die Dateien im + Homeverzeichnis des Users abgelegt werden und nicht in dem + Freetz-Build-Verzeichnis selbst (hat man mehrere Build-Verzeichnisse + für verschiedene Boxen wird dadurch für jede Box dasselbe + Schlüsselpaar verwendet). Es sei nochmal darauf hingewiesen, dass + diese Dateien vom User zu sichern sind und z.B. bei einem + Build-System-Wechsel manuell auf das neue System zu kopieren sind. +- Liegen die Dateien dagegen vor, so werden sie einfach verwendet. Der + öffentliche Schlüssel wird dabei in einem speziellen Format mit ins + Image unter dem Namen ``/etc/avm_firmware_public_key9`` aufgenommen + (bzgl. des Formats s. die detaillierte Beschreibung von PeterPawn). +- Hat man es geschafft und der eigene öffentliche Schlüssel befindet + sich auf der Box, so kann jedes weitere mit genau demselben + Schlüsselpaar signierte Image über das AVM-Web-Interface geflasht + werden. diff --git a/wiki/help/howtos/development/urlader_flags.rst b/wiki/help/howtos/development/urlader_flags.rst new file mode 100644 index 0000000..b87f34b --- /dev/null +++ b/wiki/help/howtos/development/urlader_flags.rst @@ -0,0 +1,279 @@ +.. _EinstellungenspeichernimUrlader-Environment: + +Einstellungen speichern im Urlader-Environment +============================================== + +.. _VorwortundMotivation: + +Vorwort und Motivation +---------------------- + +Es kann von Vorteil sein, während des Boot-Prozesses oder evtl. auch +danach noch gewisse Schalter (engl. flags) abfragen zu können, ohne +deswegen gleich auf ``/var/flash/debug.cfg`` zugreifen zu müssen. Dafür +gibt es folgende Gründe: + +- Die Character Devices unter ``/var/flash`` sind erst nach Ablauf von + ``/etc/init.d/rc.S`` verfügbar, weil sie in diesem Skript erst + mittels ``mknod`` erzeugt werden - speziell ``debug.cfg`` übrigens + erst separat am Ende des Skripts. +- Gewisse Funktionalitäten würden wir gerne aufrufen, **bevor** + *``rc.S``* läuft. Bestes Beispiel sind Root-Mounts, z.B. das + Freetz-Paket `mini_fo <../../../packages/mini_fo.html>`__, dessen + Init-Skript sich in ``/etc/inittab`` vor ``rc.S`` einträgt. Würden + wir jetzt gerne einen Schalter haben, der das Laden von ``mini_fo`` + verhindern kann, hätten wir ein Problem. + +.. _Lösungsmöglichkeiten: + +Lösungsmöglichkeiten +-------------------- + +Kein Problem ohne Lösung. Wir könnten innerhalb von ``rc.mini_fo`` +selbst ``mknod`` verwenden, um ``debug.cfg`` temporär zugreifbar zu +machen und nach Abfragen der gewünschten Information wieder aufräumen +mit ``rm``, damit später ``rc.S`` nicht irritiert wird beim erneuten +Erzeugen des Nodes. Es gibt tatsächlich ein Paket +(`NFS-Root <../../../packages/nfs.html>`__), welches diese Technik +verwendet, um auf AVM-Konfigurationsdaten aus dem TFFS zuzugreifen, +zusätzlich aber auch noch Informationen von woanders einholt, und zwar +aus dem sog. Bootloader Environment (Urlader-Umgebungsvariablen). Schon +seit 15.0 greifen auch zwei (noch) undokumentierte Logging-Werkzeuge des +DS-Mod, `Inotify-Tools <../../../packages/inotify-tools.html>`__ und +*Dmesg-Recording*, auf diese Umgebungsvariablen zu, die beiden Letzteren +sogar über ein kleines, funktional auf bestimmte Anwendungsfälle +eingegrenztes Shell-API, das ich mir habe einfallen lassen. Dazu später +mehr. + +.. _BootloaderEnvironment: + +Bootloader Environment +---------------------- + +Der Urlader (engl. bootloader), je nach Version auch bekannt unter +`ADAM2 <adam2.html>`__ oder EVA, besitzt ein sog. Environment, also +einen kleinen Speicherbereich für globale Einstellungen, welche absolut +erforderlich sind, damit die Box überhaupt funktioniert. Das ist ja +bekannt, aber zur Auffrischung nochmals die (mit "#" anonymisierte) +Ausgabe, generiert auf meiner 7170 mit Kernel 2.6: + +.. code:: bash + + $ cat /proc/sys/urlader/environment + HWRevision 94.1.1.0 + ProductID Fritz_Box_7170 + SerialNumber 0000000000000000 + annex B + autoload yes + bootloaderVersion 1.153 + bootserport tty0 + bluetooth ##:##:##:##:##:## + cpufrequency 211968000 + firstfreeaddress 0x946AE530 + firmware_version 1und1 + firmware_info 29.04.29 + flashsize 0x00800000 + maca ##:##:##:##:##:## + macb ##:##:##:##:##:## + macwlan ##:##:##:##:##:## + macdsl ##:##:##:##:##:## + memsize 0x02000000 + modetty0 38400,n,8,1,hw + modetty1 38400,n,8,1,hw + mtd0 0x90000000,0x90000000 + mtd1 0x90010000,0x90780000 + mtd2 0x90000000,0x90010000 + mtd3 0x90780000,0x907C0000 + mtd4 0x907C0000,0x90800000 + my_ipaddress 192.168.178.1 + prompt AVM_Ar7 + ptest + reserved ##:##:##:##:##:## + req_fullrate_freq 125000000 + sysfrequency 125000000 + urlader-version 1153 + usb_board_mac ##:##:##:##:##:## + usb_rndis_mac ##:##:##:##:##:## + usb_device_id 0x3D00 + usb_revision_id 0x0200 + usb_device_name USB DSL Device + usb_manufacturer_name AVM + wlan_key ################ + wlan_cal ####,####,####,####,####,####,####,####,#### + +Das Schöne an diesem Environment ist, dass es nicht nur lesbar, sondern +auch (teilweise) beschreibbar ist. Das wird gern verwendet, um +Anpassungen am Annex oder am Branding vorzunehmen, insbesondere bei +OEM-Boxen, deren Besitzer gern eine vollwertige FritzBox daraus machen +möchten, um die entsprechenden Original-Firmware oder Freetz darauf zu +installieren, bzw. auch, um eine deutsche Box im Ausland lauffähig zu +machen oder umgekehrt. + +Es ist bei den allermeisten Werten im Environment absolut nicht ratsam, +sie für andere Zwecke zu missbrauchen, aber es gibt eine oben gar nicht +sichtbare Variable, die dafür geschaffen wurde, dem Linux-Kernel +Parameter für den Boot-Vorgang mitzugeben. Diese Parameter werden später +weitergereicht an die Startskripte, aber auch gleichzeitig persistent +gespeichert und sind somit ideal geeignet, um Werte von dort abzufragen. + +.. _Variablekernel_args: + +Variable "kernel_args" +---------------------- + +Die Variable, von der hier die Rede ist, heißt ``kernel_args``, fasst +maximal 64 Zeichen an Informationen und sollte daher mit Bedacht +verwendet werden. Man kann folgendermaßen etwas hinein schreiben: + +:: + + echo "kernel_args tea=Darjeeling quality=FTGFOP1" > /proc/sys/urlader/environment + +Damit würden wir ein eigens dafür entworfenes (leider fiktives) +Startskript der FritzBox anweisen, beim Hochfahren der Box Tee zu +kochen, und zwar Darjeeling der Qualitätsstufe FTGFOP1 (Finest Tippy +Golden Flowery Orange Pekoe 1). + +Wenn man sich jetzt das Environment nochmals anzeigen lässt, findet man +plötzlich dort die Variable ``kernel_args`` vor: + +:: + + $ cat /proc/sys/urlader/environment | grep kernel_args + kernel_args tea=Darjeeling quality=FTGFOP1 + +Mit ein bisschen Zeichenketten-Manipulation können wir den Wert von +``kernel_args`` isolieren und dann weiter zerlegen in unsere beiden +Schlüssel-Werte-Paare. Darauf will ich an dieser Stelle nicht weiter +eingehen, das sind Grundlagen der Shell-Programmierung. + +Jedoch wichtig zu wissen ist, wie man während des Boot-Vorgangs an diese +Variable heran kommt. Die Antwort hängt davon ab, zu welchem Zeitpunkt +man den Zugriff benötigt. Sofern das virtuelle Dateisystem unter +``/proc`` bereits zugreifbar, das sog. *procfs* also bereits ins +Root-Dateisystem per ``mount`` eingehängt wurde, können wir so vorgehen +wie oben gezeigt. Andernfalls müssen wir zunächst mittels + +:: + + [ -e /proc/mounts ] || mount proc + +*procfs* selbst einhängen, falls es noch nicht da ist. Nach Benutzung +loswerden können wir es entsprechend über ``umount proc`` + +.. _Kernel_Args-API: + +Kernel_Args-API +--------------- + +Für einfache, auf Debugging oder Logging ausgerichtete Anwendungsfälle, +die innerhalb von ``kernel_args`` auskommen mit den Werten + +- aktiv/ja, +- inaktiv/nein, +- Countdown-Zähler > 0, + +gibt es das Shell-Skript ``kernel_args``, welches man mit +``. /usr/bin/kernel_args`` in ein laufendes Skript inkludieren und +daraufhin auf verschiedene vorgefertigte Funktionen zur Manipulation von +innerhalb der Bootloader-Variablen ``kernel_args`` gespeicherten +Schlüssel-Werte-Paaren zugreifen kann. Das Skript ist in den enthaltenen +Kommentarzeilen gut dokumentiert, daher hier nur eine kurze Auflistung +der aktuell (ds26-15.2) verfügbaren Funktionen: + +- **ka_mountProc:** ``/proc`` mounten, falls notwendig +- **ka_getArgs:** ``kernel_args`` komplett auslesen +- **ka_getKeyValuePair:** Schlüssel-Wert-Paar zu geg. Schlüssel + ermitteln +- **ka_isValidName:** Schlüsselnamen auf Validität prüfen +- **ka_isValidValue:** Wert auf Validität (y, n, Zahl > 0) prüfen +- **ka_getValue:** Wert zu einem Schlüssel ermitteln +- **ka_setValue:** Wer zu einem Schlüssel setzen +- **ka_removeVariable:** Schlüssel-Wert-Paar löschen +- **ka_removeVariableNoUpdate:** wie oben, aber nur neuen Wert von + ``kernel_args`` nach angenommener Entfernung eines Paares anzeigen, + nicht direkt ins Environment schreiben +- **ka_isPositiveInteger:** Hilfsfunktion zum Prüfen numerischer Werte +- **ka_isActiveVariable:** Prüfen, ob Wert > 0 oder "y" (aktiv) +- **ka_decreaseValue:** Positiven Ganzzahlwert um 1 vermindern. Falls + er 0 werden würde, Wert durch "n" (inaktiv) ersetzen + +.. _Countdown-Trick: + +Countdown-Trick +~~~~~~~~~~~~~~~ + +Gerade die letzten beiden Aufrufe ermöglichen ein hilfreiches Konstrukt +beim Entwickeln von Startskripten: Man kann eine Variable z.B. auf 5 +setzen und bei jedem Startvorgang um 1 vermindern, bis sie nach fünf +Durchläufen auf "n" (inaktiv) gesetzt wird. Abhängig davon könnte man +den weiteren Verlauf eines Skripts beeinflussen, es also fortsetzen oder +vorzeitig beenden. Sollte im weiteren Verlauf des Skripts also ein +Fehler auftauchen, der den Startvorgang der Box torpediert, so daß man +nicht mehr an sie heran kommt ohne Recover, wäre dieser Countdown eine +praktische Hilfe, denn spätestens beim sechsten Anlauf würde ja die +fehlerhafte Funktion nicht mehr aktiviert sein und die Box normal weiter +gestartet werden. Wir retten uns hiermit also vor uns selbst und ziehen +uns an den eigenen Haaren aus dem Sumpf! |;-)| + +.. _Grenzendeskernel_args-API: + +Grenzen des kernel_args-API +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Sobald wir andere Arten von Werten in ``kernel_args`` speichern wollen, +z.B. etwas wie ``my_path=/usr/bin/my_script``, versagt das API in der +momentanen Version seinen Dienst, weil es ja nur die Werte "y", "n", +positive Ganzzahl zulässt. Aber oben steht ja, wie man auch damit +umgehen kann durch Direktzugriff. Eines Tages erweitere ich vielleicht +auch das API. + +.. _MöglicheAnwendungsfälle: + +Mögliche Anwendungsfälle +------------------------ + +**Root-Mounts:** Dienste wie ``mini_fo`` zur virtuellen Überlagerung des +Root-Dateisystems durch eine RAM-Disk oder einen externen Speicher, um +Schreibzugriffe zu ermöglichen oder *NFS-Root*, also der vollständige +Ersatz des Root-Dateisystems durch einen voll beschreibbaren und +größenmäßig quasi unbegrenzten Netzwerk-Mount könnten von Schaltern im +Bootloader Environment profitieren, weil man sie bei Bedarf ein- und +ausschalten könnte. (Anm.: NFS-Root zum [De-]Aktivieren tatsächlich +einen Eintrag in kernel_args, allerdings ohne API. Zusätzlich wird der +zu mountende NFS-Pfad in einer anderen Bootloader-Variablen Namens +``nfsroot`` abgelegt, die der Linux-Kernel sowieso kennt und die wir +quasi missbrauchen.) + +**Debugging/Logging:** Bei Bedarf zuschaltebare Funktionen, um +Dateizugriffe beim Booten zu protokollieren, um z.B. festzustellen, +welchen Binaries beim Starten *nicht* angerührt werden und die man +deshalb via Downloader-CGI auslagern könnte, um Platz für mehr früher +benötigte DS-Mod-Pakete zu schaffen, oder um das Kernel-Log in eine +Datei zu sichern, bevor der Ringpuffer überläuft und der Anfang verloren +geht, sind Beispiele für weitere sinnvolle Anwendungsbereiche von +``kernel_args``, ob nun mit oder ohne API. Der Entwickler braucht keine +Debug-Version seiner FW zu flashen, um etwas zu probieren, sondern er +baut die notwendigen Dinge fest in seine FW ein, macht den Start aber +abhängig von einem oder mehreren Schaltern (Berücksichtigung in den +Init-Skripten). Sehr bequem! + +Weitere Schweinereien überlasse ich Eurer geschätzten Phantasie. + +Diskussionen zum Thema bitte unter +`​http://www.ip-phone-forum.de/showthread.php?t=134976 <http://www.ip-phone-forum.de/showthread.php?t=134976>`__, +wo zu Beginn noch die Rede davon ist, die Variable *SerialNumber* zu +verwenden, um Werte dort zu speichern. Allerdings hat sich später +herausgestellt, daß man diese Variable zwar dem Anschein nach ändern +kann, die Änderungen aber einen Neustart der Box nicht überleben. Also +bitte nicht verwirren lassen, "state of the art" ist momentan +``kernel_args``. + +`​Alexander Kriegisch +(kriegaex) <http://www.ip-phone-forum.de/member.php?u=117253>`__ + +- Tags +- `überarbeiten </tags/%C3%BCberarbeiten>`__ + +.. |;-)| image:: ../../../../chrome/wikiextras-icons-16/smiley-wink.png + diff --git a/wiki/help/howtos/security.rst b/wiki/help/howtos/security.rst new file mode 100644 index 0000000..16aaa80 --- /dev/null +++ b/wiki/help/howtos/security.rst @@ -0,0 +1,8 @@ +.. _Security: + +Security +======== + +Sicherheitsrelevante Dinge sind in dieser Rubrik beschrieben. Eine +Übersicht über vorhandene Themen soll rechts-stehendes +Inhaltsverzeichnis geben. diff --git a/wiki/help/howtos/security/router_and_firewall.rst b/wiki/help/howtos/security/router_and_firewall.rst new file mode 100644 index 0000000..e01c1a6 --- /dev/null +++ b/wiki/help/howtos/security/router_and_firewall.rst @@ -0,0 +1,218 @@ +.. _FreetzalsinternerRoutermitFirewall: + +Freetz als interner Router mit Firewall +======================================= + +| Diese Anleitung enthält alles was man braucht, um eine FritzBox 7050 + mit freetz in einen internen Router mit Firewall und echter DMZ zu + verwandeln. +| Andere Router funktionieren auch, so lange sie mit Linux laufen, + iptables und 2 getrennt ansprechbare Netzwerkschnittstellen haben. + Geräte mit einen Switch, der nur komplett als **ein Interface** + angesprochen werden kann, können keine LAN DMZ + (**D**\ e\ **M**\ ilitarized **Z**\ one) errstellen. Das WLAN läßt + sich aber bei allen Routern, abtrennen. + +.. _Zielgruppe: + +Zielgruppe +---------- + +Ambitionierte Heimanwender und kleinere bis mittlere Betriebe die ein +extra gesichertes WLAN und/oder Zweitnetzwerk benötigen. + +.. _Beispielszenario: + +Beispielszenario +---------------- + +- Internes Netz1: 192.168.178.0/255.255.255.0 (Anwendernetz) +- Internes Netz2: 192.168.181.0/255.255.255.0 (Servernetz, echte DMZ) +- WLAN: 192.168.181.0/255.255.255.0 +- Internetrouter: 192.168.178.1 z.B. weitere Fritzbox, die sich im + internen Netz befindet und gleichzeitig als DNS Server fungiert. + +Wir wollen allen Benutzern des internen Netzes 1 Zugriff auf das +gesammte Netz2 ermöglichen, die WLAN Benutzer sollen aber nur auf das +Internet und bestimmte Dienste in der DMZ zugreifen können. Als Beispiel +nehmen wir einen Webserver, einen Mailserver und einen FTP-Server mit +folgenden Daten: + +- Webserver: IP 192.168.181.5, Ports 80,443 +- Mailserver: IP 192.168.181.6, Ports 25,143,110,993,995 +- FTP-Server: IP 192.168.181.7, Port 21,(20) FTP braucht noch einen + zusätzlichen Port für den Rückkanal, je nach Modus (aktiv/passiv) + +.. _DieFritzboxmodden: + +Die Fritzbox modden +------------------- + +FIXME + +.. _DieFritzboxaufgetrennteNetzeumstellen: + +Die Fritzbox auf getrennte Netze umstellen +------------------------------------------ + +Unter *Einstellungen → System → Netzwerkeinstullungen → »IP-Adressen«* +deaktivieren wir nun *Alle Computer befinden sich im selben +IP-Netzwerk*. Damit hat jetzt jedes Interface LAN-A,LAN-B,WLAN,USB sein +eigenes Netz: + +.. figure:: /screenshots/48.jpg + :alt: Einstellungen für separate Netzwerke (Fritz!Box 7050) + + Einstellungen für separate Netzwerke (Fritz!Box 7050) + +.. _ErstellenderRouten: + +Erstellen der Routen +-------------------- + +FIXME + +.. _DieRückrouten: + +Die Rückrouten +-------------- + +Im Moment können wir zwar Pakete aus unseren DMZ/WLAN ins Internet +verschicken und Pakete von der DMZ ins interne Netz (wird später durch +die Firewall eingeschränkt). Aber unser Internetrouter, der auch Default +Router für alle Rechner ist, kennt unsere neuen Netze noch nicht und +verwirft damit alle Antwortpakete. + +Auf Arbeitsrechner marvin (192.168.178.2): + +:: + + jr@marvin$ ping -c 4 192.168.181.1 + PING 192.168.181.1 (192.168.181.1) 56(84) bytes of data. + + --- 192.168.181.1 ping statistics --- + 4 packets transmitted, 0 received, 100% packet loss, time 2999ms + +Wir müssen also noch die Rückrouten auf unserem **Internetrouter** +einrichten. + +Beispiel Linux Router: + +:: + + route add -net 192.168.181.0 netmask 255.255.255.0 gw 192.168.178.14 + route add -net 192.168.182.0 netmask 255.255.255.0 gw 192.168.178.14 + route add -net 192.168.179.0 netmask 255.255.255.0 gw 192.168.178.14 + +Beispiel Fritzbox: + +Unter *Einstellungen → System → Netzwerkeinstellungen → »IP-Routen«* +wählen wir *»Neue Route«*: + +.. figure:: /screenshots/49.jpg + :alt: Fritzbox: Route hinzufügen + + Fritzbox: Route hinzufügen + +.. code:: bash + + Aktiv Netzwerk Subnetzmaske Gateway + X 192.168.181.0 255.255.255.0 192.168.178.14 #LANB + X 192.168.182.0 255.255.255.0 192.168.178.14 #WLAN + X 192.168.179.0 255.255.255.0 192.168.178.14 #USB + +Jetzt kommen die Pakete auch wieder zurück. Interessant ist hier die +Redirect-Meldung des Standardgateways, das jetzt den Rechner an unserer +internes Fritzbox verweist. + +:: + + jr@marvin$ ping 192.168.181.1 + PING 192.168.181.1 (192.168.181.1) 56(84) bytes of data. + From 192.168.178.1: icmp_seq=1 Redirect Host(New nexthop: 192.168.178.14) + 64 bytes from 192.168.181.1: icmp_seq=1 ttl=64 time=2.43 ms + From 192.168.178.1: icmp_seq=2 Redirect Host(New nexthop: 192.168.178.14) + 64 bytes from 192.168.181.1: icmp_seq=2 ttl=64 time=2.43 ms + 64 bytes from 192.168.181.1: icmp_seq=3 ttl=64 time=0.519 ms + 64 bytes from 192.168.181.1: icmp_seq=4 ttl=64 time=0.521 ms + 64 bytes from 192.168.181.1: icmp_seq=5 ttl=64 time=0.523 ms + +.. _Firewall: + +Firewall +-------- + +FIXME + +.. _FIXMEkopierterPost: + +FIXME kopierter Post +-------------------- + +`​orginalpost <http://www.ip-phone-forum.de/showpost.php?p=1096655&postcount=22>`__ + + Nachdem was ich gelesen habe brauchst du einen Router mit Firewall. + Iptables ist die standard Linuxfirewall seit Kernel 2.4, avm hat sich + aber da was eigenes gestrickt. Als Router kannst du alles nehmen auf + dem a) Linux läuft b) eine echte Firewall läuft und c) du die + Firewallregeln veränderen kannst. Damit kannst du also eine + **fritzbox mit telnet bzw. ssh Zugang benutzen (avm firewall)**, eine + mit freetz gemoddedte fritzbox(iptables) oder einen + Linuxrechner(iptables) verwenden. Edit2: Nachdem ich noch etwas + getestet habe, habe ich jetzt festgestellt, das die avm firewall wohl + nur mit dem DSL Interface funktioniert. Wir brauchen also iptables. + +.. + + Den Linuxrechner halte ich für overkill, da du ja eh eine Fritzbox + fürs WLAN nehmen willst. Damit du dein eigenes Netz nicht unnötig + umbauen mußt würde ich eine der 7050er Fritzboxen nehmen und mit Port + A in dein Netz hängen. + + Ich versuche mal eine Anleitung: (EDIT: irgendwas geht noch nicht + richtig, siehe unten) Alles ab hier wird jetzt nur noch auf der 7050 + für den Nachbar gemacht: + +#. Die Box braucht erstmal eine interne(=dein Netz) IP, damit du drauf + zugreifen kannst. 1.Danach bekommt jeder Anschluß ein eigenes Netz + (siehe Bild1): + Webinterface→Einstellungen→System→Netzwerkeinstellungen: Alle + Computer befinden sich im selben IP-Netzwerk abschalten. Jetzt hat + jeder Anschluß ein eigenes Netz. + Wichtig hierbei ist, dass der DHCP Server für das interne Netz aus + ist, sonst hast 2 DHCP Server, die sich gegenseitig stören. +#. Die Internetverbindung wird jetzt auf Port A gestellt (siehe Bild2) + Der Witz bei der Sache ist, das man DSL Verbindung anwählt und nicht + Port A, denn dann hat man nicht mehr die verschiedenen Netze. +#. route hinzufügen: + + .. code:: bash + + Aktiv Netzwerk Subnetzmaske Gateway + X 0.0.0.0 0.0.0.0 192.168.178.1 + + 4a) routen **auf der Internet Fritzbox** hinzufügen + + .. code:: bash + + Aktiv Netzwerk Subnetzmaske Gateway + X 192.168.181.0 255.255.255.0 192.168.178.14 #LANB + X 192.168.182.0 255.255.255.0 192.168.178.14 #WLAN + X 192.168.179.0 255.255.255.0 192.168.178.14 #USB + +#. Telnet aktivieren + Gibt es genug Anleitungen im Forum. Bei den neueren Firmwares sollte + ein telnet pseudo-Image funktionieren +#. firewall + Im Moment Edit: *So weit hab ich das jetzt mal bei mir getestet und + ich kann die Box erreichen, DNS geht, auch aus den anderen Netzen. + [color=blue]Das einzige, was jetzt hier noch Probleme macht ist das + Routing zwischen den Netzen und damit auch ins Internet. Irgendwas + blockiert das Routing, mit den Einstellungen funktioniert es auf + einem Linux Rechner (forward ist an)! Vieleicht weiß jemand anderes + weiter.\ *\ `color </color>`__ Ich hatte einfach die Rückroute auf + der 2. Fritzbox fürs Internet vergessen(siehe 4a)! + +- Tags +- `firewall </tags/firewall>`__ +- `howtos </tags/howtos>`__ diff --git a/wiki/help/howtos/security/split_wlan_lan.rst b/wiki/help/howtos/security/split_wlan_lan.rst new file mode 100644 index 0000000..ac86070 --- /dev/null +++ b/wiki/help/howtos/security/split_wlan_lan.rst @@ -0,0 +1,93 @@ +.. _WLANvonLANtrennenmitiptables: + +WLAN von LAN trennen mit iptables +================================= + +Diese Anleitung erklärt, wie man den Zugriff vom WLAN der FRZITZBox +beschränken kann, um z. B. das WLAN für jeden zugänglich zu machen, ohne +das interne LAN oder die FRITZBox selbst zu gefährden. + +.. _FRITZBoxEinstellung: + +FRITZBox Einstellung +-------------------- + +Zuerst muss im FRITZBox-Webinterface unter *System → +Netzwerkeinstellungen → IP-Adressen* die Option *"Alle Computer befinden +sich im selben IP-Netzwerk"* deaktiviert sein (siehe auch +`Screenshot </screenshots/48>`__). Dabei werden nicht nur die Netze +getrennt, es entsteht auch ein neues Interface *wlan*. + +iptables +-------- + +Jetzt können die Regeln für iptables gesetzt werden. Dies sind einfache +Befehle, die auf der Kommandozeile per *telnet* oder *ssh* ausgeführt +werden. Sollen sie dauerhaft bestehen bleiben, kann man sie z.B. einfach +in die ``/var/flash/debug.cfg`` schreiben. + +.. _Netzwerksichern: + +Netzwerk sichern +~~~~~~~~~~~~~~~~ + +:: + + iptables -A FORWARD -i wlan -o dsl -j ACCEPT + iptables -A FORWARD -i wlan -j DROP + +Damit wird das interne Netz geschützt, die Box selbst jedoch nicht. + +:: + + iptables -A INPUT -i wlan -p tcp -j DROP + iptables -A INPUT -i wlan -p udp -j DROP + +Jetzt ist auch der Zugriff per TCP/UDP auf die Box blockiert, sie +antwortet dennoch auf Pings. + +.. _Zugriffeerlauben: + +Zugriffe erlauben +~~~~~~~~~~~~~~~~~ + +Allerdings ist jetzt auch der DNS-Server nicht mehr erreichbar und die +Computer im WLAN können keine Domainnamen (z. B. *www.wikipedia.org* +anstatt 145.97.39.155) mehr aufrufen. + +Die Regeln werden von iptables der Reihe nach abgearbeitet. Die Option +**-A** in den vorigen Befehlen steht für *append*, d. h. die Regeln +wurden am *Ende der Liste* eingefügt. + +Mit **-I** (für *insert*) kann man nun Regeln an den *Beginn der Liste* +setzen, um Ausnahmen für bestimmte Dienste einzurichten, z. B. für den +DNS-Server via TCP und UDP. + +:: + + iptables -I INPUT -i wlan -p tcp --dport 53 -j ACCEPT + iptables -I INPUT -i wlan -p udp --dport 53 -j ACCEPT + +Danach können Computer im WLAN wie gewohnt die Internetverbindung +benutzen ohne Zugriff auf das Webinterface der Box oder Computer im LAN +zu haben. + +Der Zugriff auf die Box lässt sich beliebig nach dem Schema + +:: + + iptables -I INPUT -i wlan -p <Protokoll> --dport <Port> -j ACCEPT + +erweitern. + +.. _Beispiele: + +Beispiele +~~~~~~~~~ + +:: + + # ssh + iptables -I INPUT -i wlan -p tcp --dport 22 -j ACCEPT + # OpenVPN + iptables -I INPUT -i wlan -p udp --dport 1194 -j ACCEPT diff --git a/wiki/help/howtos/security/switch_config.rst b/wiki/help/howtos/security/switch_config.rst new file mode 100644 index 0000000..9896b0a --- /dev/null +++ b/wiki/help/howtos/security/switch_config.rst @@ -0,0 +1,414 @@ +.. _KonfigurationdeseingebautenSwitches: + +Konfiguration des eingebauten Switches +====================================== + +(für unterstützte Modelle siehe +`unten <switch_config.html#Kompatibilität>`__) + +| For 7390 read this + `​post <http://www.ip-phone-forum.de/showthread.php?t=287518&p=2185822&viewfull=1#post2185822>`__. +| For 7490 it should be possible by altering ar7.cfg. See the following + threads: + `​1 <http://www.ip-phone-forum.de/showthread.php?t=273927>`__, + `​2 <http://www.ip-phone-forum.de/showthread.php?t=272055>`__ and + `​3 <http://www.ip-phone-forum.de/showthread.php?t=275391>`__, and + possible others. + +.. _Vorwort: + +Vorwort +------- + +Einige Modelle aus der FritzBox-Familie besitzen nicht nur einen +LAN-Port, sondern gleich vier, z.B. die 7170. Da ich selber nur die 7170 +"persönlich" kenne, möge man die nachfolgenden Worte in erster Linie als +Anleitung/Beschreibung für dieses Modell verstehen, andere Boxen bitte +ergänzen. + +Im Normalbetrieb der 7170 arbeiten die vier Ports wie ein normaler +`​Switch <http://de.wikipedia.org/wiki/Switch_(Computertechnik)>`__, +d.h. alle angeschlossenen Geräte befinden sich im gleichen Subnetz und +können direkt miteinander kommunizieren. Mit Hilfe der Originalfirmware +von AVM ist es aber auch möglich, den LAN 1-Port als WAN-Port zu nutzen +(im Webinterface *"Internetzugang via LAN 1"* auswählen), z.B. wenn man +die Box an einem Kabelmodem o.ä. betreiben will. Dazu wird der Port von +den verbleibenden drei Ports getrennt und wird als separates +WAN-Netzwerkgerät von der Firmware entsprechend konfiguriert. + +Das ist möglich, da in der FritzBox ein konfigurierbarer 5-Port-Switch +eingebaut ist: vier der Ports sind als LAN 1 bis 4 nach außen geführt, +am fünften hängt die eigentliche FritzBox, sprich die CPU. Leider bietet +AVM im Webinterface keine Möglichkeit, die Ports weitergehend +individuell zu konfigurieren. Da dies in bestimmten Fällen aber sehr +hilfreich wäre, entstand das kleine Tool +`​cpmaccfg <http://www.heimpold.de/dsmod/>`__. Es kann via +Telnet/SSH-Zugang auf der FritzBox ausgeführt - oder aber mit +`Freetz <../../../freetz.html>`__ direkt in das Firmware-Image +eingebunden werden. + +AVM hat die Schnittstelle für die Switchkonfiguration in den +Linux-Netzwerkkartentreiber (*avm_cpmac*) eingebunden, offenbar gibt es +da eine "alte" und eine "neue" Version dieser Schnittstelle. Während die +alte noch sehr weitgehenden Zugriff auf den Switch erlaubt und es +ermöglicht, das volle Potential des Switches auszuschöpfen, ist die neue +etwas "abstrakter" gehalten, was dazu führt, dass man nur noch zwischen +verschiedenen vordefinierten Konfigurationen auswählen kann. Wer vollen +Zugriff braucht, kann aber die alte Schnittstelle durch Hinzufügen von 2 +Zeilen Kernelquellcode wieder aktivieren. In Freetz passiert dies beim +Einbinden von ``cpmaccfg`` automatisch, wenn in +`menuconfig <../common/install/menuconfig.html>`__ ``replace kernel`` +ausgewählt wird. + +Das Tool cpmaccfg funktioniert auch beim Speedport W900V. + +.. _VordefinierteSwitch-Konfigurationen: + +Vordefinierte Switch-Konfigurationen +------------------------------------ + +AVM selbst hat im Kernelmodul schon verschiedene vordefinierte +Konfigurationen hinterlegt, eine ist davon ist die bereits erwähnte +Variante "Internetzugang via LAN 1", intern als ATA-Modus bezeichnet. +Hier ein Überblick über alle vordefinierten Modi: + +- **normal**: alle vier Ports arbeiten wie ein normaler Switch, der + Kernel verwendet eth0 als Netzwerkinterface (jenachdem, ob "Alle + Computer befinden sich im selben Subnetz" angekreuzt ist, wird *eth0* + noch mit den WLAN-Interfaces zu einem "lan"-Interface + zusammengebridged) +- **ata**: LAN 1 kommt im Kernel als "wan" an, die drei anderen Ports + als "eth0" (eventuelle Einbindung von *eth0* in Bridge wie im + Normalmodus) +- **split**: jedem Port wird ein einzelnes Interface zugeordnet, also + "eth0", "eth1"… +- **split_ata**: wie split, jedoch bekommt LAN 1 die Bezeichnung "wan" +- **all_ports**: im Grunde wie normal, genauer Sinn & Zweck noch + unbekannt (eventuell für Boxen mit mehr als 4 Ports gedacht?) +- **special**: siehe unten + +| Richtig Sinn ergibt das Wechseln des Modus natürlich nur, wenn man das + Häkchen bei *"Alle Computer befinden sich im selben Subnetz"* nicht + setzt, weil sonst alle verfügbaren Devices in eine Bridge gesteckt + werden. +| **UPDATE:** Es funktioniert ebenfalls sauber im + "ethmode=ethmode_bridge" da dann die Devices aus der "Bridge"-Sektion + genommen werden (und eben **nicht** aus der "eth"-Sektion). +| Im "Eth-Bridge"-Modus werden diese "einzelnen" "realen" ethX dann + jeweils in die angegebene Bridge intergiert. Ist ganz praktisch wenn + man das USB Device ("usbrndis") mal zu einem der 4 Ports zuordnen + möchte. +| Der Trick dabei ist das konfigurierte ethx-IF in der "eth"-Sektion + auch in der Bridge-Sektion aufgeführt sind. +| Beispiel: +| Man möchte LAN1 und LAN4 als eth2 und LAN2 und LAN3 als eth0 + konfigurieren. +| Dann hat man in der "eth-Sektion" eth0 und eth2 und in der + Bridge-Sektion z.B. die Bridge lan (mit if eth0) und Bridge xnet (mit + if eth2) +| Hat man beides in der ar7.cfg sauber stehen kann man problemlos + zwichen "ethmode=ethmode_bridge" und "ethmode=ethmode_router" + ("AVM-deutsch: "alle Computer befinden sich im selben Netzwerk") + umschalten (Haken setzen oder auch nicht). Und eben jetzt kann man im + "ethmode=ethmode_bridge" z.B. der Bridge "xnet" die Interfaces eth2 + und usbrndis zuordnen. Wie genau die ar7.cfg konfiguriert wird steht + weiter unten in diesem Artikel. + +Den aktuellen Modus kann man mit Hilfe von ``cpmaccfg gsm`` abfragen, +setzen ist mit ``cpmaccfg ssm <zielmodus>`` möglich. + +.. _Modusspecial: + +Modus "special" +~~~~~~~~~~~~~~~ + +Mit einem gepatchtem Kernel ist auch möglich, eigene individuelle +Port-Konfigurationen zu erstellen. Dazu dient der Modus "special", der +quasi als Platzhalter für eine Konfiguration im Kernel vorhanden ist. +Dieser Platzhalter muss zunächst mittels ``cpmaccfg ssms ...`` gefüllt +werden, anschließend kann mit ``cpmaccfg ssm special`` auf diese +Konfiguration umgeschaltet werden. + +.. _PatchdesStandard-Modus: + +Patch des Standard-Modus +~~~~~~~~~~~~~~~~~~~~~~~~ + +Die Nutzung des Special-Modus hat den Nachteil, dass die Modus erst +während des Startvorganges der Box aktiviert werden muss. Bei einer +Änderung des standardmäßig in der Box verwendeten Modus, wie z.B. +``NORMAL`` oder ``ATA``, wird der Switch automatisch beim Starten der +Box passend aufgeteilt. + +Für diese Änderung ist es notwendig, den gewünschten Modus in der Datei +``linux-2.6.19.2/drivers/net/avm_cpmac/cpphy_adm6996.c`` zu patchen. Das +folgende Beispiel beschreibt die Aufteilung des Switch in die beiden +Interface eth0 mit LAN1 und LAN2 sowie eth1 mit LAN3 und LAN4. Der +folgende Patch wurde für eine 7270 mit Firmware 76 erstellt. + +.. code:: bash + + --- linux-2.6.19.2/drivers/net/avm_cpmac/cpphy_adm6996.c_orig 2009-06-08 13:59:52.000000000 +0200 + +++ linux-2.6.19.2/drivers/net/avm_cpmac/cpphy_adm6996.c 2009-08-20 10:57:14.000000000 +0200 + @@ -137,9 +137,10 @@ + { {"", 0x0} + } + }, + - /* CPMAC_MODE_NORMAL */ { 1, 0xff, + - { {"eth0", 0x2f} + - } + + /* CPMAC_MODE_NORMAL */ { 2, 0xff, + + { {"eth0", 0x23}, + + {"eth1", 0x2c} + + } + }, + /* CPMAC_MODE_ATA */ { 2, 0, + { {"wan", 0x21}, + +Den Patch in das Verzeichnis ``/make/linux/patches/2.6.19.2`` oder ggf. +Unterordner wie z.B. ``7270_04.76`` kopieren. + +.. code:: bash + + make menuconfig + +Box konfigurieren und die Option "Replace Kernel" auswählen + +Bestehenden Kernel löschen: + +.. code:: bash + + make kernel-dirclean + +Kernel-Sourcen bereitstellen und Patchen + +.. code:: bash + + make kernel-source + +Hier kann noch kontrolliert werden, ob der Patch korrekt durchgeführt +wird. z.B.: + +.. code:: bash + + applying patch file make/linux/patches/2.6.19.2/7270_04.76/990-cpmac.patch + patching file linux-2.6.19.2/drivers/net/avm_cpmac/cpphy_adm6996.c + +Dann noch das Image erstellen: + +.. code:: bash + + make + +.. _Anpassungeninderar7.cfg: + +Anpassungen in der ar7.cfg +-------------------------- + +Die Anpassungen der ar7.cfg stellen sicher, dass die Änderungen auch bei +verschiedenen Konfiguationsänderungen, wie z.B. Aus- und Einschalten des +Wlan bestehen und und automatisch konfiguriert werden und bleiben. + +Kopie der ar7.cfg erstellen und diese bearbeiten: + +.. code:: bash + + cd /var/tmp + cat /var/flash/ar7.cfg > ar7.cfg + vi ar7.cfg + +Box muss sich im Modus "Router" befinden, dies wird mit der Option +``ethmode`` in der ar7.cfg eingestellt. + +.. code:: bash + + ethmode = ethmode_router; + +Dann muss noch der Bereich ``ethinterfaces`` verändert werden. + +Bei der Konfiguration ist folgendes zu beachten. Nur den dort +vorhandenen wird eine IP-Adresse zugewiesen. Alle anderen Interfaces +existieren zwar und können über ifconfig abgefragt oder ggf. manuell +konfiguriert werden. + +Bei den Devices kann über die Option "interfaces" Bridges automatisch +gebildet werden. Das folgende Beispiel beschreibt die Konfiguration +zweier Devices intern und extern. + +| Das Device ``extern`` wird aus dem Interface "eth1" mit der Adresse + 192.168.1.1 gebildet, das Device ``intern`` aus eth0 und den + verschiedenen WLan-Interfaces mit der Adresse 192.168.0.1. +| **UPDATE**: Wie ihr seht funktioniert das "bridgen" bereits auch + sauber in der eth-Sektion! (und AVM hat es ja auch selber mit dem + wlan-IF so gemacht) + +.. code:: bash + + ethinterfaces { + name = "extern"; + dhcp = no; + ipaddr = 192.168.1.1; + netmask = 255.255.255.0; + dstipaddr = 0.0.0.0; + interfaces = "eth1"; + dhcpenabled = no; + dhcpstart = 0.0.0.0; + dhcpend = 0.0.0.0; + } { + name = "eth0:0"; + dhcp = no; + ipaddr = 169.254.1.1; + netmask = 255.255.0.0; + dstipaddr = 0.0.0.0; + dhcpenabled = yes; + dhcpstart = 0.0.0.0; + dhcpend = 0.0.0.0; + } { + name = "intern"; + dhcp = no; + ipaddr = 192.168.0.1; + netmask = 255.255.255.0; + dstipaddr = 0.0.0.0; + interfaces = "eth0", "ath0", "wdsup1", "wdsdw1", "wdsdw2", + "wdsdw3", "wdsdw4"; + dhcpenabled = no; + dhcpstart = 192.168.0.20; + dhcpend = 192.168.0.200; + } + +Dann die bestehende ``ar7.cfg`` durch die veränderte Datei +überschreiben: + +.. code:: bash + + cat /var/tmp/ar7.cfg > /var/flash/ar7.cfg + +Dann die Änderungen mit einen Reboot oder ``ar7cfgchanged`` aktivieren. + +| Ergänzung: +| Auch der special Modus kann über die ar7.cfg konfiguriert werden. +| Als Beispiel ein Ausschnitt aus einer Alice Konfiguration) + +.. code:: bash + + cpmacspecial { + enabled = yes; + normalcfg = "eth0,1,2,3", "eth3,4"; + atacfg = "wan,1", "eth0,2,3", "eth3,4"; + } + +| und ein Anderes mit "split" Interfaces + +.. code:: bash + + cpmacspecial { + enabled = yes; + normalcfg = "eth0,1", "eth1,2", "eth2,3", "eth3,4"; + atacfg = "wan,1", "eth1,2", "eth2,3", "eth3,4"; + } + +| Der Syntax: +| modus = portmapping[, …] +| modus =: normalcfg|atacfg +| portmapping =: "netdevname,portnum[,…]" +| netdevname =: wan|eth\ `[0-3] </log/?revs=0-3>`__ (aber vielleicht + auch eigener Namen) +| portnum =: `[1-4] </log/?revs=1-4>`__ (so vielen wie es auf das Gerät + gibt) + +.. _Beispiel: + +Beispiel +-------- + +Die vier Ports sollen in zwei Gruppen aufgeteilt werden: LAN 1 und LAN 2 +sollen für das interne Netz zur Verfügung stehen (als eth0), LAN 3 und +LAN 4 werden zwei `​Freifunk <http://www.freifunk.net/>`__-Router +angeschlossen, die zusammen in einem separaten Subnetz stecken (als +*eth1*), vom internen LAN also getrennt sein sollen. + +Ruft man ``cpmaccfg`` ohne weitere Parameter auf, erscheint eine knappe +Übersicht über Kommandos und Parameter. Damit ermittelt man, welche +*PORTMASK* für die jeweiligen Interfaces zu verwenden ist. Diese +Portmaske ergibt sich aus der Logischen-Oder-Verknüpfung der jeweiligen +Portkonstanten. Das sind folgende Werte: LAN 1 = 0x01, LAN 2 = 0x02, LAN +3 = 0x04, LAN 4 = 0x08 und der CPU-Port ist 0x20. + +Für das obige Beispiel muss also folgender Befehl aufgerufen werden: + +.. code:: bash + + cpmaccfg ssms eth0 0x23 eth1 0x2c + +Man beachte, dass in beiden Portmasken der CPU-Port eingeschlossen +wurde. Macht man dies nicht, entsteht zwar das Interface, es "sieht" +aber keinen Traffic (noch nicht probiert, zu überprüfen). + +Anschließen kann mit ``cpmaccfg ssm special`` diese Konfiguration +aktiviert werden. + +.. _Sicherheits-Warnung: + +Sicherheits-Warnung +------------------- + +Beim Booten startet die Box immer im Modus **normal**, d.h.: wie und wo +man auch immer die Umschaltung in den gewünschten Modus realisiert (z.B. +per ``debug.cfg`` oder in einem Freetz Startup-Skript), es existiert +immer eine gewisse Zeitspanne, in der sich alle vier Ports im gleichen +"Layer 2-Subnetz" befinden. Erst nachdem die Umschaltung erfolgt ist, +befinden sich die Ports in getrennten "Layer 2-Netzen". Erst dann muss +eine Kommunikation über Layer 3 (IP-Ebene) erfolgen, wo eventuelle +iptables-Regeln greifen (oder halt die interne AVM-Firewall). + +Schon bevor der Kernel bootet, wird der Switch vom Bootloader als +normaler Switch konfiguriert. Die Konfiguration im Kernel umzustellen +verkürzt die Zeitspanne etwas, beseitigt aber nicht das grundsätzliche +Problem. + +Da für den Bootloader keine Quelltexte frei verfügbar sind, wäre ein +Anpassung schwierig. + +.. _Kompatibilität: + +Kompatibilität +-------------- + +- **FB 7170, Speedports W900V, W701V** Diese Boxen haben einen + eingebauten Switch (ADM6996), ``cpmaccfg`` funktioniert. +- **7270/3270** Tantos-Switches: cpmaccfg funktioniert + (`​Beweis <http://www.ip-phone-forum.de/showpost.php?p=1599909&postcount=23>`__) +- **Alice IAD 5130, Alice IAD WLAN 3331, FB 5140/3170/2170** + funktionieren ebenfalls problemlos (jeweilige akt. Firmware) + (cpmaccfg ebenso). +- **5124** sollte ebenfalls sauber funktionieren +- **7050** Kein Switch-Baustein vorhanden, es handelt sich um richtige + Netzwerkinterfaces. +- **7320** wie 7050/5050 Boxen. Es sind reale Netz-IF (eth0 & eth1) + welche auch getrennt koniguriert werden können (und das sogar + permanent in der ar7.cfg im Bridgemode). + +.. _a: + +.. _Änderungen7270v2vs.7270v3: + +Änderungen 7270v2 vs. 7270v3 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Bei der 7270v3/3270v3 hat sich der CPU Port von Bit5 auf Bit0 verschoben +und die Interface Ports sind um eins nach links gerückt. Für das obige +Beispiel muss also folgender Befehl auf der 7270v3 aufgerufen werden: + +.. code:: bash + + cpmaccfg ssms eth0 0x07 eth1 0x19 + + # eth0: Maske 0000 0111 + # eth1: Maske 0001 1001 + + # 7270v3: 0001 1111 7270v2: 0010 1111 + # x---- CPU Port -----------x + # x----- Port 1 -----------------x + # x------ Port 2 ----------------x + # x------- Port 3 ---------------x + # x--------- Port 4 --------------x diff --git a/wiki/help/howtos/security/user_management.rst b/wiki/help/howtos/security/user_management.rst new file mode 100644 index 0000000..80f859e --- /dev/null +++ b/wiki/help/howtos/security/user_management.rst @@ -0,0 +1,115 @@ +.. _Benutzerverwaltung: + +Benutzerverwaltung +================== + +.. _Benutzeranlegen: + +Benutzer anlegen +---------------- + +Nehmen wir an, der neue Benutzer soll *picard* heißen. Benutzer *root* +macht dann Folgendes: + +.. _Freetz: + +Freetz +~~~~~~ + +:: + + # Benutzer hinzufügen + adduser picard + # in buffer speichern ??? + # Persistent speichern + modsave flash + +ds-mod +~~~~~~ + +:: + + # Benutzer hinzufügen + echo "picard:*" >> /tmp/flash/shadow.save + # Persistent speichern + modsave flash + # Alle Benutzer neu laden, fehlende Heimverzeichnisse erzeugen + modpasswd load + # Paßwort vergeben (wird automatisch persistent gespeichert) + modpasswd picard + # Test + login picard + +.. _Benutzerlöschen: + +Benutzer löschen +---------------- + +Jetzt der umgekehrte Weg - Benutzer *picard* soll wieder weg. Benutzer +*root* macht dann Folgendes: + +.. _Freetz1: + +Freetz +~~~~~~ + +:: + + # Benutzer löschen + deluser picard + # Persistent speichern + modsave flash + +.. _ds-mod1: + +ds-mod +~~~~~~ + +:: + + # Heimverzeichnis löschen + rm -rf /mod/home/picard + # Temporäre Datei mit gelöschtem Benutzer erzeugen + grep -v '^picard:' /tmp/flash/shadow.save > /tmp/deleted-user + # Benutzerdatei überschreiben + mv /tmp/deleted-user /tmp/flash/shadow.save + # Persistent speichern + modsave flash + # Alle Benutzer neu laden (jetzt einen weniger) + modpasswd load + # Test (schlägt mit "Login incorrect" bei PW-Eingabe fehl) + login picard + +.. _ManuelleAnpassungen: + +Manuelle Anpassungen +-------------------- + +Um z.B. die UID anzupassen geht man nach dem erfolgreichen Anlegen wie +oben beschrieben, wie folgt vor: + +- Datei /tmp/passwd bearbeiten +- modsave flash +- modsave + +.. _Besonderheiten: + +Besonderheiten +-------------- + +.. _Dropbear: + +Dropbear +~~~~~~~~ + +In Freetz akzeptiert Dropbear standardmäßig nur Logins des Benutzers +``root``. Wer auch Anmeldungen anderer Benutzer ermöglichen will, muss +auf der Freetz-Weboberfläche die Option "Login nur für root erlauben" +deaktivieren. Das Entfernen des Patches +``make/dropbear/patches/100-root-login-only.patch`` ist - anders als in +früheren Versionen - nicht mehr nötig. + +- Tags +- `howtos </tags/howtos>`__ +- `security </tags/security>`__ +- `user </tags/user>`__ diff --git a/wiki/help/howtos/troubleshoot.rst b/wiki/help/howtos/troubleshoot.rst new file mode 100644 index 0000000..bf3828b --- /dev/null +++ b/wiki/help/howtos/troubleshoot.rst @@ -0,0 +1,15 @@ +.. _Troubleshooting: + +Troubleshooting +=============== + +Probleme hat niemand gerne - und wer sie dann doch hat, ist sie ganz +gern wieder los. Die Dokumente in dieser Rubrik sollen dabei helfen. +Eine Übersicht bereits vorhandener Themen findet sich rechts im +Inhaltsverzeichnis. + +Natürlich ist jeder, der gerade ein Problem erfolgreich lösen konnte, +dazu eingeladen, selbiges inklusive der Lösung als Artikel hier +hinzuzufügen! Wer so etwas noch nie gemacht hat, findet in den +`WikiTips <../wikiedit.html>`__ Informationen, wie das zu +bewerkstelligen ist. diff --git a/wiki/help/howtos/troubleshoot/reboots.rst b/wiki/help/howtos/troubleshoot/reboots.rst new file mode 100644 index 0000000..8ae750a --- /dev/null +++ b/wiki/help/howtos/troubleshoot/reboots.rst @@ -0,0 +1,32 @@ +.. _HäufigeselbständigeReboots: + +Häufige selbständige Reboots +============================ + +Wenn die Box mehrmals wöchentlich (oder gar täglich) ohne erkennbaren +Grund neu durchstartet, kann das durchaus daran liegen, dass es ihr zu +heiß geworden ist. Wozu oft mehrere Dinge beitragen, sodass es sich +nicht unbedingt als Grund aufdrängt: Werden die Reboots z.B. nach der +De-Installation eines Paketes seltener, kann der Grund sein, dass die +CPU weniger beansprucht wird (ja, es gibt einige Pakete, die recht viel +tun - `Tor <../../../packages/tor.html>`__ ist ein Beispiel dafür, siehe +`​IPPF +Thread <http://www.ip-phone-forum.de/showpost.php?p=1171014&postcount=2>`__) +- und der "Peak" von daher erst später auftritt. + +Es schadet also keinesfalls, die Umgebung um die Box einer kleinen +Prüfung zu unterziehen: Steht sie vielleicht direkt auf einem anderen, +heißen Gerät (Router, oder was auch immer)? Eine Positionsänderung kann +hier Wunder wirken. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​IPPF + Thread <http://www.ip-phone-forum.de/showpost.php?p=1171014&postcount=2>`__ + zum Thema "Tor heizt ein" (hohe CPU-Last, Reboots) +- `​noch ein IPPF + Thread <http://www.ip-phone-forum.de/showthread.php?t=172138>`__ zum + Thema "selbständige Reboots" mit "Hardware-Lösung" (Kühlkörper) diff --git a/wiki/help/howtos/troubleshoot/recover_firmware.rst b/wiki/help/howtos/troubleshoot/recover_firmware.rst new file mode 100644 index 0000000..e8c7aec --- /dev/null +++ b/wiki/help/howtos/troubleshoot/recover_firmware.rst @@ -0,0 +1,31 @@ +.. _OriginalFirmwarewiederherstellen: + +Original Firmware wiederherstellen +================================== + +Wenn die Box nicht mehr ansprechbar ist, die Power LED leuchtet und die +übrigen LEDs in regelmäßigen Abständen aufblinken, dann kann folgende +Vorgehensweise die Box wieder zum Leben erwecken. In diesen Fällen ist +mtd1 (Kernel + Filesystem) betroffen, nicht mtd3 / mtd4 (|Warning| mtd2 auf +**KEINEN** Fall anrühren). + +#. Der Computer muss sich im gleichen Subnetz (und auch + Broadcast-Domäne) wie die Box befinden: 192.168.178.0/24 (|Warning| + Achtung: Die Boot-IP der Box muss nicht gleich der IP im normalen + Betrieb sein!) +#. ``make recover`` +#. Den Anweisungen folgen (zur Zeit leider nicht bei allen + Fritzbox-Typen möglich) + +Am bequemsten funktioniert es, wenn nach einem ``make`` Freetz noch +nicht mit ``make clean``, ``make dirclean`` oder ``make distclean`` +bereinigt wurde, und noch eine für die Box passende Konfiguartion des +Mods vorhanden ist. In diesem Fall lädt ``make recover`` die +unmodifizierte original Firmware auf die Box. + +- Tags +- `firmware </tags/firmware>`__ +- `howtos </tags/howtos>`__ + +.. |Warning| image:: ../../../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/help/howtos/troubleshoot/repair_phonebook.rst b/wiki/help/howtos/troubleshoot/repair_phonebook.rst new file mode 100644 index 0000000..a188821 --- /dev/null +++ b/wiki/help/howtos/troubleshoot/repair_phonebook.rst @@ -0,0 +1,69 @@ +.. _KaputtesTelefonbuchreparieren: + +Kaputtes Telefonbuch reparieren +=============================== + +.. _Symptom: + +Symptom +------- + +Es können keine neuen Einträge hinzugefügt werden. Beim Versuch dessen +kommt die Fehlermeldung: + + FEHLER: Telefonbucheintrag fehlerhaft + +.. _Ursache: + +Ursache +------- + +Die Datei ``/var/flash/phonebook`` hat es "zerlegt" - wie und warum auch +immer. + +.. _Lösung: + +Lösung +------ + +Wie der Pfad unter *Überschrift* schon andeutet, ist eine Datei im Flash +kaputt - die also "nur" durch eine heile ersetzt werden muss. Wohl dem, +der noch ein Freetz Backup hat - für alle anderen hilft es nur, das +Telefonbuch komplett zu leeren: + +:: + + touch /tmp/leeredatei + cat /tmp/leeredatei > /var/flash/phonebook + rm /tmp/leeredatei + +Anschließend die Box neu starten (am besten, indem man sie kurz vom Netz +trennt - bei einem normalen "Reboot" könnte sie sonst auf den Gedanken +kommen, vor dem Herunterfahren wieder die kaputte Version aus dem RAM in +den Flash zu speichern. + +Wer nun noch ein Freetz Backup von einem Zeitpunkt hat, wo das +Telefonbuch noch in Ordnung war, kann aus dieser Archivdatei einfach das +Telefonbuch entpacken, auf den USB-Stick bzw. ins RAM der Box kopieren, +und selbige anstatt der leeren Datei zum Überschreiben des Telefonbuches +im Flash benutzen: + +:: + + # Auf dem PC + tar czf freetz-backup.tar.gz flash/phonebook + scp flash/phonebook root@fritz.box:/tmp/newphonebook + rm flash/phonebook + rmdir flash + # Auf der Box + cat /tmp/newphonebook > /var/flash/phonebook + rm /tmp/newphonebook + +Und dann wieder den Stromstecker ziehen, wie oben beschrieben. + + *Quelle:*\ `​IPPF + Thread <http://www.ip-phone-forum.de/showthread.php?t=176144>`__ + +- Tags +- `help <../../../help.html>`__ +- `howtos </tags/howtos>`__ diff --git a/wiki/help/irc.en.rst b/wiki/help/irc.en.rst new file mode 100644 index 0000000..f74f0fd --- /dev/null +++ b/wiki/help/irc.en.rst @@ -0,0 +1,15 @@ +If you need instant help you can try the fritzbox IRC channel. Some of +the developers are known to sometimes hang out on there: ##fritzbox on +Freenode. + +.. code:: bash + + Server="chat.freenode.net" + Port="6667" + Channel="##fritzbox" + +If you have any trouble while connecting (Unauthorized connection), +please use an alternative server. Maybe you need one from your country. +You could find an overview about the Freenod-servers here: + + `​http://freenode.net/irc_servers.shtml <http://freenode.net/irc_servers.shtml>`__ diff --git a/wiki/help/irc.rst b/wiki/help/irc.rst new file mode 100644 index 0000000..c5718ef --- /dev/null +++ b/wiki/help/irc.rst @@ -0,0 +1,81 @@ +.. _Intro: + +Intro +----- + +| Wer den direkten Kontakt zur Freetz-Community sucht, kann das gerne + über IRC tun. Dazu benötigt man lediglich einen + `​Web-Browser <http://webchat.freenode.net/>`__ oder IRC-Client. +| Der IRC-Kanal ("Chatraum") nennt sich **##fritzbox** und befindet sich + im Freenode (IRC-Server). +| Auf ##fritzbox werden Themen rund um Freetz und allgemein zu FritzBox + diskutiert. + +**Zugangsdaten:** + +.. code:: bash + + Server="chat.freenode.net" + Port="6667" + Channel="##fritzbox" + +|Warning| Grundsätzlich: Bitte einfach Eure Fragen stellen, Antworten +können manchmal dauern (siehe "IRC Netiquette"). + +.. _IRCNetiquette: + +IRC Netiquette +-------------- + +Auch im IRC gibt es "Benimmregeln" und die Einhaltung sollten helfen +dieses Kommunikationsmedium (effektiv) zu nutzen. Schliesslich hat man +Fragen, die man gerne beantwortet haben möchte. Die +`​Benimmregeln <http://channel.debian.de/netiquette/ch-rules.html>`__ +aus dem "Netiquette & HOWTO für #debian.de" sind nicht verpflichtend, +geben aber einige Hinweise, wie man "Fettnäpfchen" vermeiden kann. + +.. _TroubleshootingIRC: + +Troubleshooting IRC +------------------- + +Unauthorized connection + + | Falls es Probleme beim Verbinden gibt (z.B. Fehlermeldung: + "Unauthorized connection"), so kann man versuchen einen + alternativen IRC-Server zu verwenden. + | Tipp: Einen IRC-Server aus dem eigenen Land verwenden! Eine + Übersicht aller Server im Freenode gibt es + `​hier <http://freenode.net/irc_servers.shtml>`__. + +.. _KonfigurationChatzilla-PlugininFirefox: + +Konfiguration Chatzilla-Plugin in Firefox +----------------------------------------- + +.. figure:: /screenshots/25.jpg + :alt: IRC Chatzilla Window + + IRC Chatzilla Window + +| +| Ebenfalls kann das Chatzilla-Plugin für den Firefox genutzt werden + (`​Download <https://addons.mozilla.org/de/firefox/addon/16>`__). +| Einstellen des Chatzilla-Plugins: +| 1.) Chatzilla installieren +| 2.) Unter **Chatzilla** ⇒ **Einstellungen** ⇒ **Globale + Einstellungen** ⇒ **Allgemein** einen **Benutzernamen** und einen + **Nick** vergeben. +| 3.) Chatzilla wieder beenden +| 4.) Nun diesen Link anklicken: + `​irc://chat.freenode.net/##fritzbox <irc://chat.freenode.net/##fritzbox>`__ +| 5.) Chatzilla sollte sich nun im Fritzbox-Chat mit Eurem neu + vergebenen Nick einloggen (siehe Bild oben) +| 6.) Dann unter **IRC** den Haken bei **Chanel beim starten** + aktivieren + +Ab sofort verbindet man sich automatisch mit jedem Start von Chatzilla +zu ##fritzbox. + +.. |Warning| image:: ../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/help/trouble_shooting.rst b/wiki/help/trouble_shooting.rst new file mode 100644 index 0000000..ab0b13e --- /dev/null +++ b/wiki/help/trouble_shooting.rst @@ -0,0 +1,51 @@ +.. _Troubleshooting: + +Troubleshooting +--------------- + +.. _Troubleshooting.config: + +Troubleshooting .config +~~~~~~~~~~~~~~~~~~~~~~~ + +| Je nach Änderungen am Buildsystem und Config-Variablen kann eine + existierende (alte) ``.config`` Datei eingeschränkt oder garnicht mehr + verwendet werden. +| Mögliche Abhilfe: + +.. code:: bash + + $ yes "" || make oldconfig <--- Alte .config Datei auffrischen + oder + $ make menuconfig <--- Ggf. .config Datei neu erstellen + +.. _TroubleshootingBuild-Abbruch: + +Troubleshooting Build-Abbruch +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +|Warning| Sollte während des Build-Prozesses ein Abbruch auftreten, so kann +man versuchen diese Strategien anzuwenden: + +Einzelnes Paketes erneut erstellen: + +.. code:: bash + + $ make iptables-dirclean <--- Sourceverzeichnis eines problematischen Package löschen (hier: iptables) + weiter mit + $ make iptables-precompiled <--- Versuchen problematisches Package von Anfang neu zu bauen + +Von Anfang neu bauen: + +.. code:: bash + + $ make dirclean <--- Source-Verzeichnisse aller bisher erstellter Software löschen + weiter mit + $ make <--- Versuchen problematische Software von Anfang neu zu bauen + +Bei Nichterfolg können `Wiki, Forum und +IRC <../index.html#WikiForumundIRC>`__ genutzt werden, um das Problem +weiter zu behandeln. + +.. |Warning| image:: ../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/help/wikiedit.rst b/wiki/help/wikiedit.rst new file mode 100644 index 0000000..3d8c30d --- /dev/null +++ b/wiki/help/wikiedit.rst @@ -0,0 +1,75 @@ +.. _WikiBearbeitung-TippsundTricks: + +Wiki Bearbeitung - Tipps und Tricks +=================================== + +"Erste Hilfe" zu Formatierungsfragen findet sich zwar bereits in den +zugehörigen `Hilfe-Seiten <../WikiFormatting.html>`__ der genutzten +Software. Doch dort kann freilich nicht auf alles eingegangen werden: +Zum Einen hinken Hilfe-Seiten bekanntlich der Software-Entwicklung +hinterher - und zum Anderen können die Entwickler ja nicht wissen, +welche Addons/Plugins letztendlich noch zusätzlich installiert werden. + +Also bitte einfach alle Links auf dieser Seite ausprobieren, bis das +passende gefunden wurde |:))| + +.. _ErsteSchritte: + +Erste Schritte +-------------- + +Bei Freetz verwenden wir ein *hierarchisches Wiki*. Bevor man einen +neuen Artikel anlegt, sollte man sich daher Gedanken machen, wo er +hingehört. Ein paar Beispiele sollen dies veranschaulichen: + +- Dokumentation zu einem Paket gehören nach ``packages/<paketname>`` +- Dokumentation zu einem Patch entsprechend nach + ``patches/<patchname>`` +- Howtos sind unter ``help/howtos/`` angesiedelt, und dort auch + nochmals in Themengebiete untergliedert: + + - ``help/howtos/security`` ist der Startpunkt für + sicherheitsrelevante Dinge + - ``help/howtos/development`` für Entwickler-Informationen (und + alles, was damit zusammenhängt) + - ``help/howtos/troubleshoot`` für alle möglichen Probleme mit den + zugehörigen Lösungen + - ``help/howto/common`` für allgemeine Howtos + +Der komplette Artikelpfad ist in :sub:`Kleinbuchstaben` zu halten, die +einzelnen Elemente möglichst in Englischer Sprache. + +Am besten einfach ein paar Artikel anschauen, die ähnliche Kriterien wie +der zu erstellende Artikel aufweisen - und schauen, wo diese abgelegt +sind. + +Eine gute Idee ist es auch, den Artikel mit passenden *Tags* zu versehen +(dafür gibt es unter der "Textarea" ein Feld *Tag under*). Verfügbare +Tags lassen sich über den Link "`view all tags </tags>`__" direkt über +diesem Feld anzeigen. Ausführlichere Hilfe hierzu findet sich +`hier <wikiedit/tagging.html>`__. + +Auf diese Weise helft Ihr gleich mit, Ordnung zu halten. Aber keine +Panik: Sollte einmal ein Artikel an falscher Stelle eingeordnet worden +sein, lässt er sich im Nachhinein immer noch an die richtige Stelle +schieben. Besser den Artikel falsch platziert, als gar nicht +geschrieben! + +.. _WeitereLektüre: + +Weitere Lektüre +--------------- + +Damit die Artikel immer besser werden, seien die hier verlinkten +Hinweise jedem ans Herz gelegt. Nicht unbedingt in der Reihenfolge, wie +sie im Inhaltsverzeichnis auf der rechten Seite aufgelistet sind - aber +die `Formatierungs Guidelines <wikiedit/formatting_guide.html>`__ sind +ein guter nächster Schritt. Alle anderen Punkte ergeben sich dann je +nach Bedarf. + +- Tags +- `help <../help.html>`__ +- `wikiedit </tags/wikiedit>`__ + +.. |:))| image:: ../../chrome/wikiextras-icons-16/smiley-grin.png + diff --git a/wiki/help/wikiedit/formatting_guide.rst b/wiki/help/wikiedit/formatting_guide.rst new file mode 100644 index 0000000..90f1484 --- /dev/null +++ b/wiki/help/wikiedit/formatting_guide.rst @@ -0,0 +1,163 @@ +.. _Formatierungs-Guidelines: + +Formatierungs-Guidelines +======================== + +Damit ein Wiki "wie aus einem Guss" wirken kann, sind einheitliche +Formatierungen vonnöten. Daher soll an dieser Stelle einmal kurz +aufgezeigt werden, nach welchen "Richtlinien" bislang vorgegangen wurde +- was natürlich als Anhaltspunkt bei der Erstellung neuer sowie der +Bearbeitung existierender Artikel gut geeignet sein sollte. + +.. _Beispiel-Artikel: + +Beispiel-Artikel +---------------- + +Die Zusammenfassung einmal vorab: So könnte der Artikel für ein fiktives +Paket namens *dummy* aussehen: + +.. code:: bash + + [[TOC(heading=Inhaltsverzeichnis)]] + + = dummy = + + '''dummy''' ist ein Paket, das es nicht wirklich gibt. + Wirklich geben tut es hingegen Pakete wie [wiki:packages/callmonitor CallMonitor] + und [wiki:packages/dtmfbox DTMFBox]. + + == Installation == + Die Installation erfolgt wie bei den meisten Paketen direkt bei der + [wiki:help/howtos/common/installation Erstellung des Freetz-Images], indem das Paket + einfach in der + [wiki:help/howtos/common/installation/menuconfig menuconfig] mit ausgewählt wird. + + == Einrichtung == + ''dummy'' verfügt über eine Konfigurations-Oberfläche, in der sich alle notwendigen + Einstellungen tätigen lassen: + [[Screenshot(123)]] + * '''Starttyp''': "Automatisch", wenn ''dummy'' nach jedem Reboot automatisch + gestartet werden soll. + * '''Punkt1''': Hier trägt man was ein + * '''Punkt2''': blabla... + + == Besonderheiten == + ''dummy'' kann auch zu Debugging-Zwecken mit {{{dummy -D}}} direkt von der Kommandozeile + gestartet werden. Ein Skript für Trallalla könnte so aussehen: + {{{ + #!sh + # Irgendwas machen + echo "Trallala!" + # Tschüß sagen + echo "Warnurspaß!" + exit 0 + }}} + + == Weiterführende Links == + * [http://de.wikipedia.org/wiki/Lillibullero Wikipedia Artikel zu Trallala] + * [http://www.wehavemorefun.de/ More fun to come] (Englisch) + +.. _Inhaltsverzeichnis: + +Inhaltsverzeichnis +------------------ + +| ``[[TOC(heading=Inhaltsverzeichnis)]]`` +| Die erste Zeile unseres Beispiel-Artikels enthält den Aufruf eines + `Makros <../../TracWikiMacros.html>`__, das ein automatisches + Inhaltsverzeichnis erstellt. Das macht natürlich nur dann Sinn, wenn + der Artikel auch mehrere (mindestens 3) Überschriften enthält. In + userem Beispiel haben wir dem Makro genau einen Parameter mitgegeben: + Die Überschrift (engl.: heading) des Inhaltverzeichnisses soll + natürlich bei einem deutschsprachigen Artikel auch Deutsch sein. + Default wäre hier Englisch, und zwar "Table of Contents". + +Ausführlichere Hilfe zum Inhaltsverzeichnis gibt es `hier <toc.html>`__. + +.. _Überschriften: + +Überschriften +------------- + +| ``= dummy =`` +| Wir beginnen unseren Artikel mit einer Überschrift "Ebene 1" - nennen + wir sie der Einfachheit halber "Hauptüberschrift". In der Regel ist + dies die einzige Hauptüberschrift eines Artikels. Nach "unten" stufen + wir schrittweise ab - Sprünge machen wenig Sinn. + +.. _Artikeltext: + +Artikeltext +----------- + +| ``'''dummy''' ist ein Paket...`` +| Es ist meist sinnvoll, die erste Erwähnung des Paketnamens mit + Fettdruck zu versehen - insbesondere, wenn man eine davon abweichende + Hauptüberschrift gewählt hat. Hat das Projekt eine Homepage, so macht + es auch Sinn, diese hier zu verlinken. In diesem Falle sähe der Anfang + dann etwa so aus: + +``'''[http://www.dummy.dom/ dummy]''' ist ein Paket...`` + +Anschließend geht es nach gesundem Menschenverstand mit dem passenden +Fließtext weiter, es folgen Aufzählungen, oder was auch sonst in diesem +Zusammenhang benötigt wird. + +.. _Screenshots: + +Screenshots +----------- + +| ``[[Screenshot(123)]]`` +| Screenshots und andere Bilder verwalten wir hier mit dem + ScreenshotsPlugin. Näheres zum Umgang damit findet sich `an dieser + Stelle <screenshots.html>`__ ausführlich beschrieben. + +.. _BesondereFormatierungen: + +Besondere Formatierungen +------------------------ + +Gesondert hervorgehoben werden sollten: + +- Dateinamen, Pfade, Kommandozeilen-Befehle: eingeschlossen in + dreifache geschweifte Klammern (``{{{Befehl``}}}) +- Bezüge (wie in unserem Beispiel die Beschreibung der einzelnen + Konfigurationspunkte) in **Fettdruck** +- weitere Erwähnungen des Paketnamens (oder auch andere Eigennamen) + *kursiv* +- mehrzeilige Skript-Fragmente (oder auch vollständige Skripte) in + Code-Blöcken (siehe Beispiel). Für das Syntax-Highlighting gibt es + verschiedene `WikiProcessors <../../WikiProcessors.html>`__ - das + Beispiel benutzt den für Shell-Skript zuständigen. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +Eine gute Sache ist es auch, interessante Links zum Artikel am Ende +(nochmals) zusammenfassend aufzuzählen - auch wenn sie bereits im +Artikeltext selbst benutzt (verlinkt) wurden. Dann muss man nicht ewig +nach ihnen suchen |:)| + +.. _Tags: + +Tags +---- + +**Nach dem Speichern** des Artikels klicken wir nun nochmals auf den +*Edit* Button, um den Artikel mit den passenden `Tags <tagging.html>`__ +zu versehen. Gleichzeitig klappt das leider nicht (Bug im TagsPlugin: Es +werden dann zwar die Tags aktualisiert, aber der ganze Artikeltext, bzw. +die gemachten Änderungen, gehen verloren). Wozu Tags nun wiederum +wichtig sind, und wie man sie verwendet, findet sich im gerade dazu +verlinkten Artikel. + +- Tags +- `help <../../help.html>`__ +- `wikiedit </tags/wikiedit>`__ + +.. |:)| image:: ../../../chrome/wikiextras-icons-16/smiley.png + diff --git a/wiki/help/wikiedit/goodies.rst b/wiki/help/wikiedit/goodies.rst new file mode 100644 index 0000000..1e6b0aa --- /dev/null +++ b/wiki/help/wikiedit/goodies.rst @@ -0,0 +1,209 @@ +.. _WikiGoodies: + +Wiki Goodies +============ + +Die "Goodies" sind eines der "Addons", die hier im Freetz Wiki +installiert sind. Sie bieten eine Reihe von Verschönerungen und +Formatierhilfen: + +.. _Smileys: + +Smileys +------- + ++---------+-----------+--+---------+-----------+--+--------+----------+--+---------+----------+--+--------+-----+ +| |(!)|  | (!) Warning | | |(OK)|  | (OK) (Y) | | |:))|  | :)) :-)) | | |:-o|  | :-o :o | | |{*}|  | {*} | ++---------+-----------+--+---------+-----------+--+--------+----------+--+---------+----------+--+--------+-----+ +| |(*)|  | (*) | | |(X)|  | (X) | | |:-?|  | :-? :? | | |:-\||  | :-\| :\| | | |{o}|  | {o} | ++---------+-----------+--+---------+-----------+--+--------+----------+--+---------+----------+--+--------+-----+ +| |(./)|  | (./) | | |8-)|  | 8-) | | |:-D|  | :-D :D | | |;)|  | ;) ;-) | |   | | ++---------+-----------+--+---------+-----------+--+--------+----------+--+---------+----------+--+--------+-----+ +| |(?)|  | (?) | | |8-O|  | 8-O B-O | | |:-O|  | :-O :O | | |<!>|  | | |   | | ++---------+-----------+--+---------+-----------+--+--------+----------+--+---------+----------+--+--------+-----+ +| |(I)|  | (I) | | |:(|  | :( :-( | | |:-P|  | :-P :P | | |>:>|  | >:> | |   | | ++---------+-----------+--+---------+-----------+--+--------+----------+--+---------+----------+--+--------+-----+ +| |(N)|  | (N) (NOK) | | |:)|  | :) :-) =) | | |:-X|  | :-X :X | | |B-)|  | B-) | |   | | ++---------+-----------+--+---------+-----------+--+--------+----------+--+---------+----------+--+--------+-----+ + +.. _Symbols: + +Symbols +------- + ++----+------+--+----+-----+--+----+-----+--+----+-----+--+----+-----+ +| ©  | (C) | | —  | -- | | ¼  | 1/4 | | ⇔  | <=> | | ∨  | \\/ | ++----+------+--+----+-----+--+----+-----+--+----+-----+--+----+-----+ +| ®  | (R) | | →  | -> | | ¾  | 3/4 | | ≠  | <> | |   | | ++----+------+--+----+-----+--+----+-----+--+----+-----+--+----+-----+ +| ™  | (TM) | | …  | ... | | ←  | <- | | ≤  | =< | |   | | ++----+------+--+----+-----+--+----+-----+--+----+-----+--+----+-----+ +| ©  | (c) | | ∧  | /\\ | | ↔  | <-> | | ⇒  | => | |   | | ++----+------+--+----+-----+--+----+-----+--+----+-----+--+----+-----+ +| ±  | +/- | | ½  | 1/2 | | ⇐  | <= | | ≥  | >= | |   | | ++----+------+--+----+-----+--+----+-----+--+----+-----+--+----+-----+ + +.. _Entities: + +Entities +-------- + ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Æ  | Æ | | à  | à | | ℑ  | ℑ | | ′  | ′ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Á  | Á | | ℵ  | ℵ | | ∞  | ∞ | | ∏  | ∏ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +|   |  | | α  | α | | ∫  | ∫ | | ∝  | ∝ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| À  | À | | &  | & | | ι  | ι | | ψ  | ψ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Α  | Α | | ∧  | ∧ | | ¿  | ¿ | | "  | " | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Å  | Å | | ∠  | ∠ | | ∈  | ∈ | | ⇒  | ⇒ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| à | à | | å  | å | | ï  | ï | | √  | √ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Ä  | Ä | | ≈  | ≈ | | κ  | κ | | 〉  | ⟩ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Β  | Β | | ã  | ã | | ⇐  | ⇐ | | »  | » | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Ç  | Ç | | ä  | ä | | λ  | λ | | →  | → | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Χ  | Χ | | „  | „ | | 〈  | ⟨ | | ⌉  | ⌉ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| ‡  | ‡ | | β  | β | | «  | « | | ”  | ” | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Δ  | Δ | | ¦  | ¦ | | ←  | ← | | ℜ  | ℜ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Р | Ð | | •  | • | | ⌈  | ⌈ | | ®  | ® | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| É  | É | | ∩  | ∩ | | “  | “ | | ⌋  | ⌋ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Ê  | Ê | | ç  | ç | | ≤  | ≤ | | ρ  | ρ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| È  | È | | ¸  | ¸ | | ⌊  | ⌊ | | ‏  | ‏ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Ε  | Ε | | ¢  | ¢ | | ∗  | ∗ | | ›  | › | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Η  | Η | | χ  | χ | | ◊  | ◊ | | ’  | ’ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Ë  | Ë | | ˆ  | ˆ | | ‎  | ‎ | | ‚  | ‚ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Γ  | Γ | | ♣  | ♣ | | ‹  | ‹ | | š  | š | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Í  | Í | | ≅  | ≅ | | ‘  | ‘ | | ⋅  | ⋅ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Π | Î | | ©  | © | | <  | < | | §  | § | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Ì  | Ì | | ↵  | ↵ | | ¯  | ¯ | | ­  | ­ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Ι  | Ι | | ∪  | ∪ | | —  | — | | σ  | σ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Ï  | Ï | | ¤  | ¤ | | µ  | µ | | ς  | ς | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Κ  | Κ | | ⇓  | ⇓ | | ·  | · | | ∼  | ∼ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Λ  | Λ | | †  | † | | −  | − | | ♠  | ♠ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Μ  | Μ | | ↓  | ↓ | | μ  | μ | | ⊂  | ⊂ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Ñ  | Ñ | | °  | ° | | ∇  | ∇ | | ⊆  | ⊆ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Ν  | Ν | | δ  | δ | |    |   | | ∑  | ∑ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Œ  | Œ | | ♦  | ♦ | | –  | – | | ¹  | ¹ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Ó  | Ó | | ÷  | ÷ | | ≠  | ≠ | | ²  | ² | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Ô  | Ô | | é  | é | | ∋  | ∋ | | ³  | ³ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Ò  | Ò | | ê  | ê | | ¬  | ¬ | | ⊃  | ⊃ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Ω  | Ω | | è  | è | | ∉  | ∉ | | ⊇  | ⊇ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Ο  | Ο | | ∅  | ∅ | | ⊄  | ⊄ | | ß  | ß | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Ø  | Ø | |    |   | | ñ  | ñ | | τ  | τ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Õ  | Õ | |    |   | | ν  | ν | | ∴  | ∴ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Ö  | Ö | | ε  | ε | | ó  | ó | | θ  | θ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Φ  | Φ | | ≡  | ≡ | | ô  | ô | | ϑ  | ϑ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Π  | Π | | η  | η | | œ  | œ | |    |   | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| ″  | ″ | | ð  | ð | | ò  | ò | | þ  | þ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Ψ  | Ψ | | ë  | ë | | ‾  | ‾ | | ˜  | ˜ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Ρ  | Ρ | | €  | € | | ω  | ω | | ×  | × | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Š  | Š | | ∃  | ∃ | | ο  | ο | | ™  | ™ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Σ  | Σ | | ƒ  | ƒ | | ⊕  | ⊕ | | ⇑  | ⇑ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Þ  | Þ | | ∀  | ∀ | | ∨  | ∨ | | ú  | ú | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Τ  | Τ | | ½  | ½ | | ª  | ª | | ↑  | ↑ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Θ  | Θ | | ¼  | ¼ | | º  | º | | û  | û | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Ú  | Ú | | ¾  | ¾ | | ø  | ø | | ù  | ù | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Û  | Û | | ⁄  | ⁄ | | õ  | õ | | ¨  | ¨ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Ù  | Ù | | γ  | γ | | ⊗  | ⊗ | | ϒ  | ϒ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Υ  | Υ | | ≥  | ≥ | | ö  | ö | | υ  | υ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Ü  | Ü | | >  | > | | ¶  | ¶ | | ü  | ü | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Ξ  | Ξ | | ⇔  | ⇔ | | ∂  | ∂ | | ℘  | ℘ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Ý  | Ý | | ↔  | ↔ | | ‰  | ‰ | | ξ  | ξ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Ÿ  | Ÿ | | ♥  | ♥ | | ⊥  | ⊥ | | ý  | ý | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| Ζ  | Ζ | | …  | … | | φ  | φ | | ¥  | ¥ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| á  | á | | í  | í | | π  | π | | ÿ  | ÿ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| â  | â | | î  | î | | ϖ  | ϖ | | ζ  | ζ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| ´  | ´ | | ¡  | ¡ | | ±  | ± | | ‍  | ‍ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ +| æ  | æ | | ì  | ì | | £  | £ | | ‌  | ‌ | ++----+-----------+--+----+-----------+--+-----+-----------+--+-----+------------+ + +- Tags +- `help <../../help.html>`__ +- `wikiedit </tags/wikiedit>`__ + +.. |(!)| image:: ../../../chrome/wikiextras-icons-16/exclamation.png +.. |(OK)| image:: ../../../chrome/wikiextras-icons-16/thumb-up.png +.. |:))| image:: ../../../chrome/wikiextras-icons-16/smiley-grin.png +.. |:-o| image:: ../../../chrome/wikiextras-icons-16/smiley-surprise.png +.. |{*}| image:: ../../../chrome/wikiextras-icons-16/stable.png +.. |(*)| image:: ../../../chrome/wikiextras-icons-16/asterisk.png +.. |(X)| image:: ../../../chrome/wikiextras-icons-16/cross-circle.png +.. |:-?| image:: ../../../chrome/wikiextras-icons-16/smiley-confuse.png +.. |:-\|| image:: ../../../chrome/wikiextras-icons-16/smiley-neutral.png +.. |{o}| image:: ../../../chrome/wikiextras-icons-16/testing.png +.. |(./)| image:: ../../../chrome/wikiextras-icons-16/tick.png +.. |8-)| image:: ../../../chrome/wikiextras-icons-16/smiley-nerd.png +.. |:-D| image:: ../../../chrome/wikiextras-icons-16/smiley-lol.png +.. |;)| image:: ../../../chrome/wikiextras-icons-16/smiley-wink.png +.. |(?)| image:: ../../../chrome/wikiextras-icons-16/question.png +.. |8-O| image:: ../../../chrome/wikiextras-icons-16/smiley-eek.png +.. |:-O| image:: ../../../chrome/wikiextras-icons-16/smiley-red.png +.. |<!>| image:: ../../../chrome/wikiextras-icons-16/exclamation-red.png +.. |(I)| image:: ../../../chrome/wikiextras-icons-16/light-bulb.png +.. |:(| image:: ../../../chrome/wikiextras-icons-16/smiley-sad.png +.. |:-P| image:: ../../../chrome/wikiextras-icons-16/smiley-razz.png +.. |>:>| image:: ../../../chrome/wikiextras-icons-16/smiley-evil.png +.. |(N)| image:: ../../../chrome/wikiextras-icons-16/thumb.png +.. |:)| image:: ../../../chrome/wikiextras-icons-16/smiley.png +.. |:-X| image:: ../../../chrome/wikiextras-icons-16/smiley-zipper.png +.. |B-)| image:: ../../../chrome/wikiextras-icons-16/smiley-cool.png + diff --git a/wiki/help/wikiedit/screenshots.rst b/wiki/help/wikiedit/screenshots.rst new file mode 100644 index 0000000..8f18437 --- /dev/null +++ b/wiki/help/wikiedit/screenshots.rst @@ -0,0 +1,114 @@ +.. _Screenshots: + +Screenshots +=========== + +Hier möchte ich ein paar Tipps zum Umgang mit Screenshots geben: + +.. _Screenhotshochladen: + +Screenhots hochladen +-------------------- + +.. figure:: /screenshots/37.png + :alt: Trac: Screenshots hochladen + + Trac: Screenshots hochladen + +Wer die nötigen Berechtigungen dafür hat, kann auch selbst Screenshots +hochladen. Die Möglichkeit dazu findet sich, wenn man in der Navbar oben +auf "Screenshots" klickt (damit gelandt man zunächst zur "Matrix-View"), +und dort den Button "Add" betätigt. Damit gelang man zur nebenstehenden +Maske. + +Für jeden klar ist sicherlich, wie das hochzuladene Bild auszuwählen +ist. Wichtig ist aber auch, dass ein kurzer, aber aussagekräftiger +**Name** (dieser erscheint dann in der "Matrix-View" unterhalb des +Bildes) sowie auch eine prägnante, nicht zu lange **Description** +(Beschreibung - diese wird später unterhalb des Bildes angezeigt, wenn +es `in einem Wiki-Artikel +referenziert <screenshots.html#Screenshotsreferenzieren>`__ wurde) +einzutragen. Das erleichtert später sowohl das Auffinden, als auch das +Einbinden des Screenshots in einen Artikel. + +Ebenfalls hilfreich ist es, wenn jetzt noch die zugehörige(n) +Komponente(n) sowie Version(en) ausgewählt werden. Darüber lässt sich +u.a. in der "`Matrix-View <screenshots.html#ScreenshotMatrix>`__" die +Anzeige eingrenzen, sodass das gewünschte Bild schneller aufgefunden +wird. + +.. _Screenhotsfinden: + +Screenhots finden +----------------- + +Hierfür gibt es (mindestens) zwei Möglichkeiten: + +.. _ScreenshotMatrix: + +Screenshot Matrix +~~~~~~~~~~~~~~~~~ + +In der Navigationsleiste findet sich auch der Punkt "Screenshots". Wer +diesem folgt, kann in der Liste verfügbarer Screenshots blättern. Es +besteht außerdem die Möglichkeit, die Treffermenge anhand von +Komponenten einzuschränken. + +.. _ScreenshotsListe: + +Screenshots Liste +~~~~~~~~~~~~~~~~~ + +Mit dem Makro ``[[ScreenshotsList()]]`` lässt sich eine Liste von +Screenshots anzeigen. Der Aufbau der Liste lässt sich mit dem einzigen +zu übergebenden (optionalen) Argument bestimmen, etwa +``[[ScreenshotsList($name - $description ($widthx$height))]]``. +Verfügbare Eigenschaften sind: + +- ``$id`` - ID des Bildes +- ``$name`` - Name des Bildes +- ``$author`` - Wer hat das Bild hochgeladen? +- ``$time`` - Wann wurde das Bild hochgeladen? +- ``$file`` - Dateiname +- ``$description`` - Detaillierte Beschreibung +- ``$width`` - Originale Breite des Bildes +- ``$height`` - Originale Höhe des Bildes +- ``$tags`` - Komma-separierte Liste zugehöriger Tags +- ``$components`` - Komma-separierte Liste zugehöriger Komponenten +- ``$versions`` - Komma-separierte Liste zugehöriger Versionen + +.. _Screenshotsreferenzieren: + +Screenshots referenzieren +------------------------- + +… kann ein wenig tricky sein. Hier ein paar Hinweise: + +- Gibt man keine Größe an, wird die Bildgröße 1:1 übernommen: + ``[[Screenshot(6)]]``. Wer eine andere Größe will, muss Höhe **und** + Breite angeben, da sonst das Bild verzerrt wird: + ``[[Screenshot(6,width=200,height=145)]]`` +- Gibt man keine Ausrichtung an, wird "mittig" ausgerichtet - es + "passt" also nur eine Zeile neben das Bild. Daher besser angeben, wo + das Bild hin soll: ``[[Screenshot(6,align=left)]]`` + |<!>| Soll das Bild "alleine stehen", *ohne* dass der Text um + selbiges fließt, darf das Keyword ``align`` **nicht** verwendet + werden. +- Das Bild ist immer so verlinkt, das ein Klick darauf zum + `Download <../../Download.html>`__ führt. Um die Anzeige des Bildes + in Originalgröße zu ermöglichen, kann man sich eines Tricks bedienen, + und den passenden Link in die Beschreibung packen: + + .. code:: bash + + [[Screenshot(6,width=200,height=145,align=right,description=[screenshot:6 $description])]] + +- Weitere Informationen finden sich auf der + `​Projektseite <http://trac-hacks.org/wiki/ScreenshotsPlugin>`__ + +- Tags +- `help <../../help.html>`__ +- `wikiedit </tags/wikiedit>`__ + +.. |<!>| image:: ../../../chrome/wikiextras-icons-16/exclamation-red.png + diff --git a/wiki/help/wikiedit/tables.rst b/wiki/help/wikiedit/tables.rst new file mode 100644 index 0000000..764f53f --- /dev/null +++ b/wiki/help/wikiedit/tables.rst @@ -0,0 +1,230 @@ +.. _Tabellen: + +Tabellen +======== + +Auch hier haben wir dem "schnöden Standard" ein wenig nachgeholfen - und +so gibt es verschiedene Möglichkeiten der Tabellen-Formatierung. Den +einzelnen Details möchte ich eine kurze Übersicht voranstellen: + +.. _ÜberblickderverschiedenenFormate: + +Überblick der verschiedenen Formate +----------------------------------- + +.. _Standard: + +Standard +~~~~~~~~ + +Den Standard haben wir ein klein wenig "aufgebohrt", sodass er im +Allgemeinen ausreichen sollte. Hier stehen innerhalb der einzelnen +Zellen alle Trac-Wiki Formatierungen zur Verfügung - dafür gestaltet es +sich etwas schwieriger, Zeilenumbrüche einzubringen oder Zellen zu +verbinden. Normalerweise ist dieses Format jedoch die erste Wahl. + +.. _RST: + +RST +~~~ + +`​Re-Structured Text <http://de.wikipedia.org/wiki/ReStructuredText>`__ +bietet bei relativ einfacher Syntax zahlreiche zusätzliche +Formatierungsmöglichkeiten (siehe auch +`hier <../../WikiRestructuredText.html#BiggerReSTExample>`__. Dafür sind +innerhalb eines solchen Blocks keinerlei Wiki-Markups möglich - womit +RST für viele Dinge nicht in Frage kommt. + +.. _MediaWiki: + +MediaWiki +~~~~~~~~~ + +Da wir auch das `​MediaWiki +Plugin <http://trac-hacks.org/wiki/MediaWikiPluginMacro>`__ eingebunden +haben, bieten sich damit zahlreiche zusätzliche Möglichkeiten. Aber auch +hier gilt: Trac-Wiki Syntax ist innerhalb eines Media-Wiki Blocks nicht +möglich. + +.. _Anwendung:WieerstelleicheineTabelle: + +Anwendung: Wie erstelle ich eine Tabelle? +----------------------------------------- + +.. _Standard1: + +Standard +~~~~~~~~ + +Mit dem Trac-Wiki Standard (in gepatchter Form |;)|) ist dies am +einfachsten möglich: + +.. code:: bash + + ||| ||| 1 ||| 2 ||| 3 || + ||| A || X || || X || + ||| B || || X || || + ||| C || X || X || || + +wird zu + ++------+------+------+------+ +| \| | \| 1 | \| 2 | \| 3 | ++------+------+------+------+ +| \| A | X | | X | ++------+------+------+------+ +| \| B | | X | | ++------+------+------+------+ +| \| C | X | X | | ++------+------+------+------+ + +.. _RST1: + +RST +~~~ + +Hier sieht das ein wenig anders aus: + +.. code:: bash + + {{{ + #!rst + ===== ===== ====== + Inputs Output + ------------ ------ + A B A or B + ===== ===== ====== + False False False + True False True + False True True + True True True + ===== ===== ====== + }}} + +Wird zu + +Inputs + +Output + +A + +B + +A or B + +False + +False + +False + +True + +False + +True + +False + +True + +True + +True + +True + +True + +.. _MediaWiki1: + +MediaWiki +~~~~~~~~~ + +Hier haben wir auch wieder zahlreiche Möglichkeiten - von denen hier nur +zwei aufgezeigt werden sollen: + +.. _EinfachesBeispiel: + +Einfaches Beispiel +^^^^^^^^^^^^^^^^^^ + +Gibt man folgendes ein: + +.. code:: bash + + {{{ + #!mediawiki + {|class="table" + |- + ! Überschrift 1. Spalte + ! Überschrift 2. Spalte + |- + | Inhalt 1.Zeile 1.Spalte + | Inhalt 1.Zeile 2.Spalte + |} + }}} + +kommt dabei das heraus: + ++-------------------------+-------------------------+ +| Überschrift 1. Spalte | Überschrift 2. Spalte | ++=========================+=========================+ +| Inhalt 1.Zeile 1.Spalte | Inhalt 1.Zeile 2.Spalte | ++-------------------------+-------------------------+ + +.. _komplexeresBeispiel: + +komplexeres Beispiel +^^^^^^^^^^^^^^^^^^^^ + +Zu guter Letzt ein leicht komplexeres Beispiel, bei dem einige +Formatierungen (Hintergrund-Farbe etc.) explizit mit vorgegeben, und +auch ein paar Zellen verbunden werden. Eingegeben wurde also: + +.. code:: bash + + {{{ + #!mediawiki + {|border="1" cellpadding="2px" style="border-collapse:collapse;border:1px solid #8cacbb;border-width:1px;" + |- + !background-color="#ff0"|'''Überschrift''' + !background-color="#ff0"|'''Zweite Überschrift''' + |- + | Inhalt Zelle 1-1 + | Inhalt Zelle 1-2 + |- + | colspan="2" align="center"|Verbundene Zellen zentriert + |- + | Inhalt Zelle 3-1 + | rowspan="2"|Verbundene Zelle + |- + | Inhalt Zelle 4-1 + |} + }}} + +Und dabei kam folgendes heraus: + +**Überschrift** + +**Zweite Überschrift** + +Inhalt Zelle 1-1 + +Inhalt Zelle 1-2 + +Verbundene Zellen zentriert + +Inhalt Zelle 3-1 + +Verbundene Zelle + +Inhalt Zelle 4-1 + +- Tags +- `help <../../help.html>`__ +- `wikiedit </tags/wikiedit>`__ + +.. |;)| image:: ../../../chrome/wikiextras-icons-16/smiley-wink.png + diff --git a/wiki/help/wikiedit/tagging.rst b/wiki/help/wikiedit/tagging.rst new file mode 100644 index 0000000..953450a --- /dev/null +++ b/wiki/help/wikiedit/tagging.rst @@ -0,0 +1,83 @@ +.. _Tagging: + +Tagging +======= + +.. _WasundwozusindTags: + +Was und wozu sind Tags? +----------------------- + +*Tags* kann man auf Deutsch am ehesten mit "Markierungen" wiedergeben. +In unserem Kontext sind es "benannte Markierungen", die u.a. bei der +Suche nach bestimmten Informationen hilfreich sind. Am besten erklärt +sich das an einem Beispiel: + +Angenommen jemand möchte wissen, welche Dateisysteme auf einer an die +FritzBox angeschlossenen USB-Festplatte unterstützt werden. In der +Beschreibung der Pakete taucht nun nicht unbedingt das Wort +"Dateisystem" auf. Wurden die passenden Tags vergeben, führt hier eine +Suche nach "`packages filesystem </tags?q=packages+filesystem>`__" zum +gewünschten Ziel. + +Desweiteren werden Tags auch benutzt, um vorhandene `Packages nach +Anwendungsgebieten <../../packages_tagged.html>`__ sortiert aufzulisten. + +Ich denke, allein diese beiden Beispiele zeigen schon, wie sinnvoll und +hilfreich Tags sein können. + +.. _WievergibtmanTags: + +Wie vergibt man Tags? +--------------------- + +Um einem Wiki-Artikel (oder auch einem Ticket) passende Tags zu +vergeben, findet sich auf der Bearbeitungsseite ein Formularfeld namens +"Tag under:". Direkt anbei gibt es auch einen Link "`view all +tags </tags>`__", mit dem sich vorhandene Tags anzeigen lassen. + +.. _WelcheTagssolltemanvergeben: + +Welche Tags sollte man vergeben? +-------------------------------- + +Das hängt sicher vom Einzelfall ab. Dennoch lassen sich ein paar +"Richtlinien" aufzeigen: + +- "viele Köche verderben den Brei": "Nimm viel" hilft hier nicht + unbedingt viel. Die ausgewählten Tags sollten schon zutreffend und + möglichst eingrenzend sein. +- Die Beschreibung eines Paketes sollte immer auch mit dem Tag + "`packages </tags?q=packages>`__" versehen sein. Gleiches gilt für + Patches und das Tag `patches </tags?q=patches>`__. +- Zu allgemeine Tags ("Wiki") sollten möglichst vermieden werden - + genau wie zu spezielle (z.B. der Name des Paketes). +- Der Einheitlichkeit halber schreiben wir alle Tags nur mit + :sub:`Kleinbuchstaben`. + +Für Paketbeschreibungen findet man die passenden Tags am einfachsten, +indem man die `nach Anwendungsgebieten sortierte +Paketliste <../../packages_tagged.html>`__ aufruft, und sich dort die +Tags zu Paketen in der treffenden Anwendungsgruppe anschaut. Es gibt +auch eine `Liste aller Tags </tags>`__ - aus dieser sollte man sich +jedoch in der Regel auf solche Tags konzentrieren, die möglichst groß +dargestellt sind. + +.. _Wasistnochzubeachten: + +Was ist noch zu beachten? +------------------------- + +Wenn man einen Artikel *und* die zugehörigen Tags editieren möchte, +sollte man dies besser in zwei Schritten tun (also z.B. erst die Tags +editieren, speichern, und dann den Artikeltext editieren und speichern). +Versucht man beides gleichzeitig, gehen häufig die Änderungen am +Artikeltext verloren - was wohl ein Bug im Tags-Plugin zu sein scheint. + +Ähnlich verhält es sich beim Umbenennen einer Seite: Laut Dokumentation +des Tags-Plugins sollte man hier zunächst die Tags entfernen, den +Artikel umbenennen, und schließlich die Tags wieder hinzufügen. + +- Tags +- `help <../../help.html>`__ +- `wikiedit </tags/wikiedit>`__ diff --git a/wiki/help/wikiedit/toc.rst b/wiki/help/wikiedit/toc.rst new file mode 100644 index 0000000..aa079e2 --- /dev/null +++ b/wiki/help/wikiedit/toc.rst @@ -0,0 +1,100 @@ +.. _Inhaltsverzeichniserstellenlassen: + +Inhaltsverzeichnis erstellen (lassen) +===================================== + +Am rechten Rand ist ja ein Inhaltsverzeichnis zu sehen, welches sich +sogar über mehrere Artikel erstreckt. Dafür wurde ein +`Makro <../../TracWikiMacros.html#AvailableMacros>`__ verwendet, dessen +genaue Syntax sich auf der soeben angegebenen Seite findet. Damit die +Überschrift hier auch auf Deutsch ist, verwenden wir auf +deutschsprachigen Seiten das Argument ``heading=Inhaltsverzeichnis`` - +als Beispiel für ein einfaches Inhaltsverzeichnis für die aktuell +bearbeitete Seite sähe das dann so aus: + +.. code:: bash + + [[TOC(heading=Inhaltsverzeichnis)]] + +.. _Unterseiteneinbeziehen: + +Unterseiten einbeziehen +----------------------- + +Es lassen sich auch Unterseiten (oder ganz andere Seiten) mit +einbeziehen, sodass ein Inhaltsverzeichnis entsteht, welches mehrere +Artikel überspannt. Hierzu gibt man die zu indizierenden Seiten explizit +an: + +.. code:: bash + + [[TOC(help/wikiedit,help/wikiedit/toc,help/wikiedit/goodies,heading=Inhaltsverzeichnis)]] + +etwa würde die angegebenen Seiten in das automatische Inhaltsverzeichnis +einbeziehen. Da man auf diese Art allerdings jedesmal, wenn eine neue +Unterseite angelegt wird, das TOC-Makro auf allen beteiligten Seiten +wieder anpassen müsste, geht das auch einfacher: + +.. code:: bash + + [[TOC(help/wikiedit,help/wikiedit/*,heading=Inhaltsverzeichnis)]] + +Das ist der Vorteil eines hierarchischen Wikis: Das *WildCard* "*" +greift nicht zu weit um sich, sondern bleibt beim Thema. + +.. _Ebenentiefeeinschränken: + +Ebenentiefe einschränken +------------------------ + +Werden die Unterseiten dann doch zahlreicher, und die mit dem TOC-Makro +zusammengefassten Überschriften sprengen ob der Schachtelungstiefe die +Seiten (etwa, weil eine oder mehrere Seiten ziemlich viele Überschriften +niedrigerer Ebenen, also quasi "2.1.3.5", haben), lässt sich die +maximale Tiefe der vom TOC-Makro anzuzeigenden Überschriften ebenfalls +einschränken, wozu der Parameter ``depth`` herangezogen werden kann. +Soll das TOC-Makro also beispielsweise nur die Überschriften der Ebenen +1 und 2 anzeigen, sähe das so aus: + +.. code:: bash + + [[TOC(help/wikiedit,help/wikiedit/*,depth=2,heading=Inhaltsverzeichnis)]] + +.. _MehrereTOCBlöcke: + +Mehrere TOC Blöcke +------------------ + +Tja, das klappt leider nicht sauber: Das themenüberspannende, jedoch auf +2 Ebenen eingeschränkte TOC-Makro mit einem seitenspezifischen zu +verbinden, welches alle Ebenen umfasst. Auch ein zusätzliches, zweites +TOC-Makro geht gehörig schief: Es positioniert sich nämlich nicht +unterhalb des ersten, sondern unmittelbar links daneben - damit ist von +der Seitenbreite dann nicht mehr viel übrig; ganz davon abgesehen, dass +es ziemlich dämlich aussieht. + +Was aber nun tun, wenn ein zweiter Block benötigt wird? Sofern es nur +darum geht, die Überschriften aufzulisten - und es nicht unbedingt der +"schöne gelbe Kasten da rechts" sein muss, bietet das Keyword ``inline`` +hier Abhilfe: + +.. code:: bash + + [[TOC(help/wikiedit,help/wikiedit/*,inline,noheading)]] + +wäre etwa geeignet, den entsprechenden Index mitten im Artikel - also +so, als hätte man die einzelnen Punkte mit ihren Links selbst abgetippt +- darzustellen. + +.. _WeitereMöglichkeiten: + +Weitere Möglichkeiten +--------------------- + +Es gibt noch weitere Parameter, und somit weitere Möglichkeiten, das +TOC-Makro zu manipulieren. Diese werden auf der +`WikiMakros <../../WikiMacros.html>`__ Seite erläutert. + +- Tags +- `help <../../help.html>`__ +- `wikiedit </tags/wikiedit>`__ diff --git a/wiki/index.en.rst b/wiki/index.en.rst new file mode 100644 index 0000000..74559d7 --- /dev/null +++ b/wiki/index.en.rst @@ -0,0 +1,120 @@ +.. _WelcometoFreetz: + +Welcome to Freetz +================= + +**Freetz** (more about the name and history in the +`FAQs <FAQ.en.html>`__) is a firmware-extension (modification) for the +`​AVM Fritz!Box <http://www.avm.de/en/Produkte/FRITZBox/index.html>`__ +and devices with identical hardware. The original firmware from the +manufacturer is extended with new functions and programs which may be +selected by the user. *Freetz* is `​free +software <http://www.germany.fsfeurope.org/documents/freesoftware.en.html>`__ +and is developed by Oliver Metz, Alexander Kriegisch and others. + +**Warning: the installation of a modified firmware invalidates the +manufacturer's warranty!** + +Since most of the development team and users are German, most of this +website is written in the German language. + +.. _Download: + +Download +-------- + +The current stable release of Freetz is version 2.0. Please follow the +description under `Source Code <common/source_code.en.html>`__ to +download it. + +.. _Firststeps: + +First steps +----------- + +If you are not familiar with Freetz and have no plan where to start, +follow the guidelines in this tutorial to build your first basic image. + +- `Freetz for beginners <help/howtos/common/newbie.en.html>`__ + +.. _Websitefordevelopers: + +Website for developers +---------------------- + +This website is intended for developers and experienced users who wish +to be actively involved in the development of *Freetz*. The complete +source-code can be viewed and changes followed. Bugs and feature +requests can be entered using the ticket-system. + +- `Timeline </timeline>`__ — chronology of changes +- `Roadmap </roadmap>`__ — current state and planned work (in progress) +- `Source Browser <https://github.com/Freetz/freetz/commits/master>`__ + — browse the SVN repository +- `Ticket System </report>`__ — problems, bugs and feature requests + **(please**\ `read this <ticket.html>`__\ **and if necessary ask in + the IP-Phone-Forum, before opening a ticket!)** +- `Developer + Information <help/howtos/development/developer_information.html>`__ — + information for developers and howtos + +In order to open tickets you will need to `register </register>`__. + +.. _WikiandForum: + +Wiki and Forum +-------------- + +Information and discussion about *Freetz* is available: + +- `Wiki <freetz.html>`__ - background, + `Installation <help/howtos/common/install.html>`__, + `packages <packages.html>`__, `libraries <libs.html>`__, + `FAQ <FAQ.html>`__, `Howtos <help/howtos.html>`__ +- `​Forum <http://www.ip-phone-forum.de/forumdisplay.php?f=525>`__ — + Discussion, questions, announcements (German and English language) +- `IRC channel <help/irc.html>`__ about FritzBox and (inofficially) + Freetz + +Further information about Fritz and friends can be found here: + +- `​Fritz!Box Wiki <http://www.wehavemorefun.de/fritzbox>`__ — Tips & + tricks, background info and more (German language) + +See also the `FAQs <FAQ.en.html>`__. + +.. _Freetzinpublicpressweb: + +Freetz in public press & web +---------------------------- + +- `List of public press, web & blog reports about + Freetz <Press.en.html>`__ + +.. _Sourcecode: + +Source code +----------- + +How to `check out and update source code <common/source_code.html>`__ +from the Freetz repository + +.. _Buildingandusing: + +Building and using +------------------ + +*Freetz* can only be built using Linux. See the README file in the root +directory of the checked-out source-code, as well as the `​IPPF +Wiki <http://wiki.ip-phone-forum.de/software:ds-mod:installation#linux>`__ +(in German) for the list of tools/packages required to successfully +build *Freetz*. If you're really in a hurry make sure you've got all the +required tools installed and then do + +.. code:: bash + + make menuconfig + make + +This gives you first a menu-based configuration and then builds your +custom firmware. Enjoy! diff --git a/wiki/index.rst b/wiki/index.rst new file mode 100644 index 0000000..6d5408d --- /dev/null +++ b/wiki/index.rst @@ -0,0 +1,130 @@ +.. _WillkommenbeiFreetz: + +Willkommen bei Freetz +===================== + +| `Freetz <freetz.html>`__ ist eine Firmware-Erweiterung und + Modifikation für `​Fritz!Box <http://www.avm.de>`__ Router und + kompatible Geräte. Die Original-Firmware des Herstellers wird um + zusätzliche Funktionen `erweitert <freetz.html>`__ und mit einer + individuellen Zusammenstellung von Programmen ergänzt. Mehr zum Namen + "Freetz" und zur Historie siehe + `FAQ <FAQ.html#WoherkommtderNameFreetz>`__. +| Freetz ist `​freie + Software <http://www.germany.fsfeurope.org/documents/freesoftware.de.html>`__ + und wird von Oliver Metz, Alexander Kriegisch und Team entwickelt. + +|Warning| **WARNUNG:** Die Installation einer modifizierten Firmware führt +zum Verlust der Gewährleistung des Herstellers! + +.. _Download: + +Download +-------- + +Das letzte Release ist Version 2.0. Bitte folge den Anweisungen unter +`Quellcode <common/source_code.html>`__, um es zu downloaden. + +Um den Trunk (Entwicklerversion) zu nutzen, einfach die Anleitung zum +`Auschecken und Aktualisieren des +Quellcodes <common/source_code.html>`__ aus dem Freetz-Repository +folgen. + +Diese Versionen unterscheiden sich in der unterstützen AVM-Firmware +(Datei 'FIRMWARES') und den Erweiterungen durch Freetz (Datei +'CHANGELOG'). + +Eine komplette Liste aller Releases befindet sich auf der `Download +Seite <Download.html>`__. + +.. _ErsteSchritte: + +Erste Schritte +-------------- + +Diese Anleitung richtet sich in erster Linie an neue Benutzer, welche +sich erst mit Freetz vertraut machen wollen. Der Benutzer wird +schrittweise begleitet bis zur Erstellung und Flashen eines ersten +Firmware-Images. + +- `Erste Schritte mit Freetz <help/howtos/common/newbie.html>`__ + +.. _Installation: + +Installation +------------ + +Für die Freetz-Installation wird Linux als Betriebssystem empfohlen. Wer +kein Linux dauerhaft auf seinem Rechner installieren will, kann sich mit +einem Linux-Live-System oder einem sog. Image für eine "virtuellen +Maschine" (VM) seiner Wahl behelfen. + +- `Voraussetzungen, notwendige Pakete und sonstige Informationen zur + Freetz-Installation <help/howtos/common/install.html>`__ + +.. _HilfeundSupport: + +Hilfe und Support +----------------- + +- `Wiki <freetz.html>`__: + + - `Installation <help/howtos/common/install.html>`__ + - `Pakete, Addons und CGI-Erweiterungen <packages.html>`__ + - `Patches <patches.html>`__, `Aussehen <style.html>`__ + - `Bibliotheken <libs.html>`__, Module, `FAQ <FAQ.html>`__ + - `Kernel-Sources <kernel.html>`__ + - Hintergrund-Infos + - `Howtos <help/howtos.html>`__, und `Hilfe <help.html>`__ + - `Trouble-Shooting <help/trouble_shooting.html>`__ + +- `​IP-Phone-Forum <http://www.ip-phone-forum.de/forumdisplay.php?f=525>`__ + +Hier findest du mehr zu `Hilfe und Support <help.html>`__. + +.. _PresseundBerichte: + +Presse und Berichte +------------------- + +- `Liste von Berichten über Freetz <Press.html>`__ +- `Ankündigung Entwicklertreffen Freetz-Conf + 2011 <FreetzConf2011.html>`__ + +.. _Machmit: + +Mach mit! +--------- + +Interessierte Benutzer und potentielle Entwickler, die aktiv an der +Verbesserung von Freetz und deren Entwicklung mitwirken wollen, werden +durch das Trac-Systems hinreichend unterstützt. So können der komplette +Quellcode eingesehen, Änderungen verfolgt und über das Ticket-System +Fehler und Feature-Wünsche gemeldet werden. Ein aktuelles Wiki hilft +allen Beteiligten! + +- `Zeitachse </timeline>`__: Chronologie der Änderungen +- `Roadmap </roadmap>`__: Stand und Planung der Entwicklung (in Arbeit) +- `Quellcode-Browser </browser/>`__: SVN-Repository durchsuchen +- `Ticket-System </report/>`__: Probleme, Fehler und neue + Feature-Wünsche **(bitte**\ `hier <ticket.html>`__\ **nachlesen und + evtl. im IP-Phone-Forum fragen, bevor ein Ticket eröffnet wird!)** +- `Developer + Information <help/howtos/development/developer_information.html>`__: + Informationen für Entwickler und Howtos (englisch) +- Interner Entwicklerbereich: Nur für Entwickler: Interner Bereich zur + Abstimmung. + +Das Bearbeiten des Wikis und Eröffnen von Tickets ist zur Vermeidung von +Spam nur nach vorheriger **Registrierung** möglich. + +.. _Quellcode: + +Quellcode +--------- + +Anleitung zum `Auschecken und Aktualisieren des +Quellcodes <common/source_code.html>`__ aus dem Freetz-Repository + +.. |Warning| image:: ../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/kernel.rst b/wiki/kernel.rst new file mode 100644 index 0000000..a705588 --- /dev/null +++ b/wiki/kernel.rst @@ -0,0 +1,1410 @@ +Kernel Layout + +Box + +Firmware Series + +Kernel Sources available + +Kernel Sources used by Freetz + +Replace Kernel available + +Remarks/Known Problems + +AR9 + +7312 + +05.2X + +no + +7330-05.20 + +yes + +05.5X + +`​7312-05.50 <ftp://ftp.avm.de/fritz.box/fritzbox.7312/x_misc/opensrc/source-files-FRITZ.Box_7312.05.50.tar.gz>`__ +(same as 7330-05.50) + +7330-05.50 + +yes + +06.0X + +`​7312-06.01 <ftp://ftp.avm.de/fritz.box/fritzbox.7312/x_misc/opensrc/source-files-FRITZ.Box_7312.06.01.tar.gz>`__ +(same as 7330-06.01) + +7330-06.01 + +yes + +06.2X + +no + +7320-06.30 + +yes (EXPERIMENTAL) + +06.5X + +no + +7330-06.50 + +yes (EXPERIMENTAL) + +06.8X + +n.a. + +n.a. + +n.a. + +7320 + +05.2X + +`​7320-05.20 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7320/x_misc/opensrc/source-files-FRITZ.Box_Fon_WLAN_7320.05.20.tar.gz>`__ +(same as 7330-05.20) + +7330-05.20 + +yes + +05.5X + +`​7320-05.50 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7320/x_misc/opensrc/source-files-FRITZ.Box_Fon_WLAN_7320.05.50.tar.gz>`__ +(same as 7330-05.50) + +7330-05.50 + +yes + +06.0X + +`​7320-06.01 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7320/x_misc/opensrc/source-files-FRITZ.Box_Fon_WLAN_7320.06.01.tar.gz>`__ +(same as 7330-06.01) + +7330-06.01 + +yes + +06.2X + +`​7320-06.30 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7320/x_misc/opensrc/source-files-FRITZ.Box_Fon_WLAN_7320.06.30.tar.gz>`__ + +7320-06.30 + +yes (EXPERIMENTAL) + +06.5X + +n.a. + +n.a. + +n.a. + +06.8X + +n.a. + +n.a. + +n.a. + +7330 + +05.2X + +`​7330-05.20 <ftp://ftp.avm.de/fritz.box/fritzbox.7330/x_misc/opensrc/fritzbox7330-source-files-05.20.tar.gz>`__ + +7330-05.20 + +yes + +05.5X + +`​7330-05.50 <ftp://ftp.avm.de/fritz.box/fritzbox.7330/x_misc/opensrc/fritzbox7330-source-files-05.50.tar.gz>`__ + +7330-05.50 + +yes + +06.0X + +`​7330-06.01 <ftp://ftp.avm.de/fritz.box/fritzbox.7330_sl/x_misc/opensrc/source-files-FRITZ.Box_7330_SL.06.01.tar.gz>`__ +(actually 7330sl-06.01) + +7330-06.01 + +yes (EXPERIMENTAL) + +06.2X + +no + +7320-06.30 + +yes (EXPERIMENTAL) + +06.5X + +`​7330-06.50 <ftp://ftp.avm.de/fritz.box/fritzbox.7330/x_misc/opensrc/source-files-FRITZ.Box_7330%20-%2006.50.tar.gz>`__ + +7330-06.50 + +yes (EXPERIMENTAL) + +06.8X + +n.a. + +n.a. + +n.a. + +7330SL + +05.2X + +`​7330sl-05.20 <ftp://ftp.avm.de/fritz.box/fritzbox.7330_sl/x_misc/opensrc/source-files-FRITZ.Box_7330_SL.05.20.tar.gz>`__ +(same as 7330-05.20) + +7330-05.20 + +yes + +05.5X + +`​7330sl-05.50 <ftp://ftp.avm.de/fritz.box/fritzbox.7330_sl/x_misc/opensrc/source-files-FRITZ.Box_7330_SL.05.50.tar.gz>`__ +(same as 7330-05.50) + +7330-05.50 + +yes + +06.0X + +`​7330sl-06.01 <ftp://ftp.avm.de/fritz.box/fritzbox.7330_sl/x_misc/opensrc/source-files-FRITZ.Box_7330_SL.06.01.tar.gz>`__ +(aka 7330-06.01) + +7330-06.01 + +yes + +06.2X + +no + +7320-06.30 + +yes (EXPERIMENTAL) + +06.5X + +`​7330SL-06.50 <ftp://ftp.avm.de/fritz.box/fritzbox.7330_sl/x_misc/opensrc/source-files-FRITZ.Box_7330_SL%20-%2006.50.tar.gz>`__ +(same as 7330-06.50) + +7330-06.50 + +yes (EXPERIMENTAL) + +06.8X + +n.a. + +n.a. + +n.a. + +AR934x + +6810 + +05.2X + +n.a. + +n.a. + +n.a. + +05.5X + +n.a. + +n.a. + +n.a. + +06.0X + +n.a. + +n.a. + +n.a. + +06.2X + +`​6810-06.21 <ftp://ftp.avm.de/fritz.box/fritzbox_6810_lte/x_misc/opensrc/fritz_box_6810_source_files.06.21.tar.gz>`__ + +6810-06.21 + +yes (EXPERIMENTAL) + +06.5X + +n.a. + +n.a. + +n.a. + +06.8X + +n.a. + +n.a. + +n.a. + +6842 + +05.2X + +n.a. + +n.a. + +n.a. + +05.5X + +n.a. + +n.a. + +n.a. + +06.0X + +n.a. + +n.a. + +n.a. + +06.2X + +`​6842-06.21 <ftp://ftp.avm.de/fritz.box/fritzbox_6842_lte/x_misc/opensrc/fritz_box_6842_source_files.06.21.tar.gz>`__ +(same as 6810-06.21) + +6810-06.21 + +yes (EXPERIMENTAL) + +06.5X + +n.a. + +n.a. + +n.a. + +06.8X + +n.a. + +n.a. + +n.a. + +AR10 + +3272 + +05.2X + +n.a. + +n.a. + +n.a. + +05.5X + +no + +| 7272-05.59 (assuming all AR10-boxes use the same sources and .config) +| TODO: ask AVM for kernel sources + +yes (EXPERIMENTAL) + +06.0X + +no + +7490-06.01, TODO: ask AVM for kernel sources + +no + +06.2X + +`​3272-06.20 <ftp://ftp.avm.de/fritz.box/fritzbox.3272/x_misc/opensrc/source-files-FRITZ.Box_3272-06.20.tar.gz>`__ + +| 7272-06.20 (assuming all AR10-boxes use the same sources and .config) +| TODO: use 3272-06.20 kernel sources if different + +yes (EXPERIMENTAL) + +06.5X + +no + +| n.a. +| TODO: ask AVM for kernel sources + +no + +7272 + +05.2X + +n.a. + +n.a. + +n.a. + +05.5X + +`​7272-05.59 <ftp://ftp.avm.de/fritz.box/fritzbox.7272/x_misc/opensrc/source-files-FRITZ.Box_7272-05.59.tar.gz>`__ + +7272-05.59 + +yes (EXPERIMENTAL) + +The kernel .config provided by AVM is most likely not the right one. +Modules from the original firmware contain references to some +``debugfs_*`` symbols (s. `r11992 </changeset/11992>`__ for details). +These require ``CONFIG_DEBUG_FS`` to be enabled, which is not the case +in AVM's .config. + +06.0X + +no + +7490-06.01, TODO: ask AVM for kernel sources + +no + +06.2X + +`​7272-06.20 <ftp://ftp.avm.de/fritz.box/fritzbox.7272/x_misc/opensrc/source-files-FRITZ.Box_7272-06.20.tar.gz>`__ + +7272-06.20 + +yes (EXPERIMENTAL) + +06.5X + +no + +| n.a. +| TODO: ask AVM for kernel sources + +no + +IKS + +7340 + +05.2X + +no + +7390-05.21, TODO: ask AVM for kernel sources + +yes + +05.5X + +no + +7390-05.52, TODO: ask AVM for kernel sources + +yes + +06.0X + +no + +7390-06.01, TODO: ask AVM for kernel sources + +no + +See comment for 7390-international + +7390 + +05.2X + +`​7390-05.20 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7390/x_misc/opensrc/fritz_box_fon_wlan_7390_source_files.05.20.tar.gz>`__, +`​7390-05.21 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7390/x_misc/opensrc/fritz_box_fon_wlan_7390_source_files.05.21.tar.gz>`__ + +7390-05.21 + +yes + +05.5X + +`​7390-05.50 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7390/x_misc/opensrc/fritz_box_fon_wlan_7390_source_files.05.50.tar.gz>`__, +`​7390-05.51 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7390/x_misc/opensrc/fritz_box_fon_wlan_7390_source_files.05.51.tar.gz>`__, +`​7390-05.52 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7390/x_misc/opensrc/FRITZ.Box_Fon_WLAN_7390_source_files.05.52.tar.gz>`__ + +7390-05.52 + +yes + +06.0X + +`​7390-06.00 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7390/x_misc/opensrc/FRITZ.Box_Fon_WLAN_7390_source-files.06.00.tar.gz>`__, +`​7390-06.01 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7390/x_misc/opensrc/FRITZ.Box_Fon_WLAN_7390_source-files.06.01.tar.gz>`__ +`​7390-06.04 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7390/x_misc/opensrc/FRITZ.Box_Fon_WLAN_7390_source-files.06.04.tar.gz>`__ +(same as 7390-06.01) + +7390-06.01 + +yes (for german version) / no (for international one) + +The following threads contain the problems explaining why replace-kernel +is not available for the international version +`​1 <http://www.ip-phone-forum.de/showthread.php?t=269147&p=2001817&viewfull=1#post2001817>`__ +& +`​2 <http://www.ip-phone-forum.de/showthread.php?t=271126&p=2016630&viewfull=1#post2016630>`__ + +06.2X + +`​7390-06.20 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7390/x_misc/opensrc/FRITZ.Box_Fon_WLAN_7390_source-files.06.20.tar.gz>`__, +`​7390-06.23 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7390/x_misc/opensrc/FRITZ.Box_Fon_WLAN_7390_source-files-06.23.tar.gz>`__, +`​7390-06.30 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7390/x_misc/opensrc/FRITZ.Box_Fon_WLAN_7390_source-files-06.30.tar.gz>`__ + +7390-06.30 + +yes (EXPERIMENTAL) + +(with revision 14086, kernel 7390-06.20 replace-kernel for international +is working. +`​details <http://www.ip-phone-forum.de/showthread.php?t=292342>`__) + +06.5X + +`​7390-06.51 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7390/x_misc/opensrc/FRITZ.Box_Fon_WLAN_7390_source-files-06.51.tar.gz>`__ + +7390-06.51 + +yes (EXPERIMENTAL) + +06.8X + +`​7390-06.80 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7390/x_misc/opensrc/FRITZ.Box_Fon_WLAN_7390_source-files-06.80.tar.gz>`__ + +7390-06.80 + +yes (EXPERIMENTAL) + +UR8 + +3270(v2) + +04.XX + +`​3270-04.86 <ftp://ftp.avm.de/fritz.box/fritzbox.wlan_3270/x_misc/opensrc/fritz%20box%20wlan%203270%20source%20files%2004.86.tar.gz>`__ +(same as 7270-04.86) + +n.a. + +n.a. + +05.2X + +`​3270-05.21 <ftp://ftp.avm.de/fritz.box/fritzbox.wlan_3270/x_misc/opensrc/fritz%20box%20wlan%203270%20source%20files%2005.21.tar.gz>`__ +(same as 7270-05.21) + +7270-05.21 + +yes + +05.5X + +`​3270-05.50 <ftp://ftp.avm.de/fritz.box/fritzbox.wlan_3270/x_misc/opensrc/fritz%20box%20wlan%203270%20source%20files%2005.50.tar.gz>`__ +(same as 7270-05.50) + +7270-05.51 + +yes + +06.0X + +n.a. + +n.a. + +n.a. + +3270v3 + +04.XX + +`​3270v3-04.87 <ftp://ftp.avm.de/fritz.box/fritzbox.wlan_3270_v3/x_misc/opensrc/fritz%20box%20wlan%203270v3%20source%20files%2004.87.tar.gz>`__ +(almost the same as 7270-04.86, better debug output, one #define fix) + +n.a. + +n.a. + +05.2X + +`​3270v3-05.21 <ftp://ftp.avm.de/fritz.box/fritzbox.wlan_3270_v3/x_misc/opensrc/fritz%20box%20wlan%203270v3%20source%20files%2005.21.tar.gz>`__ +(same as 7270-05.21) + +7270-05.21 + +yes + +05.5X + +`​3270v3-05.50 <ftp://ftp.avm.de/fritz.box/fritzbox.wlan_3270_v3/x_misc/opensrc/fritz%20box%20wlan%203270v3%20source%20files%2005.50.tar.gz>`__ +(same as 7270-05.50) + +7270-05.51 + +yes + +06.0X + +n.a. + +n.a. + +n.a. + +7240 + +04.XX + +n.a. + +n.a. + +n.a. + +05.2X + +`​7240-05.21 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7240/x_misc/opensrc/fritzbox7240-source-files-05.21.tar.gz>`__ +(same as 7270-05.21) + +7270-05.21 + +yes + +05.5X + +`​7240-05.50 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7240/x_misc/opensrc/fritzbox7240-source-files-05.50.tar.gz>`__ +(same as 7270-05.50) + +7270-05.51 + +yes + +06.0X + +`​7240-06.05 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7240/x_misc/opensrc/fritzbox7240-source-files-06.05.tar.gz>`__ +(same as 7270-06.05) + +7270-06.05 + +yes + +7270(v1) + +04.XX + +`​7270-04.76 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270/x_misc/opensrc/fritzbox7270-source-files-04.76.tar.gz>`__, +`​7270-04.80 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270/x_misc/opensrc/fritzbox7270-source-files-04.80.tar.gz>`__, +`​7270-04.86 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270_v1/x_misc/opensrc/fritzbox7270-source-files-04.86.tar.gz>`__ + +7270-04.86 + +yes + +05.2X + +n.a. + +n.a. + +n.a. + +05.5X + +n.a. + +n.a. + +n.a. + +06.0X + +n.a. + +n.a. + +n.a. + +7270v2 + +04.XX + +n.a. + +n.a. + +n.a. + +05.2X + +`​7270-05.21 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270_v2/x_misc/opensrc/fritzbox7270-source-files-05.21.tar.gz>`__ + +7270-05.21 + +yes + +05.5X + +`​7270-05.50 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270_v2/x_misc/opensrc/fritzbox7270-source-files-05.50.tar.gz>`__, +`​7270-05.51 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270_v2/x_misc/opensrc/fritzbox7270-source-files-05.51.tar.gz>`__ + +7270-05.51 + +yes + +06.0X + +`​7270-06.05 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270_v2/x_misc/opensrc/fritzbox7270-source-files-06.05.tar.gz>`__ + +7270-06.05 + +yes (EXPERIMENTAL) + +7270v3 + +04.XX + +n.a. + +n.a. + +n.a. + +05.2X + +`​7270v3-05.21 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270_v2/x_misc/opensrc/fritzbox7270-source-files-05.21.tar.gz>`__ +(same as 7270-05.21) + +7270-05.21 + +yes + +05.5X + +`​7270v3-05.50 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270_v2/x_misc/opensrc/fritzbox7270-source-files-05.50.tar.gz>`__ +(same as 7270-05.50), +`​7270v3-05.51 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270_v2/x_misc/opensrc/fritzbox7270-source-files-05.51.tar.gz>`__ +(same as 7270-05.51) + +7270-05.51 + +yes + +06.0X + +`​7270v3-06.05 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270_v3/x_misc/opensrc/fritzbox7270-source-files--06.05.tar.gz>`__ +(same as 7270-06.05) + +7270-06.05 + +yes + +7570 + +04.XX + +`​7570-04.78 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7570/x_misc/opensrc/fritzbox7570-source-files-04.78-82.tar.gz>`__ +(almost the same as 7270-04.76, different .config, "skbuff.uniq_id"-fix) + +7270-04.86 + +yes + +05.2X + +n.a. + +n.a. + +n.a. + +05.5X + +n.a. + +n.a. + +n.a. + +06.0X + +n.a. + +n.a. + +n.a. + +VR9 + +3370 + +05.2X + +`​3370-05.21 <ftp://ftp.avm.de/fritz.box/fritzbox.wlan_3370/x_misc/opensrc/fritz_box_wlan_3370_source_files.05.21.tar.gz>`__ + +3370-05.21 + +yes + +05.5X + +`​3370-05.50 <ftp://ftp.avm.de/fritz.box/fritzbox.wlan_3370/x_misc/opensrc/fritz_box_wlan_3370_source_files.05.50.tar.gz>`__ +(same as 7360-05.50), +`​3370-05.51 <ftp://ftp.avm.de/fritz.box/fritzbox.wlan_3370/x_misc/opensrc/fritz_box_wlan_3370_source_files.05.51.tar.gz>`__ +(same as 7360-05.51) + +7360-05.51 + +yes + +06.0X + +`​3370-06.01 <ftp://ftp.avm.de/fritz.box/fritzbox.wlan_3370/x_misc/opensrc/fritz_box_wlan_3370_source_files.06.01.tar.gz>`__ +(same as 7490-06.01) + +7490-06.01 + +yes + +06.2X + +no + +3490-06.31 + +yes (EXPERIMENTAL) + +06.5X + +`​3370-06.51 <ftp://ftp.avm.de/fritz.box/fritzbox.wlan_3370/x_misc/opensrc/fritz_box_wlan_3370_source_files.06.51.tar.gz>`__ +(same as 3390-06.51) + +3390-06.51 + +yes (EXPERIMENTAL) + +06.8X + +no + +7490-06.80 + +yes (EXPERIMENTAL) + +3390 + +05.2X + +no + +3370-05.21 + +yes + +05.5X + +`​3390-05.51 <ftp://ftp.avm.de/fritz.box/fritzbox.wlan_3390/x_misc/opensrc/fritz_box_WLAN_3390_source_files.05.51.tar.gz>`__ +(same as 7360-05.50) + +7360-05.51 + +yes + +06.0X + +`​3390-06.01 <ftp://ftp.avm.de/fritz.box/fritzbox.wlan_3390/x_misc/opensrc/fritz_box_WLAN_3390_source_files.06.01.tar.gz>`__ +(same as 7490-06.01) + +7490-06.01 + +yes + +06.2X + +no + +3490-06.31 + +yes (EXPERIMENTAL) + +06.5X + +`​3390-06.51 <ftp://ftp.avm.de/fritz.box/fritzbox.wlan_3390/x_misc/opensrc/fritz_box_WLAN_3390_source_files.06.51.tar.gz>`__ +(almost the same as 7490-06.51 + some tffs/avm_cpmac/avm_pa-fixes) + +3390-06.51 + +yes (EXPERIMENTAL) + +06.8X + +no + +7490-06.80 + +yes (EXPERIMENTAL) + +3490 + +05.2X + +n.a. + +n.a. + +n.a. + +05.5X + +n.a. + +n.a. + +n.a. + +06.0X + +n.a. + +n.a. + +n.a. + +06.2X + +`​3490-06.20 <ftp://ftp.avm.de/fritz.box/fritzbox.3490/x_misc/opensrc/FRITZ.Box_Fon_WLAN_3490_source-files.06.20.tar.gz>`__, +`​3490-06.31 <ftp://ftp.avm.de/fritz.box/fritzbox.3490/x_misc/opensrc/FRITZ.Box_Fon_WLAN_3490_source-files.06.31.tar.gz>`__ + +3490-06.31 + +yes (EXPERIMENTAL) + +06.5X + +`​3490-06.51 <ftp://ftp.avm.de/fritz.box/fritzbox.3490/x_misc/opensrc/FRITZ.Box_Fon_WLAN_3490_source-files.06.51.tar.gz>`__ +(same as 7490-06.51) + +7490-06.51 + +yes (EXPERIMENTAL) + +06.8X + +no + +7490-06.80 + +yes (EXPERIMENTAL) + +6840 + +05.2X + +no + +3370-05.21 + +no + +05.5X + +`​6840-05.50 <ftp://ftp.avm.de/fritz.box/fritzbox_6840_lte/x_misc/opensrc/fritz_box_6840_source_files.05.50.tar.gz>`__ +(same as 7360-05.50) + +7360-05.51 + +yes + +06.0X + +`​6840-06.01 <ftp://ftp.avm.de/fritz.box/fritzbox_6840_lte/x_misc/opensrc/fritz_box_6840_source_files.06.01.tar.gz>`__ +(same as 7490-06.01) + +7490-06.01 + +yes + +06.2X + +`​6840-06.21 <ftp://ftp.avm.de/fritz.box/fritzbox_6840_lte/x_misc/opensrc/fritz_box_6840_source_files.06.21.tar.gz>`__ +(same as 7360-06.20) + +7360-06.20 + +yes (EXPERIMENTAL) + +06.5X + +no + +7490-06.51 + +yes (EXPERIMENTAL) + +06.8X + +no + +7490-06.80 + +yes (EXPERIMENTAL) + +7360v1 + +05.2X + +`​7360-05.20 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7360_v1/x_misc/opensrc/fritzbox7360-source-files-05.20.tar.gz>`__ + +7360-05.20 + +yes + +05.5X + +`​7360-05.50 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7360_v1/x_misc/opensrc/fritzbox7360-source-files-05.50.tar.gz>`__, +`​7360-05.51 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7360_v1/x_misc/opensrc/fritzbox7360-source-files-05.51.tar.gz>`__ + +7360-05.51 + +yes + +06.0X + +`​7360-06.00 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7360_v1/x_misc/opensrc/source-files-FRITZ.Box_Fon_WLAN_7360.AnnexB-06.00.tar.gz>`__ +(same as 7490-06.01) + +7490-06.01 + +yes + +06.2X + +`​7360-06.20 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7360_v1/x_misc/opensrc/source-files-FRITZ.Box_Fon_WLAN_7360.AnnexB-06.20.tar.gz>`__ + +7360-06.20 + +yes (EXPERIMENTAL) + +06.5X + +n.a. + +n.a. + +n.a. + +06.8X + +n.a. + +n.a. + +n.a. + +7360v2 + +05.2X + +no + +7360-05.20 + +yes + +05.5X + +no + +7360-05.51 + +yes + +06.0X + +`​7360v2-06.00 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7360_v2/x_misc/opensrc/source-files-FRITZ.Box_Fon_WLAN_7360-06.00.tar.gz>`__ +(same as 7490-06.01) + +7490-06.01 + +yes + +06.2X + +`​7360-06.20 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7360_v2/x_misc/opensrc/source-files-FRITZ.Box_Fon_WLAN_7360-06.20.tar.gz>`__ + +7360-06.20 + +yes (EXPERIMENTAL) + +06.5X + +`​7360-06.50 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7360_v2/x_misc/opensrc/source-files-FRITZ.Box_Fon_WLAN_7360-06.50.tar.gz>`__ +(same as 7490-06.51) + +7490-06.51 + +yes (EXPERIMENTAL) + +06.8X + +no + +7490-06.80 + +yes (EXPERIMENTAL) + +7360SL + +05.2X + +`​7360sl-05.20 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7360_sl/x_misc/opensrc/source-files-FRITZ.Box_Fon_WLAN_7360_SL.AnnexB-05.20.tar.gz>`__ +(same as 7360-05.20) + +7360-05.20 + +yes + +05.5X + +`​7360sl-05.50 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7360_sl/x_misc/opensrc/source-files-FRITZ.Box_Fon_WLAN_7360_SL.AnnexB-05.50.tar.gz>`__ +(same as 7360-05.50), +`​7360sl-05.51 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7360_sl/x_misc/opensrc/source-files-FRITZ.Box_Fon_WLAN_7360_SL.AnnexB-05.51.tar.gz>`__ +(same as 7360-05.5\ **0**) + +7360-05.51 + +yes + +06.0X + +`​7360sl-06.00 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7360_sl/x_misc/opensrc/source-files-FRITZ.Box_Fon_WLAN_7360_SL.AnnexB-06.00.tar.gz>`__ +(same as 7490-06.01), +`​7360sl-06.01 <ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7360_sl/x_misc/opensrc/source-files-FRITZ.Box_Fon_WLAN_7360_SL.AnnexB-06.01.tar.gz>`__ +(same as 7490-06.01) + +7490-06.01 + +yes + +06.2X + +no + +7360-06.20 + +yes (EXPERIMENTAL) + +06.5X + +n.a. + +n.a. + +n.a. + +06.8X + +n.a. + +n.a. + +n.a. + +7362SL + +05.2X + +n.a. + +n.a. + +n.a. + +05.5X + +`​7362sl-05.53 <ftp://ftp.avm.de/fritz.box/fritzbox.7362_sl/x_misc/opensrc/source-files-FRITZ.Box_7362_SL-05.53.tar.gz>`__ +(almost the same as 7360-05.5\ **0**, contains in addition support for +7362SL) + +7360-05.51 + +yes + +06.0X + +`​7362sl-06.00 <ftp://ftp.avm.de/fritz.box/fritzbox.7362_sl/x_misc/opensrc/source-files-FRITZ.Box_7362_SL-06.00.tar.gz>`__ +(same as 7490-06.01) + +7490-06.01 + +yes + +06.2X + +no + +3490-06.31 + +yes (EXPERIMENTAL) + +06.5X + +no + +7490-06.51 + +yes (EXPERIMENTAL) + +06.8X + +no + +7490-06.80 + +yes (EXPERIMENTAL) + +7490 + +05.2X + +n.a. + +n.a. + +n.a. + +05.5X + +`​7490-05.59 <ftp://ftp.avm.de/fritz.box/fritzbox.7490/x_misc/opensrc/source-files-FRITZ.Box_7490-05.59.tar.gz>`__ + +7490-05.59 + +yes + +06.0X + +`​7490-06.01 <ftp://ftp.avm.de/fritz.box/fritzbox.7490/x_misc/opensrc/source-files-FRITZ.Box_7490-06.01.tar.gz>`__, +`​7490-06.05 <ftp://ftp.avm.de/fritz.box/fritzbox.7490/x_misc/opensrc/source-files-FRITZ.Box_7490-06.05.tar.gz>`__ + +7490-06.05 + +yes + +06.2X + +`​7490-06.10-Labor <ftp://ftp.avm.de/fritz.box/fritzbox.7490/x_misc/opensrc/source-files-FRITZ.Box_7490_Labor-06.10-27948.tar.gz>`__, +`​7490-06.20 <ftp://ftp.avm.de/fritz.box/fritzbox.7490/x_misc/opensrc/source-files-FRITZ.Box_7490-06.20.tar.gz>`__ +(almost the same as 3490-06.20, less NAND chips), +`​7490-06.23 <ftp://ftp.avm.de/fritz.box/fritzbox.7490/x_misc/opensrc/source-files-FRITZ.Box_7490-06.23.tar.gz>`__, +`​7490-06.30 <ftp://ftp.avm.de/fritz.box/fritzbox.7490/x_misc/opensrc/source-files-FRITZ.Box_7490-06.30.tar.gz>`__ + +7490-06.30 + +yes (EXPERIMENTAL) + +06.5X + +`​7490-06.50 <ftp://ftp.avm.de/fritz.box/fritzbox.7490/x_misc/opensrc/source-files-FRITZ.Box_7490-06.50.tar.gz>`__, +`​7490-06.51 <ftp://ftp.avm.de/fritz.box/fritzbox.7490/x_misc/opensrc/source-files-FRITZ.Box_7490-06.51.tar.gz>`__, +`​7490-06.60 <ftp://ftp.avm.de/fritz.box/fritzbox.7490/x_misc/opensrc/source-files-FRITZ.Box_7490-06.60.tar.gz>`__, +`​7490-06.61 <ftp://ftp.avm.de/fritz.box/fritzbox.7490/x_misc/opensrc/source-files-FRITZ.Box_7490-06.61.tar.gz>`__ +(there were no 7490-06.61 release), +`​7490-06.62 <ftp://ftp.avm.de/fritz.box/fritzbox.7490/x_misc/opensrc/source-files-FRITZ.Box_7490-06.62.tar.gz>`__ +(there were no 7490-06.62 release) + +7490-06.60 + +yes (EXPERIMENTAL) + +06.8X + +`​7490-06.80 <ftp://ftp.avm.de/fritz.box/fritzbox.7490/x_misc/opensrc/source-files-FRITZ.Box_7490-06.80.tar.gz>`__ + +7490-06.80 + +yes (EXPERIMENTAL) + +.. _Treelikeoverview: + +Tree like overview +~~~~~~~~~~~~~~~~~~ + +Tree like overview of all kernel sources published by AVM so far (as of +2014-09-23) for 05.2x, 05.5x, 06.0x, and 06.2x firmwares (generated +using ``tree -d -L 4 --noreport | grep -Ev "linux-2.6.(28|32)"``). + +.. code:: bash + + Legend: + * listed directly under 0X.YZ => unique kernel-source-package not equal to any other + * listed under BOXID.0X.YZ-identical => kernel-source-package is identical to BOXID.0X.YZ + + . + ├── AR10 + │ ├── 05.5X + │ │ └── 7272.05.59 + │ └── 06.2X + │ └── 7272.06.10-Labor + ├── AR9 + │ ├── 05.2X + │ │ ├── 7330.05.20 + │ │ └── 7330.05.20-identical + │ │ ├── 7320.05.20 + │ │ └── 7330sl.05.20 + │ ├── 05.5X + │ │ ├── 7330.05.50 + │ │ └── 7330.05.50-identical + │ │ ├── 7312.05.50 + │ │ ├── 7320.05.50 + │ │ └── 7330sl.05.50 + │ └── 06.0X + │ ├── 7330sl.06.01 + │ └── 7330sl.06.01-identical + │ ├── 7312.06.01 + │ └── 7320.06.01 + ├── IKS + │ ├── 05.2X + │ │ ├── 7390.05.20 + │ │ └── 7390.05.21 + │ ├── 05.5X + │ │ ├── 7390.05.50 + │ │ ├── 7390.05.51 + │ │ └── 7390.05.52 + │ ├── 06.0X + │ │ ├── 7390.06.00 + │ │ ├── 7390.06.01 + │ │ └── 7390.06.01-identical + │ │ └── 7390.06.04 + │ └── 06.2X + │ └── 7390.06.20 + ├── OHIO + │ └── 04.XX + │ ├── 7112.04.88-almost-the-same-as-7170.04.87 + │ ├── 7113.04.76 + │ ├── 7170.04.76 + │ ├── 7170.04.76-identical + │ │ └── 7170sl.04.76 + │ ├── 7170.04.80 + │ ├── 7170.04.80-identical + │ │ └── 7170sl.04.80 + │ └── 7170.04.87 + ├── UR8 + │ ├── 04.XX + │ │ ├── 7270.04.76 + │ │ ├── 7270.04.80 + │ │ ├── 7270.04.86 + │ │ ├── 7270.04.86-identical + │ │ │ ├── 3270.04.86 + │ │ │ ├── 3270v3.04.87-almost-the-same-DEBUG_MASK + │ │ │ ├── 7240.04.87 + │ │ │ ├── 7270v1.04.86 + │ │ │ ├── 7270v2.04.86 + │ │ │ └── 7270v3.04.86 + │ │ └── 7570.04.78-almost-the-same-as-7270.04.76 + │ ├── 05.2X + │ │ ├── 7270v2.05.21 + │ │ └── 7270v2.05.21-identical + │ │ ├── 3270.05.21 + │ │ ├── 3270v3.05.21 + │ │ ├── 7240.05.21 + │ │ └── 7270v3.05.21 + │ ├── 05.5X + │ │ ├── 7270.05.50 + │ │ ├── 7270.05.50-identical + │ │ │ ├── 3270.05.50 + │ │ │ ├── 3270v3.05.50 + │ │ │ ├── 7240.05.50 + │ │ │ ├── 7270v2.05.50 + │ │ │ └── 7270v3.05.50 + │ │ ├── 7270.05.51 + │ │ └── 7270.05.51-identical + │ │ ├── 7270v2.05.51 + │ │ └── 7270v3.05.51 + │ └── 06.0X + │ ├── 7270.06.05 + │ └── 7270.06.05-identical + │ ├── 7240.06.05 + │ └── 7270v3.06.05 + └── VR9 + ├── 05.2X + │ ├── 3370.05.21 + │ ├── 7360v1.05.20 + │ └── 7360v1.05.20-identical + │ └── 7360sl.05.20 + ├── 05.5X + │ ├── 7360.05.50 + │ ├── 7360.05.50-identical + │ │ ├── 3370.05.50 + │ │ ├── 3390.05.51 + │ │ ├── 6840lte.05.50 + │ │ ├── 7360sl.05.50 + │ │ ├── 7360sl.05.51 + │ │ ├── 7360v1.05.50 + │ │ └── 7362sl.05.53-contains-extra-7362-support + │ ├── 7360.05.51 + │ ├── 7360.05.51-identical + │ │ ├── 3370.05.51 + │ │ └── 7360v1.05.51 + │ └── 7490.05.59 + ├── 06.0X + │ ├── 7490.06.01 + │ ├── 7490.06.01-identical + │ │ ├── 3370.06.01 + │ │ ├── 3390.06.01 + │ │ ├── 6840lte.06.01 + │ │ ├── 7360sl.06.00 + │ │ ├── 7360sl.06.01 + │ │ ├── 7360v1.06.00 + │ │ ├── 7360v2.06.00 + │ │ └── 7362sl.06.00 + │ └── 7490.06.05 + └── 06.2X + ├── 7490.06.10-Labor + ├── 3490.06.20 + └── 3490.06.20-identical + └── 7490.06.20-minor-NAND-code-differences (no toshiba chips) diff --git a/wiki/libs.rst b/wiki/libs.rst new file mode 100644 index 0000000..d8c81ff --- /dev/null +++ b/wiki/libs.rst @@ -0,0 +1,54 @@ +.. _Bibliothekenlibraries: + +Bibliotheken (libraries) +======================== + +.. _AbwählenvonBibliotheken: + +Abwählen von Bibliotheken +------------------------- + +Bibliotheken (im Nachfolgenden "libs" genannt") zu Paketen, die +abgewählt wurden, werden nicht automatisch mit abgewählt. Um nach der +Abwahl diverser Pakete auch die nicht mehr benötigten libs zu entfernen +(damit das Image nachher auch tatsächlich nicht zu groß wird) gibt es +folgende *make*-Targets: + +.. code:: bash + + # Unnötige Libs und Busybox-Applets deselektieren + make config-clean-deps + + # Oder nur unnötige Libs deselektieren, Busybox-Applets in Ruhe lassen + make config-clean-deps-keep-busybox + +.. _ListederBibliotheken: + +Liste der Bibliotheken +---------------------- + +Bibliotheken, die als "ex" (external) markiert sind, lassen sich +wahlweise direkt in das Firmware-Image einbauen - oder aber "nach extern +auslagern" (z.B. auf einen USB-Stick). "St" beschreibt den aktuellen +Stand (Status) der Einbindung in Freetz (|{*}| stable, |{o}| testing, +|<!>| unstable), und ist nicht unbedingt immer aktuell (den aktuelleren +Status erkennt man daran, wo das Paket letztendlich in +`menuconfig <help/howtos/common/install/menuconfig.html>`__ auftaucht. + ++-------------+-------------+-------------+-------------+-------------+ +| **Paketname | **Beschreib | **ex** | **St** | **Größe** | +| ** | ung** | | | | ++-------------+-------------+-------------+-------------+-------------+ +| `ftdi <libs | ftdi | | |{o}| | | +| /ftdi.html> | drivers for | | | | +| `__ | RS-232-USB | | | | +| | adapters | | | | ++-------------+-------------+-------------+-------------+-------------+ + +- Tags +- `libs <libs.html>`__ + +.. |{*}| image:: ../chrome/wikiextras-icons-16/stable.png +.. |{o}| image:: ../chrome/wikiextras-icons-16/testing.png +.. |<!>| image:: ../chrome/wikiextras-icons-16/exclamation-red.png + diff --git a/wiki/libs/ftdi.en.rst b/wiki/libs/ftdi.en.rst new file mode 100644 index 0000000..538246b --- /dev/null +++ b/wiki/libs/ftdi.en.rst @@ -0,0 +1,107 @@ +libftdi +======= + +"*libFTDI is an open source library to talk to FTDI chips: FT232BM, +FT245BM, FT2232C, FT2232D and FT245R, including the popular bitbang +mode. The library is linked with your program in userspace, no kernel +driver required.*" + +Location in the Freetz menu *Advanced options > Shared libraries > +libftdi*. + +.. _Exampleapplication: + +Example application +------------------- + +An interesting application is to control I/O ports using the CBUS Bit +Bang Mode available on the FT232R chip (and maybe other chips) from your +box. + +I have used this `​FTDI - EVAL232R - +EVALUATIONSKIT <http://de.farnell.com/jsp/search/productdetail.jsp?sku=1146041&CMP=i-bf9f-00001000>`__, +but any converter that has a FT232R chip and exposes the CBUS lines can +be used. + +First of all you have to program the CBUS port lines for I/O using +**FT_Prog** (see link below), else it will not work. + +Example program to let a LED blink on port CBUS0: + +.. code:: bash + + #include <stdio.h> + #include <ftdi.h> + + int main(int argc, char** argv) + { + int f; + struct ftdi_context ftdic; + + printf("ftdi_usb_open\n"); + ftdi_init(&ftdic); + f = ftdi_usb_open(&ftdic, 0x0403, 0x6001); + if(f < 0) { + fprintf(stderr, "ftdi_usb_open failed, error %d (%s)\n", f, ftdi_get_error_string(&ftdic)); + return -1; + } + + fprintf(stdout, "Blinking ...\n"); + int b = 0; + while (1) { + fprintf(stdout, "%x ", b); + fflush(stdout); + f = ftdi_set_bitmode(&ftdic, 0x10 | b, BITMODE_CBUS); + if (f < 0) { + fprintf(stderr, "ftdi_set_bitmode failed, error %d (%s)\n", f, ftdi_get_error_string(&ftdic)); + return -1; + } + usleep(500000L); + b = b ^ 0x01; + } + } + +It is possible to test in Ubuntu first: + +.. code:: bash + + sudo apt-get install libftdi-dev + gcc blink.c -lftdi -Wall -oblink + sudo ./blink + +Compile for Freetz: + +.. code:: bash + + ~/freetz/toolchain/target/bin/mipsel-linux-gcc blink.c -lftdi -Wall -oblink + +Run on your box: + +.. code:: bash + + LD_LIBRARY_PATH=/mod/lib:/usr/lib/freetz + export LD_LIBRARY_PATH + ./blink + +Note that the CBUS Bit Bang Mode is not suitable for high speed +applications, since a command has to travel through the USB bus and has +to be interpreted by the chip before anything happens. However, for +switching things on and off or to monitor input lines, for example +connected switches, it is an easy solution. + +.. _Links: + +Links +----- + +- `​libFTDI - FTDI USB driver with bitbang + mode <http://www.intra2net.com/en/developer/libftdi/>`__ +- `​ftdi.h File + Reference <http://www.intra2net.com/en/developer/libftdi/documentation/ftdi_8h.html>`__ +- `​D2XX Programmer + Guide <http://www.ftdichip.com/Support/Documents/ProgramGuides/D2XX_Programmer%27s_Guide(FT_000071).pdf>`__ + (PDF) +- `​FT_PROG - EEPROM Programming + Utility <http://www.ftdichip.com/Support/Utilities.htm#FT_Prog>`__ + (Windows only) +- `​USB PROJECTS <http://chinwah-engineering.com/USBProjects.html>`__ diff --git a/wiki/libs/ftdi.rst b/wiki/libs/ftdi.rst new file mode 100644 index 0000000..e38ca67 --- /dev/null +++ b/wiki/libs/ftdi.rst @@ -0,0 +1,160 @@ +ftdi +==== + +Das Paket +`​ftdi <http://www.ip-phone-forum.de/showthread.php?p=1193103#post1193103>`__ +stellt entsprechende Treiber für +`​RS-232 <http://de.wikipedia.org/wiki/Rs232>`__-`​USB <http://de.wikipedia.org/wiki/USB>`__-Adapter +auf der Box zur Verfügung, so dass man mit einem solchen Adapter mit +`​FTDI <http://www.ftdichip.com>`__-Chipsatz ein serielles Gerät +(Relais-Karten, Temperaturfühler, Wetterstationen, ggf. ganze +Heizanlagen uvm.) an die Box anschließen und darüber mit diesen Geräten +kommunizieren kann. + +.. _Benutzung: + +Benutzung +--------- + +.. _Beispiel-Parameter: + +Beispiel-Parameter +~~~~~~~~~~~~~~~~~~ + +.. code:: bash + + T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 3 Spd=12 MxCh= 0 + D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 + P: Vendor=0403 ProdID=6001 Rev= 4.00 + S: Manufacturer=ftdi + S: Product=usb serial converter + S: SerialNumber=ftBNKG1I + C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr= 44mA + I: If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=ftdi_sio + E: Ad=81(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms + E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms + +.. _AnpassenderBaudrate: + +Anpassen der Baudrate +~~~~~~~~~~~~~~~~~~~~~ + +Eine ggf. erforderliche Anpassung der Baudrate wird in `​diesem +Forum <http://www.mikrocontroller.net/topic/92022>`__ diskutiert. + +.. _VerbindungzumTesten: + +Verbindung zum Testen +~~~~~~~~~~~~~~~~~~~~~ + +- Verkabelung herstellen: + Fritzbox ⇔ USB-RS-232-Adapter ⇔ + `​Null-Modem <http://de.wikipedia.org/wiki/Nullmodem>`__-Kabel ⇔ + Kontrollgerät (PC/Laptop/Macbook o.ä.) + +- Auf dem Kontrollgerät ein + `​Hyperterminal <http://de.wikipedia.org/wiki/HyperTerminal>`__ + öffnen +- Auf der Fritzbox: + + .. code:: bash + + echo "Hallo" > /var/ttyUSB0 + +.. + + Statt *ttyUSB0* ist ggf. etwas anderes zu wählen, je nach dem, ob + man den Adapter direkt an der Fritzbox angeschlossen hat, oder + über einen USB-Hub mit mehreren USB-Ports. + +- Ergebnis im Hyperterminal auf dem Kontrollgerät: + + .. code:: bash + + Hallo + +Und das sollte auch anders herum funktionieren, also von der Fritzbox +aus. + +.. _USB-Fernanschluss: + +USB-Fernanschluss +----------------- + +| Da es von AVM (leider nur für Windows) den sog. + `​USB-Fernanschluss <http://www.avm.de/de/Service/FAQs/FAQ_Sammlung/14300.php3?portal=FRITZ!Box_Fon_WLAN_7170&weitere=weitere>`__ + gibt, lässt sich das Ganze auch bequem vom Wohnzimmer aus steuern, + auch wenn die Fritzbox woanders steht (LAN/WLAN-Anschluss reicht aus). +| Voraussetzung ist, dass das Tool USB-Fernanschluss den Chipsatz + unterstützt, wie es z.B. für den + `​PL2303 <http://www.ip-phone-forum.de/showthread.php?p=1021916#post1021916>`__ + der Fall ist. +| Sollte das Tool "Keine FRITZBox gefunden!" melden, wird von AVM + `​hier <http://www.avm.de/de/Service/FAQs/FAQ_Sammlung/14564.php3?sessionid=g0q1vnu8m6d0rsjbped1svk8e7&kodo_KostenstellenProdukt=FRITZ!Box_Fon_WLAN_7170&kodo_OS=Windows%20XP&kodo_Anwendungsbereich=USB-Host&entryPoint=FAQs&URL=FAQs/FAQ_Sammlung/14564.php3>`__ + eine mögliche Lösung beschrieben. + +.. _ListemitunterstützenAdaptern: + +Liste mit unterstützen Adaptern +------------------------------- + +Hier folgt eine Liste mit unterstützen Adaptern. Auch dazu gibt es einen +`​Diskussions-Thread im +IP-Phone-Forum <http://www.ip-phone-forum.de/showthread.php?t=165042>`__. + +- … +- … +- … + +.. _Anregungen: + +Anregungen +---------- + +Hier folgt eine Liste mit Anregungen und Links zu Projekten, welche +Geräte man ggf. an eine Fritzbox anschließen und darüber steuern kann: + +- `​Tecalor THZ 303 + SOL <http://www.tecalor.de/Kunden-Portal/THZ-403303-SOL.html>`__ + (Luftwärmepumpe/Heizung mit integrierter Wärmerückgewinnung) - siehe + auch in + `​diesem <http://www.haustechnikdialog.de/Forum/Default.aspx?t=85548&headline=Software+zum+Auslesen+der+Tecalor+THZ+303+SOL+%c3%bcber+RS232+o.a.+Schnittstelle>`__ + Forum + (Falls Links zu kommerziellen Seiten hier unerwünscht sind, kann man + den Link gerne wieder rausnehmen.) +- `​Powerswitch <http://www.obdev.at/products/avrusb/powerswitch.html>`__ + von Objective Development mit Atmel AVR Microcontroller (AVR-USB) +- `​USB-Relaisschalter <http://www.ip-phone-forum.de/showthread.php?t=175015>`__ +- … + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​FTDI Treiber im + Freetz-Mod? <http://www.ip-phone-forum.de/showthread.php?t=159126>`__ + (Haupt-Diskussionsthread) +- `​RS232-USB-Adapter an + Fritzbox <http://www.ip-phone-forum.de/showthread.php?t=165042>`__ +- `​Hilfe!! PL2303 + Adapter <http://www.ip-phone-forum.de/showthread.php?t=137606>`__ +- `​USB-Seriell-Adapter an + 7170? <http://www.ip-phone-forum.de/showthread.php?t=164738>`__ +- `​USB - Seriell Treiber in + DS-Mod <http://www.ip-phone-forum.de/showthread.php?t=101712>`__ +- `​Frage Steckdosenleiste mit FB + steuern? <http://www.ip-phone-forum.de/showthread.php?t=105490>`__ +- `​ARK3116 USB zu Seriell Adapter an + FB7150 <http://www.ip-phone-forum.de/showthread.php?t=151020>`__ +- `​Wie Konsole an serieller Schnittstelle? FB + 3170 <http://www.ip-phone-forum.de/showthread.php?t=146800>`__ +- `​ftdi_sio crasht unter Last (bug: + CVE-2006-2936) <http://www.ip-phone-forum.de/showthread.php?t=164738>`__ +- `​Montageanweisung Tecalor THZ 303 SOL + Luftwärmepumpe <http://energie-effizientes-haus.de/Daten/Niedrigstenergietechnik/THZ%20303%20SOL%20-%20Gebrauchs-%20und%20Montageanweisung.pdf>`__ + (Schaltbilder mit RS232-Schnittstelle auf Seiten 17+18) +- `​Seriellen / V24 Port der FB als virtuellen Port auf Windows PC + nutzen <http://www.ip-phone-forum.de/showthread.php?t=143186>`__ +- `​Mikrocontroller an AVM. Frage zu: Mögliche fritzboxinterne + Kommunikation <http://www.ip-phone-forum.de/showthread.php?p=1137643#post1137643>`__ diff --git a/wiki/libs_tagged.rst b/wiki/libs_tagged.rst new file mode 100644 index 0000000..aa6b84f --- /dev/null +++ b/wiki/libs_tagged.rst @@ -0,0 +1,39 @@ +.. _BibliothekennachAnwendungsgebieten: + +Bibliotheken nach Anwendungsgebieten +==================================== + +Diese Seite versucht, die `verfügbaren Pakete <libs.html>`__ nach +Anwendungsgebieten aufzulisten. Die Listen werden automatisch über +`Tags </tags>`__ generiert - woraus dreierlei resultiert: + +#. *Die Liste ist nie vollständig.* + Existiert für eine Bibliothek noch kein Artikel, sind meist auch noch + keine Tags dafür vergeben - und die Bibliothek Paket kann daher hier + nicht auftauchen. Gleiches gilt natürlich, wenn ein vorhandener + Artikel nicht "getagged" wurde. +#. *Die Liste ist nie 100% korrekt.* + Dazu reicht schon ein falsches Tag auf einem Artikel… +#. *Es gibt hier u.U. Duplikate.* + Während manche Artikel vielleicht gar kein Tag haben, wurden anderen + vielleicht gleich mehrere Tags vergeben. So könnte z.B. eine + SSL-Library sowohl unter "Web", als auch unter "Netzwerk" einsortiert + werden. + +Will man wirklich auf "Nummer Sicher" gehen, bleibt also nur der Weg +über die (hoffentlich vollständige) `Bibliotheksliste <libs.html>`__. + +.. _Hardware: + +Hardware +-------- + +.. _USB: + +USB +~~~ + +- `packages/ftdi </wiki/packages/ftdi>`__ + +- Tags +- `libs <libs.html>`__ diff --git a/wiki/packages.rst b/wiki/packages.rst new file mode 100644 index 0000000..c544fd5 --- /dev/null +++ b/wiki/packages.rst @@ -0,0 +1,1778 @@ +.. _PaketeAddonsundCGI-Erweiterungen: + +Pakete, Addons und CGI-Erweiterungen +==================================== + +Diese WIKI-Seite dient als Überblick und sollte helfen sich für das eine +oder für das andere Paket zu entscheiden. Neben diesem Überblick +existiert noch `​ein Thread in +IPPF <http://www.ip-phone-forum.de/showthread.php?t=180289>`__, wo jeder +seine Lieblingskonfiguration posten kann. Diese +"Lieblingskonfigurationen" geben einen guten Richtwert dazu, wie viele +Pakete auf einmal die Box gerade noch ertragen kann, um noch stabil zu +funktionieren. Die Größenangaben (Platzbedarf/-einsparung im +komprimierten Dateisystem) sind nur ungefähre Richtwerte und können von +Version zu Version variieren. + +.. _Pakete: + +Pakete +------ + +Pakete, die als "ex" (`external <help/howtos/common/external.html>`__) +markiert sind, lassen sich wahlweise "nach extern auslagern" (z.B. auf +einen USB-Stick). "St" beschreibt den aktuellen Stand (Status) der +Einbindung in Freetz (|{*}| stable, |{o}| testing, |<!>| unstable), und +ist nicht unbedingt immer aktuell (den aktuelleren Status erkennt man +daran, wo das Paket letztendlich in +`menuconfig <help/howtos/common/install/menuconfig.html>`__ auftaucht. +Das Paket ist ab "Version" in Freetz enthalten. + +**Paketname** + +**Beschreibung** + +**ex** + +**St** + +**Größe** + +**Version** + +`aiccu <packages/aiccu.html>`__ + +SixXS IPv6 tunnel + +|{*}| + +1.2 + +`Apache + PHP <packages/apache.html>`__ + +Apache Webserver mit PHP + +|{o}| + +550kb+ + +1.0 + +`Asterisk <packages/asterisk.html>`__ + +PBX-Telefonanlage + +|(./)| + +|<!>| + +`autofs <packages/autofs.html>`__ + +bindet Dateisysteme bei Bedarf ein + +|(./)| + +|{o}| + +1.2 + +`Bash <packages/bash.html>`__ + +die **B**\ ourne **A**\ gain **Sh**\ ell + +|(./)| + +|{o}| + +540kb+ + +1.0 + +bfusb? + +Unterstützung für den AVM BlueFRITZ! USB Stick + +|{o}| + +1.1 + +`bind <packages/bind.html>`__ + +DNS-Server + +|(./)| + +|{o}| + +1,7mb+ + +1.2 + +`BIP <packages/bip.html>`__ + +IRC Proxy + +|(./)| + +|{o}| + +1.0 + +`BlueZ <packages/bluez.html>`__ + +Official Linux Bluetooth protocol stack + +|(./)| + +|{o}| + +| ~1mb +| (incl. libs) + +2.0 + +`Bluez-Utils <packages/bluez-utils.html>`__ + +Bluetooth Utilities + +|(./)| + +|{o}| + +1.0 + +`bftpd <packages/bftpd.html>`__ + +kleiner FTP-Server + +|{*}| + +~ 62kb + +1.0 + +`bird <packages/bird.html>`__ + +Internet Routing-Daemon + +|{*}| + +1.0 + +`br2684ctl <packages/br2684ctl.html>`__ + +Konfigurationstool für ATM Ethernet Bridging + +|{o}| + +1.1 + +`bridge-utils <packages/bridge-utils.html>`__ + +Kein Kartenspiel, sondern TCP bridging Utilities + +|{*}| + +1.0 + +`Callmonitor <packages/callmonitor.html>`__ + +ermöglicht Konfiguration von Aktionen bei eingehenden Anrufen + +|{*}| + +1.0 + +`checkmaild <packages/checkmaild.html>`__ + +POP3/ IMAP-Mailkonten regelmäßig auf neue Mails überprüfen lassen + +|(./)| + +|{*}| + +16kb + +1.0 + +`cifsmount <packages/cifsmount.html>`__ + +Netzwerklaufwerke einbinden + +|{*}| + +1.0 + +Collectd? + +Sammeln von Systeminformationen + +|(./)| + +|<!>| + +1.0 + +classpath? + +Java Classpath + +|{o}| + +1.0 + +`cpmaccfg <packages/cpmaccfg.html>`__ + +internen Switch konfigurieren + +|{*}| + +1.0 + +CryptSetup? + +Disk Encryption + +|(./)| + +|{o}| + +1.0 + +`CTorrent <packages/ctorrent.html>`__ + +ein BitTorrent Client + +|(./)| + +|{o}| + +1.0 + +`CURL <packages/curl.html>`__ + +ein Tool ähnlich wget mit SSL-Unterstützung + +|(./)| + +|{o}| + +1.0 + +`davfs2 <packages/davfs2.html>`__ + +WebDAV Share mounten + +|(./)| + +|{o}| + +1.1 + +`Debootstrap <packages/debootstrap.html>`__ + +Debian Bootstrap + +|{o}| + +1.0 + +`deco <packages/deco.html>`__ + +Demos Commander - Dateimanager + +|(./)| + +|{*}| + +~ 60kb + +1.0 + +`DemoPackageA <packages/DemoPackageA.html>`__ + +Ein Demo-Plugin "Hello World" + +|{o}| + +2.0 + +`DigiTemp <packages/digitemp.html>`__ + +Werte von 1-wire devices auslesen + +|(./)| + +|{o}| + +1.2 + +`Dns2TCP <packages/dns2tcp.html>`__ + +noch ein TCP Tunneler + +|(./)| + +|{*}| + +1.0 + +`dnsmasq <packages/dnsmasq.html>`__ + +DNS-, DHCP- und TFTP-Server + +|{*}| + +~100kb + +1.0 + +dosfstools? + +Utilities für das FAT Dateisystem + +|(./)| + +|{o}| + +1.2 + +`dropbear <packages/dropbear.html>`__ + +kleiner SSH2-Server und Client + +|{*}| + +~85kb + +1.0 + +`dtach <packages/dtach.html>`__ + +detaches a program from the terminal (similar to screen, but a lot +smaller) + +|(./)| + +|{o}| + +1.1 + +`DTMFBox <packages/dtmfbox.html>`__ + +Softswitch-Applikation für SIP und CAPI (VoIP/ISDN) + +|(./)| + +|{*}| + +1.0 + +`e2fsprogs <packages/e2fsprogs.html>`__ + +Utilities für das EXT2 Dateisystem + +|(./)| + +|{o}| + +~312kb + +1.0 + +`E-MailRelay <packages/emailrelay.html>`__ + +E-Mail Proxy/Forwarder + +|{o}| + +`Empty <packages/empty.html>`__ + +PTY Utility + +|{o}| + +1.0 + +`eSpeak <packages/espeak.html>`__ + +TTS-Sprachsynthesizer für Englisch und andere Sprachen + +|(./)| + +|{*}| + +1.0 + +`fortune <packages/fortune.html>`__ + +Anzeige von Glückskeksen und anderen humorvollen Aphorismen + +|{o}| + +~4kb + +1.2 + +`fstyp <packages/fstyp.html>`__ + +Erkennung von Dateisystemen + +|{o}| + +1.0 + +`FUSE <packages/fuse.html>`__ + +Filesystem in Userspace + +|{*}| + +1.0 + +git? + +verteilte Versionsverwaltung von Dateien + +|{o}| + +1.2 + +`gw6 <packages/gw6.html>`__ + +gogo6/freenet6 IPv6 tunnel + +|(./)| + +|{o}| + +1.2 + +`Haserl <packages/haserl.html>`__ + +Haserl is a small program that uses shell or Lua script to create cgi +web scripts + +|{o}| + +~37kb + +1.0 + +`hiawatha <packages/hiawatha.html>`__ + +Hiawatha is a webserver for Unix and has been build with security in +mind + +|(./)| + +|{o}| + +~105kb + +2.0 + +`hd-idle <packages/hd-idle.html>`__ + +Tool zum Abschalten inaktiver Festplatten + +|{o}| + +1.1 + +`hol <packages/hol.html>`__ + +Tool zum Abschalten von PCs über das Netzwerk + +|{o}| + +1.2 + +`hp-utils <packages/hp-utils.html>`__ + +Tools für HP-Drucker + +|<!>| + +~104kB + +1.2 + +`HPLIP <packages/hplip.html>`__ + +HP Linux Imaging and Printing: Scannen und Tools für HP-Geräte + +|<!>| + +~330kB + +1.2 + +`htpdate <packages/htpdate.html>`__ + +Zeitsynchronisierung über HTTP + +|{o}| + +1.2 + +`httptunnel <packages/httptunnel.html>`__ + +HTTP Tunnel Server + +|(./)| + +|{o}| + +1.1 + +iftop? + +'top' für's Netzwerk + +|(./)| + +|{o}| + +52kB + +1.2 + +`igmpproxy <packages/igmpproxy.html>`__ + +Einfacher multicast routing daemon + +|{o}| + +35kB + +1.2 + +ImapProxy? + +ImapProxy is a caching IMAP proxy server + +|{o}| + +2.0 + +`inadyn <packages/inadyn-mt.html>`__ + +kleiner dynamic DNS Client + +|{o}| + +1.0 + +`inetd <packages/inetd.html>`__ + +'Virtual' inetd package + +|{*}| + +1.0 + +`inotify Tools <packages/inotify-tools.html>`__ + +Protokollierung von bzw. Ereignissteuerung durch Dateisystem-Vorgänge(n) + +|(./)| + +|{o}| + +1.0 + +`iodine <packages/iodine.html>`__ + +TCP over DNS Tunnel + +|(./)| + +|{o}| + +~55kb + +1.0 + +`iptables <packages/iptables.html>`__ + +Netfilter/IpTables (Linux Firewall) + +|(./)| + +|<!>| + +~ 30kb + +1.0 + +`Irssi <packages/irssi.html>`__ + +IRC Client + +|(./)| + +|{o}| + +~780kb + +1.0 + +`JamVM <packages/jamvm.html>`__ + +eine kleine, doch vollständige Java VM + +|{o}| + +~160kb + +1.0 + +`knockd <packages/knock.html>`__ + +Ermöglicht Port Knocking + +|(./)| + +|{*}| + +~ 60kb + +1.0 + +`ldd <packages/ldd.html>`__ + +List Dynamic Dependencies (wovon hängt was ab) + +|(./)| + +|{*}| + +1.0 + +`lighttpd <packages/lighttpd.html>`__ + +freier kompakter Webserver + +|(./)| + +|{o}| + +1.2 + +`lsof <packages/lsof.html>`__ + +kleines Programm, um alle offenen Dateien anzuzeigen + +|(./)| + +|{*}| + +1.0 + +`ltrace <packages/ltrace.html>`__ + +wie `strace <packages/strace.html>`__, nur halt für Libraries + +|(./)| + +|{*}| + +1.0 + +`Lua <packages/lua.html>`__ + +Lua Scripting Language + +|(./)| + +|{o}| + +~190kb + +1.0 + +`Lynx <packages/lynx.html>`__ + +Text-Modus Web-Browser + +|(./)| + +|{o}| + +1.0 + +`madplay <packages/madplay.html>`__ + +MPeg Audio Decoder + +|(./)| + +|{o}| + +1.0 + +`matrixtunnel <packages/matrixtunnel.html>`__ + +Matrixtunnel - SSL-Tunnel für abhörsicheren Zugang zur Box oder Systemen +dahinter + +|(./)| + +|{o}| + +~100kB + +1.0 + +`mc <packages/mc.html>`__ + +Midnight Commander - ein Unix-Dateimanager + +|(./)| + +|{*}| + +400kb+ + +1.0 + +`mcabber <packages/mcabber.html>`__ + +Jabber Console Client + +|{o}| + +1.1 + +`mediaserver <packages/mediaserver.html>`__ + +Mediaserver aus der AVM Labor Version ( USB ) + +2.0 + +`MediaTomb <packages/mediatomb.html>`__ + +MediaTomb UPnP MediaServer + +|{o}| + +| 1.2MB+ +| +~2.5MB Libs + +1.2? + +`microperl <packages/microperl.html>`__ + +Perl without operating-specific functions + +|(./)| + +|{o}| + +1.1 + +`minidlna <packages/minidlna.html>`__ + +DLNA/UPnP-AV Server + +|(./)| + +|{o}| + +1.2 + +`minifo <packages/mini_fo.html>`__ + +Overlay Filesystem - schreibgeschütztes Gerät beschreibbar machen + +|{*}| + +1.0 + +`module-init-tools <packages/m-i-t.html>`__ + +Utilities zum Verwalten von Kernelmodulen + +|{o}| + +1.0 + +`mod <packages/mod.html>`__ + +Base-Package. Es wird immer automatisch installiert + +|{*}| + +1.2 + +`mtr <packages/mtr.html>`__ + +Netzwerkdiagnose - Ping und Traceroute in einem + +|(./)| + +|{*}| + +1.0 + +`Nagios <packages/nagios.html>`__ + +Monitoring Programm + +|{o}| + +1.1 + +`nano <packages/nano.html>`__ + +Texteditor + +|(./)| + +|{*}| + +1.1 + +`ncftp <packages/ncftp.html>`__ + +NcFTP Client + +|(./)| + +|{o}| + +233kb+ + +1.2 + +`ndas <packages/ndas.html>`__ + +Network Direct Attached Storage + +|(./)| + +|{o}| + +1.2 + +`netcat <packages/netcat.html>`__ + +Ermöglicht Ein- und Ausgaben über das Netzwerk (TCP und UDP) + +|(./)| + +|{*}| + +1.0 + +`nmap <packages/nmap.html>`__ + +Utility for network exploration or security auditing + +|(./)| + +|{o}| + +694kb + +1.2 + +`Net-SNMP <packages/netsnmp.html>`__ + +Simple Network Management Protocol Server + +|(./)| + +|{*}| + +1.0 + +`netatalk <packages/netatalk.html>`__ + +AFP (Apple Filing Protocol) fileserver + +|<!>| + +~750kB + +1.2 + +`nfs-utils <packages/nfs-utils.html>`__ + +NFS Utilities + +|{*}| + +1.1 + +noip? + +dynamic DNS Update Client for noip + +|{o}| + +1.0 + +`nfs <packages/nfs.html>`__ + +Fritzbox als NFS-Client nutzen, um mehr Speicherplatz zu erhalten + +|{*}| + +1.1 + +`NTFS-3G <packages/ntfs-3g.html>`__ + +NTFS Support + +|(./)| + +|{*}| + +1.0 + +`ObexFTP <packages/obexftp.html>`__ + +ObexFTP Server + +|{o}| + +1.0 + +OpenConnect? + +Cisco AnyConnect VPN Client + +|{o}| + +2.0 + +`OpenDD <packages/opendd.html>`__ + +Dynamic DNS Client + +|(./)| + +|{o}| + +1.2 + +`openntpd <packages/openntpd.html>`__ + +Abgleich und Bereitstellung der Uhrzeit + +|{*}| + +1.0 + +OpenSSH? + +SSH2-Server und Client, SFTP-Server + +|(./)| + +|{o}| + +440kb+ + +1.1 + +`openvpn <packages/openvpn.html>`__ + +ermöglicht Aufbau eines virtuellen privaten Netzwerks (VPN) + +|(./)| + +|{*}| + +1.0 + +`OWFS <packages/owfs.html>`__ + +Unterstütztung für viele 1-wire devices + +|(./)| + +|{o}| + +1.2 + +`pciutils <packages/pciutils.html>`__ + +Utilities für PCI Geräte + +|{*}| + +1.1 + +`PHP <packages/php.html>`__ + +Server-side HTML embedded scripting language + +|{*}| + +| ~5mb +| (without libs) + +1.0 + +`pingtunnel <packages/pingtunnel.html>`__ + +TCP mit ICMP Echo Anfragen und Antworten (ping) tunneln + +|{*}| + +~40kb + +1.0 + +Polipo? + +Small and fast caching web proxy + +|{*}| + +~220kB + +1.2 + +`portmap <packages/portmap.html>`__ + +portmap Utility + +|{*}| + +1.1 + +`pptp <packages/pptp.html>`__ + +PPTP-Client + +|(./)| + +|{o}| + +95kb + +1.0 + +`pptpd <packages/pptpd.html>`__ + +Poptop - Ein PPTP-Server + +|(./)| + +|{o}| + +79kb + +1.0 + +`privoxy <packages/privoxy.html>`__ + +HTTP Proxy mit umfangreichen Filtermöglichkeiten + +|(./)| + +|{*}| + +1.0 + +`Prosody IM <packages/prosody.html>`__ + +Prosody is a flexible communications server for Jabber/XMPP written in +Lua + +|{o}| + +2.0 + +`Quagga <packages/quagga.html>`__ + +The Quagga Software Routing Suite + +|{o}| + +1.0 + +`radvd <packages/radvd.html>`__ + +IPv6 router advertisement daemon + +|(./)| + +|{*}| + +386kb + +1.2 + +rcapid? + +CAPI-Server + +|{*}| + +1.0 + +`rrdtool <packages/rrdtool.html>`__ + +Data logging and graphing system + +|(./)| + +|{o}| + +424kb + +1.0 + +rsync? + +Effizientes Kopieren von Dateien über Netzwerk + +|(./)| + +|{o}| + +410kb + +1.2 + +`Ruby <packages/ruby.html>`__ + +Ruby Scripting Language + +|{o}| + +~1.3MB + +1.0 + +`s3fslite <packages/s3fslite.html>`__ + +FUSE file system for Amazon S3 + +|{o}| + +2.0 + +SableVM? + +alternative Java VM + +|{o}| + +1.1 + +Shell in a Box? + +Terminal im Webbrowser + +|(./)| + +|{o}| + +1.2 + +`samba/nmbd <packages/samba.html>`__ + +Freigabe von Dateien über das SMB/CIFS-Protokoll (auch für Windows) +sowie Namensauflösung der Box im Netzwerk + +|(./)| + +|{*}| + +1.0 + +`SANE <packages/sane-backends.html>`__ + +**S**\ canner **A**\ ccess **N**\ ow **E**\ asy (Scanner-Support, +Scan-Server) + +|<!>| + +~90-700kB + +1.1 + +`screen <packages/screen.html>`__ + +Fenstermanager zur Verwendung mit textbasierten Eingabefenstern +(Textkonsole) + +|(./)| + +|{*}| + +1.0 + +`ser2net <packages/ser2net.html>`__ + +Serial to Network Proxy, COM-Ports über telnet und TCP nutzen + +|{o}| + +2.0 + +`sispmctl <packages/sispmctl.html>`__ + +GEMBIRD SiS-PM (sispm) USB-controlled power-outlet device (AKA +IntelliPlug) Support + +|{o}| + +1.0 + +`SMARTmontools <packages/smartmontools.html>`__ + +Zeigt S.M.A.R.T. Werte von Festplatten an + +|(./)| + +|{o}| + +1.2 + +`smstools3 <packages/smstools3.html>`__ + +Senden/Empfangen von SMS mit UMTS-Stick + +|{o}| + +2.0 + +`socat <packages/socat.html>`__ + +eine Art erweitertes `netcat <packages/netcat.html>`__ (inkl. SSL +Support) + +|{o}| + +1.1 + +squid? + +Web Proxy Server + +|(./)| + +|{o}| + +1.1 + +`strace <packages/strace.html>`__ + +Tool zum "Tracen" von Programmen + +|(./)| + +|{*}| + +1.0 + +`Streamripper <packages/streamripper.html>`__ + +Record mp3 streams + +|(./)| + +|{o}| + +1.0 + +`stunnel <packages/stunnel.html>`__ + +SSL-Tunnel für TCP-Verbindungen + +|(./)| + +|{*}| + +1.0 + +`subversion (svn) <packages/subversion.html>`__ + +Software zur Versionsverwaltung von Dateien und Verzeichnissen + +|(./)| + +|{o}| + +1.2 + +`Sundtek Treiber <packages/sundtek.html>`__ + +Treiber für Sundtek DVB Sticks + +|{o}| + +1.0 + +`tcpdump <packages/tcpdump.html>`__ + +Überwachung und Auswertung des Netzwerkverkehrs + +|(./)| + +|{*}| + +| full: ~680kb +| mini: ~350kb + +1.0 + +`tcp_wrappers <packages/tcp_wrappers.html>`__ + +Host-basiertes Networking ACL System + +|{o}| + +1.1 + +`Tinc <packages/tinc.html>`__ + +VPN Daemon + +|<!>| + +1.1 + +`tinyproxy <packages/tinyproxy.html>`__ + +HTTP and HTTPS Proxy + +|{*}| + +~ 70kB + +1.0 + +`tor <packages/tor.html>`__ + +SOCKS Proxy mit Anonymisierungsfunktion + +|(./)| + +|{*}| + +1.0 + +`transmission <packages/transmission.html>`__ + +kleiner BitTorrent Client + +|(./)| + +|{*}| + +1.0 + +tree? + +rekursives Auflisten von Verzeichnissen in Baum-Struktur + +|(./)| + +|{o}| + +1.1 + +`unbound <packages/unbound.html>`__ + +Unbound is a validating, recursive, and caching DNS resolver + +|(./)| + +|{o}| + +2.0 + +umurmur? + +kleiner Mumble Server + +|(./)| + +|{o}| + +1.2 + +unrar? + +rar-Archive auf der Box entpacken + +|(./)| + +|{o}| + +174kb + +1.2 + +`USB-IP <packages/usbip.html>`__ + +USB Device Sharing über IP + +|<!>| + +1.0 + +`USB-root <packages/usbroot.html>`__ + +Auslagerung von / auf ein USB-Laufwerk + +|{o}| + +1.0 + +`usbutils <packages/usbutils.html>`__ + +USB Geräte und Informationen auflisten + +|{*}| + +1.1 + +`vim <packages/vim.html>`__ + +"vi improved": Text-Editor + +|(./)| + +|{o}| + +1.0 + +vnstat? + +Network traffic monitor + +|{*}| + +1.2 + +`vpnc <packages/vpnc.html>`__ + +Client für den Cisco VPN-Konzentrator + +|{*}| + +1.0 + +`vsftp <packages/vsftpd.html>`__ + +Schneller, frei konfigurierbarer und sicherer FTP Server + +|(./)| + +|{*}| + +1.0 + +`vtun <packages/vtund.html>`__ + +virtueller Tunnel (VPN) über TCP/IP Netzwerke + +|(./)| + +|{o}| + +1.2 + +`wget <packages/wget.html>`__ + +WGet Utility (Dateien aus dem Internet von Kommandozeile downloaden) + +|{o}| + +~150kb + +1.0 + +`WOL <packages/wol.html>`__ + +Wake on LAN (Ersatz für ether-wake) + +|(./)| + +|{o}| + +1.1 + +`wput <packages/wput.html>`__ + +Das Gegenstück zu "wget": Dateien per HTTP hochladen + +|(./)| + +|{o}| + +1.1 + +`xmail <packages/xmail.html>`__ + +Mail server + +|{*}| + +1.2 + +Xpdf? + +PDF-Tools: Konvertierung nach PostScript/Text + Informationen (nicht der +Viewer!) + +|{o}| + +1.1 + +`xrelayd <packages/xrelayd.html>`__ + +kleiner stunnel Ersatz (Nachfolger von matrixtunnel) + +|{o}| + +~200kb + +1.0 + +`ziproxy <packages/ziproxy.html>`__ + +Forwarding, non-caching, HTTP proxy targeted for traffic optimization + +|{o}| + +| ~113kb +| libs: ~312kb + +2.0 + +.. _Addons: + +Addons +------ + +Addons sind Pakete, die (noch) nicht direkt in Freetz eingebunden sind +(für diese existiert noch kein Eintrag in der +`menuconfig <help/howtos/common/install/menuconfig.html>`__), und daher +zur Einbindung noch ein wenig +`Handarbeit <help/howtos/development/install_addon.html>`__ erfordern. + ++-----------------------------------+-----------------------------------+ +| **Paketname** | **Beschreibung** | ++-----------------------------------+-----------------------------------+ +| `nhipt <packages/nhipt.html>`__ | Leistungsfähige Web-Oberfläche | +| | zur Konfiguration der Iptables | +| | Firewall | +| | Unterstützt alle iptables / | +| | ip6tables Module (IPv4 & IPv6) | +| | als dynamisches freetz Paket | +| | direkt von USB Stick (NEW) | ++-----------------------------------+-----------------------------------+ +| `FritzLoad <packages/fritzload.ht | FritzLoad kann automatisiert | +| ml>`__ | Dateien von bzw. zu Sharehostern | +| | herunter- und hochladen | ++-----------------------------------+-----------------------------------+ +| `FHEM <packages/fhem.html>`__ | Überwachung und Steuerung von | +| | Home Automation Systemen, u.a. | +| | FS20 (mächtige Variante) | ++-----------------------------------+-----------------------------------+ +| `fhzctrl <packages/fhzctrl.html>` | Überwachung und Steuerung von | +| __ | Home Automation Systemen, u.a. | +| | FS20 (einfache Variante) | ++-----------------------------------+-----------------------------------+ + +.. _CGI-Erweiterungen: + +CGI-Erweiterungen +----------------- + ++-----------------+-----------------+-----------------+-----------------+ +| **Paketname** | **Beschreibung* | **Größe** | **Version** | +| | * | | | ++-----------------+-----------------+-----------------+-----------------+ +| `authorized_key | Web-Oberfläche | | 1.2 | +| s <packages/aut | für root's | | | +| horized-keys.ht | authorized_keys | | | +| ml>`__ | von Dropbear & | | | +| | OpenSSH | | | ++-----------------+-----------------+-----------------+-----------------+ +| `AVM firewall | Web-Oberfläche | ~ 17kb | 1.0 | +| CGI <packages/a | um die von AVM | | | +| vm-firewall.htm | dem User | | | +| l>`__ | vorenthaltene | | | +| | integrierte | | | +| | Firewall zu | | | +| | administrieren | | | ++-----------------+-----------------+-----------------+-----------------+ +| `dnsd <packages | Small static | ~483kb | 2.0 | +| /dnsd.html>`__ | DNS server | | | +| | daemon | | | +| | (busybox) | | | ++-----------------+-----------------+-----------------+-----------------+ +| `downloader-cgi | Web-Oberfläche | ~ 2kB | 1.0 | +| <packages/down | zum Nachladen | | | +| loader.html>`__ | von Dateien ins | | | +| | RAM beim | | | +| | Hochfahren der | | | +| | Box | | | ++-----------------+-----------------+-----------------+-----------------+ +| `iptables-cgi < | Web-Oberfläche | > 70kb | 1.0 | +| packages/iptabl | für Iptables | | | +| es-cgi.html>`__ | | | | ++-----------------+-----------------+-----------------+-----------------+ +| `Nano-Shell <pa | Minimal-Shell | | 1.0 | +| ckages/nano-she | für komplette | | | +| ll.html>`__ | Befehlseingabe | | | +| | via Web-URL | | | ++-----------------+-----------------+-----------------+-----------------+ +| `nfsd-cgi <pack | Web-Oberfläche | | 1.1 | +| ages/nfsd.html> | zur | | | +| `__ | Konfiguration | | | +| | des NFS-Servers | | | ++-----------------+-----------------+-----------------+-----------------+ +| `nhipt <package | Leistungsfähige | 63kb | 1.2 | +| s/nhipt.html>`_ | Web-Oberfläche | | | +| _ | zur | | | +| | Konfiguration | | | +| | der Iptables | | | +| | Firewall (IPv4 | | | +| | & IPv6) (NEW) | | | ++-----------------+-----------------+-----------------+-----------------+ +| `RRDstats <pack | Web-Oberfläche | | 1.0 | +| ages/rrdstats.h | zur | | | +| tml>`__ | Konfiguration | | | +| | des RRDtools | | | +| | (Round Robin | | | +| | Database Tool) | | | ++-----------------+-----------------+-----------------+-----------------+ +| `Onlinechanged- | Web-Oberfläche | | 2.0 | +| CGI <packages/o | zur Definition | | | +| nlinechanged_cg | eigener | | | +| i.html>`__ | Onlinechanged-S | | | +| | kripten, | | | +| | die bei | | | +| | Verbindungswech | | | +| | sel | | | +| | ausgeführt | | | +| | werden | | | ++-----------------+-----------------+-----------------+-----------------+ +| `Rudi-Shell <pa | Rudi(mentär)-Sh | | 1.0 | +| ckages/rudi-she | ell | | | +| ll.html>`__ | für komplette | | | +| | Systemkontrolle | | | +| | via Web | | | ++-----------------+-----------------+-----------------+-----------------+ +| `PHPXMail <pack | PhpXmail is a | ~90kb (ohne | 1.2 | +| ages/phpxmail.h | web based | PHP) | | +| tml>`__ | management | | | +| | software for | | | +| | the Xmail mail | | | +| | server written | | | +| | in php | | | ++-----------------+-----------------+-----------------+-----------------+ +| `ppp-cgi <packa | Web-Oberfläche | | 1.2 | +| ges/ppp.html>`_ | zur | | | +| _ | Konfiguration | | | +| | des pppd | | | ++-----------------+-----------------+-----------------+-----------------+ +| `spindown-cgi < | Web-Oberfläche | 28kb | 1.0 | +| packages/spindo | für sg3_utils | | | +| wn.html>`__ | (Sleep-Modus | | | +| | für | | | +| | angeschlossene | | | +| | Festplatten) | | | ++-----------------+-----------------+-----------------+-----------------+ +| `syslogd-cgi <p | Web-Oberfläche | | 1.0 | +| ackages/syslogd | für den Syslogd | | | +| .html>`__ | | | | ++-----------------+-----------------+-----------------+-----------------+ +| `virtualip-cgi | ermöglicht das | | 1.0 | +| <packages/virtu | Anlegen | | | +| alip.html>`__ | virtueller IPs | | | +| | auf der Box | | | ++-----------------+-----------------+-----------------+-----------------+ +| `wol-cgi <packa | Web-Oberfläche | | 1.0 | +| ges/wol.html>`_ | für Wake on LAN | | | +| _ | | | | ++-----------------+-----------------+-----------------+-----------------+ + +.. _Apps: + +Apps +---- + +Externe Apps die für Freetz entwickelt worden sind, um Freetz funktionen +über ein Mobile Device zu steuern (Android, IOS, etc): + +Freetz Manager (IOS / iPhone / iPad) +`​https://itunes.apple.com/us/app/freetz-manager/id658333400?l=de&ls=1&mt=8 <https://itunes.apple.com/us/app/freetz-manager/id658333400?l=de&ls=1&mt=8>`__ + +- Services Start/Stop/Restater +- Fritzbox Shutdown/Restart +- Fritzbox/Freetz Status (Hardware, Netzwerk, Ram, Packete, Log, etc) +- Preis: $1,99 + +.. _Weiteres: + +Weiteres +-------- + +Seit 18.09.2009 gibt es [in der Entwicklerversion] drei optionale +Erweiterungen zum WebIF, die einen informativen Charakter haben: + +#. .config kann nun in einer gefilterten Version optional auf die Box + "mitgenommen" werden. Dadurch ist es möglich, die + FREETZ-Konfiguration auch dann auszulesen, wenn die Image-Datei + längst verloren ist. + +2. BOX-INFO: Hardware- und Firmwarespezifische Informationen über die + Box (AVM-Teil). Auch Umgebungsvariablen der Box können angesehen + werden. + +3. FREETZ-INFO: Versteckte Informationen über FREETZ. Hier kann z.B. + .config oder `externalisierte <help/howtos/common/external.html>`__ + Dateien angezeigt werden. Auch Erstellungsdatum vom FREETZ-Image und + Benutzerdefinierte Informationen können durch FREETZ-INFO im WebIF + dargestellt werden. + +BOX-INFO- und FREETZ-INFO-Seiten können sowohl im menuconfig (zum +Platzsparen), als auch im FREETZ-WebIF deaktiviert werden. Beide Seiten +sind zwar eigenständige CGIs, bilden aber in dem Sinne kein Paket und +gehören zum mod selbst als optionale Teile. Standardmäßig sind alle drei +INFO-Komponenten aktiviert und können im menuconfig bei aktiviertem +"Expertenansicht" unter "Advanced Settings" abgewählt werden. + +Für die `Patches <patches.html>`__ gibt es eine eigene Sektion. + +If you get the message */var/flash/freetz too big* or similar after +trying out several packages then: + +#. Login using telnet (or SSH) +#. Goto the directory */var/tmp/flash* +#. Remove the files of packages you don't use anymore +#. *modsave* + +Another trick is to move configuration files of external packages also +to external storage and to make symbolic links to them, for example: + +#. *mv /var/tmp/flash/php.ini /var/media/ftp/uStor01/config/php.ini* +#. *ln -s /var/media/ftp/uStor01/config/php.ini /var/tmp/flash/php.ini* +#. *Modsave* + +Note that these configuration files don't get backed up using the Freetz +menu! + +Yet another option is to integrate static data, like certificates, into +the flash image, see +`here <help/howtos/development/integrate_own_files.html#FesteIntegrationüberdasFreetzImage>`__ +for details. + +.. |{*}| image:: ../chrome/wikiextras-icons-16/stable.png +.. |{o}| image:: ../chrome/wikiextras-icons-16/testing.png +.. |<!>| image:: ../chrome/wikiextras-icons-16/exclamation-red.png +.. |(./)| image:: ../chrome/wikiextras-icons-16/tick.png + diff --git a/wiki/packages/DemoPackageA.rst b/wiki/packages/DemoPackageA.rst new file mode 100644 index 0000000..1a21958 --- /dev/null +++ b/wiki/packages/DemoPackageA.rst @@ -0,0 +1,34 @@ +.. _DemoPackageAHelloWorld: + +DemoPackageA "Hello World" +========================== + +Dieses Paket von +`​snowyrain <http://www.ip-phone-forum.de/member.php?u=106238>`__ zeigt +wie ein "Hello World" Programm in Freetz integriert werden kann. Es soll +als Anschauungs-Beispiel dienen. Für sehr kleine Projekte kann es sich +als Grundlage eignen. Die Funktion ist, dass ein "Hello World" auf der +Kommandozeile der Fritzbox ausgegeben wird. Hierzu muss dieses Paket in +Freetz integriert werden. + +**``Das Paket ist noch nicht in Freetz aufgenommen worden!``** + +Das Paket basiert im Wesentlichen auf dem `Empty <empty.html>`__ Paket, +welches eine überschaubare Struktur aufweist und so für diesen Zweck +geeignet erschien. Eine weitere Erläuterung ist +`hier <../help/howtos/development/package_creation.html#WiebaueicheineigenesPaketf%C3%BCrFreetz>`__ +unter "Kurz-Anleitung…" (weiter unten auf der Seite) zu finden. + +Außerdem gibt es ein fertiges `​GNU +Hello <http://www.gnu.org/software/hello>`__ Paket, was evtl. für +weitere Demonstrationszwecke eingesetzt werden kann. + +.. _Quellen: + +Quellen +------- + +- `​Thread im + IPPF <http://www.ip-phone-forum.de/showthread.php?t=177052>`__ +- `​Wikipedia <http://de.wikipedia.org/wiki/Hello_world>`__ +- `​GNU Hello <http://www.gnu.org/software/hello>`__ diff --git a/wiki/packages/aiccu.en.rst b/wiki/packages/aiccu.en.rst new file mode 100644 index 0000000..7e85919 --- /dev/null +++ b/wiki/packages/aiccu.en.rst @@ -0,0 +1,124 @@ +.. _AICCU: + +AICCU +----- + +AICCU (Automatic IPv6 Connectivity Client Utility) makes it easy for +users to get IPv6 connectivity. More info about AICCU can be found via: +`​http://www.sixxs.net/tools/aiccu/ <http://www.sixxs.net/tools/aiccu/>`__ + +.. _SixXSaccount: + +SixXS account +~~~~~~~~~~~~~ + +To able to use AICCU you need an Sixxs account, and Tunnel. You can +request and account and tunnel by following the steps on the following +link: +`​http://www.sixxs.net/faq/account/?faq=10steps <http://www.sixxs.net/faq/account/?faq=10steps>`__ +The request are handeled by SixXS staff. This means that it takes a +number of days before your request is granted. But also that you should +make sure all questions are properly filled. The type of tunnel you +probably need to request is an `​Anything In Anything +(AYIYA) <http://www.sixxs.net/tools/ayiya/>`__. + +.. _CreatingaFeetzImagewithAICCU: + +Creating a Feetz Image with AICCU +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +| Follow the directions from the `Wiki <../index.en.html#>`__ +| After the following step you can configure the packages you want to + have included in your image. + +.. code:: bash + + make menuconfig + +Make sure the following is selected: + +.. code:: bash + + [*] Show advanced options + [*] Enable IPv6 support + +.. code:: bash + + Package selection ---> Standard packages ---> [*] aiccu - aiccu - ipv6 connectivity from sixxs + +I also advice to add the following for easier troubleshooting: + +.. code:: bash + + Advanced options ---> BusyBox options ---> IPv6 Options ---> [*] ping6 command + Advanced options ---> BusyBox options ---> IPv6 Options ---> [*] traceroute6 command + +.. _SetupinFreetzweb-interface: + +Setup in Freetz web-interface +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +| AICCU requires a that the time and date to be correct. +| So you need to give NTP some time at bootup of the router to obtain + the current date and time. +| To have this behavior you can configure the 'Maximal time waiting for + time-synchronisation (seconds)' under the Advanced section. + +.. figure:: /screenshots/237.jpg + :alt: Howto AICCU Setup + + Howto AICCU Setup + +.. _CPUusage: + +CPU usage +~~~~~~~~~ + +When IPv6 package are routed though the IPv6 tunnel over IPv4 towards +Sixxs, the router is using more CPU power than it just forwards IPv4 +packets out over its default route. Every IPv6 package going into the +AYIYA tunnel will be signed with a sha1 hash. This additonal hashing +processing takes up our precious and limited CPU resources. Some +additional explanation of why AICCU takes so much CPU resources can be +found `​here <https://www.sixxs.net/forum/?msg=devel-778530>`__. If you +have more than a 15Mbit/s download link on a 7270v3 you will probably +see that you cannot use the full bandwidth, and that the web-inteface is +becoming slower to respond if you get near the 10Mbit/s. This is because +you are running out of CPU resources. + +You can verify this with the following command: + +.. code:: bash + + uptime + +Or: + +.. code:: bash + + cat /proc/loadavg + +| If you see an avarage load value of higher than 1:00 you know that it + is the CPU limitation you are running into. +| A good explanantion of how to interpret the values can be found + `​here <http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages>`__. + +You can also use the following command: + +.. code:: bash + + top + +This will give you more than the load avarages, and refreshes the values +every 5 seconds. + +.. _Other: + +Other +~~~~~ + +| **Note** Be aware that Windows Vista and Windows 7 by default prefer + IPv6 over IPv4. This will unnecessary stress the limited CPU power of + the router. +| Look `​here <http://support.microsoft.com/kb/2533454/en-us>`__ for a + option to make IPv4 more prefered than IPv6. diff --git a/wiki/packages/aiccu.rst b/wiki/packages/aiccu.rst new file mode 100644 index 0000000..f583ea5 --- /dev/null +++ b/wiki/packages/aiccu.rst @@ -0,0 +1,247 @@ +.. _Aiccu: + +Aiccu +===== + +.. _FirmwareImageerstellen: + +Firmware Image erstellen +------------------------ + +Zunächst rufen wir das Menuconfig auf: + +.. code:: bash + + make menuconfig + +Es muss zunächst euer Router ausgewählt sein, auch "Show advanced +options" und das darunter erscheinende "Enable IPv6 support". Zudem +werden folgende Pakte benötigt: + +.. code:: bash + + Standard Packages -> Dnsmasq + Web Interface -> NHIPT Iptables CGI + Web Interface -> NHIPT->Select kernel modules (IPv6) -> ip6_tables.ko + Web Interface -> NHIPT->Select kernel modules (IPv6) -> ip6table_filter.ko + Web Interface -> NHIPT->Select shared libraries (IPv6) -> libip6t_icmp6.so + Unstable -> aiccu + Unstable -> radvd + Unstable -> traceroute6 + +Jetzt speichert und verlasst ihr die Konfiguration. Falls dies die erste +Erstellung eines Images ist, müsst ihr nun zunächst mit ``make`` die für +den nächsten Schritt benötigten Dateien erstellen. + +Nachdem der Vorgang abgeschlossen ist, gebt ihr in die Konsole diesen +Befehl ein: + +.. code:: bash + + make kernel-menuconfig + +In diesem Menü aktiviert ihr nun folgende Optionen: + +.. code:: bash + + Loadable module support > Automatic kernel module loading (CONFIG_KMOD=y) + Networking > Networking options > IPv6: IPv6-in-IPv4 tunnel (SIT driver) (CONFIG_IPV6_SIT=y) + +Auch hier müsst ihr danach die Menüs mit "Exit" verlassen und die Frage, +ob ihr das Speichern wollt, mit "Yes" beantworten. + +| Hinweis CONFIG_KMOD: +| Option ist nicht als Default aktiviert, da manche Module nicht geladen + werden, sobald kein "Replace Kernel" benutzt wird. +| Bessere Alternative: In der Freetz-Weboberfläche kann über + "Einstellungen > Freetz: modules" Modul XXX hinzugefügt werden. +| Vorsicht: FREETZ_SECURITY_LEVEL=1 (Default) reicht nicht, siehe auch + `Security + Levels <../FAQ.en.html#Settingsarenotavailableatcurrentsecuritylevel>`__. +| (Quellcode: 7170: make/linux/Config.ohio-8mb.04.80:59:# CONFIG_KMOD is + not set) + +| Hinweis CONFIG_IPV6_SIT: +| Für Kernel 2.6.19.2 (z.B. 7270) is Option bereits aktivert und für + 2.6.13.1 (z.B. 7170) nicht auswählbar. +| (Quellcode: 7270: + make/linux/Config.ur8-16mb.7270_04.86:344:CONFIG_IPV6_SIT=y) + +Zum Schluss führt nochmal den Befehl ``make`` aus. + +Das entstandene Image im Ordner "images" kann nun über das Webinterface +eingespielt werden. + +.. _Netzwerksetup: + +Netzwerksetup +------------- + +Wählt den Punkt "Pakete" aus, um aiccu und radvd zu konfigurieren. +Zuerst aiccu: + +.. code:: bash + + Starttyp: Automatisch + Benutzername: Euer SixXS Benutzername + Passwort: Euer SixXS Passwort + Tunnel ID: ID des dynamischen Tunnels (z.B. T1234) + Name des virt. IPv6 Interface: sixxs + +Klickt anschließend auf "Übernehmen", um die Einstellungen zu speichern. +Als nächstes wird radvd konfiguriert. Dazu benötigt ihr ein aktives +Subnet, dass zu eurem Tunnel geroutet wird. Lautet euer Prefix +beispielsweise !2001:6f8:1234::/48, so muss die Konfiguration +folgendermaßen aussehen: + +.. code:: bash + + Starttyp: Automatisch + IPv6 Schnittstelle: lan + IPv6 Adresse: 2001:6f8:1234::1/64 + IPv6 Prefix: 2001:6f8:1234::/64 + +Achtung: Dies ist kein Tippfehler! In der Konfiguration muss hinter dem +Prefix /64 stehen, auch wenn eurer Prefix ein /48 Subnet hat! Auch hier +durch klick auf "Übernehmen" die Einstellung speichern. Abschließend +geht auf "Dienste" und startet nacheinander die Dienste "aiccu" und +"radvd". + +.. _IPv6Sicherheit: + +IPv6 Sicherheit +--------------- + +Um jetzt noch die Clients gegen Verbindungen von außen abzuschotten, +klicken wir im Freetzmenü auf Pakete→NHIPT, tragen bei "Admin IP" das +Subnetz eures LAN ein (beispielsweise 192.168.178.0/24) und setzt den +Status auf "running". Das ganze übernehmen und auf "Edit Firewall Rules" +klicken. Hier müsst ihr euch mit euren Freetzinterface Logindaten +(Standarduser: admin, Standardpasswort: freetz) anmelden. + +Auf der folgenden Seite seht ihr dann die Konfigurationsseite für die +IPv6 Firewall ip6tables. Lasst euch nicht von den vielen Feldern +erschlagen und scrollt direkt zu den Feldern, über denen "RULES FOR +CHAIN INPUT [ filter ] [ IPv6 ]" steht. Tragt jetzt in die Felder +folgende Werte ein: + +.. code:: bash + + "In IFC" = "sixxs" + "Prot" = "ipv6" + "Module" = "state" + "Param" = "RELATED,ESTABLISHED" + +und klickt auf "Insert". Das ganze wiederholt ihr dann noch (wieder in +den gleichen Feldern) mit den Werten + +.. code:: bash + + "In IFC" = "sixxs" + "Prot" = "ipv6-icmp" + +.. code:: bash + + "In IFC" = "sixxs" + "Action" = "DROP" + +Zum Schluss auf "persist rules" klicken. + +Jetzt ist euer Netzwerk auch unter IPv6 geschützt, wobei es trotzdem die +Pings durchlässt (für Credits). + +Hinweis: Das Modul "state" bzw conntrack funktioniert mit zu altem +Kernel (7270 hat 2.6.19.2) für IPv6 nicht, kann also weggelassen werden. +Quelle: `​SixXS <http://www.sixxs.net/wiki/IPv6_Firewalling>`__ + +DNS trage ich nach, soweit ich mich damit mehr beschäftigt habe. + +aiccu.sh +-------- + +Falls aktiviert, wird dieses Skript nach Verbindungsaufbau ausgeführt. +Es können z. B. ip6tables Regeln eingetragen werden. + +.. _Links: + +Links +----- + +- `​IPv6 <http://de.wikipedia.org/wiki/IPv6>`__ +- `​AICCU <http://en.wikipedia.org/wiki/AICCU>`__ +- `​radvd <http://en.wikipedia.org/wiki/Radvd>`__ +- `​SixXS <http://www.sixxs.net/>`__ +- `​Forum + Post <http://www.ippf.eu/showpost.php?p=1488444&postcount=74>`__ + +-------------- + +.. _CommentbyoliveronSa12Jun201020:02:08CEST: + +Comment by oliver on Sa 12 Jun 2010 20:02:08 CEST +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Welche Kernel Version brauchen wir denn? 2.6.20 oder 2.6.21? Wenn +conntrack wichtig ist, dann könnten wir schauen, ob wir die Änderungen +backporten können. + +.. _CommentbycumaonSa12Jun201020:55:43CEST: + +Comment by cuma on Sa 12 Jun 2010 20:55:43 CEST +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +2.6.20 reicht: +`​http://www.bieringer.de/linux/IPv6/status/IPv6+Linux-status-kernel.html <http://www.bieringer.de/linux/IPv6/status/IPv6+Linux-status-kernel.html>`__ + +.. _CommentbymikeonMo26Jul201020:34:33CEST: + +Comment by mike on Mo 26 Jul 2010 20:34:33 CEST +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Schaut euch bitte mal diese stateless Firewall Regeln für ipv6 mit sixxs +Tunnel auf der FritzBox an. Habe ich gerade aus Mangel am conntrack +Modul für meinen alten 2.6.19er Kernel auf der 7170 geschrieben. Über +Kommentare und Verbesserungsvorschläge freue ich mich. Ich weiß selbst +dass es nicht perfekt ist, aber besser so als gar keinen Schutz. + +.. code:: bash + + # Flush rules + ip6tables -F + + # Set the default policy + ip6tables -P INPUT DROP + ip6tables -P FORWARD DROP + ip6tables -P OUTPUT ACCEPT + + # Allow anything on the local link + ip6tables -A INPUT -i lo -j ACCEPT + ip6tables -A OUTPUT -o lo -j ACCEPT + + # Allow Link-Local addresses + ip6tables -A INPUT -s fe80::/10 -j ACCEPT + + # Allow multicast + ip6tables -A INPUT -s ff00::/8 -j ACCEPT + + # Allow ICMP + ip6tables -A INPUT -p icmpv6 -j ACCEPT + + # Allow INPUT ports from 1-1024 to destination ports 1024-65535 + # Allow FORWARD ports from 1-1024 to destination ports 1024-65535 + # on the sixxs interface + ip6tables -A INPUT -i sixxs -p tcp --sport 1:1024 --dport 1024:65535 -j ACCEPT + ip6tables -A INPUT -i sixxs -p udp --sport 1:1024 --dport 1024:65535 -j ACCEPT + ip6tables -A FORWARD -i sixxs -p tcp --sport 1:1024 --dport 1024:65535 -j ACCEPT + ip6tables -A FORWARD -i sixxs -p udp --sport 1:1024 --dport 1024:65535 -j ACCEPT + + # Allow forwarding of everything coming from _OUR_ + # subnet. In this case: 2a01:aaa:bbb::/48 + # You have to replace this for your config!!! + ip6tables -A FORWARD -s 2a01:aaa:bbb::/48 -j ACCEPT + +AddComment? + +- Tags +- `network </tags/network>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/apache.rst b/wiki/packages/apache.rst new file mode 100644 index 0000000..5dd8d20 --- /dev/null +++ b/wiki/packages/apache.rst @@ -0,0 +1,248 @@ +.. _ApacheWebservermitPHPCGI: + +Apache Webserver mit PHP CGI +============================ + +*Mit diesem Paket ist es möglich, den Apache Webserver entweder allein +oder mit zusätzlichem PHP CGI Binary zu erstellen.* + +Apache ist unter Testing zu finden, PHP unter Standard packages. + +Das Paket enthält die minimale Verzeichnisstruktur für Apache + PHP. Die +Konfigurationsdateien bedürfen wahrscheinlich noch einiger Anpassungen +an die jeweiligen Bedürfnisse, bevor das ganze dann entweder manuell auf +ein an die Box angeschlossenes USB-Gerät (USB-Stick, Festplatte) - oder +aber ins Verzeichnis ``root`` (zur Integration ins Firmware-Image) +kopiert werden kann. + +Man kann PHP auch ohne den Apache erstellen; das CGI Binary +(``sapi/cgi/php``) ist anschließend unter packages/php-x.y.z zu finden +(php-cgi) Wer hingegen das CLI Binary (``sapi/cli/php``) benötigt, muss +es sich leider selbst besorgen. + +Beide Pakete, Apache sowohl auch PHP werden standardmäßig dynamisch +gegen die benötigten Bibliotheken gelinkt. Wer statische Binaries +bevorzugt, kann dies jedoch mit entsprechenden Einstellungen anpassen. + +Werden spezielle Features (etwa SSL für Apache, XML Handling in PHP, +etc.) benötigt, müssen die Makefiles entsprechend angepasst werden. +Entsprechende Tipps und Tricks finden sich im +`​Forum <http://www.ip-phone-forum.de/showthread.php?t=127089>`__. + +Das Apache Paket befindet sich nach dem Build in +*packages/apache-x.y.z,* ebenso ist dort die Config für PHP zu finden. +Das PHP Binary wird automatisch in das Firmware Image gepackt, dies ist +auf Grund der Größe nicht zu empfehlen. Besser ist folgende +Vorgehensweise: + +#. Freetz Image ohne Apache und Php erstellen und auf die Box spielen +#. Apache und ev. PHP als statisch gelinkte binaries auswählen und + erneut make ausführen +#. Die Binaries aus *packages/apache-x.y.z* und *packages/php-x.y.z* auf + einen externen Stick packen (das php-cgi sollte in den cgi-bin Ordner + des apache gelegt werden +#. apache.conf bzw httpd.conf im apache binary anpassen, ev. ist es + nötig, dass zwei symlinks erstellt werden dies kann z.B so gelöst + werden + +.. code:: bash + + ln -s /var/media/ftp/uStor01/apache/logs /var/logs + +Danach kann man die Apache Befehle direkt verwenden (z.B. apachectl +start|stop|restart): + +.. code:: bash + + /var/media/ftp/uStor01/apache/bin/apachectl start + +**Verwendet man kein selbsterstelltes Binary, so sollte (muss) man +Apache mittels folgendem Befehl starten:** + +.. code:: bash + + httpd-2.2.4/bin/apachectl -f /Pfad/zur/Apache/Config/httpd.conf -k start + +- Sollte die Website nicht direkt erreichbar sein, bitte unter + apache/logs nachsehen, welche Fehlermeldungen dort ausgegeben werden +- Lässt sich Apache gar nicht erst starten ein chmod -R 777 + /var/media/ftp/uStor01/apache durchführen (evtl. reicht auch nur + chmod -R +x /var/media/ftp/uStor01/apache) +- Wichtig: damit PHP funktioniert müssen folgende Zeilen in die + Apache-Konfiguration eingefügt werden: + +.. code:: bash + + Action php-script /cgi-bin/php-cgi + AddHandler php-script .php + +Für CGI's muss folgende Zeile hinzugefügt/auskommentiert werden: + +.. code:: bash + + AddHandler cgi-script .cgi + +Es kann auch eine bereits fertiger Apache2 Binary mit dem oben +beschriebenem PHP Binary verwendet werden. + +Wird z.B. mod_proxy bzw. sogar mod_proxy_html benötigt empfehle ich das +fertige Binary aus diesem +`​Thread <http://www.ip-phone-forum.de/showthread.php?t=103110&p=1730858&viewfull=1#post1730858>`__. + +apache.conf +----------- + +Der User muss auf einen vorhandenen User abgeändert werden (der User +root ist nur bei speziellen Binaries möglich). + +Derzeit (Stand Juli 2011) kann folgendes verwendet werden: + +.. code:: bash + + User boxusr80 + Group root + +Sollen die .htaccess Dateien verwendet werden, so muss für das +entsprechende Verzeichnis AllowOverride entsprechend angepasst werden +(man kann auch einfach "AllowOverride All" verwenden) + +Hier eine entsprechende Config für ein Verzeichnis (diese ermöglicht +jedem den Zugriff!): + +.. code:: bash + + <Directory "/var/media/ftp/uStor01/apache/htdocs"> + Options All + AllowOverride All + Order allow,deny + Allowfrom all + </Directory> + + <Directory "/var/media/ftp/uStor01/apache/cgi-bin"> + AllowOverride None + Options ExecCGI + Order allow,deny + Allow from all</Directory> + +.. _Passwortschutzmit.htaccess: + +Passwortschutz mit .htaccess +---------------------------- + + Soll ein Verzeichnis mittels *.htaccess* vor autorisiertem Zugriff + geschützt werden kann folgendes hinzugefügt werden: + +.. code:: bash + + AuthType + Basic AuthUserFile /path/to/.ht.password !AuthName "Die Website erfordert Zugangsdaten" require valid-user + +.. + + **Wichtig** : im apache Ordner befindet sich htpasswd, mit dem man + die Passwortdatei erstellen kann. + +.. code:: bash + + htpasswd -c/path/to/.ht.password username + +(Dies erstellt eine neue oder überschreibt die vorhandene Passwortdatei +mit dem angegebenem Usernamen) + +Um Benutzer zur Passwortdatei hinzuzufügen folgendes benutzen: + +.. code:: bash + + htpasswd/path/to/.ht.password username + +Es ist generell empfehlenswert vor zu schützenden Daten das Kürzel .ht +anzugeben, dadurch bekommt der Benutzer die Datei nicht zu sehen. + +.. _ApachealsProxy: + +Apache als Proxy +---------------- + +Ein guter Einsatzzweck des Apaches ist es, ihn als Proxy zu verwenden. + +Dies kann wie folgt aussehen: Nach extern ist nur der Port 80 +freigegeben. Gibt der user z.B. freetz.meinedomain.at ein, so kommt er +auf das Freetz-Interface bei fritzbox.meinedomain.at auf das +AVM-Interface usw. + +Der Vorteil besteht dabei, dass man nur einen Port nach außen freigeben +muss, und zusätzlich kann man die einzelnen Seiten auch mit einem +Passwort sichern. (Die Fritzbox kann z.B. nicht mehr zurückgesetzt +werden, wenn vorher ein Passwort eingegeben werden muss. + +**Umsetzung:** Nötig ist dafür ein Apache mit dem Modul Proxy. Ich +verwende hierfür das von MaxMuster erstellte +`​Binary <http://www.ip-phone-forum.de/showthread.php?t=103110&p=1737217&viewfull=1#post1737217>`__. + +Die Einrichtung erfolgt wie weiter oben beschrieben. Für jede +zusätzliche Website, welche angezeigt werden soll, muss ein VirtualHost +erstellt werden. Hier eine Beispielkonfiguration um das Freetz-Interface +über freetz.meinedomain.at anzeigen zu lassen: + +.. code:: bash + + <VirtualHost *:80> + ProxyPreserveHost On + ProxyPass / http://localhost:81/ + ProxyPassReverse / http://localhost:81/ + ServerName freetz.meinedomain.at + <Proxy *> + Order Deny,Allow + Allow from all + </Proxy> + <Location /> + Require valid-user + AuthType basic + AuthName "Passwortgeschuetzt - Login" + AuthUserFile /Pfad/zur/Datei/.htpasswd + </Location> + </VirtualHost> + +Das Location Element bewirkt, dass der Benutzer sich vor dem +Seitenaufbau anmelden muss. + +.. _Sonstiges: + +Sonstiges +--------- + +Sollte jemand auf die Idee kommen, ein CMS auf der Fritzbox laufen zu +lassen, so empfehle ich `​phpSqliteCms <http://phpsqlitecms.net/>`__ +dies ist ein sehr smartes und schnelles CMS welches problemlos auf der +Box läuft (nur die Bildkomprimierung sollte man nicht nutzen).Andere CMS +wie Joomla!, Kajona, oder gar Drupal sollte man aufgrund der geringen +Systemleistung der `FritzBox </search/opensearch?q=wiki%3AFritzBox>`__ +vergessen. Außer man kann mit Seitenaufbauzeiten von 1-3 Minuten leben +(dafür muss die php.ini angepasst werden). + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​Forumsdiskussion <http://www.ip-phone-forum.de/showthread.php?t=127089>`__ + mit Tipps und Tricks zu diesem Paket +- `​Homepage <http://httpd.apache.org/>`__ des Apache Webservers +- `​Wikipedia + Artikel <http://de.wikipedia.org/wiki/Apache_HTTP_Server>`__ zum + Apache Webserver +- `​Homepage <http://www.apache.org/>`__ der Apache Software Foundation +- `​Wikipedia + Artikel <http://de.wikipedia.org/wiki/Apache_Software_Foundation>`__ + zur Apache Software Foundation +- `​Apache Wiki <http://wiki.apache.org/general/>`__ +- `​PHP Homepage <http://de.php.net>`__ +- `​Wikipedia Artikel <http://de.wikipedia.org/wiki/Php>`__ zu PHP +- `​Apache 1.3.37 und PHP 5.2.0 CGI auf der + FritzBox <http://www.xobztirf.de/selfsite.php?aktion=Apache%20und%20PHP>`__ + +- Tags +- `daemons </tags/daemons>`__ +- `packages <../packages.html>`__ +- `server </tags/server>`__ +- `web </tags/web>`__ diff --git a/wiki/packages/asterisk.rst b/wiki/packages/asterisk.rst new file mode 100644 index 0000000..471f52e --- /dev/null +++ b/wiki/packages/asterisk.rst @@ -0,0 +1,8 @@ +.. _Asterisk: + +Asterisk +======== + +Das Package befindet sich noch in der Entwicklung + + {} diff --git a/wiki/packages/authorized-keys.en.rst b/wiki/packages/authorized-keys.en.rst new file mode 100644 index 0000000..b5bf5ce --- /dev/null +++ b/wiki/packages/authorized-keys.en.rst @@ -0,0 +1,16 @@ +authorized-keys +--------------- + +The authorized_keys allows you to access the router with pre-shared keys +i.s.o. just a password. To use pre-shared keys you need to generate a +public/private keypair and add the public key to the authorized_keys +file. + + You also need to setup your SSH client for using the pre-shared key. + A good howto for PuTTY can be found + `​here <http://www.unixwiz.net/techtips/putty-openssh.html>`__. + +.. figure:: /screenshots/250.jpg + :alt: Authorized keys setup + + Authorized keys setup diff --git a/wiki/packages/authorized-keys.rst b/wiki/packages/authorized-keys.rst new file mode 100644 index 0000000..a6ac7ab --- /dev/null +++ b/wiki/packages/authorized-keys.rst @@ -0,0 +1,24 @@ +authorized_keys +=============== + +Mit dem authorized_keys Package können diese für SSH benötigte Dateien +bearbeitet werden. Es ist im Webinterface unter "SSH" zu finden + +- authorized_keys - enthält öffentliche Schlüssel zur Authentifizierung +- known_hosts - öffentliche Schlüssel zum Prüfen bekannter Server +- id_dsa - private Schlüssel im DSA Format +- id_rsa - private Schlüssel im RSA Format + +Erläuterung zu den privaten Schlüsseln: Die Benutzer-Keys ~/.ssh/id_dsa +und ~/.ssh/id_rsa sind nicht notwendig. Wenn sie vorhanden sind, kann +sich damit der Client gegenüber dem Server ausweisen. Dies ist eine +Alternative zur Eingabe eines Paßwortes zur Anmeldung. Diese beiden +Dateien haben nichts mit den Host-Keys zu tun. Diese sind für den +SSH-Server notwendig, und sie werden automatisch erstellt, wenn sie noch +nicht vorhanden sind. Damit weist sich der Server gegenüber dem Client +aus. + +- Tags +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `security </tags/security>`__ diff --git a/wiki/packages/autofs.rst b/wiki/packages/autofs.rst new file mode 100644 index 0000000..d1cd6bf --- /dev/null +++ b/wiki/packages/autofs.rst @@ -0,0 +1,104 @@ +autofs +====== + +Mit diesem Paket können verschiedene Dateisysteme nach /var/media/autofs +gemountet werden. + +Zweck ist, dass Mountpoints nur eingebunden werden, wenn darauf +zugegriffen wird. Nach einem Timeout ohne Zugriffe werden sie wieder +ausgehängt. Das funktioniert mit allen Dateisystemen und ist besonders +praktisch bei Netzwerk-Freigaben (NFS, CIFS, DAVFS etc.), da der Server, +auf den man zugreifen möchte, nicht bei Start des Freetz-Packages, das +diesen mountet, erreichbar sein muss, sondern nur bei Zugriff. + +.. _OptionaleAufrufparameter: + +Optionale Aufrufparameter +------------------------- + +Zur Fehlersuche empfiehlt sich der Parameter ``-v`` und zusätzlich evtl +``-d``. Die Meldungen werden per `syslogd-cgi <syslogd.html>`__ +ausgegeben. + +.. _Beispielkonfigurationenderauto.conf: + +Beispielkonfigurationen der auto.conf +------------------------------------- + +.. _NFS: + +NFS +~~~ + +Für NFS wird lediglich das Modul nfs.ko benötigt. + +.. code:: bash + + NFS-SHARE -rw,soft,intr,rsize=8192,wsize=8192 SERVER:/SHARE + +.. _Samba: + +Samba +~~~~~ + +Hierfür wird das Paket `cifsmount <cifsmount.html>`__ benötigt, dessen +Webinterface nicht. + +.. code:: bash + + SMB-SHARE -fstype=cifs,user=USER,pass=PASS,ro ://SERVER/SHARE + +.. _WebDAV: + +WebDAV +~~~~~~ + +Für WebDAV wird das `davfs2 <davfs2.html>`__-Paket (ohne Webinterface) +benötigt. + +.. code:: bash + + DAV-SHARE -fstype=davfs,conf=/tmp/flash/autofs/davfs.conf :http\://SERVER + +Außerdem noch diese 2 Dateien je Mountpoint: + +/tmp/flash/autofs/davfs.conf + +.. code:: bash + + secrets /tmp/flash/autofs/davfs.secrets + ask_auth 0 + #falls benötigt: + #if_match_bug 1 + +/tmp/flash/autofs/davfs.secrets (Dateirechte 600!) + +.. code:: bash + + http://SERVER USERNAME PASSWORT + +.. _SSHfs: + +SSHfs +~~~~~ + +Es werden die Packages OpenSSH und SSHfs-FUSE benötigt + +.. code:: bash + + SSH-SHARE -fstype=fuse,rw,allow_other :sshfs\#USER@SERVER\:/ + +Außerdem muss der Server in der known_hosts bekannt sein und in id_rsa +oder id_dsa muss der private Schlüssel hinterlegt sein. Diese Dateien +können mit dem SSH/\ `authorized_keys <authorized-keys.html>`__ Package +bearbeitet werden + +.. _HTTPsFTPsLDAP: + +HTTP(s), FTP(s), LDAP +~~~~~~~~~~~~~~~~~~~~~ + +Momentan nicht möglich, da +`​CurlFtpFS <http://sourceforge.net/projects/curlftpfs/>`__ momentan +nicht in Freetz verfügbar ist. Siehe auch `​archLinux +Wiki <https://wiki.archlinux.org/index.php/Autofs>`__. diff --git a/wiki/packages/avm-firewall.rst b/wiki/packages/avm-firewall.rst new file mode 100644 index 0000000..934c523 --- /dev/null +++ b/wiki/packages/avm-firewall.rst @@ -0,0 +1,241 @@ +.. _AVM-firewall-cgi: + +AVM-firewall-cgi +================ + +Das **AVM-firewall-CGI** stellt eine Web-Oberfläche dar, mit der man die +von AVM dem User vorenthaltene integrierte Firewall administrieren kann. +Die Firewall ist ein Bestandteil des "dsld" von AVM, deshalb kann man +diese Firewall nicht wirklich starten oder stoppen, sie läuft eigentlich +immer (solange dsld auf der Box ist). + +.. figure:: /screenshots/10.jpg + :alt: AVM firewall forward rule example + + AVM firewall forward rule example + +Ein paar Worte zu den "Grundlagen" und der Philosophie, die AVM damit +umsetzt: + +- Die Firewall von AVM ist wohl konzipiert als eine "Zusatzfirewall" +- Die "Firewall" ist jeweils vorgeschaltet und wirkt auf Pakete, die + *vom* WAN-Interface kommen oder *zum* WAN gehen. Box-intern wirkt sie + nicht. +- Die Box hat für das WAN-Interface eine zweite (die "eigentliche") + Sicherung: Alle eingehenden Pakete, für die es keinen Eintrag in der + NAT-Tabelle gibt, werden verworfen. + +Diese NAT-Einträge geschehen entweder dynamisch (wenn aus dem LAN ins +Internet zugegriffen wird), oder statisch, wenn Einträge im +"Portforwarding" existieren. Dieses Verfahren gilt immer, auch die +Box-Prozesse selbst akzeptieren keine Pakete, ohne eine solche NAT, +daher gibt es dafür die Portweiterleitungen "auf die Box selbst". + +Die Firewall filtert also nur zusätzlich Pakete heraus, die eigentliche +"Sicherheit" wird über den "NAT-Mechanismus" realisiert. Deshalb ist die +"Default-Einstellung" der Firewall auch für alle nicht verbotenen +Pakete: Permit. + +Wirklich wirksam wird diese Firewall deshalb zum einen, um ausgehend +bestimmte Verbindungen zu blocken, oder aber, wenn man sich "viel Arbeit +macht" und alle benötigten Verbindungen erlaubt und dann die +Default-Regel auf "Deny" stellt. + +Ich persönlich (ich hoffe, auch als "Autor" darf ich das sagen) würde +für tiefergehende Eingriffe eher auf `iptables <iptables.html>`__ +zurückgreifen… + +.. _Feature-Übersicht: + +Feature-Übersicht +----------------- + +.. figure:: /screenshots/100.jpg + :alt: AVM Firewall cgi + + AVM Firewall cgi + +Mit AVM-FIREWALL-CGI kann man direkt über eine Weboberfläche Folgendes +tun: + +- Die von AVM vordefinierten Firewallregeln ändern/löschen +- Eigene Regeln hinzufügen (sehr praktisch um lästiges "nach Hause + telefonieren" von mancher Software im Router zu unterbinden) +- Portforwardings erstellen, die auch auf die Fritz selber (0.0.0.0) + zeigen können.(z.B. für FTP oder webserver Freigaben ins I-Net) + +Die Syntax sollte nicht weiter schwer sein, dafür gibt es ja die +Dropdown-Felder. + +.. _AnwendungdergeändertenRegeln: + +Anwendung der geänderten Regeln +------------------------------- + +Die Tatsache, dass AVM entweder keine Änderungen am Regelwerk vorsieht +(bei der Firewall) oder selbst die Änderungen verwaltet (Forwarding), +erfordert besondere Maßhnahmen, um die in der GUI vorgenommenen +Änderungen auch anzuwenden. Hierfür werden AVM-Dienste neu gestartet, +was zum Crash der Box und sogar zum Reset auf Werkseinstellungen führen +kann, deshalb am Ende der Seite die animierte Grafik zur Warung. + +Um allen Problemen aus dem Weg zu gehen sollte der "Übernehmen" Haken +**nicht** gesetzt werden, sondern die Regeln "nur" abgespeichert und die +Box dann neu gestartet. + +| **Ergänzung zur Trunk-Version, Stand 22.02.2010** In dieser Version + sind jetzt vier Auswahlpunkte zur Übernahme der Regelwerke vorgesehen, + um die beschriebenen Crash-Probleme besser eingrenzen zu können (sihe + Bild unten). Hier eine Kurze Erläuterung dazu: +| Die GUI tangiert zwei AVM Daemons (ctlmgr und dsld) und zwar deshalb, + weil im *dsld* die Regeln tatsächlich wirken, im *ctlmgr*, weil der + die eigene Regelverwaltung macht. + +- In der Freetz-GUI vorgenommenen Änderungen sind der + AVM-"Regelverwaltung" unbekannt. Deshalb muss der *ctlmgr* neu + gestartet werden, um diese Änderunegen dort auch zu verankern. Wird + der ctlmgr nicht neu gestartet, können Änderungen in der AVM-GUI alle + Änderungen in dieser GUI (sowohl in der Firewall als auch im + Forwarding) rückgängig machen. +- Um **Firewall-Änderungen** zu aktivieren, muss der dsld gestoppt und + neu gestartet werden +- Um Änderungen an den **Optionen des dsld** zu aktivieren, ist + ebenfalls ein Neustart des dsld erforderlich +- Um **Portforwarding-Änderungen** zu übernehmen, muss der dsld nicht + komplett neu gestartet werden, es reicht, ihn über ein Signal (HUP) + "anzuweisen", die Regeln neu zu laden und anzuwenden. + +.. figure:: /screenshots/145.png + :alt: AVM firewall - Übernehmen Parameter (Trunk Version) + + AVM firewall - Übernehmen Parameter (Trunk Version) + +.. _DieGefahrvonReboot-Schleifenundwiemandawiederherauskommt: + +Die Gefahr von Reboot-Schleifen und wie man da wieder herauskommt +----------------------------------------------------------------- + +Bei zahlreichen Versuchen mit der Einrichtung von Firewallregeln mit +Hilfe dieses CGI-Paketes hat sich gezeigt, daß man die Box bei +umfangreichen Änderungen dazu bringen kann, immer wieder neu zu starten. +Das geschieht auch bei völlig legitimen Regeln und scheint mit dem +Umfang des Regelsatzes zusammenzuhängen. Subjektiv erscheinen mir +Portsperren unkritischer als IP-Bereichssperren über Subnetzadressen und +-Masken. Aufgetreten ist das bei mir auf einer 7270v3 mit 74.04.88 und +Freetz 1.2 Revision 7500; ein anderer Nutzer berichtete gleiches von +einer 7390. + +Die Ursache des Problems liegt irgendwo im „dsld“ von AVM begraben, der +auch die Firewall-Funktion bereitstellt und ist inziwschen insbesondere +dank `​„MaxMuster“ <http://www.ip-phone-forum.de/member.php?u=62478>`__ +ergründet (siehe dazu die „Literaturhinweise“ aus dem IP-Phone-Forum am +Ende dieser Seite). + +.. _Abhilfe: + +Abhilfe +~~~~~~~ + +AVM hat nach dem Hinweis auf die hier beschriebenen Sachverhalte den +Fehler gefunden und will ihn in der nächsten Laborversion der Firmware +beheben. Die X.05.05-Versionen sind auf jeden Fall noch betroffen. Bis +dahin kann es helfen, wenn man beim Erstellen von Firewall-Regeln die +folgenden Hinweise beachtet. + +Es dürfen nicht mehr als jeweils drei „gleichartige“ Regeln für das +Protokoll „IP“ unmittelbar hintereinander stehen. Die folgenden Typen +sind betroffen: + +- „ip reject […]“ +- „ip deny […]“ +- „ip permit […]“ + +Man muß also nach spätestens drei Zeilen, die mit „ip reject“ beginnen, +mindestens eine andere Zeile einfügen, so daß nie mehr als drei Zeilen +gleichen „Typs“ aufeinanderfolgen. Port-Forward-Regeln und Port-Sperren +scheinen nicht betroffen zu sein, letztere können aber mit den anderen +Zeilen gemischt werden, um den Fehler zu verhindern. Wenn man nicht +genügend „andersartige“ Regeln hat, kann man bereits bestehende +wiederholen oder andere wirkungslose Regeln einfügen. + +Bei zwei 7270 hat diese Vorgehensweise reproduzierbar funktioniert. In +einem Fall, bei der schon erwähnten 7390, scheint das nicht ausreichend +gewesen zu sein. + +.. _AnleitungumeineversehentlichausgelösteReboot-Schleifezubeenden: + +Anleitung, um eine versehentlich ausgelöste Reboot-Schleife zu beenden +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Die folgende Lösung funktioniert nur, wenn tatsächlich eine +Firewall-Änderung die Neustarts verursacht und ist kein Allheilmittel +für Neustart-Schleifen. Sie funktioniert auch nicht, wenn der Router im +Ethernet-Modus läuft, also die ADSL-Verbindung nicht selber aufbaut. +Getestet ist sie nur im gewöhnlichen ADSL-Router-Modus, also ohne +externes Modem. Den Flash-Speicher mit einer Sicherheitskopie zu +überschreiben ist in diesem speziallen Fall unnötig, gleichwohl sollte +man unbedingt eine funktionierende Komplettsicherung und alles nötige +für eine Wiederherstellung bereitliegen haben, wenn man an der +AVM-Firewall Änderungen vornimmt. + +Glücklicherweise erfolgt in dem Fall kein Neustart, wenn man den +ADSL-Verbindungsaufbau unterbindet, das heißt, das ADSL-Kabel vom +Splitter abzieht. Das analoge oder ISDN-Telefonkabel kann +steckenbleiben, man hat also während der Reparaturzeit kein Internet, +wohl aber Telefon zur Verfügung, das Risiko von Experimenten mit der +Firewall ist also kleiner, als man auf den ersten Blick denkt, wenn man +was von „Reboot-Schleifen“ liest. + +.. _WiealsoerkenneichdaßsoeineReboot-Schleifestattfindet: + +Wie also erkenne ich, daß so eine „Reboot-Schleife“ stattfindet? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Der Router zeigt dabei die typischen „Start-Blink-Sequenzen“ der +Leuchtdioden. Wenn man es immer wieder probiert, kommt man zwar kurz ins +Webinterface hinein, aber ein paar Sekunden später „hängt“ es schon +wieder, die Zeit reicht nicht, um die letzten Änderungen rückgängig zu +machen. Das liegt daran, daß alles normal läuft, bis die +Internet-Verbindung aufgebaut wird, dabei stürzt der Kernel dann ab. + +.. _WiebehebeichdasProblemohneFTP-Flash: + +Wie behebe ich das Problem ohne FTP-Flash? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +#. Das ADSL-Kabel vom Splitter ziehen. +#. Warten, bis der Router ordentlich gestartet hat und das Freetz-CGI + wieder läuft. (Das kann etwas dauern, je nachdem welcher Paketumfang + in Freetz installiert ist, kommen nicht alle Programme fast + gleichzeitig hoch.) +#. Die Firewalländerungen zurücknehmen, die den Fehler verursacht haben. +#. Neustart über das Freetz-Webinterface anstoßen. +#. Das ADSL-Kabel wieder einstecken. + +`​Christoph +Franzen <http://www.ip-phone-forum.de/member.php?u=121255>`__ + +.. _Verweise: + +Verweise +-------- + +Im `​IP-Phone-Forum <http://www.ip-phone-forum.de>`__ gibt es zur AVM +Firewall einige Threads, z.B.: + +- `​instabile AVM-Firewall auf + 7270 <http://www.ip-phone-forum.de/showthread.php?t=238901>`__ + (aktueller Diskussions-Thread) +- `​Aufruf zur Dokumentation der internen + Firewall <http://www.ip-phone-forum.de/showthread.php?t=156778>`__ +- `​(NEU) AVM-Firewall package für + Freetz <http://www.ip-phone-forum.de/showthread.php?t=159802>`__ +- `​Blog von + real-riot <http://www.realriot.de/2007/05/die-interne-fritzbox-stateful-firewall_30.html>`__ + +- Tags +- `cgi </tags/cgi>`__ +- `firewall </tags/firewall>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `security </tags/security>`__ diff --git a/wiki/packages/bash.rst b/wiki/packages/bash.rst new file mode 100644 index 0000000..367054f --- /dev/null +++ b/wiki/packages/bash.rst @@ -0,0 +1,112 @@ +.. _Bash: + +Bash +==== + +Bei der **B**\ ourne **A**\ gain **Sh**\ ell handelt es sich um eine +`​Unix Shell <http://de.wikipedia.org/wiki/Unix-Shell>`__ - oder, anders +ausgedrückt, um einen "Kommandozeilen Interpreter" für Unix- und +Linuxsysteme. Dabei ist die *Bash* nicht einfach irgend eine Shell, +sondern die wohl am meisten verbreitete - und findet sich daher auch auf +fast allen Unix-/Linuxsystemen wieder. *Bash* ist Teil des `​GNU +Projekts <http://de.wikipedia.org/wiki/GNU-Projekt>`__. + +Der Name wurde absichtlich vieldeutig gewählt. So ist die *Bash* voll +kompatible zur originalen *Bourne Shell* (sh) (also "(schon) wieder eine +Bourne Shell", oder die "Wiedergeborene Shell"). Andere leiten den Namen +vom Verb "to bash" (schlagen) oder auch vom Substantiv "bash" (Feier, +Party, Schlag) ab… + +Wie bereits erwähnt, ist die Bash für viele Systeme verfügbar: Unixe, +Linux, `​Cygwin <http://de.wikipedia.org/wiki/Cygwin>`__, +`​MSYS <http://de.wikipedia.org/wiki/MSYS>`__ und sogar die `​Microsoft +Windows Services for +UNIX <http://de.wikipedia.org/wiki/Microsoft_Windows_Services_for_UNIX>`__ +gehören dazu. Und hiermit natürlich auch die Freetz Box |:-?| + +Hinweis: Die im Folgenden beschriebene manuelle Anpassung des Prompts +ist seit `​Changeset 5803 <http://trac.freetz.org/changeset/5803>`__ +(freetz-devel) nicht mehr nötig, da es dort bereits eingebaut ist. + +Man kann den sog. Prompt anpassen, also das, was jeweils vor dem Cursor +angezeigt wird. Dazu muss man die Variable PS1 anpassen, was man sehr +bequem über das Freetz-WebGUI unter Einstellungen/.profile machen kann. +Die Bash kennt für den Prompt u.a. folgende Variablen für PS1: + +.. code:: bash + + \h : Host name + \H : Host name inklusive Domain + \d : Datum + \t : time Zeit + \u : User Benutzerkennung + \w : Working directory, aktuelles Arbeitsverzeichnis + \l : Terminalname, zum Beispiel tty1 + \# : Eingabezeilennummer + \\ : Das Zeichen "\" + +So lassen sich im Prompt z.B. auch noch User- und Hostname zusätzlich +zum aktuellen Pfad anzeigen: + +.. code:: bash + + export PS1="\u@\h \w \$ " + +Das Resultat mit o.g. Beispiel sieht dann so aus: + +.. code:: bash + + root@fb1 /var/mod/root $ + +Der Host (die Fritzbox) heisst genauso wie es in der Variable +/proc/sys/kernel/hostname steht, hier also "fb1" (Standard ist +"fritz.box"). + +.. _Ash: + +Ash +=== + +Das Ganze funktioniert sowohl für bash (mit diesem Paket installiert) +als auch für ash (Standard in Freetz, ohne zusätzliches Paket), wobei +ash nur folgendes unterstützt: + +.. code:: bash + + \h : Host name + \u : User Benutzerkennung + \w : Working directory, aktuelles Arbeitsverzeichnis + \# : Eingabezeilennummer + +.. _BashalsLoginshell: + +Bash als Loginshell +=================== + +TODO + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​Wikipedia + Artikel <http://de.wikipedia.org/wiki/Unix-Shell#Die_Bourne-Again-Shell>`__ +- `​Englischer Wikipedia Artikel <http://en.wikipedia.org/wiki/Bash>`__ + mit umfangreicheren Details +- `​Homepage der Bash <http://www.gnu.org/software/bash/bash.html>`__ +- `​Bash + Guide <http://tldp.org/LDP/Bash-Beginners-Guide/html/index.html>`__ + for Beginners +- `​ABS <http://tldp.org/LDP/abs/html/index.html>`__ - der + **A**\ dvanced **B**\ ash **S**\ cripting Guide +- `​Bash Online Forum <http://bashscripts.org/>`__ +- `​bash - Die Bourne again shell im + LinuxWiki <http://linuxwiki.de/Bash>`__ + +- Tags +- `console </tags/console>`__ +- `packages <../packages.html>`__ + +.. |:-?| image:: ../../chrome/wikiextras-icons-16/smiley-confuse.png + diff --git a/wiki/packages/bftpd.rst b/wiki/packages/bftpd.rst new file mode 100644 index 0000000..8602fe3 --- /dev/null +++ b/wiki/packages/bftpd.rst @@ -0,0 +1,113 @@ +.. _Bftpd: + +Bftpd +===== + + "The bftpd program is a small, easy-to-configure FTP server. It + strives to be fast, secure and quick to install/configure." + `​http://bftpd.sourceforge.net/ <http://bftpd.sourceforge.net/>`__ + +Bftpd ist ein kleiner FTP Server. Um den Zugriff auf den FTP-Server mit +einem Passwort zu schützen, kann man wie folgt vorgehen: + +- Anonymer Zugriff auf der Freetz Konfigurations-Seite deaktivieren +- In einer Shell (serielle Konsole, telnet oder dropbear) das Passwort + für den Benutzer ftp ändern: + + .. code:: bash + + modpasswd ftp + +Nun ist der Zugriff auf den FTP Server nur noch als Benutzer ftp mit dem +vergebenen Passwort möglich. + +.. _ZusätzlicheBenutzereinrichten: + +Zusätzliche Benutzer einrichten +------------------------------- + +|Warning| Achtung: Der AVM-Dämon ``ctlmgr`` überschreibt die +``/etc/passwd`` bei Änderungen im Webinterface und löscht die angelegten +User. Außerdem ist das Usermanagement von Freetz überarbeitet worden, so +dass jetzt mit ``adduser username -h /var/media/ftp/uStor01`` neue +Benutzer angelegt werden können. Diese Änderung muss anschließend mit +``modusers save; modsave flash`` persistent gemacht werden. + +Über eine kleine Änderung in der ``debug.cfg`` oder mit *crond* können +zusätzliche Benutzer mit frei wählbaren Homeverzeichnissen eingerichtet +werden. + +Auf dieser Seite kann man sich die für die ``/var/tmp/passwd`` +benötigten Zeilen mit Benutzer und Passwort erzeugen lassen: + +.. code:: bash + + http://home.flash.net/cgi-bin/pw.pl + +Alternativ geht das auch mit dem Unix/Linux Kommando ``htpasswd``. + +Die Syntax sieht dann wie folgt aus: + +.. code:: bash + + echo "user1:pass1:1000:1:ftp user:/var/media/ftp:/bin/sh" >> /var/tmp/passwd + echo "user2:pass2:1000:1:ftp user:/var/media/ftp:/bin/sh" >> /var/tmp/passwd + echo "user3:pass3:1000:1:ftp user:/var/media/ftp/uStor01/share:/bin/sh" >> /var/tmp/passwd + +Wobei user und pass durch die zuvor zuvor erzeugten User und Passwörter +zu ersetzen sind. Wie auch die Pfadangaben sind das natürlich nur +Beispiele. Man beachte die Pfadangabe auf den USB-Stick im dritten +Beispiel. Der Pfad muss natürlich zum Zeitpunkt des Logins existieren, +sonst gibt es einen Fehler. + +*Anmerkung:* + +- Das Passwort sollte nicht in der ``/etc/passwd``, sondern in der + ``/etc/shadow`` gespeichert werden. Das funktioniert auf der + FritzBox, wie auf jeder üblichen Linux Distribution und ist im + Internet an vielen Stellen dokumentiert. +- Die einzelnen Benutzer erhhalten fortlaufende Benutzer-IDs und nicht, + wie hier, alle Benutzer die selbe ID (hier: 1000). Als group-ID + kann/sollte man die 1 (= Gruppe "users") nehmen, anstelle der 0 (= + Gruppe "root"). + +Den AVM FTP benötigt ihr jetzt nicht mehr. Das Filesystem sollte auf +Lesen und Schreiben ohne Passwörter eingestellt sein. Der bftpd sollte +mit den Optionen "Automatisch starten lassen" und "nicht anonym" +gestartet werden. + +.. _BestehendepersistenteBenutzermodifizieren: + +Bestehende (persistente) Benutzer modifizieren +---------------------------------------------- + +Ergänzung von `​Alexander Kriegisch +(kriegaex) <http://www.ip-phone-forum.de/member.php?u=117253>`__ vom +13.10.2007: + +Wie man im DS-Mod bis Version ds26-15.2 persistent Benutzer anlegt und +löscht, erkläre ich in den +`How-Tos <../help/howtos/security/user_management.html>`__. Damit hat +man also schon einmal automatisch angelegte Benutzer und Passwörter nach +dem Hochfahren der Box. Die Passworteingabe erfolgt direkt an der +Konsole, man braucht keine externe Seite, die das berechnet. + +Jetzt geht es noch darum, dass das Heimverzeichnis eines Benutzers sowie +seine UID (eindeutige numerische Benutzer-ID) automatisch jedesmal nach +dem Neustart der Box vom DS-Mod vergeben werden, da sie bislang nicht +persistent gespeichert werden (auch das wird sich zu 15.3 ändern). Wie +man nun bestehende Benutzerdaten entsprechend automatisch umbiegt, +beschreibe ich +`​dort <http://www.ip-phone-forum.de/showthread.php?p=958801#post958801>`__ +im Forum. + +- Tags +- `daemons </tags/daemons>`__ +- `filetransfer </tags/filetransfer>`__ +- `ftp </tags/ftp>`__ +- `packages <../packages.html>`__ +- `server </tags/server>`__ +- `überarbeiten </tags/%C3%BCberarbeiten>`__ + +.. |Warning| image:: ../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/packages/bind.rst b/wiki/packages/bind.rst new file mode 100644 index 0000000..b8c261e --- /dev/null +++ b/wiki/packages/bind.rst @@ -0,0 +1,45 @@ +bind +==== + +Mit `​bind <http://isc.org/software/bind>`__ (Berkeley Internet Name +Daemon) kann ein DNS-Server zur IP- und Namensauflösung betrieben +werden. + +named.conf +~~~~~~~~~~ + +Die möglichen Optionen können der Manpage oder den vielen Internetseiten +entnommen werden. + +Minimal *named.conf*: + +.. code:: bash + + options { + directory "/var/media/ftp/uFlash/bind"; + listen-on port 53 { any; }; + allow-query { any; }; + notify no; + }; + + zone "example.org" in { + type master; + file "example.org"; + }; + +Minimal zone file */var/media/ftp/uFlash/bind/example.org*: + +.. code:: bash + + $TTL 300 + @ IN SOA @ example.org. ( + 2011032701 ;serial + 300 ;refresh + 300 ;retry + 300 ;expire + 300 ;minimum + ) + + IN NS ns.example.org. + * IN A 85.214.209.234 + diff --git a/wiki/packages/bip.rst b/wiki/packages/bip.rst new file mode 100644 index 0000000..75195d3 --- /dev/null +++ b/wiki/packages/bip.rst @@ -0,0 +1,109 @@ +.. _BIP: + +BIP +=== + +Der Bip `​IRC <http://de.wikipedia.org/wiki/Internet_Relay_Chat>`__ +Proxy ist eine Anwendung, die, wie das Wort +`​Proxy <http://de.wikipedia.org/wiki/Proxy_(Rechnernetz)>`__ es bereits +andeutet, zwischen IRC Server und IRC Client sitzt. Er hält quasi die +permanente Verbindung zu dem/den IRC Server(n), kann die Logs +zwischenspeichern, und selbige sogar an einen sich (wieder-) +verbindenden Client weiterleiten - was es z.B. erlaubt, selbige zwischen +mehreren Rechnern auszutauschen (sofern man selbst mehrere Rechner zum +Chatten benutzt). + +Mehr Informationen gibt es auf der `​BIP +Homepage <http://bip.milkypond.org/>`__. + +.. _Auswahl: + +Auswahl +------- + +.. figure:: /screenshots/212.png + :alt: Menuconfig + + Menuconfig + +Wenn man einen Bip-Proxy auf seiner Fritzbox betreiben möchte muss +dieser beim Bau eines Freetz-Image im Menuconfig ausgewählt werden: + +Zu finden ist dieser im **menuconfig** unter : **Package selection** =⇒ +**Testing** =⇒ Bip 0.8.x + +| + +.. _Konfiguration: + +Konfiguration +------------- + +.. figure:: /screenshots/213.png + :alt: Menu in der Fritzbox + + Menu in der Fritzbox + +Im Main-Menu des Bip-Proxy müssen dann noch ein beliebiger Port (im +Beispiel haben wir die 2222 gewählt) und der Speicherort des Log-Files +angegeben werden. Des weiteren müsst ihr noch die **user.config** von +hier : + +.. code:: bash + + ###client_side_ssl = false; + ### Networks + network { + name = "freetz"; + server { host = "random.ircd.de"; port = 6667; }; + }; + ### Users + user { + name = "Mustermann"; + password = "xxxxxxxxxxxxxxxxxxxxxxxx"; + default_nick = ""; + default_user = "Mustermann"; + default_realname = "Mustermann"; + connection { + name = "freetz"; + network = "freetz"; + # away_nick = "Mustermann-away"; + follow_nick = false; + ignore_first_nick = false; + channel { + name = "#fritzbox"; + }; + + }; + + }; + +kopieren und nach Euren Wünschen anpassen. Geändert werden muss +eigentlich nur der **Mustermann** gegen Euren **Usernamen**. Unter +**Networks** kann auch folgender Eintrag genutzt werden: + +.. code:: bash + + network { + name = "freetz"; + server { host = "irc.fu-berlin.de"; port = 6667; }; + }; + +**Hinweis:** Nach **jeder** Änderungen an der **user.config** und +drücken des Button **Übernehmen** muss man ca. 5 Minuten warten bis sich +der User wieder am IRC-Chanel anmelden kann. + +.. _Links: + +Links +----- + +Hier findet man noch weitere Erläuterungen zu BIP und welche +Einstellungen man beim IRC-Client vornehmen muss: +`​http://nerderati.com/2010/11/perpetual-irc-the-proxy-edition/ <http://nerderati.com/2010/11/perpetual-irc-the-proxy-edition/>`__ + +- Tags +- `im </tags/im>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `proxy </tags/proxy>`__ diff --git a/wiki/packages/bird.rst b/wiki/packages/bird.rst new file mode 100644 index 0000000..3b15188 --- /dev/null +++ b/wiki/packages/bird.rst @@ -0,0 +1,18 @@ +.. _Bird: + +Bird +==== + +**Bird** ist die OpenSource Implementierung eines TCP/IP Routing Daemons +für Unix/Linux Systeme. Es unterstützt sowohl IPv4 als auch IPv6, +multiple Routing-Tabellen, BGP, RIP und OSPF Routing-Protokolle, sowie +statische Routen. + +Nähere Informationen finden sich auf der +`​Homepage <http://bird.network.cz/>`__ des Projekts. + +- Tags +- `daemons </tags/daemons>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `routing </tags/routing>`__ diff --git a/wiki/packages/bluez-utils.rst b/wiki/packages/bluez-utils.rst new file mode 100644 index 0000000..7852a11 --- /dev/null +++ b/wiki/packages/bluez-utils.rst @@ -0,0 +1,19 @@ +.. _Bluez-Utils: + +Bluez-Utils +=========== + +Das Paket enthält Werkzeuge und Systemdienste zur Benutzung von +Bluetooth Geräten. + +BlueZ ist der offizielle Linux-Bluetooth-Protokollstack. Es ist ein +Open-Source-Projekt, das unter der GNU General Public License (GPL) +verteilt wird. Nähere Details finden sich auf der `​Projekt +Homepage <http://www.bluez.org/>`__. + +- Tags +- `bluetooth </tags/bluetooth>`__ +- `bluez </tags/bluez>`__ +- `hardware </tags/hardware>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/bluez.rst b/wiki/packages/bluez.rst new file mode 100644 index 0000000..5edf914 --- /dev/null +++ b/wiki/packages/bluez.rst @@ -0,0 +1,170 @@ +.. _BlueZ4.x: + +BlueZ 4.x +========= + +Official Linux Bluetooth protocol stack + +.. _General: + +General +------- + +It was quite an adventure to get this working, without any BlueZ +documentation, but here we go |:-)| + +.. _PAN: + +PAN +--- + +Freetz PAN Server: + +- Use provided default config +- Start/enable DBUS & BlueZ + +(Android) PANU Client: + +- Pair your device with *fritz.fonwlan.box-0* +- Make your device discoverable + +Freetz PAN Server: + +- Find your device + + .. code:: bash + + hcitool scan + +- Trust your device: + + .. code:: bash + + dbus-send --system --type=method_call --dest=org.bluez --print-reply /org/bluez/$(pidof bluetoothd)/hci0/dev_YY_YY_YY_YY_YY_YY org.bluez.Device.SetProperty string:Trusted variant:boolean:true + +- Restart BlueZ to persist data + +Android PANU Client: + +- Make the connection (Android: root required!): + + .. code:: bash + + hcitool scan + pand --connect xx:xx:xx:xx:xx:xx + sleep 7 + netcfg bnep0 dhcp + setprop net.dns1 8.8.8.8 + ifconfig rmnet0 up # trick to make apps think there is an internet connection + +Ignore any message from the Android browser that there is no connection +|:-)| + +Automation: use `​Script +Manager <https://market.android.com/details?id=os.tools.scriptmanager>`__ or +use \ `​NC Bluetooth +Tether <https://market.android.com/details?id=earlmagnus.nctether>`__. + +Ubuntu client: + +- Make the connection: + + .. code:: bash + + hcitool scan + sudo pand --connect xx:xx:xx:xx:xx:xx + sudo ifconfig bnep0 up + sudo dhclient bnep0 + +*Tested with a Sitecom CN-517 USB dongle (pretty generic) through a +USB-hub on a 7270v2 international with the (patched) btusb module and an +Android device with a*\ `​CyanogenMod +7 <http://www.cyanogenmod.com/>`__\ *ROM and with a Ubuntu Lucid Lynx +client.* + +lsusb: + +.. code:: bash + + VID=0a12 + PID=0001 + CLS=224 + SCL=01 + SPEED='full' + VER='2.0' + ISOC=1 + INUM=2 + ICLS1=224 + ISCL1=01 + ICLS2=224 + ISCL2=01 + +*Not tested with hci_usb (earlier kernels; will probably work) and bfusb +(AVM - BlueFRITZ! USB).* + +.. _DUN: + +DUN +--- + +- Select 'Replace kernel' +- Select package pppd (Standard packages, Point-to-Point) +- I have no idea how DUN works, so maybe someone else can write the + rest of the guide |:-)| + +.. _DBUS: + +DBUS +---- + +See all interface methods: + +.. code:: bash + + dbus-send --system --dest=org.bluez --print-reply /org/bluez/$(pidof bluetoothd)/hci0 org.freedesktop.DBus.Introspectable.Introspect + +See the properties of your adapter: + +.. code:: bash + + dbus-send --system --type=method_call --dest=org.bluez --print-reply /org/bluez/$(pidof bluetoothd)/hci0 org.bluez.Adapter.GetProperties + +See the properties of your device: + +.. code:: bash + + dbus-send --system --type=method_call --dest=org.bluez --print-reply /org/bluez/$(pidof bluetoothd)/hci0/dev_YY_YY_YY_YY_YY_YY org.bluez.Device.GetProperties + +.. _Sizes: + +Sizes +----- + +.. code:: bash + + libbluetooth ................. 55.07 Kb + libdbus ...................... 86.59 Kb + libexpat ..................... 43.79 Kb + libglib_2 .................... 237.86 Kb + libpcre ...................... 60.75 Kb + + crc16.ko ..................... 1.27 Kb + btusb.ko ..................... 6.25 Kb + bnep.ko ...................... 7.30 Kb + bluetooth.ko ................. 27.58 Kb + l2cap.ko ..................... 17.07 Kb + rfcomm.ko .................... 22.10 Kb + + dbus-1.5.8 ................... 143.21 Kb + bluez-4.101 .................. 285.39 Kb + +.. _Links: + +Links +----- + +- `​BlueZ <http://www.bluez.org/>`__ +- `Bluez 4.98 patch </attachment/ticket/602/>`__ + +.. |:-)| image:: ../../chrome/wikiextras-icons-16/smiley.png + diff --git a/wiki/packages/br2684ctl.en.rst b/wiki/packages/br2684ctl.en.rst new file mode 100644 index 0000000..231f091 --- /dev/null +++ b/wiki/packages/br2684ctl.en.rst @@ -0,0 +1,228 @@ +br2684ctl +--------- + +| This package allows you to connect to your ISP via additional virtual + circuits (ATM PVC's). +| For some (older) setup's multiple virtual circuits are used to ofer + Triple Play services where for each service (e.g High speed Internet, + Broadband TV and Voice) a virtual circuit is used. +| More modern networks often used one converged IP network with only one + virtual circuits. +| More info on the br2684ctl package can be found at: +| `​https://home.regit.org/technical-articles/atm-bridging/ <https://home.regit.org/technical-articles/atm-bridging/>`__ +| `​http://http://home.sch.bme.hu/~cell/br2684/USAGE.br2684 <http://http://home.sch.bme.hu/~cell/br2684/USAGE.br2684>`__ + +| Source: +| `​http://home.sch.bme.hu/~cell/br2684/dist/010402/brctl-010226.c <http://home.sch.bme.hu/~cell/br2684/dist/010402/brctl-010226.c>`__ +| Patch: +| `​http://home.sch.bme.hu/~cell/br2684/dist/010402/br2684-against2.4.2.diff <http://home.sch.bme.hu/~cell/br2684/dist/010402/br2684-against2.4.2.diff>`__ + +.. _CreatingaFreetzImagewithbr2684ctl: + +Creating a Freetz Image with br2684ctl +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +I used Freetz-1.2 for a FritzBox 7170. + +| Follow the directions from the `Wiki <../index.en.html#>`__ +| After the following step you can configure the packages you want to + have included in your image. + +.. code:: bash + + make menuconfig + +.. code:: bash + + Package selection ---> Testing ---> [*] br2684ctl (binary only) + +| For Client DHCP you can additionally enable the following option. +| You can also add a script (default.script) to the image at compile + time (see below for details). + +.. code:: bash + + Advanced options ---> BusyBox options ---> [*] udhcpc + +| + +.. _Configuringbr2684ctl: + +Configuring br2684ctl +~~~~~~~~~~~~~~~~~~~~~ + +There is no GUI interface for br2684ctl. There is only one executable +with a number of mandatory and optional parameters. + +.. code:: bash + + br2684ctl [-c n -e 0|1 -b -s buf_size [-q qos] -a [itf.]vpi.vci ] + +| ATM PVC number, VPI and VCI. +| -a [itf.]vpi.vci + +| BR2684 interface number such as nas0, nas1,…, where the number is n + (e.g. nas0 is -c 0). +| This is a mandatory parameter. +| -c n + +| Encapsulation method. 0=LLC, 1=VC mux. default is 0, LLC +| This is a mandatory parameter. +| -e 0|1 + +| Running background. Default (parameter ommited) is foreground. +| -b + +| Send buffer size. Default is 8192. +| -s buf_size + +| Optionally there are QoS parameters for traffic shaping, and cell rate + limiting. +| -q <shaping type>,<encapsulation + type>:max_pcr≤rate>,min_pcr≤rate>,max_sdu≤frame-size> +| shaping type: {ubr|cbr} +| encapsulation type: all5 +| maximum peak cell rate: rate in [M|k]bps +| minimum peak cell rate: rate in [M|k]bps +| maximum service delivery unit: maximum frame size that is segmented in + the ATM cells. + +| Example: +| Creating ATM PvC 0/32 in the background with interface name nas0 using + LLC encapsulation. + +.. code:: bash + + br2684ctl -b -e 0 -c 0 -a 0.32 + +.. code:: bash + + br2684ctl -e 0 -c 0 -q ubr,aal5:max_pcr=5Mbps,min_pcr=320kbps,max_sdu=1524 -a 0.32 + +| After the interface is created you can see it with the following + command: + +.. code:: bash + + ifconfig -a + +| or + +.. code:: bash + + ifconfig nas0 + +Some details can be viewed at: + +.. code:: bash + + cd /proc/net/atm/ + ls -la + cat <file> + +| + +.. _ObtainIPconfigurationviaDHCP: + +Obtain IP configuration via DHCP +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +| The udhcpc package, part of BusyBox, is a DHCP Client program, that + obtains configuration parameters from a DHCP Server. +| Udhcpc configures enviroment variables with the parameter values + obtained from the DHCP Server. +| A configure script (e.g. a shell script) can make use of these + variables to configure an interface, DNS servers, NTP Servers, and a + lot of other possible information. + +| Freetz doesn't have a (default) DHCP configure script. +| Here an example script to just configure an IP address with broadcast + address and subnetmask. +| To include the script (default.script) at compile time follow the + following steps: + +.. code:: bash + + cd ~/freetz-x.y/addon/ + echo default.script >> static.pkg + mkdir -p default.script/root/etc/dhcp/ + vi default.script/root/etc/dhcp/default.script + + #!/bin/sh + + [ -z "$1" ] && "Error: should be run by udhcpc" && exit 1 + + case "$1" in + deconfig) + ifconfig $interface 0.0.0.0 + # echo interface = $interface + ;; + leasefail) + ;; + nak) + ;; + renew|bound) + ifconfig $interface $ip \ + broadcast $broadcast \ + netmask $subnet + # echo interface = $interface + # echo ip address = $ip + # echo subnet = $subnet + # echo netmask = ${subnet:-255.255.255.0} + ;; + esac + +Enable the interface: + +.. code:: bash + + ifconfig nas0 up + +Obtain ip configuration info via DHCP: + +.. code:: bash + + udhcpc -i nas0 -s /etc/dhcp/default.script + +.. _DebugingtheDHCPprocess: + +Debuging the DHCP process +~~~~~~~~~~~~~~~~~~~~~~~~~ + +To obtain additional debug information from the udhcpc package you need +to enable this, and recompile a new image. + +.. code:: bash + + cd ~/freetz-x.y/source/target-mipsel_uClibc-0.9.29/ref-8mb/busybox-1.18.5 + vi .config + +In the .config file search for CONFIG_UDHCP_DEBUG=0 and change it to: + +.. code:: bash + + CONFIG_UDHCP_DEBUG=3 + +Initiate recompile of the busybox packages during the next make: + +.. code:: bash + + cd ~/freetz-1.2/ + make busybox-clean + +Compile a new image with: + +.. code:: bash + + make + +After installing the new image on the FritzBox start the DHCP Client +with: + +.. code:: bash + + udhcpc -i nas0 -s /etc/dhcp/default.script -vvv + +.. + + the number of v's determines the detail of debug packages. diff --git a/wiki/packages/br2684ctl.rst b/wiki/packages/br2684ctl.rst new file mode 100644 index 0000000..67992d1 --- /dev/null +++ b/wiki/packages/br2684ctl.rst @@ -0,0 +1,28 @@ +br2684ctl +========= + +Bei diesem Paket handelt es sich um Tools für die Konfiguration des ATM +Ethernet Bridging. Die "Nummer" im Namen kommt von der Definition des +ATM Bridging +(`​RFC2684 <http://www.ietf.org/rfc/rfc2684.txt?number=2684>`__), welche +als hauptsächliches Anwendungsgebiet xDSL Verbindungen nennt. Man könnte +das Ganze auch "Ethernet over ATM" nennen, oder es mit diversen "Tunnel" +Methoden vergleichen. + +.. _WeiterführendeInformationen: + +Weiterführende Informationen +---------------------------- + +- `​ATM Bridging <https://home.regit.org/?s=br2684>`__ - hier finden + sich auch Anwendungsbeispiele für br2684ctl +- `​RFC2684 <http://www.ietf.org/rfc/rfc2684.txt?number=2684>`__ +- `​Homepage of 2684 bridge under + Linux <http://home.sch.bme.hu/~cell/br2684/>`__ +- `​Tutorial written by Joonbum + Byun <http://home.sch.bme.hu/~cell/br2684/USAGE.br2684>`__ +- `​Linux ATM Howto <http://www.tldp.org/HOWTO/ATM-Linux-HOWTO/>`__ + +- Tags +- `network </tags/network>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/bridge-utils.rst b/wiki/packages/bridge-utils.rst new file mode 100644 index 0000000..c57c32a --- /dev/null +++ b/wiki/packages/bridge-utils.rst @@ -0,0 +1,30 @@ +bridge-utils +============ + +Dieses Paket beinhaltet Utilities für die Konfiguration des `​IEEE +802.1d <http://standards.ieee.org/getieee802/>`__ Ethernet Bridging +(inkl. Spanning Tree Protokoll) in Linux-Kernels 2.4 oder höher. + +Mittels einer `​Ethernet +Bridge <http://de.wikipedia.org/wiki/Bridge_(Netzwerk)>`__ lassen sich +mehrere Ethernet Geräte (üblicherweise Netzwerkkarten) transparent +verbinden, sodass Hosts, die mit einem Netzwerk-Gerät verbunden sind, +Hosts des anderen Netzwerk-Gerätes direkt sehen können (als wären sie im +eigenen Netz). + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​Sourceforge + Projekt-Seite <http://sourceforge.net/projects/bridge/>`__ +- `​Project Homepage <http://www.linuxfoundation.org/en/Net:Bridge>`__ + including `FAQs <../FAQ.html>`__ a.o.m. +- `​Wikipedia + Artikel <http://de.wikipedia.org/wiki/Bridge_(Netzwerk)>`__ zu Bridge + (Netzwerk) + +- Tags +- `network </tags/network>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/callmonitor.rst b/wiki/packages/callmonitor.rst new file mode 100644 index 0000000..263c5c8 --- /dev/null +++ b/wiki/packages/callmonitor.rst @@ -0,0 +1,90 @@ +.. _Callmonitor: + +Callmonitor +=========== + +Der Callmonitor ermöglicht es, bei eingehenden Anrufen auf einer +FritzBox beliebige `Aktionen <callmonitor/actions.html>`__ auszuführen, +abhängig davon, wer wen anruft. Beliebt sind das Senden von +Benachrichtigungen an verschiedenste Arten von "Boxen" (TV/Sat-Receiver, +Spielekonsolen, PCs) oder das Aufwecken von Geräten (Wake on LAN). + +Dabei kann über eine Rückwärtssuche in Internet-Telefonbüchern oft auch +der Name des Anrufers angezeigt werden. + +Das Besondere an diesem Callmonitor (leider gibt es viele Projekte mit +ähnlichem Namen) ist, dass er komplett auf der Fritzbox läuft; es ist +also nicht nötig, weitere Rechner eingeschaltet zu haben. + +.. _Installation: + +Installation +------------ + +.. figure:: /screenshots/6.png + :alt: Callmonitor WebInterface + + Callmonitor WebInterface + +Der Callmonitor ist als Paket im Rahmen von `Freetz <../index.html>`__ +(`​Forum <http://www.ip-phone-forum.de/showthread.php?t=85371>`__) +realisiert, und kann bei dessen Installation einfach ausgewählt werden. + +Das Callmonitor-Paket kann nicht als `Addon-Paket +installiert <../help/howtos/development/install_addon.html>`__ werden. + +.. _InstallationneuerVersionen: + +Installation neuer Versionen +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Bitte beachtet: Mit Freetz 1.1 können nur Callmonitor-Version bis 1.15 +eingesetzt werden. Callmonitor 1.15.1 und höher benötigen Änderungen, +die in Freetz 1.2 oder der Freetz-Entwicklerversion enthalten sind. + +Zum Einbinden der aktuellsten Version aus der Entwicklerversion in +Freetz 1.2 kann man so vorgehen (im Wurzelverzeichnis von Freetz): + +.. code:: bash + + svn switch http://svn.freetz.org/trunk/make/callmonitor/callmonitor.mk make/callmonitor/callmonitor.mk + +.. _Konfiguration: + +Konfiguration +------------- + +Zur Konfiguration gibt es im Web-Interface von Freetz mehrere neue +Seiten, darunter: + +- `Pakete/Callmonitor <callmonitor/config.html>`__: Optionen zum + Startverhalten, zur + `Rückwärtssuche <callmonitor/reverse_search.html>`__ etc. +- `Einstellungen/Regeln <callmonitor/listeners.html>`__: Die + `Aktionen <callmonitor/actions.html>`__, die bei bestimmten Mustern + von Quell- und Zielrufnummer ausgeführt werden sollen. +- `Einstellungen/Telefonbuch <callmonitor/phonebook.html>`__: Das + dauerhaft (im Flash) gespeicherte Telefonbuch. Dies kann zusätzlich + zum AVM-Telefonbuch verwendet werden. + +Außerdem lässt sich über das Web-Interface die Regelmenge mit +vorgetäuschten `Testanrufen <callmonitor/testcall.html>`__ testen (es +wird bei euch nicht klingeln; die Testanrufe sieht nur der Callmonitor). +Das ist recht praktisch bei der Fehlersuche. Es existiert außerdem noch +eine Seite zur `Wartung <callmonitor/maintenance.html>`__ des +Telefonbuchs. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `FAQ <callmonitor/faq.html>`__ +- `​Entwicklungsseite bei + Sourceforge <http://sourceforge.net/projects/callmonitor/>`__ +- `​Forumsseite für Fragen und + Diskussionen <http://www.ip-phone-forum.de/showthread.php?t=191723>`__ + +- Tags +- `packages <../packages.html>`__ +- `phone </tags/phone>`__ diff --git a/wiki/packages/callmonitor/actions.rst b/wiki/packages/callmonitor/actions.rst new file mode 100644 index 0000000..42816a3 --- /dev/null +++ b/wiki/packages/callmonitor/actions.rst @@ -0,0 +1,189 @@ +.. _Aktionen: + +Aktionen +======== + +Aktionen werden anhand von Regeln ausgeführt, die in den sogenannten +`Listeners <listeners.html>`__ definiert sind. Dabei kann beliebiger der +FritzBox bekannter Shell-Code (Programme/Befehle) ausgeführt werden. Die +Aktionen müssen im Listener als Parameter <action> übergeben werden +(siehe Beispielbild unten für die Aktion *dboxpopup*), wobei +`Umgebungsvariablen <listeners.html#ereignis-informationen_fuer_aktionen>`__ +mit Informationen über den auslösenden Anruf verwendet werden können. + +Einige Standardfunktionen werden direkt vom callmonitor bereitgestellt +und sind im Folgenden beschrieben. Mit dem Script *callaction* lassen +sich alle Callmonitor-Aktionen von außerhalb (z.B. von der Kommandozeile +zum Testen) aus aufrufen. + +Wenn man in Verbindung mit *checkmaild* neu eingetroffene Emails auf +einem VDR ausgeben will, kann man das machen, indem man die Datei +``/var/mod/etc/maillog.cfg`` z.B. wie folgt anlegt: + +:: + + #!/bin/sh + # neue Email empfangen + if [ "$1" = "0" ]; + then + callaction vdr m741 "Am $6 um $7 Uhr schrieb $8: $9" + fi + +Hintergrundinfos zur Datei ``maillog.cfg`` und dem checkmaild Paket kann +man auch hier im Wiki unter `checkmaild <../checkmaild.html>`__ +nachlesen. + +.. _Benachrichtigen: + +Benachrichtigen +--------------- + +Benachrichtigungen sind dafür da, eingehende und/oder verpasste Anrufe +über verschiedene Kommunikationswege und auf verschiedenen Geräten zu +signalisieren. + +Die vorgegebenen Standardtexte der Funktionen können an die `eigenen +Bedürfnisse angepasst <adapt_messages.html>`__ werden. + +Funktionen, die auf `getmsg <actions/getmsg.html>`__ basieren: + +- `DGStation Relook 400S <actions/relook.html>`__ +- `DBox <actions/dbox.html>`__ +- `DreamBox <actions/dreambox.html>`__ +- `XBox <actions/xbox.html>`__ +- `Freecom MusicPal <actions/musicpal.html>`__ + +Falls nötig, können beim Aufruf auch `Passwörter und +Benutzernamen <actions/password.html>`__ angegeben werden. + +Funktionen, die auf `rawmsg <actions/rawmsg.html>`__ basieren: + +- `SoundBridge <actions/soundbridge.html>`__ von Roku +- `VDR <actions/vdr.html>`__ +- `YAC <actions/yac.html>`__: Yet Another Caller ID Program + +Benachrichtung auf ganz anderem Wege: + +- `mailmessage <actions/mail.html>`__: Benachrichtigung per Mail +- `Samsung TV <actions/samsung.html>`__: Benachrichtigung + SOAP-Nachricht +- `Snarl <actions/snarl.html>`__: Benachrichtigung für Snarl + +.. _WählenWeckenKonfigurieren: + +Wählen, Wecken, Konfigurieren +----------------------------- + +- `Wählhilfe <actions/dial.html>`__: Ansprechen der Wählhilfe der + FritzBox +- `WOL <actions/wol.html>`__: Wake on LAN +- `Fritz!Box-Konfiguration <actions/config.html>`__: WLAN, SIP, + Portforwarding ein- und ausschalten + +.. _EigeneAktionen: + +Eigene Aktionen +--------------- + +Mit den beiden Basisfunktionen *getmsg* und *rawmsg* können auf den +Zielmaschinen nahezu beliebige Funktionen ausgeführt werden — sofern sie +dort entsprechend realisiert sind (Start über den Webserver oder +Lauschen an einem TCP-Port). + +- `getmsg <actions/getmsg.html>`__: HTTP-GET-Requests +- `rawmsg <actions/rawmsg.html>`__: Nachrichten über "rohe" + TCP-Verbindungen +- `Aufruf <actions/call.html>`__: Hinweise zu Funktionsaufrufen + +Auch andere, selbst-definierte Aktionen sind möglich: + +- `Selbst-definierte Aktionen <actions/self-defined.html>`__ + +.. _ListeverfügbarerAktionen: + +Liste verfügbarer Aktionen +-------------------------- + +(generiert) + +#. `HTTP-Requests (getmsg) <actions/getmsg.html#HTTP-Requestsgetmsg>`__ + + #. `Syntax: <actions/getmsg.html#Syntax:>`__ + #. `Beispiel: <actions/getmsg.html#Beispiel:>`__ + +#. `DBox2 <actions/dbox.html#DBox2>`__ + + #. `DBox2 mit Neutrino + Image <actions/dbox.html#DBox2mitNeutrinoImage>`__ + #. `DBox2 mit Enigma Image <actions/dbox.html#DBox2mitEnigmaImage>`__ + +#. `Wählhilfe <actions/dial.html#Wählhilfe>`__ +#. + + #. `Listener-Eintrag: <actions/snarl.html#Listener-Eintrag:>`__ + #. `Screenshots: <actions/snarl.html#Screenshots:>`__ + +#. `Selbstdefinierte + Aktionen <actions/self-defined.html#SelbstdefinierteAktionen>`__ +#. `Benutzernamen und + Passwörter <actions/password.html#BenutzernamenundPasswörter>`__ + + #. `Beispiel <actions/password.html#Beispiel>`__ + +#. `Freecom MusicPal <actions/musicpal.html#FreecomMusicPal>`__ +#. `Roku SoundBridge <actions/soundbridge.html#RokuSoundBridge>`__ +#. `VDR <actions/vdr.html#VDR>`__ +#. `Benachrichtigung auf einem Samsung + TV <actions/samsung.html#BenachrichtigungaufeinemSamsungTV>`__ +#. `XBox <actions/xbox.html#XBox>`__ + + #. `Anpassungen auf der + XBox <actions/xbox.html#AnpassungenaufderXBox>`__ + #. `Weitere Möglichkeiten <actions/xbox.html#WeitereMöglichkeiten>`__ + +#. `YAC <actions/yac.html#YAC>`__ +#. `Allgemeine Hinweise zu + Funktionsaufrufen <actions/call.html#AllgemeineHinweisezuFunktionsaufrufen>`__ +#. `FritzBox-Konfiguration <actions/config.html#FritzBox-Konfiguration>`__ + + #. `Portforwarding <actions/config.html#Portforwarding>`__ + #. `WLAN <actions/config.html#WLAN>`__ + #. `DECT <actions/config.html#DECT>`__ + #. `SIP <actions/config.html#SIP>`__ + #. `Rufumleitung <actions/config.html#Rufumleitung>`__ + #. `Abfragen von + Konfigurationswerten <actions/config.html#AbfragenvonKonfigurationswerten>`__ + +#. `Alternative <actions/config.html#Alternative>`__ +#. `DreamBox <actions/dreambox.html#DreamBox>`__ + + #. `Dreambox mit Enigma + 1 <actions/dreambox.html#DreamboxmitEnigma1>`__ + + #. `StandBy Check <actions/dreambox.html#StandByCheck>`__ + + #. `DreamBox mit Enigma + 2 <actions/dreambox.html#DreamBoxmitEnigma2>`__ + +#. `E-Mail-Benachrichtigung <actions/mail.html#E-Mail-Benachrichtigung>`__ + + #. `mail <actions/mail.html#mail>`__ + #. `Ersatz für + mail_missed_call <actions/mail.html#Ersatzfürmail_missed_call>`__ + +#. `DGStation Relook 400S <actions/relook.html#DGStationRelook400S>`__ +#. `Einfache TCP-Verbindungen + (rawmsg) <actions/rawmsg.html#EinfacheTCP-Verbindungenrawmsg>`__ +#. `Wake on LAN <actions/wol.html#WakeonLAN>`__ + +.. _Third-PartySoftware: + +Third-Party Software +-------------------- + +CallMon2: auf Windows und Linux laufendes Perl-Skript, +`​http://zephyrsoftware.sf.net/ <http://zephyrsoftware.sourceforge.net/?q=fritzbox/callmon2>`__ +(dort genaue Informationen zum Einrichten des ganzen!) + +- Tags +- `callmonitor </tags/callmonitor>`__ diff --git a/wiki/packages/callmonitor/actions/call.rst b/wiki/packages/callmonitor/actions/call.rst new file mode 100644 index 0000000..99dca44 --- /dev/null +++ b/wiki/packages/callmonitor/actions/call.rst @@ -0,0 +1,40 @@ +.. _AllgemeineHinweisezuFunktionsaufrufen: + +Allgemeine Hinweise zu Funktionsaufrufen +======================================== + +Der Aufruf von Funktionen, die auf `getmsg <getmsg.html>`__ oder +`rawmsg <rawmsg.html>`__ basieren, sieht immer so aus: + +.. code:: bash + + foomessage [OPTION]... <host> [<message>]... + +Der einfachste und am meisten genutzte Fall ist dementsprechend + +.. code:: bash + + foomessage <host> + +Als Optionen können alle Optionen verwendet werden, die auch +`getmsg <getmsg.html>`__ bzw. `rawmsg <rawmsg.html>`__ verstehen. + +Die Standard-Nachricht wird generell von einer Funktion mit der +Namenskonvention ``default_foomessage`` erzeugt und kann so einfach +überschrieben wird. + +|<!>| Bei den Funktionen können eventuell Umgebungsvariablen verwendet +werden. Diese werden vor dem Funktionsaufruf gesetzt. Der Callmonitor +sorgt automatisch für die Kodierung der Umgebungsvariablen, die Text +enthalten (z.B. ``XBOX_CAPTION`` und ``DREAM_CAPTION``). Man kann also +einfach + +.. code:: bash + + FOO_CAPTION="Dies ist der zu 100% richtige Titel" foomessage <host> + +schreiben, ohne sich Gedanken über Kodierungen (URL- oder printf-) +machen zu müssen. + +.. |<!>| image:: ../../../../chrome/wikiextras-icons-16/exclamation-red.png + diff --git a/wiki/packages/callmonitor/actions/config.rst b/wiki/packages/callmonitor/actions/config.rst new file mode 100644 index 0000000..606418f --- /dev/null +++ b/wiki/packages/callmonitor/actions/config.rst @@ -0,0 +1,151 @@ +.. _FritzBox-Konfiguration: + +FritzBox-Konfiguration +====================== + +Mit der Aktion ``config`` aus der ``config.sh`` (seit Callmonitor 1.8) +lassen sich einige Funktionen in der Konfiguration der FritzBox +umstellen. + +.. _Portforwarding: + +Portforwarding +-------------- + +Das Portforwarding kann aktiviert und deaktiviert werden. + +.. code:: bash + + Syntax: + config forward <NUMMER> <on|off|toggle> + + NUMMER Nummer des Portforwardings (beginnend bei 1) + on|off|toggle an- bzw. abschalten des Portforwardings: an, aus, + an-/abschalten des Forwardings abhängig der bereits + erfolgten Einstellung + +Beispiele: + +:: + + config forward 1 on # 1. Portforwarding aktivieren + config forward 3 off # 3. Portforwarding deaktivieren + config forward 5 toggle # 5. Portforwarding an-/abschalten + +.. _WLAN: + +WLAN +---- + +Das WLAN kann aktiviert und deaktiviert werden. + +.. code:: bash + + Syntax: + config wlan [2.4|5|guest] <on|off> + + 2.4|5 gewünschtes Frequenzband: 2,4 oder 5 GHz + guest Gast-WLAN schalten (seit Version 1.20.1) + on|off an- bzw. abschalten des WLANs + +Fehlt die Angabe des Frequenzbandes, werden beide geschaltet, aber nur +das 2,4er abgefragt. + +Beispiele: + +:: + + config wlan off # WLAN aus + config wlan on # WLAN an + config wlan 2.4 off # WLAN im 2,4-GHz-Band aus + config wlan 5 on # 5-GHz-WLAN an + +.. _DECT: + +DECT +---- + +DECT kann aktiviert und deaktiviert werden. + +.. code:: bash + + Syntax: + config dect <on|off> + + on|off an- bzw. abschalten der DECT-Hardware + +Beispiele: + +:: + + config dect off # DECT aus + config dect on # DECT an + +.. _SIP: + +SIP +--- + +Die SIP-Accounts können aktiviert und deaktiviert werden. + +.. code:: bash + + Syntax: + config sip <NUMMER> <on|off> + + NUMMER Nummer des SIP-Accounts (beginnend bei 1) + on|off an- bzw. abschalten des SIP-Accounts + +Beispiele: + +:: + + config sip 4 on # 4. SIP-Account aktivieren + config sip 2 off # 2. SIP-Account deaktivieren + +.. _Rufumleitung: + +Rufumleitung +------------ + +(De-)Aktivierung der Rufumleitungen. (Seit Version 1.8.2) Unterstützt +werden momentan nur Rufumleitungen des Typs "Anrufe von Rufnummer xy", +nicht aber "Alle Anrufe an Fon X". + +.. code:: bash + + Syntax + config diversion <NUMMER> <on|off> + + NUMMER Nummer der Rufumleitung (beginnend bei 1) + on|off an- bzw. abschalten der Rufumleitung + +.. _AbfragenvonKonfigurationswerten: + +Abfragen von Konfigurationswerten +--------------------------------- + +(seit Version 1.9.1) + +Einfach beim config-Aufruf den Wert weglassen: + +:: + + config sip 2 + config diversion 1 + config forward 3 + config wlan + +Ausgabe ist einer der Werte "on", "off" oder "error" (wenn z.B. die +Wahlregel nicht existiert). + +.. _Alternative: + +Alternative +=========== + +In neueren Firmware-Versionen ist der Callmonitor nicht unbedingt +erforderlich, um die Funktionen anzuzeigen oder zu ändern. Alternativ +lassen sich diese mit dem +`​ctlmgr_ctl <http://wehavemorefun.de/fritzbox/index.php/Ctlmgr_ctl>`__ +von AVM bearbeiten. diff --git a/wiki/packages/callmonitor/actions/dbox.rst b/wiki/packages/callmonitor/actions/dbox.rst new file mode 100644 index 0000000..5784575 --- /dev/null +++ b/wiki/packages/callmonitor/actions/dbox.rst @@ -0,0 +1,42 @@ +.. _DBox2: + +DBox2 +===== + +.. _DBox2mitNeutrinoImage: + +DBox2 mit Neutrino Image +------------------------ + +.. code:: bash + + dboxmessage (default_dboxmessage) + dboxpopup (default_dboxpopup) + +Die Funktion unterscheiden sich nur darin, ob die angezeigte Nachricht +von alleine nach einiger Zeit verschwindet oder explizit bestätigt +werden muss. + +``default_dboxmessage}} und {{{default_dboxpopup`` haben die Funktion +``default_dbox`` als gemeinsame Grundlage. + +.. code:: bash + + dboxlcd (default_dboxlcd) + +Stellt eine Nachricht auf dem LCD der DBox dar. + +.. _DBox2mitEnigmaImage: + +DBox2 mit Enigma Image +---------------------- + +Wenn ihr ein Enigma Image auf eurer Box habt und im Popup vor dem +eigentlichen Text ein "popup=" oder "nmsg=" erscheint, so könnt ihr wie +bei der Dreambox folgenden Befehl nutzen: + +.. code:: bash + + dreammessage (default_dreammessage) + +siehe dann auch `Hier <dreambox.html>`__ diff --git a/wiki/packages/callmonitor/actions/dial.rst b/wiki/packages/callmonitor/actions/dial.rst new file mode 100644 index 0000000..437ac78 --- /dev/null +++ b/wiki/packages/callmonitor/actions/dial.rst @@ -0,0 +1,23 @@ +.. _Wählhilfe: + +Wählhilfe +========= + +Die aus dem Webinterface von AVM bekannte Wählhilfe steht hier als +Funktion zur Verfügung (seit Callmonitor 1.1). + +.. code:: bash + + dial NUMMER [PORT] + +Das erste Argument ist die zu wählende Nummer, das zweite (optional) der +Port (1, 2, 3, 50, 51, …), natürlich ohne die eckigen Klammern. + +Die Ports 1 bis 3 sind die analogen Telefonen, 50 alle ISDN-Telefone, ab +51 die einzelnen ISDN-Telefone. + +Auflegen ist auch möglich (seit Callmonitor 1.5): + +.. code:: bash + + hangup [PORT] diff --git a/wiki/packages/callmonitor/actions/dreambox.rst b/wiki/packages/callmonitor/actions/dreambox.rst new file mode 100644 index 0000000..81fb295 --- /dev/null +++ b/wiki/packages/callmonitor/actions/dreambox.rst @@ -0,0 +1,103 @@ +.. _DreamBox: + +DreamBox +======== + +.. _DreamboxmitEnigma1: + +Dreambox mit Enigma 1 +--------------------- + +.. code:: bash + + dreammessage [user[:password]@]host[:port] ["Alternative Nachricht"] + +.. figure:: /screenshots/1.jpg + :alt: CallMonitor: Dreambox Auth abschalten + + CallMonitor: Dreambox Auth abschalten + +Wie zu sehen ist, ist "host" (also Rechnername oder IP-Adresse) der +einzige Pflichtparameter. Damit die Nachricht aber auch wirklich +ankommt, muss die Authentifizierung berücksichtigt werden. Eine Lösung +ist es, wie beigefügter Screenshot aufzeigt, das Abschalten der +Nachrichten-Authentifizierung auf der Box selbst. Wer das nicht will, +dem bleibt zur Zeit nur, ``user:password@`` vor den Host zu setzen - was +dann allerdings bei den Listeners im Klartext angezeigt wird. + +``dreammessage`` kennt ein Standard-Nachrichten-Template, was +normalerweise verwendet wird. Wer die Nachricht lieber selbst +formatieren will, findet +`hier <../listeners.html#Ereignis-InformationenfürAktionen>`__ eine +Liste mit verwendbaren Platzhaltern für Telefonnummer, Zeilenumbrüche, +usw. + +Desweiteren gibt es drei Umgebungsvariablen, die das Verhalten von +``dreammessage`` beeinflussen. Sie sind hier in einem typischen Aufruf +mit ihren Standardwerten gezeigt: + +.. code:: bash + + DREAM_TIMEOUT=10 DREAM_CAPTION="Telefonanruf" DREAM_ICON=1 dreammessage box1 + +.. _StandByCheck: + +StandBy Check +~~~~~~~~~~~~~ + +Befindet sich die zu benachrichtigende Dreambox im StandBy, werden die +Nachrichten solange zwischengespeichert, bis sie wieder aus selbigem +aufwacht. An und für sich ganz nett - nur wenn man sie gerade mal ein +paar Tage nicht benutzt hat, und dann nach dem Anschalten erstmal +hunderte von "verpassten" Anrufen zu sehen bekommt. Daher wäre es für +manchen sicher praktisch, würden die Nachrichten nur dann (und zwar +sofort) zugestellt, wenn die Dreambox sich zum Zeitpunkt des Anrufes +*nicht* im StandBy befindet - während andernfalls die Benachrichtigung +komplett unterbliebe. + +Glücklicherweise ist das machbar (getestet mit DM600, DM 7000 und +DM7020). Auf folgende Weise lässt sich nämlich der Status ermitteln: + +:: + + # keine Passwort-Authentifizierung aktiv: + standby=`wget -O- "http://dreambox/cgi-bin/status" | awk '/Standby/' | sed -e 's/<[^>]*>//g'` + # mit Passwort-Authentifizierung: + standby=`wget -O- --http-user=root --http-passwd=dreambox "http://dreambox/cgi-bin/status" | awk '/Standby/' | sed -e 's/<[^>]*>//g'` + +Je nachdem, ob das WebIF für Passwort-Authentifizierung konfiguriert ist +oder nicht, kann man also die entsprechende Variante nutzen. Das +busybox-wget unterstützt allerdings keine Authentifizierung. Daher muss +beim Bauen von freetz das Paket 'wget' installiert werden. Die Variable +``$standby`` ist anschließend entweder mit ``STANDBY:ON`` oder +``STANDBY:OFF`` belegt. Für unsere Benachrichtigungs-Aktion können wir +uns das wie folgt nutzbar machen: + +:: + + [ "$(wget -O- "http://dreambox/cgi-bin/status" | awk '/Standby/' | sed -e 's/<[^>]*>//g')" = "Standby:OFF" ] && DREAM_TIMEOUT=10 dreammessage dreambox "${SOURCE_DISP} ruft an.${LF}${SOURCE_NAME}" + +wobei natürlich *dreambox* mit dem Hostnamen bzw. der IP-Adresse der +Dreambox ersetzt, sowie ggf. die Passwort-Authentifizierung mit +eingebaut werden muss. + +*Quelle:*\ `​IPPF +Thread <http://www.ip-phone-forum.de/showthread.php?t=100706&page=55>`__ + +.. _DreamBoxmitEnigma2: + +DreamBox mit Enigma 2 +--------------------- + +.. code:: bash + + dream2message (default_dream2message) + +``DREAM_TIMEOUT`` und ``DREAM_ICON`` werden auch hier unterstützt. + +| Beispiel für ein Popup das nur den Namen (sofern in der Callers + vorhanden) und die Telefonnummer des Anrufers anzeigt: + +.. code:: bash + + in:request ^ ^ dream2message 192.168.178.25 "${SOURCE_NAME} ${SOURCE} ruft an." diff --git a/wiki/packages/callmonitor/actions/getmsg.rst b/wiki/packages/callmonitor/actions/getmsg.rst new file mode 100644 index 0000000..9c091fd --- /dev/null +++ b/wiki/packages/callmonitor/actions/getmsg.rst @@ -0,0 +1,58 @@ +.. _HTTP-Requestsgetmsg: + +HTTP-Requests (getmsg) +====================== + +Die Funktion ``getmsg`` sendet eine Benachrichtigung, indem sie diese +per HTTP GET an einen Webserver schickt. Es ist möglich, die URL (nur +Pfad + Query-String, also den Teil hinter dem Host-Namen) mit +`​printf-Templates <http://www.gnu.org/software/libc/manual/html_node/Formatted-Output.html>`__] +anzugeben. Im einfachsten Fall bedeutet dies, dass die Stelle in der +URL, an der die Nachricht eingesetzt werden soll, mit ``%s`` markiert +wird. ``getmsg`` sorgt selbst für die richtige Kodierung der Nachrichten +(URL Encoding). + +.. _Syntax:: + +Syntax: +------- + +.. code:: bash + + Usage: getmsg [OPTION]... <HOST> <url-template> [<message>]... + getmsg [OPTION]... -t <url-template> <host> [<message>]... + Send a message in a simple HTTP GET request. + + -t, --template=FORMAT use this printf-style template to build the URL, + all following messages are URL-encoded and filled + into this template + -d, --default=CODE default for first parameter (eval'ed later) + -p, --port=PORT use a special target port (default 80) + -w, --timeout=SECONDS set connect timeout (default 3) + -v, --virtual=VIRT use a different virtual host (default HOST) + -U, --user=USER user for basic authorization + -P, --password=PASS password for basic authorization + --help show this help + +-------------- + +|<!>| Die **folgenden Funktionen basieren** auf ``getmsg`` und +unterstützen daher dieselben Optionen. Passend für den entsprechenden +Empfänger sind URL-Template (``-t``), die Standard-Nachricht (``-d``) +und der Port (``-p``) schon vorbelegt. + +.. _Beispiel:: + +Beispiel: +--------- + +.. code:: bash + + *:* ^ ^ getmsg 192.168.0.111 -p 222 -t "/home/phone?event=%s&id=%s&time=%s&source=%s&source_name=%s&destination=%s&destination_name=%s&extension=%s&duration=%s&provider=%s" "${EVENT}" "${ID}" "${TIMESTAMP}" "${SOURCE}" "${SOURCE_NAME}" "${DEST}" "${DEST_NAME}" "${EXT}" "${DURATION}" "${PROVIDER}" + +Das obere Beispiel bewirkt einen GET-Aufruf an +`​http://192.168.0.111:222/home/phone <http://192.168.0.111:222/home/phone>`__ +mit allen relevanten Daten im Query-String. + +.. |<!>| image:: ../../../../chrome/wikiextras-icons-16/exclamation-red.png + diff --git a/wiki/packages/callmonitor/actions/mail.rst b/wiki/packages/callmonitor/actions/mail.rst new file mode 100644 index 0000000..5df6c26 --- /dev/null +++ b/wiki/packages/callmonitor/actions/mail.rst @@ -0,0 +1,78 @@ +.. _E-Mail-Benachrichtigung: + +E-Mail-Benachrichtigung +======================= + +Die Funktion ``mailmessage`` verschickt eine E-Mail mit Hilfe der Daten, +die für den Push-Service eingerichtet sind (falls man nicht beim Aufruf +etwas anderes befiehlt (mailer-Optionen)). Der Push-Service selbst kann +ruhig ausgeschaltet bleiben, wichtig sind die Einstellungen für +Adressen, Mailserver & Co. Beispiele zum Einsatz in Listeners: + +.. code:: bash + + mailmessage + mailmessage -t me@my.self + mailmessage -s "Oh, oh ... ($SOURCE)" + +- Mailadressen, Servereinstellungen, Passwörter & Co. werden aus der + Konfiguration des Push Service der FritzBox übernommen. Einzelne + Teile können durch Optionen überschrieben werden (im Beispiel zum + Beispiel die Zieladresse mit ``-t``). +- Die Optionen werden an ``mail`` durchgereicht; diese wiederum + größtenteils an ``mailer``. Deswegen können folgende Optionen + verwendet werden: + + .. code:: bash + + -s STRING - Subject. ("FRITZ!Box") + -f STRING - From. (NULL) + -t STRING - To. (NULL) + -m STRING - mailserver. (NULL) + -a STRING - authname. (NULL) + -w STRING - passwd. (NULL) + -d STRING - attachment. (NULL) + -i STRING - inline attachment. (NULL) + +- Zur Anpassung der Mails: siehe ``mail_subject`` und ``mail_body`` in + ``mail.sh`` (zum Überschreiben am besten + ``/tmp/flash/callmonitor/actions.local.d/`` verwenden, siehe + `Anpassen der Benachrichtigungstexte <../adapt_messages.html>`__). + +mail +---- + +``mail`` ist ein Skript, um Mails bei Mailserverfehlern +zwischenzuspeichern und erneut zu schicken (alle Parameter und +Attachments werden gepackt in ``/var/spool/mail/`` abgelegt). + +- Es wird von der Aktion mailmessage verwendet. +- Ihr solltet regelmäßig (mit cron) ein ``mail process`` ausführen, um + evtl. wartende Mail zu versenden. +- ``mail`` gehört streng genommen nicht unbedingt zum Callmonitor, weil + auch andere Dienste es brauchen könnten; vielleicht wird in Zukunft + mal ein eigenes Paket daraus. + +.. _Ersatzfürmail_missed_call: + +Ersatz für mail_missed_call +--------------------------- + +Die Funktion ``mail_missed_call`` existiert seit Version 1.0 nicht mehr. +An ihre Stelle tritt eine allgemeine Benachrichtigungsfunktion per +E-Mail (``mailmessage``), die (auch) in Kombination mit dem Ereignis +``in:cancel`` genutzt werden kann, um bei verpassten Anrufen eine Mail +zu verschicken: + +.. code:: bash + + in:cancel ^ ^ mailmessage + +Das schöne ist, dass die Mail sofort rausgeschickt wird, wenn der +Gesprächspartner aufgibt; es gibt keine Wartezeit von einer Minute mehr +wie in den Vorversionen. Außerdem kann jetzt zuverlässiger bestimmt +werden, wann ein Anruf verpasst wurde. + +Aber natürlich kann man sich so auch per Mail über alle eingehenden +Anrufe informieren lassen, oder über alle ausgehenden an eine bestimmte +Nummer oder oder oder … diff --git a/wiki/packages/callmonitor/actions/musicpal.rst b/wiki/packages/callmonitor/actions/musicpal.rst new file mode 100644 index 0000000..c24cab6 --- /dev/null +++ b/wiki/packages/callmonitor/actions/musicpal.rst @@ -0,0 +1,30 @@ +.. _FreecomMusicPal: + +Freecom MusicPal +================ + +Version 1.15.1 enthält die neue Aktion **musicalpalmessage**, mit der +man Nachrichten auf dem Display eines MusicPals von Freecom darstellen +kann. Es werden maximal zwei Zeilen unterstützt; die Anzeigedauer +(standardmäßig 25 Sekunden) kann über die Umgebungsvariable +MUSICPAL_TIMEOUT verändert werden. Für den Fall, dass die Anzeige vorher +freigegeben werden soll, steht die Aktion **musicalpalclear** bereit. + +Einige Beispiele: + +:: + + # Standardnachricht, Benutzername und Passwort "admin" + musicpalmessage musicpal.domain.my + + # eigene Nachricht mit zwei Zeilen, andere Zugangsdaten + musicpalmessage --user="root" --password="secret" musicpal.domain.my "Wichtiger Anruf${LF}von ${SOURCE}!" + + # alternative Syntax + musicpalmessage root:secret@musicpal.domain.my "Wichtiger Anruf${LF}von ${SOURCE}" + + # Nachricht löschen + musicpalclear musicpal.domain.my + +Zum Anpassen der Standardnachricht kann die Shell-Funktion +``default_musicpalmessage`` überschrieben werden. diff --git a/wiki/packages/callmonitor/actions/password.rst b/wiki/packages/callmonitor/actions/password.rst new file mode 100644 index 0000000..30a28e7 --- /dev/null +++ b/wiki/packages/callmonitor/actions/password.rst @@ -0,0 +1,52 @@ +.. _BenutzernamenundPasswörter: + +Benutzernamen und Passwörter +============================ + +Alle Aktionen, die auf ``getmsg`` basieren, verstehen folgende Optionen, +mit denen man Benutzername und Passwort für das Webinterface der Zielbox +angeben kann: + +.. code:: bash + + -U USERNAME + --user USERNAME + -P PASSWORD + --password PASSWORD + +Außerdem können die Daten in einer Kurzschreibweise direkt beim +Hostnamen angegeben werden: + +.. code:: bash + + USERNAME:PASSWORD@HOST:PORT + +.. _Beispiel: + +Beispiel +-------- + +Also zum Beispiel: + +.. code:: bash + + dboxmessage john:secret@mydbox + +Das bewirkt das gleiche wie + +.. code:: bash + + dboxmessage --user=john --password=secret mydbox + +oder + +.. code:: bash + + dboxmessage -U john -P secret mydbox + +Oder falls die D-Box auf einem anderen als dem Standardport lauscht: + +.. code:: bash + + dboxmessage john:secret@mydbox:3818 + dboxmessage --user=john --password=secret --port=3818 mydbox diff --git a/wiki/packages/callmonitor/actions/rawmsg.rst b/wiki/packages/callmonitor/actions/rawmsg.rst new file mode 100644 index 0000000..de3a06d --- /dev/null +++ b/wiki/packages/callmonitor/actions/rawmsg.rst @@ -0,0 +1,27 @@ +.. _EinfacheTCP-Verbindungenrawmsg: + +Einfache TCP-Verbindungen (rawmsg) +================================== + +.. code:: bash + + Usage: rawmsg [OPTION]... <HOST> <template> [<param>]... + rawmsg [OPTION]... -t <template> <host> [<param>]... + Send a message over a plain TCP connection. + + -t, --template=FORMAT use this printf-style template to build the message, + all following parameters are filled in + -d, --default=CODE default for first parameter (eval'ed later) + -p, --port=PORT use a special target port (default 80) + -w, --timeout=SECONDS set connect timeout (default 3) + --help show this help + +-------------- + +|<!>| Die **folgenden Funktionen basieren** auf ``rawmsg`` und +unterstützen daher dieselben Optionen. Passend für den entsprechenden +Empfänger sind URL-Template (``-t``), die Standard-Nachricht (``-d``) +und der Port (``-p``) schon vorbelegt. + +.. |<!>| image:: ../../../../chrome/wikiextras-icons-16/exclamation-red.png + diff --git a/wiki/packages/callmonitor/actions/relook.rst b/wiki/packages/callmonitor/actions/relook.rst new file mode 100644 index 0000000..a08ad77 --- /dev/null +++ b/wiki/packages/callmonitor/actions/relook.rst @@ -0,0 +1,19 @@ +.. _DGStationRelook400S: + +DGStation Relook 400S +===================== + +Die `​DGStation Relook 400S <http://www.dgstation.co.kr>`__ unterstützt +nur die Anzeige einer kurzen Zeile ohne Umlaute. Die Anzeigedauer kann +über die Umgebungsvariable ``RELOOK_TIMEOUT`` beeinflusst werden (in +Sekunden). + +.. code:: bash + + relookmessage (default_relookmessage) + +Beispiel für Benutzung mit veränderter Anzeigedauer (25 Sekunden): + +.. code:: bash + + RELOOK_TIMEOUT=25 relookmessage 192.168.34.56 diff --git a/wiki/packages/callmonitor/actions/samsung.rst b/wiki/packages/callmonitor/actions/samsung.rst new file mode 100644 index 0000000..6582d0d --- /dev/null +++ b/wiki/packages/callmonitor/actions/samsung.rst @@ -0,0 +1,57 @@ +.. _BenachrichtigungaufeinemSamsungTV: + +Benachrichtigung auf einem Samsung TV +===================================== + +Die Funktion ``samsung`` verschickt eine Benachrichtigung über einen +Telefonanruf mit Hilfe der SOAP-Methode an ein Samsung TV: + +.. code:: bash + + samsung {IP des TV} + +Also z.B.: + +.. code:: bash + + samsung 192.168.178.19 + +Es werden der Anrufer-Name (sofern im Telefonbuch oder in den Callers +eingetragen, ansonsten die Telefonnummer), die angerufene Nummer, sowie +Datum und Uhrzeit angezeigt. Die Länge der darstellbaren Zeichen hängt +vom Inhalt ab. Wenn nicht mehr Text angezeigt werden kann (z.B. bei +Adresszusätzen in den Callers), wird er am Ende abgeschnitten, so dass +er mit "…" endet. + +Der Listener-Eintrag im Callmonitor kann dazu z.B. so aussehen: + +.. code:: bash + + in:request ^ ^ samsung tv + +Zum Testen kann man folgendes direkt vom Terminal der Fritzbox +ausführen: + +.. code:: bash + + callaction samsung tv + +| +| Die Funktion ``samsung_text`` verschickt eine Nachricht mit Hilfe der + SOAP-Methode an ein Samsung TV, z.B.: + +.. code:: bash + + echo "Hello, world!" | callaction samsung_text 192.168.178.19 \ + --from="Absender" --from-number="069 123456" \ + --to-number="089 987654" --to="Empfänger" \ + --date="2010-05-21" --time="21:56:00" + +Analog zum obigen Beispiel werden hier Anrufer-Name und dessen +Telefonnummer, Empfänger-Name und dessen Telefonnummer sowie Datum und +Uhrzeit angezeigt. D.h. die Nachricht wird mit derselben Methode (SOAP) +wie bei der Benachrichtigung über einen Telefonanruf verschickt, zzgl. +der o.g. Daten. + +- Tags +- `samsung </tags/samsung>`__ diff --git a/wiki/packages/callmonitor/actions/self-defined.rst b/wiki/packages/callmonitor/actions/self-defined.rst new file mode 100644 index 0000000..011a28a --- /dev/null +++ b/wiki/packages/callmonitor/actions/self-defined.rst @@ -0,0 +1,11 @@ +.. _SelbstdefinierteAktionen: + +Selbstdefinierte Aktionen +========================= + +Eigene Aktionen können als Shell-Funktionen in einer oder mehreren +Dateien ``/tmp/flash/callmonitor/actions.local.d/*.sh`` abgelegt werden. +(Es können so auch Standard-Funktionen überschrieben werden, z.B. +``default_message()``) + +Natürlich können auch beliebige externe Programme aufgerufen werden. diff --git a/wiki/packages/callmonitor/actions/snarl.rst b/wiki/packages/callmonitor/actions/snarl.rst new file mode 100644 index 0000000..6855f2a --- /dev/null +++ b/wiki/packages/callmonitor/actions/snarl.rst @@ -0,0 +1,64 @@ +`​Snarl <http://www.fullphat.net/index.php>`__ ist ähnlich wie Growl, +welches einigen vielleicht bekannt ist, ist ein +Benachrichtigungs-Programm ("notification"), welches im Hintergrund +läuft und von verschiedenen Programmen etc. angesprochen werden kann. +Vorteil ist, dass man so benutzerdefinierte, systemweit einheitliche +Benachrichtigungen erhält. + +Snarl verwendet ein eigenes Protokoll, welches sich SNP (`​Snarl Network +Protocol <http://www.fullphat.net/dev/snp/index.htm>`__) nennt. + +Mittels "rawmsg" wird an eine IP (Port 9887) im Netzwerk, an dem Snarl +wiederum selbst lauschen muss, eine Nachricht gesendet. Snarl zeigt +diese vom Callmonitor über SNP übermittelte Benachrichtigung dann an. + +Also z. B. so: + +.. code:: bash + + echo -n "type=SNP#?version=1.0#?action=notification#?title=Anruf#?text=${SOURCE}#?timeout=20"$'\r\n' | nc IP 9887 + +(buehmann hat in diesem +`​Thread <http://www.ip-phone-forum.de/showthread.php?t=216938>`__ +gezeigt, wie es geht. Danke!) + +.. _Listener-Eintrag:: + +Listener-Eintrag: +----------------- + +Der Listener-Eintrag im Callmonitor kann dazu z.B. so aussehen: + +.. code:: bash + + in:request ^ ^ echo -n "type=SNP#?version=1.0#?action=notification#?title=eingehender Anruf#?text=von ${SOURCE} - ($SOURCE_NAME)${LF}für ${DEST_NAME} - (${DEST_DISP})${LF}#?timeout=20#?icon=C:\pic.png"$'\r\n' | nc 192.168.178.20 9887 + +.. _Screenshots:: + +Screenshots: +------------ + +So könnte eine Benachrichtung von Snarl dann aussehen. Die Angaben +betreffend Anrufer, Rufnummer, Ereignis etc., lassen sich ja mittels des +Callmonitor entsprechend anpassen bzw. erweitern. + + .. figure:: /screenshots/171.png + :alt: Snarl Beispiel + + Snarl Beispiel + + .. figure:: /screenshots/167.png + :alt: Snarl Beispiel + + Snarl Beispiel + + .. figure:: /screenshots/173.png + :alt: Snarl Beispiel + + Snarl Beispiel + +.. + + Wichtig: "Curl" oder "getmsg" können nicht benutzt werden, diese sind + nur für das HTTP (Protokoll) geeignet und funktionieren nicht mit dem + SNP von Snarl. diff --git a/wiki/packages/callmonitor/actions/soundbridge.rst b/wiki/packages/callmonitor/actions/soundbridge.rst new file mode 100644 index 0000000..5682e36 --- /dev/null +++ b/wiki/packages/callmonitor/actions/soundbridge.rst @@ -0,0 +1,33 @@ +.. _RokuSoundBridge: + +Roku SoundBridge +================ + +Die `​Roku +SoundBridge <http://www.rokulabs.com/products_soundbridge.php>`__ kann +auf ihrem Display Nachrichten darstellen. Seit Callmonitor 1.12.4 stehen +drei Funktionen zur Ansteuerung zur Verfügung: + +.. code:: bash + + sbmessage + (default_sbmessage) + +Zur Anzeige einer statischen Nachricht. Mit der Umgebungsvariable +``SB_TIMEOUT`` kann die Dauer der Anzeige bestimmt werden. + +.. code:: bash + + sbmarquee + (default_sbmarquee) + +Zur Anzeige eines Lauftexts. Mit der Umgebungsvariable ``SB_TIMES`` kann +festgelegt werden, wie oft die Nachricht wiederholt werden soll. + +.. code:: bash + + sbxmessage + (default_sbxmessage) + +Zur Anzeige einer statischen, mehrzeiligen Nachricht. Mit der +Umgebungsvariable SB_TIMEOUT kann die Dauer der Anzeige bestimmt werden. diff --git a/wiki/packages/callmonitor/actions/vdr.rst b/wiki/packages/callmonitor/actions/vdr.rst new file mode 100644 index 0000000..ef930b0 --- /dev/null +++ b/wiki/packages/callmonitor/actions/vdr.rst @@ -0,0 +1,12 @@ +.. _VDR: + +VDR +=== + +VDR: Video Disk Recorder, +`​http://www.cadsoft.de/vdr/ <http://www.cadsoft.de/vdr/>`__ + +.. code:: bash + + vdr [OPTION]... [MESSAGE] + (default_vdr) diff --git a/wiki/packages/callmonitor/actions/wol.rst b/wiki/packages/callmonitor/actions/wol.rst new file mode 100644 index 0000000..d710537 --- /dev/null +++ b/wiki/packages/callmonitor/actions/wol.rst @@ -0,0 +1,22 @@ +.. _WakeonLAN: + +Wake on LAN +=========== + +Zum Aufwecken eines Rechners im LAN — sofern der Rechner dies generell +unterstützt — dient das in `Freetz <../../../index.html>`__ vorhandene +Programm ``ether-wake``. Zur Benutzung sei auf dessen Online-Hilfe +verwiesen: + +.. code:: bash + + Usage: ether-wake [-b] [-i iface] [-p aa:bb:cc:dd[:ee:ff]] MAC + + Send a magic packet to wake up sleeping machines. + MAC must be a station address (00:11:22:33:44:55) or + a hostname with a known 'ethers' entry. + + Options: + -b Send wake-up packet to the broadcast address + -i iface Use interface ifname instead of the default "eth0" + -p pass Append the four or six byte password PW to the packet diff --git a/wiki/packages/callmonitor/actions/xbox.rst b/wiki/packages/callmonitor/actions/xbox.rst new file mode 100644 index 0000000..131dc25 --- /dev/null +++ b/wiki/packages/callmonitor/actions/xbox.rst @@ -0,0 +1,83 @@ +.. _XBox: + +XBox +==== + +Für diese Funktion muss das `​XBox Media Center +(XBMC) <http://www.xboxmediacenter.com>`__ laufen und dort unter +*Einstellungen → Netzwerk* der Webserver aktiviert werden. Ggf. mit den +Optionen (s.o.) Port, Username und Passwort übergeben. Das XBMC stellt +die Nachricht dann in einem kleinen Fenster dar, das automatisch +geschlossen wird. + +.. code:: bash + + xboxmessage (default_xboxmessage) + +Die XBox erlaubt mit ``xboxmessage`` keine Kommas in den Nachrichten. +Der Titel der Nachricht kann über die Umgebungsvariable +``XBOX_CAPTION="Telefonanruf"`` beeinflusst werden. + +.. _AnpassungenaufderXBox: + +Anpassungen auf der XBox +------------------------ + +Anzeigedauer und Größe des Fensters können in der Datei +``DialogKaiToast.xml`` angepasst werden. Je nach gewähltem TV-Typ ist +die jeweilige Datei unter ``skin\Project Mayhem III\PAL\`` oder +``skin\Project Mayhem III\PAL16x9\`` zuständig. Folgende Überarbeitung +der "PAL"-Datei erreicht ein brauchbares Ergebnis (nur geänderte +Zeilen): + +.. code:: bash + + ... + <coordinates> + <system>1</system> + <posx>275</posx> + <posy>420</posy> + </coordinates> + <animation effect="slide" time="5000" start="300,0">WindowOpen</animation> + <animation effect="slide" time="5000" end="300,0">WindowClose</animation> + ... + <control> + <description>Popup Kai Toast Dialog Background</description> + ... + <width>400</width> + <height>125</height> + ... + <control> + <description>avatar</description> + ... + <posx>40</posx> + <posy>25</posy> + ... + <control> + <description>Caption Label</description> + ... + <posx>46</posx> + <posy>30</posy> + <width>305</width> + ... + <control> + <description>Description Button</description> + ... + <posx>46</posx> + <posy>46</posy> + <width>305</width> + ... + +.. _WeitereMöglichkeiten: + +Weitere Möglichkeiten +--------------------- + +Es gibt außerdem einen +`​Python-Script <http://ca.geocities.com/farside@rogers.com/Scripts/callerid.html>`__, +das eine CallerID-Anzeige auf der Xbox ermöglicht. Dann kann die +Nachricht mit der Funktion ``yac`` an die XBox gesendet werden. Das +Script ist auch im Script +`​xbmcfritz <http://www.xbmc.de/xbmc/download.php?view.150>`__ +enthalten, das zusätzlich die Anruferliste der FritzBox auf der XBox +darstellen kann. diff --git a/wiki/packages/callmonitor/actions/yac.rst b/wiki/packages/callmonitor/actions/yac.rst new file mode 100644 index 0000000..e8972e2 --- /dev/null +++ b/wiki/packages/callmonitor/actions/yac.rst @@ -0,0 +1,14 @@ +.. _YAC: + +YAC +=== + +YAC: Yet Another Caller ID Program, +`​http://sunflowerhead.com/software/yac/ <http://sunflowerhead.com/software/yac/>`__ + +Syntax: + +.. code:: bash + + yac <IP> + IP IP des Rechners, auf dem der YAC-Listener läuft diff --git a/wiki/packages/callmonitor/adapt_messages.rst b/wiki/packages/callmonitor/adapt_messages.rst new file mode 100644 index 0000000..27df57e --- /dev/null +++ b/wiki/packages/callmonitor/adapt_messages.rst @@ -0,0 +1,24 @@ +.. _AnpassenderBenachrichtigungstexte: + +Anpassen der Benachrichtigungstexte +=================================== + +Um den Inhalt einer Benachrichtigung an die eigenenen Bedürfnisse +anpassen, gibt es folgenden Weg: + +#. Verzeichnis ``/tmp/flash/callmonitor/actions.local.d`` erstellen +#. darin eine Datei ``foobar.sh`` anlegen (oder irgendetwas anderes mit + Endung ``.sh``) +#. dorthinein nur die zu überschreibende Funktion kopieren (z.B. + ``mail_body() { ... }``) und anpassen (oder nur Variablen setzen wie + z.B. ``RELOOK_TIMEOUT``) +#. ``modsave flash`` aufrufen, um die Datei im Flash zu sichern +#. Callmonitor neustarten + +Bei den meisten `Aktionen <actions.html>`__ ist eine Funktion +``default_foomessage`` vorgesehen, die die Standardnachricht für diesen +Typ Aktion erzeugt; diese Funktion kann also einfach überschrieben +werden. Bei `mailmessage <actions/mail.html>`__ mail gibt es z.B. +``mail_subject`` und ``mail_body``; bei anderen Aktionen hilft nur ein +Blick in den Quelltext (oder eine Nachfrage), solange bis deren +Funktionen auch im Wiki beschrieben sind. diff --git a/wiki/packages/callmonitor/config.rst b/wiki/packages/callmonitor/config.rst new file mode 100644 index 0000000..fae1093 --- /dev/null +++ b/wiki/packages/callmonitor/config.rst @@ -0,0 +1,103 @@ +.. _Konfiguration: + +Konfiguration +============= + +Die Konfiguration des Callmonitors nimmt man sinnvollerweise in mehreren +Schritten vor, die sich auf verschiedene Seiten im Web-Interface von +Freetz verteilen: + +#. Basiskonfiguration durchführen (im Folgenden beschrieben) +#. Listeners für bestimmte Aktionen definieren +#. mit einem Testanruf die Konfiguration testen + +.. _Basiskonfiguration: + +Basiskonfiguration +------------------ + +Auf der Seite Pakete-Callmonitor des Web-Interfaces lassen sich einige +grundlegende Einstellungen vornehmen. + +Als erstes wählt man den Starttyp - normalerweise "Automatisch", da der +Callmonitor sonst nach jedem Neustart der FritzBox per Hand gestartet +werden muss. Sollte es Probleme geben, kann man noch zusätzlich die +Debug-Ausgaben aktivieren, was jedoch normalerweise unnötig ist. + +Der nächste Block bietet lediglich Links zu den Listeners und zur +Durchführung von Testanrufen. + +Im folgenden Block lassen sich die Standort-Angaben (Landes- und +Ortsvorwahl) noch einmal überprüfen und über einen Link zum AVM-WebGUI +auch anpassen. Es ist zu beachten, dass Änderungen der Landes- und/oder +Ortsvorwahl erst auf der Callmonitor-Seite angezeigt werden, wenn der +Callmonitor neu gestartet wurde. + +So weit sind wir aber noch nicht, vorher sind noch die Einstellungen zur +Rückwärtssuche im dritten Block zu überprüfen. Sie kann komplett +deaktiviert werden, dafür ist die Checkbox vor "Rückwärtssuche +durchführen bei" zuständig. Möchte man sie benutzen, kann der `Dienst +für die Rückwärtssuche <reverse_search.html>`__ ausgewählt werden, an +den die Anfragen geschickt werden. **Achtung:** Diese Funktion setzt +eine bestehende Internetverbindung voraus - es empfiehlt sich also +irgendeine Art von always-on Flatrate für den Internetzugang zu +verwenden (z.B. Volumentarif, komplette Flat). + +Falls die Telefonnummer nicht gefunden werden kann (z.B. weil der +Teilnehmer der Rückwärtssuche widersprochen hat), wird ersatzweise die +Vorwahl bei dem dort ausgewählten Dienst nachgeschlagen. Dadurch kann +zumindest der Ort angezeigt werden. Zum Schluss kann noch ausgewählt +werden, ob die Ergebnisse der Rückwärtssuche dauerhaft im Telefonbuch +(also im Flash der Box) oder flüchtig (d.h. bis zum Neustart) im +Speicher abgelegt werden. Es ist auch möglich, die Zwischenspeicherung +ganz abzuschalten. Dann wird die Rückwärtssuche immer wieder neu +durchgeführt, selbst wenn dieselbe Rufnummer schon einmal nachgeschlagen +wurde. + +Die Einstellung "Vorwahl für lokale Rufnummern" wird benötigt, da im +Ortsnetz nicht (immer) die Vorwahl mit übertragen wird. In aktuellen +Versionen wird die Vorwahl automatisch aus den Einstellungen zur +Internettelefonie übernommen (in der Weboberfläche von AVM). + +.. _Listenersdefinieren: + +Listeners definieren +-------------------- + +Als nächstes müssen sogenannte Listeners definiert werden, die dann bei +eingehenden Anrufen die gewünschte Aktion starten. Genaueres hierzu auf +einer `speziellen Seite für die Listeners <listeners.html>`__. + +.. _Testanruf: + +Testanruf +--------- + +Sind die Listeners einmal definiert, kann und sollte man sie mit einem +Testanruf ausprobieren. Dafür kann man natürlich einen echten Anruf +machen - allerdings hat man oft nicht die Möglichkeit, spezielle Regeln +zu testen. Daher gibt es die Möglichkeit, einen Testanruf über das +Web-Interface zu generieren - eine genaue Beschreibung findet sich +`hier <testcall.html>`__. + +.. _Fehlersuche: + +Fehlersuche +----------- + +Die Ausgaben des Testanrufs und ggf. die Debug-Meldungen (siehe oben, um +das log zu sehen vorher in freetz-konfig diese option aktivieren um sie +in das image einzubauen) geben in den meisten Fällen ausreichend +Hinweise, warum die Aktion nicht ausgeführt wurde bzw. der Callmonitor +nicht startet. Außerdem lohnt sich auch ein Blick auf die +`Wartungsseite <maintenance.html>`__ - falls die +Callmonitor-Schnittstelle deaktiviert ist, kann dieser auch nicht +funktionieren. Einschalten mit einem Anruf der Fritzbox von einem +angeschlossenem Telefon aus mit der Nummer: `#96 </ticket/96>`__\ \*5\* +kann helfen. Wenn das alles nicht weiterhilft, kann man auf der +`​Forumsseite für Fragen und +Diskussionen <http://www.ip-phone-forum.de/showthread.php?t=100706>`__ +Unterstützung bekommen. + +- Tags +- `callmonitor </tags/callmonitor>`__ diff --git a/wiki/packages/callmonitor/events.rst b/wiki/packages/callmonitor/events.rst new file mode 100644 index 0000000..8eba8da --- /dev/null +++ b/wiki/packages/callmonitor/events.rst @@ -0,0 +1,31 @@ +.. _Ereignisse: + +Ereignisse +========== + +Ein erfolgreicher eingehender Anruf erzeugt nacheinander folgende +Ereignisse (analog für ausgehende Anrufe mit ``out:*``): + +#. in:request +#. in:connect +#. in:disconnect + +Ein Anruf, der abgebrochen wird, bevor die Gegenseite ihn annimmt, +erzeugt folgende Ereignisse: + +#. in:request +#. in:cancel + +Die Ereignisse sind nicht direkt die Rohereignisse, wie sie an der +JFritz-Schnittstelle (Port 1012) sichtbar sind, sondern entstehen aus +diesen (bei gleicher ID) mit Hilfe eines endlichen Automaten (an den +Kanten sind oben die Eingangsereignisse angegeben, unten die +Ausgangsereignisse; das Ereignis ``in:accept`` wird nur intern benutzt): + +.. figure:: /screenshots/36.png + :alt: CallMonitor: Ereignisse + + CallMonitor: Ereignisse + +- Tags +- `callmonitor </tags/callmonitor>`__ diff --git a/wiki/packages/callmonitor/faq.rst b/wiki/packages/callmonitor/faq.rst new file mode 100644 index 0000000..f48ed86 --- /dev/null +++ b/wiki/packages/callmonitor/faq.rst @@ -0,0 +1,12 @@ +.. _Callmonitor-FAQ: + +Callmonitor-FAQ +=============== + +.. _KannichdasErgebnisderRückwärtssucheauchaufmeinemDECT-Telefonsehen: + +Kann ich das Ergebnis der Rückwärtssuche auch auf meinem DECT-Telefon sehen? +---------------------------------------------------------------------------- + +Nein. Es gibt momentan keine bekannte Möglichkeit, in die +Anrufsignalisierung über DECT einzugreifen. diff --git a/wiki/packages/callmonitor/listeners.rst b/wiki/packages/callmonitor/listeners.rst new file mode 100644 index 0000000..d9808b3 --- /dev/null +++ b/wiki/packages/callmonitor/listeners.rst @@ -0,0 +1,357 @@ +.. _RegelnListeners: + +Regeln (Listeners) +================== + +Die Listeners-Datei enthält eine Liste von Regeln, die festlegen, welche +`Aktionen <actions.html>`__ unter welchen Bedingungen ausgeführt werden +sollen. + +Leerzeilen werden ignoriert, ebenso Zeilen, die mit *#* beginnen (das +sind Kommentare). + +Jede Regel steht in einer Zeile und besteht aus vier Angaben, die durch +Leerraum getrennt in dieser Reihenfolge aufeinander folgen: + +#. Ereignis +#. Quellrufnummer: Muster für SOURCE +#. Zielrufnummer: Muster für DEST +#. Aktion: Beliebiger Shell-Code + +Die beiden Muster für *SOURCE* und *DEST* sind `​"extended regular +expressions" +(ERE) <http://www.selflinux.org/selflinux/html/regex.html>`__, wie sie +von *egrep* verstanden werden. Das Ereignis (ein-/ausgehender Anruf; +Klingeln, Annahme, etc.) wird mit der unten angeführten Syntax +angegeben. + +Man kann negative Muster bei den Listeners verwenden, indem man ein +Ausrufezeichen voranstellt: ``!123`` passt auf alle Nummern, die nicht +irgendwo 123 enthalten. + +Beispiele: + ++-----------------------------------+-----------------------------------+ +| \| Muster | \| passt auf | ++-----------------------------------+-----------------------------------+ +| ``^`` | alle Nummern | ++-----------------------------------+-----------------------------------+ +| ``^034`` | Nummern, die mit 034 beginnen | ++-----------------------------------+-----------------------------------+ +| ``4563$`` | Nummern, die auf 4563 enden | ++-----------------------------------+-----------------------------------+ +| ``!^(045|0164)`` | Nummern, die **nicht** mit 045 | +| | oder 0164 beginnen | ++-----------------------------------+-----------------------------------+ +| ``^0123456$`` | nur genau die Nummer 0123456 | ++-----------------------------------+-----------------------------------+ +| ``^04553...$`` | die Nummern, bei denen nach 04553 | +| | genau drei weitere Zeichen folgen | ++-----------------------------------+-----------------------------------+ + +Alle Regeln werden parallel abgearbeitet; eine bestimmte Reihenfolge ist +nicht garantiert. + +Damit die Listeners über das Webinterface von Freetz bearbeitet werden +können, muss dessen Sicherheitsstufe auf 0 gesetzt werden. Das ist +nötig, da über die Listeners beliebiger Code ausgeführt werden kann. + +.. figure:: /screenshots/20.png + :alt: Callmonitor: Listener Konfiguration + + Callmonitor: Listener Konfiguration + +.. _Format: + +Format +------ + +Seit Version 1.0 des Callmonitors gilt folgendes Format für die +Listeners, mit dem auf bis zu acht verschiedene Ereignisse +unterschiedlich reagiert werden kann: + +- **\*:request**: Anruf kommt an (es klingelt) +- **\*:cancel**: Anruf wurde abgebrochen, bevor eine Verbindung + zustande kam (so kann man direkt auf "verpasste Anrufe" reagieren) +- **\*:connect**: Verbindung beginnt +- **\*:disconnect**: Verbindung wurde beendet + +Dazu kommt die Unterscheidung zwischen + +- **in:\***: eingehenden und +- **out:\***: ausgehenden Anrufen. + +Das ergibt folgende Menge von Ereignissen: + ++-----------+---------------+--------------+---------------+------------------+ +| \| | \| \*:request | \| \*:cancel | \| \*:connect | \| \*:disconnect | ++-----------+---------------+--------------+---------------+------------------+ +| \| in:\* | in:request | in:cancel | in:connect | in:disconnect | ++-----------+---------------+--------------+---------------+------------------+ +| \| out:\* | out:request | out:cancel | out:connect | out:disconnect | ++-----------+---------------+--------------+---------------+------------------+ + +Dazu passend haben die Listeners eine zusätzliche erste Spalte bekommen, +in der (mit Hilfe von Abkürzungen und Wildcards) das gewünschte Ereignis +angegeben werden kann, auf das die betreffende Regel reagieren soll: + +.. code:: bash + + in:request ^ ^1234$ xboxmessage xbox + in:cancel ^ ^ mailmessage -t test@example.com + out:cancel ^1234$ ^0123 dboxpopup dbox-a "${DEST} geht nicht ran" + *:dis ^ ^ echo "Anruf beendet: ${DURATION} Sekunden" >> log + +Es kann mehrere Regeln geben, die auf dasselbe Ereignis passen. + +Die Präfixe "NT:", "E:" und "*:" in der *SOURCE*-Spalte gibt es nicht +mehr. Eure bisherige Listeners-Datei (vor Version 1.0) könnt ihr nicht +einfach weiterverwenden. Der CallMonitor versucht aber, beim ersten +Start eine grobe Konvertierung vorzunehmen, um euch den Umstieg zu +erleichtern. Auf jeden Fall solltet ihr aber die Listeners nach der +Umstellung einmal kontrollieren. + +| Die Spalten 2 und 3 in den Listeners sind weiterhin Muster (reguläre + Ausdrücke) für Quell- und Zielrufnummer (*SOURCE* und *DEST*). +| Dabei ist jedoch zu beachten, dass in Spalte 2 bzw. 3 die MSNs, also + die Internet-Rufnummern, anzugeben sind und nicht wie früher bspw. + *SIP0* oder *SIP1*. + +.. _Ereignis-InformationenfürAktionen: + +Ereignis-Informationen für Aktionen +----------------------------------- + +Den Aktionen stehen Informationen über den auslösenden Anruf in +Umgebungsvariablen bereit. Sie werden in Shell-Scripten mit einem $ +referenziert, also z.B. ``echo $SOURCE_NAME``. + ++-----------------------+-----------------------+-----------------------+ +| \| Variable | \| Inhalt | \| seit Version | ++-----------------------+-----------------------+-----------------------+ +| EVENT | das auslösende | 1.0 | +| | Ereignis | | ++-----------------------+-----------------------+-----------------------+ +| ID | die ID des Anrufs | 1.0 | +| | (direkt von der | | +| | Callmonitor-Schnittst | | +| | elle) | | ++-----------------------+-----------------------+-----------------------+ +| UUID | Global eindeutige ID | 1.20 | +| | für diesen Anruf | | +| | (nicht für dieses | | +| | Ereignis!) | | ++-----------------------+-----------------------+-----------------------+ +| TIMESTAMP | der Zeitpunkt des | 1.0 | +| | Ereignisses (im | | +| | Format "DD.MM.YY | | +| | HH:MM") | | ++-----------------------+-----------------------+-----------------------+ +| SOURCE | Quellrufnummer | — | ++-----------------------+-----------------------+-----------------------+ +| SOURCE_DISP | "anzeigefreundlichere | 1.8 | +| | " | | +| | Variante von SOURCE | | +| | (Landesvorwahl weg, | | +| | Call-by-Call-Vorwahle | | +| | n | | +| | weg, etc.) | | ++-----------------------+-----------------------+-----------------------+ +| SOURCE_NAME | Name der Quelle, | — | +| | falls dieser bestimmt | | +| | werden konnte | | ++-----------------------+-----------------------+-----------------------+ +| SOURCE_ADDRESS | Die Adresse (Straße, | 1.12 | +| | Stadt, Land) ist seit | | +| | 1.12 separat | | +| | verfügbar und nicht | | +| | mehr in SOURCE_NAME | | +| | enthalten | | ++-----------------------+-----------------------+-----------------------+ +| SOURCE_ENTRY | Der ganze | 1.12 | +| | Telefonbucheintrag | | +| | (entspricht dem | | +| | SOURCE_NAME vor 1.12) | | ++-----------------------+-----------------------+-----------------------+ +| DEST | Zielrufnummer | — | ++-----------------------+-----------------------+-----------------------+ +| DEST_DISP | "anzeigefreundlichere | 1.8 | +| | " | | +| | Variante von DEST | | +| | (Landesvorwahl weg, | | +| | Call-by-Call-Vorwahle | | +| | n | | +| | weg, etc.) | | ++-----------------------+-----------------------+-----------------------+ +| DEST_NAME | Name des Ziels, falls | — | +| | dieses bestimmt | | +| | werden konnte | | ++-----------------------+-----------------------+-----------------------+ +| DEST_ADDRESS | Die Adresse (Straße, | 1.12 | +| | Stadt, Land) ist seit | | +| | 1.12 separat | | +| | verfügbar und nicht | | +| | mehr in DEST_NAME | | +| | enthalten | | ++-----------------------+-----------------------+-----------------------+ +| DEST_ENTRY | Der ganze | 1.12 | +| | Telefonbucheintrag | | +| | (entspricht dem | | +| | DEST_NAME vor 1.12) | | ++-----------------------+-----------------------+-----------------------+ +| EXT | die Nebenstelle, | 1.0 | +| | sofern bekannt | | +| | (direkt von der | | +| | Callmonitor-Schnittst | | +| | elle) | | ++-----------------------+-----------------------+-----------------------+ +| DURATION | bei \*:disconnect die | 1.0 | +| | Dauer des Gesprächs | | +| | in Sekunden | | ++-----------------------+-----------------------+-----------------------+ +| PROVIDER | Dienstleister, über | 1.5 | +| | den der Anruf | | +| | abgewickelt wird | | +| | ("POTS" für Festnetz | | +| | oder "SIP0", "SIP1", | | +| | … für die | | +| | verschiedenen | | +| | SIP-Provider) | | ++-----------------------+-----------------------+-----------------------+ + +EXT kann auf einer FritzBox 7050 folgende numerische Werte haben (bei +einem eingehenden Anruf liegt diese Information erst ab in:connect vor; +vorher ist die Zuordnung ja nicht klar): + ++--------+------------------+ +| \|Wert | \|Bedeutung | ++--------+------------------+ +| 0 | FON 1 | ++--------+------------------+ +| 1 | FON 2 | ++--------+------------------+ +| 2 | FON 3 | ++--------+------------------+ +| 3 | Durchwahl | ++--------+------------------+ +| 4 | Fon S0 | ++--------+------------------+ +| 5 | Fon/Fax PC | ++--------+------------------+ +| 6 | Anrufbeantworter | ++--------+------------------+ +| 36 | Data S0 | ++--------+------------------+ +| 37 | Data PC | ++--------+------------------+ + +.. _FormatierungderAusgaben: + +Formatierung der Ausgaben +------------------------- + +Zur Formatierung der Ausgaben stehen folgende Funktionen bereit: + +seit Version 1.8: + +- f_duration: zur Darstellung von Zeitdauern als "hh:mm:ss" + + .. code:: bash + + f_duration <ZEIT_IN_SEKUNDEN> + + ZEIT_IN_SEKUNDEN: Zeit in Sekunden, z.B. $DURATION + +Beispiel: + +:: + + echo "Der Anruf dauerte $(f_duration $DURATION)" + +führt zu einer Ausgabe + +.. code:: bash + + Der Anruf dauerte 1:05:03 + +falls DURATION den Wert 3903 hat. + +Als nützlich kann sich auch die Konstante $LF erweisen, die einen +Zeilenumbruch enthält (line feed): + +:: + + dboxmessage foo.bar "Zeile 1${LF}Zeile 2" + +.. _MusterfürEreignisse: + +Muster für Ereignisse +--------------------- + +Es gibt mehrere Möglichkeiten, in den Listeners die Ereignisse +anzugeben, bei der eine Regel auslösen soll: + +- Vollständige Ereignisnamen: + + .. code:: bash + + in:request + out:disconnect + +- Abkürzungen des vorderen und/oder hinteren Teils: + + .. code:: bash + + in:req + out:disc + i:r + o:d + +- Wildcards für den vorderen Teil (Richtung), den hinteren oder beide: + + .. code:: bash + + *:req + ou:* + * + +- Listen dieser Bestandteile (mit Komma getrennt (Vorsicht, kein + Whitespace); die Regel passt, wenn einer der Teile passt): + + .. code:: bash + + in:req,out:* + +.. _Beispiele:: + +Beispiele: +---------- + +Verpasster Anruf (in:cancel) mailmessage an mehrere Email Adressen +versenden: + +.. code:: bash + + in:cancel ^ ^ mailmessage -t user1@example.com,user2@example.com + +Von einer bestimmten Rufnummer (0401234567) eine festgelegte Rufnummer +(0401234568) anrufen und den PC über WOL (Wake on Lan) einschalten: + +.. code:: bash + + in:request ^0401234567 ^0401234568 ether-wake -i eth0 00:13:DE:01:A4:DE + +Benachrichtigungen über Dreambox mit Enigma2 auf Fernseher anzeigen: + +.. code:: bash + + in:request ^ ^ dream2message --user=root --pass=dreambox 192.168.178.104 + +Benachrichtigung per Email bei Faxempfang: + +.. code:: bash + + in:disconnect ^ 0401234567$ mailmessage -s "Faxeingang von $SOURCE" + +- Tags +- `callmonitor </tags/callmonitor>`__ diff --git a/wiki/packages/callmonitor/maintenance.rst b/wiki/packages/callmonitor/maintenance.rst new file mode 100644 index 0000000..108b3e9 --- /dev/null +++ b/wiki/packages/callmonitor/maintenance.rst @@ -0,0 +1,27 @@ +.. _Wartung: + +Wartung +======= + +Die Wartungsseite im Web-Interface ermöglicht folgendes: + +- Telefonbuch aufräumen: Sortiert die Einträge im Telefonbuch und + entfernt Leerzeilen. +- SIP-Update durchführen: Erstellt Standardeinträge im Telefonbuch für + neu angelegte Internetrufnummern. +- Callmonitor-Schnittstelle (Port 1012) (de)aktivieren: Aktiviert bzw. + deaktiviert die Callmonitor-Schnittstelle an Port 1012. Der + Callmonitor funktioniert nur mit aktivierter Schnittstelle. + +Die Wartungsseite findet man im Freetz Webinterface unter *Extras ⇒ +Wartung*. + +.. figure:: /screenshots/24.png + :alt: Callmonitor: Wartung + + Callmonitor: Wartung + +| + +- Tags +- `callmonitor </tags/callmonitor>`__ diff --git a/wiki/packages/callmonitor/phonebook.rst b/wiki/packages/callmonitor/phonebook.rst new file mode 100644 index 0000000..bf3ffd8 --- /dev/null +++ b/wiki/packages/callmonitor/phonebook.rst @@ -0,0 +1,36 @@ +.. _TelefonbuchCallers: + +Telefonbuch (Callers) +===================== + +Format: + + <Rufnummer mit Vorwahl>\ ````\ <Name>(``;`` <Adresse>) + +Ergebnisse der `Rückwärtssuche <reverse_search.html>`__ können hier +gespeichert werden für schnelleren Zugriff in der Zukunft; natürlich +können auch von Hand Nummer-Name-Paare eingetragen oder geändert werden + +- 49er-Rufnummern (ohne 00, länger als 10 Zeichen) werden erkannt +- Name des Angerufenen steht zur Verfügung (vor allem für SIP0 bis + SIP9); man kann die Zuordnung zu Namen im Telefonbuch (Callers) + vornehmen, entweder direkt für SIP0 bis SIP9 oder für Adressen der + Form "username@registrar" (das zweite hat den Vorteil, dass man im + Telefonbuch nichts anpassen muss, wenn man seine SIP-Accounts in + anderer Reihenfolge einträgt). Beim Start werden Kurznamen für alle + Accounts generiert und als Vorgabe in die Callers eingetragen. +- Suchstrategie: Erst Nummer unverändert in den lokalen Telefonbüchern + (Callers, AVM-Telefonbuch) nachschlagen, dann normalisieren (evtl. + Orts- /Landesvorwahl davor; SIP[0-9] wird zu username@registrar) und + noch einmal lokal probieren. Dann erst über Rückwärtssuche im + Internet probieren. + +.. figure:: /screenshots/216.png + :alt: Callmonitor Callers + + Callmonitor Callers + +| + +- Tags +- `callmonitor </tags/callmonitor>`__ diff --git a/wiki/packages/callmonitor/reverse_search.rst b/wiki/packages/callmonitor/reverse_search.rst new file mode 100644 index 0000000..fa694f6 --- /dev/null +++ b/wiki/packages/callmonitor/reverse_search.rst @@ -0,0 +1,36 @@ +.. _Rückwärtssuche: + +Rückwärtssuche +============== + +Die Rückwärtssuche wird in der `Basiskonfiguration <config.html>`__ des +Callmonitors eingestellt. Sie wird bei einem der folgenden Dienste +durchgeführt: + +- `​http://telefonbuch.de/ <http://telefonbuch.de/>`__ +- `​http://inverssuche.de/ <http://inverssuche.de/>`__ +- `​http://goyellow.de/ <http://goyellow.de/>`__ +- `​http://11880.com/ <http://11880.com/>`__ +- `​http://www.dasoertliche.de/ <http://www.dasoertliche.de/>`__ +- `​http://tel.search.ch/ <http://tel.search.ch/>`__ +- `​http://www.das-telefonbuch.at/ <http://www.das-telefonbuch.at/>`__ +- `​http://www.anywho.com/ <http://www.anywho.com/>`__ + +Optional kann eine zusätzliche Suche bei Google nach dem Ortsnetz des +Anrufers durchgeführt werden. Das Ergebnis dieser Suche wird nur +verwendet, wenn die volle Rückwärtssuche kein Ergebnis liefert. + +- Bei ausgehenden Anrufen wird für die angerufene Nummer ggf. eine + Anfrage durchgeführt, nicht für die eigene. +- Rückwärtssuche mit dauerhaftem (im Flash), flüchtigen (im RAM) oder + ohne Caching möglich + +.. figure:: /screenshots/23.png + :alt: Callmonitor: Rückwärtssuche + + Callmonitor: Rückwärtssuche + +| + +- Tags +- `callmonitor </tags/callmonitor>`__ diff --git a/wiki/packages/callmonitor/testcall.rst b/wiki/packages/callmonitor/testcall.rst new file mode 100644 index 0000000..d2089f8 --- /dev/null +++ b/wiki/packages/callmonitor/testcall.rst @@ -0,0 +1,32 @@ +.. _Testanruf: + +Testanruf +========= + +Nachdem die `Listeners <listeners.html>`__ definiert sind, empfiehlt es +sich, sie auf korrekte Funktion zu testen. Da man nicht immer jede +Konfiguration mit echten Anrufen testen kann, gibt es eine Seite im +Web-Interface, die Anrufe simuliert. Dabei klingeln keine Telefone, es +wird lediglich dem CallMonitor ein Anruf vorgetäuscht, den er wie einen +echten Anruf behandelt. + +.. figure:: /screenshots/22.png + :alt: Callmonitor: Testanruf + + Callmonitor: Testanruf + +| + +Die Maske sollte weitgehend selbsterklärend sein. Unter "Ereignis" kann +man einstellen, welches `Ereignis <listeners.html#Format>`__ simuliert +werden soll. Die Quellrufnummer ist diejenige, von der dieses Ereignis +ausgeht und die Zielrufnummer diejenige, die das Ziel des Ereignisses +ist. Man gibt jeweils ein Ereignis mit Rufnummern ein, die zu einem in +den Listeners definierten Muster passen. Nach einem Klick auf +"Testanruf" sollte der Callmonitor nun die zu diesem Listener-Eintrag +gehörende Aktion ausführen. Im Webinterface werden die +Debug-Informationen des Callmonitors angezeigt, die bei einer +eventuellen Fehlersuche helfen. + +- Tags +- `callmonitor </tags/callmonitor>`__ diff --git a/wiki/packages/checkmaild.rst b/wiki/packages/checkmaild.rst new file mode 100644 index 0000000..dc8cf6d --- /dev/null +++ b/wiki/packages/checkmaild.rst @@ -0,0 +1,135 @@ +.. _checkmaild0.4.7: + +checkmaild 0.4.7 +================ + +checkmaild ermöglicht es bis zu 3 Email-Konten (POP oder IMAP) in +festgelegten Intervallen auf neue Mails zu überprüfen. Bei Erhalt einer +neuen Mail wird ein Skript (maillog.cfg) aufgerufen. In diesem kann das +Mail-Event z.B. durch eine LED an der FritzBox signalisiert werden. Oder +über einen kurzen Telefonanruf auf ein Telefon bzw. Handy. + +|Warning| Es können keine Konten über SSL-Verbindungen abgerufen werden! + +**Unterschied von IMAP- und POP3-Konten:** Wenn die Mails über ein +IMAP-Konto abgerufen werden, dann werden die ungelesenen Mails (unread +mail) korrekt dargestellt. Eine neue Mail (new mail) wird im nächsten +Abrufintervall zur ungelesenen Mail. Da beim POP3-Zugriff das +*unseen*-Flag nicht verfügbar ist werden alle Mails im Posteingang als +ungelesen angezeigt. + +Der Source von checkmaild stammt vom +`​Tuxbox-Projekt <http://cvs.tuxbox.org/cgi-bin/viewcvs.cgi/tuxbox/apps/tuxbox/plugins/tuxmail/daemon/>`__. + +.. _Konfiguration: + +Konfiguration +------------- + +.. figure:: /screenshots/219.png + :alt: Checkmaild Webinterface + + Checkmaild Webinterface + +Es können 3 verschiedene Mail-Accounts konfiguriert werden. Einzugeben +sind ein Kontoname, Benutzername, Kennwort und dann noch der POP- oder +IMAP-Server des Providers. + +Weiterhin kann das Überprüfungsintervall sowie das Skript-Verhalten +festgelegt werden. Die Konfigurationsdatei kann unter +/mod/etc/checkmaild.conf eingesehen werden. + +.. _Skript-Funktion: + +Skript-Funktion +--------------- + +Ab Version 0.4 gibt es zusätzlich die Möglichkeit einer Skript-Funktion. +Diese ist wie folgt zu benutzen (GMX als Beispiel): + +.. code:: bash + + /mod/etc/maillog.cfg 0 2 1 "GMX" "8d3451bca04e6c2f227257baa821c4b7" "14.Sep" "10:09" "User <user@gmx.de>" "Betreff"] + +- $1. Parameter: 0=New Mail received, 1=Status +- $2. Parameter: Mails total +- $3. Parameter: Current mail +- $4. Parameter: Account +- $5. Parameter: Message-ID +- $6. Parameter: Datum +- $7. Parameter: Uhrzeit +- $8. Parameter: From +- $9. Parameter: Subject + +In den Variablen $2 bis $9 stehen die eMail-Infos, wenn Parameter $1 = +"0" ist (Neue eMail empfangen). + +Das Skript ``/tmp/flash/checkmaild/maillog.cfg`` kann über das +Webinterface entsprechend angepasst werden. Testen kann man, wenn +checkmaild im Vordergrund läuft und im Skript Ausgaben gemacht werden. + +.. _LED-Signalisierung: + +LED-Signalisierung +~~~~~~~~~~~~~~~~~~ + +TODO + +.. _Telefon-Benachrichtigung: + +Telefon-Benachrichtigung +~~~~~~~~~~~~~~~~~~~~~~~~ + +TODO + +.. _Beispiel-Skripte: + +Beispiel-Skripte +~~~~~~~~~~~~~~~~ + +:: + + (echo "$1 $2 $3 ...") + +Beispiel: + +:: + + #!/bin/sh + # neue Email empfangen + if [ "$1" = "0" ]; + then + echo "Am $6 um $7 Uhr schrieb $8: $9" + fi + +Und wenn man das jetzt in Verbindung mit dem callmonitor und dem Skript +callaction auf einem VDR ausgeben will, sieht das Beispiel so aus: + +:: + + #!/bin/sh + # neue Email empfangen + if [ "$1" = "0" ]; + then + callaction vdr m741 "Am $6 um $7 Uhr schrieb $8: $9" + fi + +Hintergrundinfos zum callmonitor kann man auch hier im Wiki unter +`callmonitor <callmonitor.html>`__ nachlesen. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​IPPF + Thread <http://www.ip-phone-forum.de/showthread.php?t=176375>`__: + POP3/IMAP Konten mit *checkmaild* + +- Tags +- `im </tags/im>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ + +.. |Warning| image:: ../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/packages/cifsmount.rst b/wiki/packages/cifsmount.rst new file mode 100644 index 0000000..f91b06a --- /dev/null +++ b/wiki/packages/cifsmount.rst @@ -0,0 +1,78 @@ +cifsmount +========= + +.. figure:: /screenshots/146.jpg + :alt: + +In diesem Paket kommen die Helferlein für das Einbinden von CIFS +Netzwerkfreigaben - inklusive eines Web-Interfaces für die einfache +Konfiguration von bis zu drei "Mounts", optional mit automatischen +start/stop Events. + +| CIFS (**C**\ ommon **I**\ nternet **F**\ ile **S**\ ystem) ist eine + erweiterte Version von + `​SMB <http://de.wikipedia.org/wiki/Server_Message_Block>`__ - dem + Protokoll, welches bei MS Windows und auch `Samba <samba.html>`__ zum + Einsatz kommt, um sowohl Ordner und Dateien als auch Drucker im Netz + bereitzustellen. Somit kann cifsmount einen Samba-Client ersetzen - + mit einem weiteren großen Vorteil, wenn wir an unsere FritzBox denken: + cifsmount benötigt wesentlich weniger Speicherplatz - und ist damit + die "Erste Wahl" für diejenigen, die Windows- oder Samba-Shares auf + der FritzBox mounten möchten. + +.. _Konfigurationcifsmount: + +Konfiguration cifsmount +----------------------- + +| **Starttyp:** Automatisch (mit dem Starten der Box), oder Manuell + (starten des Dienstes von Hand). +| **Shares:** Bis zu fünf Shares können über das Webinterface angelegt + werden. +| **Share:** Hier wird die Freigabe, welche gemountet werde soll + eingetragen. +| **User:** Benutzername der Freigabe. +| **Pass:** Passwort der Freigabe. +| **Mountpoint:** Der Ort, wohin die Freigabe auf der Box gemountet + werden soll. +| **Mountoptions:** Zusätzliche Option die dem Mountbefehl angehängt + wird, zB ``noserverino`` bei sehr großen Festplatten. + +.. _Fehlersuche: + +Fehlersuche +----------- + +Mit ``echo 1 > /proc/fs/cifs/cifsFYI`` kann man cifs etwas gesprächiger +machen. Anschauen kann man sich die Meldungen mit ``dmesg | tail``. Bei +fehlendem Benutzername oder falschem Passwort sieht das Beispielsweise +so aus: + +.. code:: bash + + root@fritz:/var/mod/root# mount -t cifs //192.168.1.1/Freetz /var/media/ftp + CIFS VFS: Send error in SessSetup = -13 + CIFS VFS: Send error in SessSetup = -13 + mount: mounting //192.168.1.172/Freetz on /var/media/ftp failed: Permission denied + root@fritz:/var/mod/root# dmesg | tail + CIFS VFS: No username specified + Status code returned 0xc000006d NT_STATUS_LOGON_FAILURE + CIFS VFS: Send error in SessSetup = -13 + +| + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​Wikipedia + Artikel <http://de.wikipedia.org/wiki/Server_Message_Block>`__ zum + SMB Protokoll und CIFS +- `​cifsmount Man + page <http://www.obdev.at/resources/sharity/manual/manCifsmount.html>`__ + +- Tags +- `filesystem </tags/filesystem>`__ +- `packages <../packages.html>`__ +- `samba </tags/samba>`__ diff --git a/wiki/packages/cpmaccfg.rst b/wiki/packages/cpmaccfg.rst new file mode 100644 index 0000000..413dc64 --- /dev/null +++ b/wiki/packages/cpmaccfg.rst @@ -0,0 +1,17 @@ +cpmaccfg +======== + +Hier handelt es sich um ein Tool zur Konfiguration des eingebauten +Switches. Eine genauere Anleitung findet sich `in diesem +Howto <../help/howtos/security/switch_config.html>`__. + +cpmaccfg-cgi +============ + +Hiermit kann cpmaccfg über das Freetz Webinterface bedient werden. Je +nach Boxtyp werden mehr oder weniger Funktionen des Switches +unterstützt. + +- Tags +- `network </tags/network>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/ctorrent.rst b/wiki/packages/ctorrent.rst new file mode 100644 index 0000000..2092585 --- /dev/null +++ b/wiki/packages/ctorrent.rst @@ -0,0 +1,37 @@ +.. _CTorrent: + +CTorrent +======== + +`​CTorrent <http://ctorrent.sourceforge.net/>`__ ist ein `​BitTorrent +Client <http://de.wikipedia.org/wiki/BitTorrent_(Client)>`__ mit +Kommandozeilen-Interface, der in +`​C++ <http://de.wikipedia.org/wiki/C%2B%2B>`__ geschrieben ist. + +Das originale CTorrent Projekt wurde 2006 eingestellt (siehe `​CTorrent +Homepage <http://ctorrent.sourceforge.net/>`__). Dafür hat sich ein +neuer Autor der Sache angenommen, und pflegt das Ganze als `​enhanced +CTorrent <http://www.rahul.net/dholmes/ctorrent/>`__ weiter. Das Freetz +Paket basiert auf dieser "erweiterten Version" (also auf dem *enhanced +CTorrent*). + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​CTorrent Homepage <http://ctorrent.sourceforge.net/>`__ +- `​CTorrent CVS + Repository <http://ctorrent.cvs.sourceforge.net/ctorrent/>`__ +- `​enhanced CTorrent + Homepage <http://www.rahul.net/dholmes/ctorrent/>`__ +- `​enhanced CTorrent + Projektseite <http://sourceforge.net/projects/dtorrent/>`__ bei + Sourceforge +- enhanced CTorrent `​User + Guide <http://www.rahul.net/dholmes/ctorrent/userguide.html>`__ + +- Tags +- `filetransfer </tags/filetransfer>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/curl.rst b/wiki/packages/curl.rst new file mode 100644 index 0000000..8840e68 --- /dev/null +++ b/wiki/packages/curl.rst @@ -0,0 +1,19 @@ +.. _cURL: + +cURL +==== + +`​cURL <http://curl.haxx.se/>`__ ist ein Programm, um einzelne Dateien +aus dem Internet zu transferieren - wobei nicht mit einem Browser (wie +Firefox o.ä.), sondern von der Kommandozeile gearbeitet wird. Dabei +unterstützt *cURL* die Protokolle +`​HTTP <http://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol>`__, +`​HTTPS <http://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol_Secure>`__, +`​FTP <http://de.wikipedia.org/wiki/File_Transfer_Protocol>`__, +`​FTPS <http://de.wikipedia.org/wiki/FTP_%C3%BCber_SSL>`__, +`​LDAP <http://de.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol>`__, +und einige andere. + +- Tags +- `packages <../packages.html>`__ +- `web </tags/web>`__ diff --git a/wiki/packages/davfs2.rst b/wiki/packages/davfs2.rst new file mode 100644 index 0000000..7931b5e --- /dev/null +++ b/wiki/packages/davfs2.rst @@ -0,0 +1,155 @@ +.. figure:: /screenshots/62.jpg + :alt: WebDAV: Konfiguration + + WebDAV: Konfiguration + +.. _WebDAVmitdavfs2: + +WebDAV mit davfs2 +================= + +Paket aus dem Thread: `​WebDAV-zu-Mountpoint für die +Fritz!Box <http://www.ip-phone-forum.de/showthread.php?t=115302>`__ + +.. _Einführung: + +Einführung +---------- + +.. _WasistWebDAV: + +Was ist WebDAV? +~~~~~~~~~~~~~~~ + +WebDAV ist ein offener Standard, der auf dem +`​HTTP <http://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol>`__/1.1 +Protokoll aufsetzt und dieses so erweitert, dass Dateien nicht nur +abgerufen sondern auch erstellt und ersetzt werden können. Dabei können +Benutzer auf ihre Daten wie auf eine Online-Festplatte zugreifen. +Bekannte Beispiele sind Apples iDisk und die MediaCenter von GMX +(1GB-Speicher gibt's gratis bei Anmeldung zum FreeMail-Dienst) und 1&1. +Das WebDAV Paket bietet eine grafische Oberfläche, worüber die +Einstellungen vorgenommen werden können. + +.. _Wasistdavfs2: + +Was ist davfs2? +~~~~~~~~~~~~~~~ + +| Das WebDAV-Paket in Freetz verwendet davfs2, ein + Linux-Dateisystem-Treiber, der es erlaubt, einen WebDAV-Share als + lokalen Datenträger zu mounten. +| (Quelle und weitere Infos: + `​http://dav.sourceforge.net/ <http://dav.sourceforge.net/>`__). + +.. _Anwendungen: + +Anwendungen +~~~~~~~~~~~ + +- Direktes Starten von Software vom WebDAV-Server aus ohne aufwendiges + Nachladen per wget +- Bereitstellung des WebDAV-Speicherplatzes im LAN mit Hilfe von + `Samba <samba.html>`__ + +.. _PaketindieFirmwareeinbauen: + +Paket in die Firmware einbauen +------------------------------ + +Das davfs2 Paket unter *menuconfig* auswählen: + +.. code:: bash + + make menuconfig + Package selection -> Testing -> davfs auswählen + make + +.. _VerschlüsselungmitZertifikaten: + +Verschlüsselung mit Zertifikaten +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +| Etliche WebDAV-Seiten (z.B. 1&1, Alice, GMX) arbeiten mit + Verschlüsselung (https) mit Zertifikaten. +| Um diese Zertifikate im WebDAV Freetz-GUI einzutragen, geht man so vor + (Bsp. GMX Mediacenter mit dem Firefox 3.x): + +- Aufrufen von + `​https://webdav.mc.gmx.net <https://webdav.mc.gmx.net>`__ +- Es kommt ggf. eine Fehlermeldung ("Not found"), die man aber + ignoriert +- Im Firefox ruft man unter Extras die Seiteninformation auf. +- Im neuen Fenster der Seiteninformation klickt man unter "Sicherheit" + auf "Zertifikat anzeigen", dann auf "Details". +- Unter Zertifikatshierarchie stehen 2 Einträge: + + - Thawte Premium Server CA + - mediacenter.gmx.net + +- Es wird nur das CA Zertifikat (d.h. Thawte Premium Server CA) + gebraucht. Man exportiert dieses und fügt es (copy & paste, Achtung + bei Zeilenumbrüchen) im WebDAV Freetz-GUI ein. Auch für 1&1 sowie für + Alice ist nur das Thawte CA notwendig. + +Alternativ kann man es auch bei Thawte +`​herunterladen <https://www.thawte.com/roots/thawte_Premium_Server_CA.pem>`__. + +Seit dem 28.05.2012 gibt es Fehlermeldungen beim Zugriff auf GMX. +Aktualisieren des Zertifikates schafft Abhilft. + +Man kann auch die Datei mit dem Zertifikat +``/tmp/flash/davfs2/servercrtX.pem`` auf +``/etc/default.Fritz_Box_7390/avm/root_ca.pem`` linken, dort hält AVM +einige Zertifikate vor. + +Man kann das Zertifikat auch über folgenden Aufruf auf dem PC ausgeben +lassen (Die Adresse in der ersten Zeile ist anzupassen): + +.. code:: bash + + TARGET=www.box.net:https + openssl s_client -showcerts -connect $TARGET < /dev/null 2> /dev/null | sed -n '/^-----BEGIN CERTIFICATE-----$/,/^-----END CERTIFICATE-----$/{/BEGIN /h;/BEGIN /!H};${g;p}' + +.. _EinstellungenOptionen: + +Einstellungen/ Optionen +~~~~~~~~~~~~~~~~~~~~~~~ + +Hier kann man noch Optionen (de)aktivieren: + +- Deaktiviere use-locks + Wenn die Option use-locks aktiviert ist, werden Dateien auf dem + Server gesperrt, wenn sie zum Schreiben geöffnet werden (Standard). + Man kann dieses Verhalten auch deaktivieren, d.h. dazu ist im + Freetz-GUI vor "Deaktiviere use-locks" ein Häkchen zu setzen. +- Aktiviere if_match_bug-Option + Die Option "if_match_bug" muss z.B. für GMX und 1und1 aktiviert sein, + sonst kann man keine Dateien hochladen. Manche Server verarbeiten + If-Match- und If-None-Match-Header nicht richtig. Die aktivierte + Option veranlasst mount.davfs, stattdessen HEAD zu benutzen. + +.. _WeiterführendeThreadsimIPPF: + +Weiterführende Threads im IPPF +------------------------------ + +| `​Zweiten OnlineSpeicher einbinden Webdav davfs2.conf, davfs2.secrets + und + mtab <http://www.ip-phone-forum.de/showthread.php?t=225316>`__\ `​WebDav + und SSL <http://www.ip-phone-forum.de/showthread.php?t=179968>`__ +| `​WebDAV und + http://mediacenter.gmx.net <http://www.ip-phone-forum.de/showthread.php?t=217572>`__ +| `​[erledigt] freetz-dev-3306: davfs2_1.conf statt davfs2.conf + + ...secrets + failed <http://www.ip-phone-forum.de/showthread.php?t=191646>`__ +| `​[gelöst] WebDAV: davfs2_1.conf <> + davfs2.conf <http://www.ip-phone-forum.de/showthread.php?t=186260>`__ +| `​[gelöst] WebDAV-zu-Mountpoint für die + Fritz!Box <http://www.ip-phone-forum.de/showthread.php?t=115302>`__ +| `​[gelöst] WebDAV-zu-Netzwerklaufwerk-Umsetzung auf der + Fritzbox <http://www.ip-phone-forum.de/showthread.php?t=114558>`__ + +- Tags +- `filesystem </tags/filesystem>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/debootstrap.rst b/wiki/packages/debootstrap.rst new file mode 100644 index 0000000..bcdf925 --- /dev/null +++ b/wiki/packages/debootstrap.rst @@ -0,0 +1,260 @@ +.. _Debootstrap: + +Debootstrap +=========== + +**Debootstrap** kann verwendet werden, um ein Debian System von Grund +auf neu zu installieren. Dies kann aus einem laufenden System heraus auf +einer anderen Partition oder auch in einem Verzeichnis auf dem aktuellen +System geschehen, beispielsweise um eine andere Release-Version von +Debian zu testen. Auch ist es möglich, mittels *debootstrap* eine +Installation von Debian von einer anderen Linux-Distribution aus +vorzunehmen. + +*Debootstrap* benötigt dazu initial weder +`​dpkg <http://de.wikipedia.org/wiki/Debian_Package_Manager>`__ noch +`​apt <http://de.wikipedia.org/wiki/Advanced_Packaging_Tool>`__. Das +initiale System wird erstellt, indem die Debian-Pakete von einer +Mirror-Site heruntergeladen und vorsichtig in ein lokales Verzeichnis +entpackt werden, in welches man schließlich +"`​chrooten <http://de.wikipedia.org/wiki/Chroot>`__" kann. + +Sofern z.B. unter Debian, Ubuntu *Debootstrap* noch nicht installiert +ist, kann dies mit + +.. code:: bash + + sudo apt-get install -y debootstrap + +nachgeholt werden. + +.. _DebianinwenigenSchrittennutzen: + +Debian in wenigen Schritten nutzen +---------------------------------- + +Zuerst mit Debootstrap das Debian-System herunterladen. Dies kann von +jedem anderen System aus gemacht werden, welches das +Debootstrap-Programm enthält (z.B. auch von der gefreezten Box mit +ausgewähltem Debootstrap-Paket). Sonst ist nur noch erforderlich, dass +die gemountete Partition ext2,3 oder 4 als Dateisystem besitzt. Da es +häufig Probleme mit dem aktuellen lenny Debian gibt wird hier etch +verwendet. Es empfiehlt sich die ersten beiden Befehle am Computer +auszuführen, da dies wesentlich schneller ist. In diesem Falle sollte +man *—foreign* zu den Argumenten hinzufügen. Für alle gängigen FritzBox +Modelle bis x2xx *—arch=mipsel* eintragen, für die aktuellen x3xx +Modelle *—arch=mips* eintragen + +**Hinweis**: + +Beim angeschlossenen USB-Gerät kann die Bezeichnung variieren, in den +unten angezeigten Pfaden lautet die Bezeichnung *uStor01*, bei anderen +Geräten kann diese auch Generic-FlashDisk-01 lauten. Um die Bezeichnung +herauszufinden, gibt es 3 Möglichkeiten, entweder per +`​Weboberfläche <http://192.168.178.1/nas/index.lua>`__ (FRITZNAS), FTP +(Wurzelverzeichnis (root) muss sichtbar sein) oder per aktiviertem +Telnet. + +**Telnet** (in der Übersicht wird das USB-Gerät aufgelistet) + +.. code:: bash + + ls /var/media/ftp/ + +**Ausgabe könnte in wie folgt sein** (Variiert nach Modell/Firmware): + +.. code:: bash + + FRITZ-NAS.txt FRITZ-Song.mp3 Generic-FlashDisk-01 lost+found + FRITZ-Picture.jpg FRITZ-Video.mp4 Onlinespeicher + +**Mit Etch ausprobieren** (veraltete Version): + +(FritzBox Modelle bis Version x2xxx) + +.. code:: bash + + debootstrap --foreign --arch=mipsel etch /var/media/ftp/uStor01/debian http://ftp.de.debian.org/debian + +(FritzBox Modelle ab Version x3xxx) + +.. code:: bash + + debootstrap --foreign --arch=mips etch /var/media/ftp/uStor01/debian http://ftp.de.debian.org/debian + +**Mit Wheezy ausprobieren** (aktuelle Version): + +(FritzBox Modelle bis Version x2xxx) + +.. code:: bash + + debootstrap --foreign --arch=mipsel wheezy /var/media/ftp/uStor01/debian http://ftp.de.debian.org/debian + +(FritzBox Modelle ab Version x3xxx) + +.. code:: bash + + debootstrap --foreign --arch=mips wheezy /var/media/ftp/uStor01/debian http://ftp.de.debian.org/debian + +anschließend + +.. code:: bash + + chroot /var/media/ftp/uStor01/debian /debootstrap/debootstrap --second-stage + +Sollte man Debootstrap an einem anderen PC durchgeführt haben, steckt +man den betreffenden USB-Stick nun in die FritzBox. Um das Debian jetzt +noch nutzen zu können, muss das /proc/ Verzeichnis für das Debian +bereitgestellt werden und wie bereits erwähnt "gechrootet" werden: + +.. code:: bash + + mount -t proc proc /var/media/ftp/uStor01/debian/proc + chroot /var/media/ftp/uStor01/debian bash + +Wenn alles gut geht sollte folgender Prompt da sein + +.. code:: bash + + root@fritz + +Ab jetzt kann man sich wie gewohnt nach einem apt-get update mit apt-get +install zusätzliche Pakete installieren. + +.. _Erfahrungswerte: + +Erfahrungswerte +--------------- + +Die Erst-Installation auf einer 7170 dauert etwa 2 Stunden, die sich mit +ca. 45/75 Minuten auf die ersten 2 Schritte verteilen. Der belegte +Speicherplatz auf einem EXT3-formatierten Datenträger liegt bei ca 505 +MB (März 2011). Im Gegensatz zur späteren Nutzung (speziell von +Aptitude) benötigt die Installation noch keinen Swap, steigert +allerdings den CPU-Verbrauch während dieser Zeit auf 100%. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​Linux-Wiki: Debootstrap <http://www.linuxwiki.de/debootstrap>`__ +- `​Debian-Anwenderhandbuch: + Debootstrap <http://debiananwenderhandbuch.de/debootstrap.html>`__ +- `​Installing new Debian systems with + debootstrap <http://www.debian-administration.org/articles/426>`__ +- `​IPPF-Thread über Mailserver in Debian + chroot <http://www.ip-phone-forum.de/showthread.php?t=169744>`__ +- `​Debootstrap im Wehavemorefun + Wiki <http://wehavemorefun.de/fritzbox/index.php/Debootstrap>`__ + +.. _CommentbyoliveronSa26Feb201111:26:45CET: + +Comment by oliver on Sa 26 Feb 2011 11:26:45 CET +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Die Erstellung des Debootstrap ist relativ einfach und gut beschrieben. +Aber wie nutzt man das jetzt? Den proc mount kann man in die rc.custom +schreiben. Und was macht man mit dem chroot? Kann man beim Starten eine +Screen-Session erstellen und sich dann dahin verbinden? Oder jedesmal +den chroot Befehl eingeben? + +.. _Commentbymandy28onSa26Feb201113:09:38CET: + +Comment by mandy28 on Sa 26 Feb 2011 13:09:38 CET +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +chroot per Konsole starten oder bequem mit einem addon welches dann +gleichzeitig für binary ist die im chroot laufen soll + +.. _CommentbyoliveronDi01Mär201121:09:47CET: + +Comment by oliver on Di 01 Mär 2011 21:09:47 CET +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Ich hab jetzt debootstrap installiert, aber die /etc/apt/sources.list +ist leer!? Könntest du noch beschreiben was da rein muss, dass man +Pakete installieren kann. + +.. _Commentbymandy28onDi01Mär201122:30:28CET: + +Comment by mandy28 on Di 01 Mär 2011 22:30:28 CET +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +sollte so aussehen + +.. code:: bash + + deb http://ftp.de.debian.org/debian stable main + +.. _CommentbyoliveronDi01Mär201122:43:32CET: + +Comment by oliver on Di 01 Mär 2011 22:43:32 CET +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Sollte das da drin stehen oder muss man das selbst reinschreiben? + +.. _Commentbymandy28onDi01Mär201122:54:33CET: + +Comment by mandy28 on Di 01 Mär 2011 22:54:33 CET +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +sollte normalerweise so oder ähnlich schon drin stehn + +.. _CommentbyMyRaCoLionMi02Mär201102:55:27CET: + +Comment by MyRaCoLi on Mi 02 Mär 2011 02:55:27 CET +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Funktioniert das mit der aktuellen stable, squeeze? Lenny ist hier noch +irrtümlich als stable aufgeführt. + +.. _Commentbymandy28onMi02Mär201108:15:05CET: + +Comment by mandy28 on Mi 02 Mär 2011 08:15:05 CET +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +mit den entsprechenden scrips in debootstrap ja , dann aber über anderen +Mirror z.B.: + +.. code:: bash + + debootstrap --foreign --arch=mipsel squeeze /var/media/ftp/uStor01/squeeze http://ftp.de.debian.org/debian + chroot /var/media/ftp/uStor01/squeeze /debootstrap/debootstrap --second-stage + +.. _CommentbykriegaexonMo12Dez201123:05:51CET: + +Comment by kriegaex on Mo 12 Dez 2011 23:05:51 CET +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Also ich kriege nach dem Erstellen von Debootstrap auf dem PC und dem +Kopieren auf die 7170 via NFS beim chroot nur die Fehlermeldung: "FATAL: +kernel too old" + +.. _CommentbyzockyonDo26Jul201218:43:38CEST: + +Comment by zocky on Do 26 Jul 2012 18:43:38 CEST +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +zu diesem zu alter fb kernel problem + +7170 Firmware-Version 29.04.76 hatte ich auch alles was höer als etch is +die meldung "FATAL: kernel too old" da must einfach ne ältere dist +nehmen bis es geht + +die sources.list muss dan eventl auf archive server angepasst werden + +in meinem fall funktioniert das im moment mit diesem einträgen : + +| deb http://archive.debian.org/debian-archive/debian/ etch main contrib + non-free +| deb-src http://archive.debian.org/debian-archive/debian/ etch main + contrib non-free + +aba das kann sich je nach dist und aktuellem zeitraum ändern + +AddComment? + +- Tags +- `packages <../packages.html>`__ +- `tools </tags/tools>`__ diff --git a/wiki/packages/deco.rst b/wiki/packages/deco.rst new file mode 100644 index 0000000..86ff023 --- /dev/null +++ b/wiki/packages/deco.rst @@ -0,0 +1,25 @@ +.. _DemosCommander: + +Demos Commander +=============== + +DECO ist ein Dateimanager für das Betriebssystem UNIX, das zu den +Motiven des weit bekannten Norton Commander entwickelt wurde. Der "Demos +Commander" ist dabei weit resourcensparender als etwa der `Midnight +Commander <mc.html>`__ und bietet sich daher insbesondere an, wenn im +Image nur noch wenig Platz verfügbar ist, der für den `Midnight +Commander <mc.html>`__ ("mc") nicht mehr reicht. Natürlich reicht der +DeCo damit auch nicht an die Funktionalitäten des `Midnight +Commanders <mc.html>`__ heran. + +Anzumerken wäre ferner, dass (laut +`​Projektseite <http://deco.sourceforge.net/>`__) die Entwicklung des +"Demos Commander" zugunsten des "Bash Commander" eingestellt wurde - +daher ist hier kaum damit zu rechnen, dass eventuelle "Feature Requests" +noch Berücksichtigung finden werden. Auch eventuell gefundene Bugs darf +man wahrscheinlich behalten… + +- Tags +- `console </tags/console>`__ +- `packages <../packages.html>`__ +- `tools </tags/tools>`__ diff --git a/wiki/packages/digitemp.rst b/wiki/packages/digitemp.rst new file mode 100644 index 0000000..c7801af --- /dev/null +++ b/wiki/packages/digitemp.rst @@ -0,0 +1,145 @@ +Digitemp +======== + +.. _Wasistdigitemp: + +**Was ist digitemp?** +~~~~~~~~~~~~~~~~~~~~~ + +.. figure:: /screenshots/120.jpg + :alt: DigiTemp screenshot + + DigiTemp screenshot + +Digitemp ist eine Software zum Auslesen von 1-Wire Temperatursensoren +als auch anderen von Dallas zur Verfügung gestellten 1-Wire Komponenten, +z.B. DS1820. + +.. _WichtigerHinweis: + +Wichtiger Hinweis +~~~~~~~~~~~~~~~~~ + +| |Warning| Egal was in irgendeiner Anleitung im Internet steht, es MÜSSEN + alle 3 Beinchen der Sensoren verbunden werden! +| Ob es nun eine eigene Stromversorgung oder Masse ist, bleibt euch + überlassen. Ansonsten befinden sich die Sensoren in einem nicht + definierten Zustand und melden je nach Wetter Fantasiewerte. + +.. _TippbeiVerwendungmehrererUSB-RS232-AdapteraneinerFritzbox: + +Tipp bei Verwendung mehrerer USB-RS232-Adapter an einer Fritzbox +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Wer mehrere USB-RS232-Adapter an seiner Fritzbox verwendet und das +Problem hat, dass diese mal */dev/ttyUSB0*, mal */dev/ttyUSB1* usw. +heißen, kann mit folgendem Eintrag in *rc.custom* einen Adapter mit +pl2303-Chip fest auf ein Device legen (mittels Softlink - danke an kuppe +für diesen Tipp in +`​diesem <http://www.ip-phone-forum.de/showthread.php?p=1586380#post1586380>`__ +bzw. `​diesem <http://www.ip-phone-forum.de/showthread.php?t=221189>`__ +Thread!): + +.. code:: bash + + # digitemp-Link erstellen (pl2303) + USBNR=$(grep 2303 /proc/tty/driver/usbserial | cut -d ":" -f1) + ln -s /dev/ttyUSB$USBNR /dev/digitemp + +Die Device ID findet man mit *lsusb-freetz* heraus (Package selection → +Debug helpers → usbutils). Ein Blick nach */proc/tty/driver/usbserial* +hilft auch weiter, z.B. könnte das Resultat so aussehen (bei 2 Adaptern +mit je einem pl2303- bzw. einem ftdi-Chipsatz): + +.. code:: bash + + root@fb1 /var/mod/root $ cat /proc/tty/driver/usbserial + usbserinfo:1.0 driver:v2.0 + 0: module:ftdi_sio name:"FTDI USB Serial Device" vendor:0403 product:6001 num_ports:1 port:1 path:usb-ahci_hcd-1.1 + 1: module:pl2303 name:"PL-2303" vendor:067b product:2303 num_ports:1 port:1 path:usb-ahci_hcd-1.2 + +Falls man also statt eines pl2303-Chip Adapters einen mit FTDI-Chip fest +verdrahten will, müsste obiger Code so aussehen: + +.. code:: bash + + # digitemp-Link erstellen (ftdi) + USBNR=$(grep ftdi /proc/tty/driver/usbserial | cut -d ":" -f1) + ln -s /dev/ttyUSB$USBNR /dev/digitemp + +Bei RRDstats → Einstellungen ist unter "Serieller Port:" dann natürlich +entsprechend */dev/digitemp* zu wählen (statt */dev/ttyUSB0* o.ä.). + +.. _Datenbank: + +Datenbank +~~~~~~~~~ + +| Bis zu `r11010 </changeset/11010>`__ konnte mit einem Intervall von 60 + Sekunden 146 Tage aufgezeichnet werden, mit 150 Sekunden 1 Jahr. Ab + dieser Revision werden die Datenbanken von DigiTemp und + RRDstats-Kabelsegment mit 2 Jahren bei 60 Sekunden \*erstellt*. Damit + wachsen die einzelnen Dateien von ~85kB auf ~150kB. +| Existierende rrd-Datenbanken kann man so neue RRAs hinzufügen (für + experimentierfreudige): + +.. code:: bash + + ## box + rc.rrdstats stop + rc.rrdstats backup + for x in *.rrd; do rrdtool dump $x > ${x%rrd}xml; done + #rm -rf *.rrd + + ## pc + rm -rf rrdtoolx.py 2>/dev/null + wget 'http://minkirri.apana.org.au/~abo/projects/rrdcollect/rrdtoolx.py' + chmod +x rrdtoolx.py + # fix for parsing '<min> 0.0000000000e+00 </min>' => '(0, 0.0)' -> 0 + sed "s/+ cmd/&.replace\('\(0, 0.0\)','0'\)/g" -i rrdtoolx.py + # fix for parsing '<min> -6.7000000000e+01 </min>' => '(-6, 70000000000.0)' -> -67 + sed "s/+ cmd/&.replace\('\(-6, 70000000000.0\)','-67'\)/g" -i rrdtoolx.py + # fix for parsing '<min> 2.5700000000e+02 </min>' => '(2, 570000000000.0)' -> 257 + sed "s/+ cmd/&.replace\('\(2, 570000000000.0\)','257'\)/g" -i rrdtoolx.py + + # xml > rrd + for x in *.xml; do rrdtool restore $x ${x%xml}rrd; done + rm -rf *.xml + # rrd > out + for x in *.rrd; do ./rrdtoolx.py addrra $x ${x%rrd}out RRA:MIN:0.5:360:2920 RRA:AVERAGE:0.5:360:2920 RRA:MAX:0.5:360:2920; done + rm -rf *.rrd + # out > xml + for x in *.out; do rrdtool dump $x > ${x%out}xml; done + rm -rf *.out + # fix newer dump format + sed '1,2d' -i *.xml + + ## box + for x in *.xml; do rrdtool restore $x ${x%xml}rrd; done + rm -rf *.xml + rc.rrdstats restore + rc.rrdstats start + +.. _WeiterführendeLinks: + +Weiterführende Links +~~~~~~~~~~~~~~~~~~~~ + +- Anleitung zur Hardware: + `​http://lena.franken.de/hardware/temperaturmessung.html <http://lena.franken.de/hardware/temperaturmessung.html>`__ +- Einbau einer zusätzlichen Stromversorgung: + `​http://public.rz.fh-wolfenbuettel.de/~hamannm/general/digitempd.html <http://public.rz.fh-wolfenbuettel.de/~hamannm/general/digitempd.html>`__ +- Anleitung digitemp und rrdtool: + `​http://www.arbeitsplatzvernichtung-durch-outsourcing.de/marty44/rrdtool.html <http://www.arbeitsplatzvernichtung-durch-outsourcing.de/marty44/rrdtool.html>`__ +- Thread "`​[Trunk #3003] Visualisierung von + DigiTemp <http://www.ip-phone-forum.de/showthread.php?t=183491>`__" + im IP-Phone-Forum (nicht auf Trunk #3003 beschränkt, sondern stetig + aktualisiert) + +- Tags +- `homeautomation </tags/homeautomation>`__ +- `packages <../packages.html>`__ +- `usb </tags/usb>`__ + +.. |Warning| image:: ../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/packages/dns2tcp.rst b/wiki/packages/dns2tcp.rst new file mode 100644 index 0000000..2b5a062 --- /dev/null +++ b/wiki/packages/dns2tcp.rst @@ -0,0 +1,90 @@ +.. _Dns2Tcp: + +Dns2Tcp +======= + +**Dns2tcp** wurde entwickelt, um TCP Connections über DNS Traffic zu +"tunneln". Die Datenkapselung erfolgt bereits auf dem TCP Level, sodass +kein gesonderter Treiber (TUN/TAP) benötigt wird. Der *Dns2tcp* Client +muss nicht mit besonderen Rechten laufen. + +*Dns2tcp* besteht aus zwei Teilen: Einem Server- und einem +Client-seitigen Tool. Aus seiner Konfigurationsdatei kennt der Server +eine Liste von Resourcen, wobei jede Resource ein lokaler oder +entfernter Dienst ist, der auf TCP Connections "horcht" ("Listener"). +Der Client hört auf einen vordefinierten TCP Port, und leitet jede +eingehende Verbindung über DNS an den Zieldienst weiter. + +.. _UsingwithFreeDNS: + +Using with FreeDNS +~~~~~~~~~~~~~~~~~~ + +None of my hosting providers allowed me to set NS records, not even for +a subdomain, which seems to be common. I found out it is also possible +to use FreeDNS for this purpose. + +Assuming you have a (`​DynDNS <http://www.dyndns.com/>`__) domain name +pointing to your Fritz!Box, lets say *fabulous.fritzbox.org*, you can do +this: + +#. Register at `​FreeDNS <http://freedns.afraid.org/>`__ +#. Create a FreeDNS subdomain: + + - Type: *NS* + - Subdomain: anything you like, for example *dns2tcp* + - Domain: anything you like, for example *strangled.ne*\ t + - Destination: for example *fabulous.fritzbox.org* + +#. Set *dns2tcp.strangled.net* as DNS name using the *dns2tcp* WebIF +#. On the client you should be able to create a DNS tunnel like this + now: + + .. code:: bash + + dns2tcpc -r ssh -l 2222 -z dns2tcp.strangled.net fabulous.fritzbox.org + +#. If you want a local `​SOCKS <http://en.wikipedia.org/wiki/SOCKS>`__ + server to browse the internet: + + .. code:: bash + + ssh root@localhost -p 2222 -D 8765 + +#. | If you want to use Polipo? as http proxy: + + .. code:: bash + + ssh root@localhost -p 2222 -L 8123:localhost:8123 + +A few notes: + +#. Don't forget to forward port UDP 53 to *dns2tcpd*, for example using + `AVM-Firewall <avm-firewall.html>`__ +#. *dns2tcp* works with `dnsmasq <dnsmasq.html>`__, if you forward to a + port other than 53 +#. Use `dropbear <dropbear.html>`__ or *OpenSSH* as SSH server +#. Security advice: disable SSH password login and use a certificate to + login +#. You can setup dynamic DNS using the regular Fritz!Box interface: + + - Advanced settings \| Internet \| Permit Access \| Dynamic DNS + +#. There is no Windows client available (you could try + `iodine <iodine.html>`__) + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​Dns2Tcp Homepage <http://www.hsc.fr/ressources/outils/dns2tcp/>`__ +- `​Artikel: TCP over DNS mit + dns2tcp <https://netzhure.de/2007/10/22/127-TCP-over-DNS-mit-dns2tcp.html>`__ +- `​IPPF Forumsdiskussion zu + Dns2Tcp <http://www.ip-phone-forum.de/showthread.php?t=156586>`__ + +- Tags +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `tunnel </tags/tunnel>`__ diff --git a/wiki/packages/dnsd.en.rst b/wiki/packages/dnsd.en.rst new file mode 100644 index 0000000..6dbcf2b --- /dev/null +++ b/wiki/packages/dnsd.en.rst @@ -0,0 +1,28 @@ +dnsd +==== + +Small static DNS server daemon (BusyBox applet) + +.. _Links: + +Links +----- + +- `​Man page <http://www.busybox.net/downloads/BusyBox.html#dnsd>`__ +- `​DNS <http://en.wikipedia.org/wiki/Domain_Name_System>`__ + (wikipedia) + +.. _Exampleusecase: + +Example use case +---------------- + +I forward port 53 from outside to 10053, using `AVM firewall +CGI <avm-firewall.html>`__, where `iodine <iodine.html>`__ runs. +*iodine* forwards requests for unknown domains to port 5353 where *dnsd* +runs. *dnsd* answers requests for just a few sub-domains I want to use +too. + +- Tags +- `network </tags/network>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/dnsd.rst b/wiki/packages/dnsd.rst new file mode 100644 index 0000000..8be5358 --- /dev/null +++ b/wiki/packages/dnsd.rst @@ -0,0 +1,25 @@ +dnsd +==== + +Schlanker DNS-Server für statische Namensauflösung (BusyBox Applet) + +.. _Links: + +Links +----- + +- `​Man page <http://www.busybox.net/downloads/BusyBox.html#dnsd>`__ + +.. _Beispielkonfiguration: + +Beispielkonfiguration +--------------------- + +Port 53 mit `AVM firewall CGI <avm-firewall.html>`__ nach 10053 mappen +wo `iodine <iodine.html>`__ läuft. Dieses leitet Anfragen unbekannter +Domains auf Port 5353 weiter wo *dnsd* läuft. *dnsd* beantwortet für ein +paar Subdomains diese Anfragen. + +- Tags +- `network </tags/network>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/dnsmasq.rst b/wiki/packages/dnsmasq.rst new file mode 100644 index 0000000..17fea78 --- /dev/null +++ b/wiki/packages/dnsmasq.rst @@ -0,0 +1,487 @@ +dnsmasq +======= + +.. figure:: /screenshots/200.png + :alt: Konfiguration + + Konfiguration + +Dnsmasq ermöglicht es, auf der FRITZBox + +- einen **DNS-Server**, der die IP- und Namensauflösung zentral + vornimmt, +- einen **DHCP-Server**, der Clienten eine IP-Adresse und einen + Hostnamen übermittelt, und +- einen **TFTP-Server**, der z. B. das Booten via + `​PXE <http://de.wikipedia.org/wiki/Preboot_Execution_Environment>`__ + ermöglicht, + +zu betreiben. + +Dnsmasq läuft komplett auf der FRITZBox, man braucht also keine +gesonderten Rechner als DHCP-Server und als DNS-Server. + +Das Besondere ist, dass dnsmasq statische DHCP-Leases beherrscht, was +die FRITZBox ohne Freetz nur eingeschränkt kann. So ist es jetzt möglich +einem Client eine selbst definierte feste IP zu geben und nicht nur eine +bereits durch den DHCP vergebene IP fest mit dem Client zu verbinden. + +.. _Installation: + +Installation +------------ + +Dnsmasq ist als Paket im Rahmen von Freetz realisiert und kann bei +dessen Erzeugung einfach ausgewählt werden. + +.. _Konfiguration: + +Konfiguration +------------- + +Zur Konfiguration gibt es im Web-Interface von Freetz die Seiten: + +- *Pakete / Dnsmasq*: Optionen zum Startverhalten, DNS-Server und + DHCP-Server (DHCP-Ranges) +- *Einstellungen / Hosts*: Liste fest vorgegebener Hostnamen +- *Einstellungen / Dnsmasq: extra*: Textfeld zur Eingabe zusätzlicher + Optionen (dnsmasq long options ohne führende ``--``) + +|Warning| Wenn der DHCP-Server von dnsmasq genutzt werden soll, dann ist +der FRITZBox-interne DHCP-Server aus der Original-Firmware unter +*System* → *Netzwerkeinstellungen* → *IP-Adressen* zu deaktivieren + +.. _DNSServer: + +DNS Server +---------- + +Im Abschnitt *Der DNS Server ist gebunden an: Port:* trägt man den Port +ein, an den der DNS-Server gebunden ist. Der Default-Wert ist hier Port +53. + +Im Feld *Domain* kann die Domain (Domain-Teil des Hostnamens) für den +DHCP-Server angegeben werden. + +Das hat zwei Effekte. Erstens veranlasst es den DHCP-Server, diese +Domain an Hosts zurückzugeben, die sie anfordern. Zweitens bestimmt es +die Domain, die legitimiert ist, von DHCP-konfigurierten Hosts +angefordert zu werden. + +Dahinter steckt die Absicht, einen Hostnamen zu erzwingen, so kann ein +nicht vertrauenswürdiger Host im LAN seinen Namen über DHCP z. B nicht +als "ip-phone-forum.de" angeben. + +Wenn unter *Domain* nichts angegeben wurde, wird jeder DHCP-Hostname, +der einen Domain-Teil enthält, zurückgewiesen. Wenn jedoch im Feld +*Domain* ein Name angegeben wurde, dann sind Hostnamen, die einen +Domain-Teil enthalten, erlaubt, vorausgesetzt, dieser Domain-Teil und +der Name im Feld *Domain* stimmen überein. + +Wenn ein Name unter *Domain* angegeben wurde und somit Hostnamen ohne +Domain-Teil erlaubt sind, kann außerdem der Name im *Domain*-Feld als +optionaler Domain-Teil hinzugefügt werden. + +Wenn man z. B. im Feld *Domain* "fritz.box" einträgt und außerdem ein +Rechner mit dem DHCP-Hostnamen "Laptop" vorhanden ist, dann ist mit +dnsmasq die IP-Adresse dieses Rechners sowohl als "Laptop" als auch als +"laptop.fritz.box" verfügbar. + +Gibt man die Domain als "**#**" an, dann wird die Domain von der ersten +"search"-Direktive in ``/etc/resolv.conf`` gelesen. + +*Anmerkung 1:* Diese Funktion entspricht den dnsmasq-Parametern +``-E -s <domainname>`` + +| *Anmerkung 2:* Achtung, die bereits in + `​resolv.conf <http://www.freebsd.org/doc/de/books/handbook/configtuning-configfiles.html>`__ + bestehenden Einträge +| ``nameserver 192.168.x.x`` oder auch ``nameserver 127.0.0.1`` +| kommen von AVM und dürfen nicht gelöscht werden, sonst funktioniert + die Namensauflösung von AVM (z.B. Internettelefonie) nicht mehr (egal, + ob die Box per DSL oder hinter einem Kabelmodem am Internet hängt). + Gegebenfalls sind aber die Adressen (z.B. per Telnet) auf den oder die + jetztigen DNS Server zu setzen. + +.. _mitiptablesdenDNS-Portumleiten: + +mit iptables den DNS-Port umleiten +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +| Dazu den Port von dnsmasq auf 50053 ändern und die Optionen 'vor + multid starten' und 'multid restarten' deaktivieren. +| Im menuconfig müssen diese Optionen von iptables ausgewählt sein + (|Warning| je nach Kernelversion variieren die Namen etwas): + +bei Kernel 2.6.28 (zb Fritzbox 7320): + +.. code:: bash + + nf_conntrack nf_conntrack_ipv4 nf_defrag_ipv4 iptable_filter iptable_nat ip_tables ipt_REDIRECT + x_tables xt_tcpudp + libipt_REDIRECT + libxt_standard libxt_tcp libxt_udp + +Die Module durch eintragen in 'modules' beim Start von Freetz laden. + +Diese iptables Regeln mittels rc.custom ausführen: + +.. code:: bash + + rport=50053 + + iptables -t nat -F dns 2>/dev/null + iptables -t nat -N dns + + iptables -t nat -D PREROUTING -p tcp --dport 53 -j dns 2>/dev/null + iptables -t nat -I PREROUTING -p tcp --dport 53 -j dns + iptables -t nat -D PREROUTING -p udp --dport 53 -j dns 2>/dev/null + iptables -t nat -I PREROUTING -p udp --dport 53 -j dns + + iptables -t nat -D OUTPUT -o lo -p tcp --dport 53 -j REDIRECT --to-port $rport 2>/dev/null + iptables -t nat -I OUTPUT -o lo -p tcp --dport 53 -j REDIRECT --to-port $rport + iptables -t nat -D OUTPUT -o lo -p udp --dport 53 -j REDIRECT --to-port $rport 2>/dev/null + iptables -t nat -I OUTPUT -o lo -p udp --dport 53 -j REDIRECT --to-port $rport + + for _if in $(ifconfig | sed -nr 's/^([^ ]*) .*/\1/p' | grep -vE "lo|dsl|:|eth"); do + _ip="$(ifconfig $_if 2>/dev/null | sed -n 's/.*inet addr:\([0-9\.]*\).*/\1/p')" + [ -z "$_ip" ] && continue + iptables -t nat -I dns -i $_if -p tcp -d $_ip -j REDIRECT --to-port $rport + iptables -t nat -I dns -i $_if -p udp -d $_ip -j REDIRECT --to-port $rport + done + +So kann der multid Port 53 belegen, aber es wird trotzdem dnsmasq zur +Namensauflösung genutzt. Außerdem sind so Restarts von multid nicht mehr +nötig. + +.. _Kommandozeilen-Optionen: + +Kommandozeilen-Optionen +----------------------- + +| Unter *Zusätzliche Kommandozeilen-Optionen (für Experten)* lassen sich + weitere dnsmasq-Optionen eintragen. Einige dieser Optionen sind in den + folgenden Beispielen erläutert. Alle Parameter finden sich auf der + `​originalen Man-Page von + dnsmasq <http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html>`__. + Alle Optionen können anstelle der Kommandozeilen-Option auch unter + *Einstellungen* → *Dnsmasq-extra* als Liste eingetragen werden (dann + das führende Zeichen ``-`` weglassen). Das ist wesentlich bequemer und + man kann auch mit # Kommentare zufügen. Eine Beispiel-Konfiguration + findet man + hier:\ `​dnsmasq.conf.example <http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq.conf.example>`__. +| Nach Speichern der Änderungen wird dnsmasq automatisch neu gestartet, + damit die Änderungen wirksam werden. (Ansonsten manuell über *Dienste* + → *dnsmasq restart*) + +.. _Beispiel1: + +Beispiel 1 +~~~~~~~~~~ + +Durch (Kommandozeilen-Optionen) + +.. code:: bash + + -O 44,192.168.178.1 -O 45,192.168.178.1 -O 46,8 + +oder alternativ (als Liste) + +.. code:: bash + + #options to DHCP clients + dhcp-option=44,192.168.178.1 + dhcp-option=45,192.168.178.1 + dhcp-option=46,8 + +| wird unter der Adresse 192.168.178.1 ein WINS- und ein NBDD-Server mit + dem NetBIOS-Knotentyp "h-Knoten" beim Client eingetragen. +| *-O* bezeichnet spezielle Optionen für DHCP-Clients, hier für NetBIOS + über TCP/IP; dem Code *44* folgt die IP-Adresse für WINS-Server, *45* + die für NBDD-Server, und *46* der Knotentyp. + +Die meisten DHCP-Optionen sind in der +`​RFC2132 <http://www.faqs.org/rfcs/rfc2132.html>`__ festgelegt. +Allgemeine Informationen zu DHCP in deutscher Sprache findet man bei +`​Microsoft +DHCP <http://technet.microsoft.com/de-de/library/cc778368%28WS.10%29.aspx>`__. + +.. _Beispiel2: + +Beispiel 2 +~~~~~~~~~~ + +Durch (Kommandozeilen-Optionen) + +.. code:: bash + + -R -S 208.67.222.222 -S 208.67.220.220 + +oder alternativ (als Liste) + +.. code:: bash + + #don't read resolv file + no-resolv + #dns server + server=208.67.222.222 + server=208.67.222.220 + +werden eigene DNS-Einträge genutzt, im Beispiel diejenigen von +`​www.OpenDNS.com <http://www.opendns.com/>`__. *-S* nutzt den DNS mit +der angegebenen IP-Adresse. Dieser Schalter unterdrückt nicht das Lesen +der Datei ``resolv.conf``, das muss zusätzlich mit *-R* erledigt werden. + +.. _DHCPServer: + +DHCP Server +----------- + +Im Bereich *DHCP Range (eine pro Zeile)* werden die Bereiche in +folgender Form eingetragen: + +.. code:: bash + + [[net:]network-id,]<start-addr>,<end-addr>[[,<netmask>],<broadcast>][,<default lease time>] + +(Die `​dnsmask +Direktive <http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html>`__ +dazu lautet: ``dhcp-range``. Man findet findet übrigens fast alle +gespeicherten Einstellungen im File: ``/mod/etc/dnsmasq.conf``) + +Dabei werden Adressen aus dem Bereich von <start-addr> bis <end-addr> +zuzüglich der statisch definierten Adressen aus den **Einträgen in der +Hosts-Liste** vergeben. + +Wenn eine Lease-Time ("Leihzeit") angegeben wird, dann werden Leases für +diese Zeitspanne vergeben. Die Lease-Time kann in Sekunden (z. B. +**30**) oder Minuten (z. B. **45m**) oder Stunden (z. B. **1h**) oder +durch das Wort **infinite** (unendlich) angegeben werden. Diese Option +kann mit unterschiedlichen Adressen wiederholt werden, um den +DHCP-Service zu mehr als einem Netz zu ermöglichen. + +Eine Liste der vergebenen Leases findet man in den Files +``/var/tmp/dnsmasq.leases`` und ``/var/tmp/multid.leases``. Sollte man +mal 'komische' Zuordnungen von Leases oder IP-Adressen in Netz +feststellen, lohnt sich ein Blick auf diese Files allemal. Mit Telnet +kann man diese notfalls auch komplett löschen. Mit einen Neustart von +dnsmasq werden die Files automatisch neu erstellt. + +Für direkt verbundene Netze (d. h. Netze, zu denen die FRITZBox mit +laufendem dnsmasq eine Schnittstelle hat) ist netmask optional. Es wird +jedoch für Netze verlangt, die den DHCP-Service über einen Relay-Agenten +empfangen. + +Die Broadcast-Adresse ist immer optional. Die optional freigestellte +Network-ID ist ein alphanumerisches Label, das dieses Netz kennzeichnet, +damit DHCP-Optionen auf einer Per-Netzwerk-Basis spezifiziert werden +können. Wenn *net:* davor gesetzt wird, ändert sie ihre Bedeutung von +Setzen eines Tag zu Matching. Nur ein Tag kann gesetzt werden, mehr als +ein Tag können jedoch gematchet werden. Die Endadresse kann durch das +Schlüsselwort *static* ersetzt werden, das weist dnsmasq an, DHCP für +das spezifizierte Netz zu ermöglichen, aber IP-Adressen nicht dynamisch +zuzuteilen. Nur Hosts, die statisch vergebene Adressen entsprechend der +*Einträge in der Hosts-Liste* haben, werden bedient. + +.. _Beispiel: + +Beispiel +~~~~~~~~ + +Mit dem Eintrag + +.. code:: bash + + 192.168.178.20,192.168.178.200,12h + +werden Adressen von IP 192.168.178.20 bis IP 192.168.178.200 mit einer +Lease-Time von 12 Stunden vergeben. + +.. _EinträgeinderHosts-Liste: + +Einträge in der Hosts-Liste +--------------------------- + +.. code:: bash + + <ipaddr>|* <hwaddr>|[id:]<client_id>|* [net:]<netid>|* <hostname>|* [ignore] + +Die Einträge in der Liste fest vorgegebener Hostnamen erlauben, dass +einem Rechner mit einer bestimmten Hardwareadresse immer die gleichen +Hostname, IP-Adresse, Lease-Time zugeteilt werden können. Ein hier +spezifizierter Hostname wird über den DHCP-Client auf den Rechner +geliefert. Hier statisch vergebene IP-Adressen werden logischerweise bei +der dynamischen IP-Vergabe ausgespart. + +Hostnamen mit Punkten im Namen sind ab Release 1.6 (dnsnasq 2.40) nicht +mehr zulässig! Dies quittiert dnsmasq mit der Fehlermeldung + +.. code:: bash + + fritz daemon.err dnsmasq[ ]: bad name at /etc/ethers line ... + +Eine Zuordnung aus der Hosts-Liste ist dann nicht mehr möglich, und es +werden einfach andere Adressen zugeordnet. + +Es ist auch zulässig, die Hardwareadresse auszulassen und dafür den +Hostnamen mit anzugeben, in diesem Fall treffen IP-Adresse und +Lease-Time auf jeden möglichen Rechner zu, der diesen Hostnamen liefert. +Z. B. weist ``00:20:e0:3b:13:af wap infinite`` dnsmasq an, dem Rechner +mit der Hardwareadresse ``00:20:e0:3b:13:af`` den Namen wap und eine +unendliche DHCP-Lease-Time zuzuteilen. + +``lap 192.168.0.199`` weist dnsmasq an, dem Rechner lap immer die +IP-Adresse 192.168.0.199 zuzuteilen. Die Adressen, die so zugeteilt +werden, werden nicht auf den durch die dhcp-range-Option angegebenen +Bereich begrenzt, aber sie müssen im Netz, das durch den DHCP-Server +bedient wird, vorhanden sein. + +Um Hosts zu kennzeichnen, kann man statt der Hardwareadresse auch die +Client-ID verwenden, indem man ``id:`` vorsetzt. So bezieht sich +``id:01:02:03:04 .....`` auf den Host mit Client-ID !01:02:03:04. Man +kann auch die Client-ID als Text spezifizieren: +``id:clientidastext .....`` Die spezielle Option ``id:*`` bedeutet alle +möglichen Client-IDs ignorieren und ausschließliche Nutzung der +Hardwareadressen. Dies ist nützlich, wenn ein Client meistens eine feste +Client-ID hat, manchmal aber eine andere. + +Nur wenn ein Eintrag in der Hosts-Liste mit dem entsprechenden Namen +vorhanden ist, kann die zugehörige IP-Adresse über einen DHCP-Lease +zugeteilt werden. + +Das spezielle Schlüsselwort ``ignore`` weist dnsmasq an, einem Rechner +nie einen DHCP-Lease anzubieten. Dieser Rechner kann durch seine +Hardwareadresse, Client-ID oder Hostnamen, zum Beispiel +``00:20:e0:3b:13:af ignore`` spezifiziert werden. Dies ist nützlich, +wenn es einen anderen DHCP-Server im Netz gibt, der von einigen Rechnern +benutzt werden soll. + +Die Option ``net:<network-id>`` setzt das Netzwerk-ID-Tag, wenn diese +DHCP-Host-Richtlinie genutzt wird. Das kann verwendet werden, um +DHCP-Optionen für diesen Host selektiv zu senden. Ethernet-Adressen +(aber nicht Client-IDs) können Wildcard-Bytes wie etwa +``00:20:e0:3b:13:* ignore`` enthalten. Das veranlasst dnsmasq, eine +Range der Hardwareadressen zu ignorieren. + +Hardwareadressen können normalerweise irgendeinen Netz(ARP)-Typ +aufweisen, aber es ist auch möglich, sie auf einzelne ARP-Typen +einzuschränken, indem man ihnen den ARP-Typ (in HEX) und - voranstellt. +So bezeichnet ``06-00:20:e0:3b:13:af 1.2.3.4`` nur eine +Token-Ring-Hardware-Adresse, da die ARP-Adresse für Token Ring 6 ist. + +*Anmerkung:* Die ``/etc/hosts`` ist ein Symlink auf ``/var/tmp/hosts``. +Diese wiederum wird aus ``hosts`` mit den MAC-Adressen etc. beim Start +von dnsmasq generiert. + +.. _DHCPBoot: + +DHCP Boot +--------- + +Der DHCP-Boot-Eintrag wird für Optionen des +`​BOOTP <http://de.wikipedia.org/wiki/Bootstrap_Protocol>`__-Protokolls +gebraucht. Zusammen mit dem TFTP-Server können damit datenträgerlose +Arbeitsstationen konfiguriert werden. + +(Die `​dnsmask +Direktive <http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html>`__ +dazu lautet: ``dhcp-boot``. ) + +.. _TFTPServer: + +TFTP Server +----------- + +Für einen TFTP-Server lauten die `​dnsmask +Direktiven <http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html>`__: +``enable-tftp`` und ``tftp-root``. + +.. _Beispiel3: + +Beispiel +~~~~~~~~ + +Der integrierte TFTP-Server für einen Zugriff auf die Daten unter +``/var/ftpd`` wird wie folgt aktiviert: + +.. code:: bash + + --enable-tftp --tftp-root=/var/ftpd + +Man sollte also zusätzlich zum Parameter ``--enable-tftp`` (der den +integrierten TFTP-Server aktiviert) mittels +``--tftp-root=/irgendein_pfad_auf_der_box`` angeben, wo die Dateien +liegen, auf die per TFTP zugegriffen werden darf. Soll ein +Client-Rechner via BOOTP (Bootstrap Protocol — die erweiterte +automatische Methode per PXE [Preboot Execution Environment] ist hier +nicht möglich) und TFTP gebootet werden, muss noch das entsprechende +Bootimage definiert werden. Das geschieht mit folgendem Parameter: + +.. code:: bash + + -M [net:<network-id>,]<filename>,[<servername>[,<serveraddress>]] + +Dieser setzt die durch den DHCP-Server zurückgegebenen BOOTP-Optionen. +Dabei sind *Servername* und *Serveraddress* optional, ist hier nichts +angegeben, wird der Name leer gelassen und die Adresse auf die Adresse +der FRITZBox, auf der dnsmasq läuft, gesetzt. Für den von dnsmasq mit +``--enable-tftp`` zur Verfügung gestellten TFTP-Dienst ist hier nur der +Dateiname erforderlich der das Booten ermöglicht. Sollten optionale +Netzwerk-IDs angegeben werden, müssen diese mit der zu sendenden +Konfiguration zusammenpassen und außerdem den Vorsatz *net:* aufweisen. + +Nutzen kann man das Ganze zum Beispiel, um den Debian-Etch-Installer via +Netzwerk zu booten. Dazu ist auf einem USB-Datenträger das Verzeichnis +``tftp`` zu erstellen und von einem Debian-Mirror die Datei +``netboot.tar.gz`` herunterzuladen (z. B. vom `​Debian-Mirror der TU +Chemnitz <http://ftp.tu-chemnitz.de/pub/linux/debian/debian/dists/etch/main/installer-i386/current/images/netboot/netboot.tar.gz>`__) +und in das soeben erstellte Verzeichnis zu entpacken. Ist der +Datenträger mit NTFS oder FAT32 formatiert, muss der komplette Ordner +``debian-installer/i386/pxelinux.cfg`` und die Datei +``debian-installer/i386/pxelinux.0`` auf die gleiche Ebene wie +``debian-installer`` verschoben werden. Anschließend konfiguriert man +dnsmasq wie folgt (Pfad eventuell noch anpassen, je nach Konfiguration +beim Bauen von Freetz): + +.. code:: bash + + --enable-tftp --tftp-root=/var/media/ftp/uStor01/tftp -M pxelinux.0 + +Wenn der TFTP-Server auf einem anderen Rechner läuft, z. B. hier auf +192.168.178.10 mit dem Bootfile ``pxelinux.0``, dann ist dieser +anzugeben: + +.. code:: bash + + -M pxelinux.0,192.168.178.10,192.168.178.10 + +.. _KompletteigeneKonfiguration: + +Komplett eigene Konfiguration +----------------------------- + +Es lassen sich auch komplett eigene Konfigurationen nutzen. Dazu +erstellt man eine leere, ausführbare Datei mit dem Namen +*/tmp/flash/dnsmasq_conf* und trägt dann im Freetz-Web-Interface unter +*Einstellungen* → *Dnsmasq: extra* die gewünschte Konfiguration ein. +Informationen zur Syntax finden sich unter +`​Beispiel-Konfiguration <http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq.conf.example>`__. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​Website von + dnsmasq <http://www.thekelleys.org.uk/dnsmasq/doc.html>`__ +- `​Deutsche + Beschreibung <http://www.martin-bock.de/pc/pc-0604.html>`__ +- `​Man-Page <http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html>`__ +- `​Beispiel-Konfiguration <http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq.conf.example>`__ + +- Tags +- `network </tags/network>`__ +- `packages <../packages.html>`__ + +.. |Warning| image:: ../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/packages/downloader.rst b/wiki/packages/downloader.rst new file mode 100644 index 0000000..c6eb156 --- /dev/null +++ b/wiki/packages/downloader.rst @@ -0,0 +1,57 @@ +.. _Downloader-CGI: + +Downloader-CGI +============== + +| Das **Downloader-CGI** ist ausführlich in `​diesem + Forumsthread <http://www.ip-phone-forum.de/showthread.php?t=134934>`__ + beschrieben. Es hilft beim `​Platz sparen im Dateisystem der + Fritz!Box <http://wiki.ip-phone-forum.de/software:ds-mod:development:platz_sparen>`__, + indem es benötigte Pakete zur Laufzeit aus dem Netz lädt - sodass man + diese nicht fest auf der Box installieren muss. Interessant ist + Downloader in erster Linie für die Boxen ohne USB-Host und wird letzte + Zeit immer seltener gebraucht. +| Das Vorbereitungsskript für External wurde um eine automatische + Vorbereitungsroutine für den Downloader erweitert. Somit werden sowohl + die eigentlichen Dateien für die Auslagerung als separate gz-Archive + vorbereitet als auch eine Datei mit der Konfiguration für + Downloader-CGI während der make-Prozedur angelegt. Die Sektion + befindet sich in menuconfig unter den External-Optionen. +| Das Verhalten von External und Downloader unterscheidet sich um + Einiges: + +#. Downloader benutzt ausgelagerte Binaries als separate gz-Archive. + External packt dagegen alle Dateien zu einem gemeinsamen + tar.bz2-Archiv. +#. Downloader braucht eine Downloader-CGI, mit einem Dienst, der beim + Starten der Box die benötigten Dateien von einem externen HTTP- oder + FTP-Server ins RAM der Box holt. Beim External gibt es diesen Schritt + nicht. Die Dateien sind im Falle von External sofort nach dem mounten + vom USB-Medium verfügbar. +#. Beim Downloader werden Symlinks beim Bauen der Firmware vom Flash + nach RAM hingelegt. Beim External zeigen diese Symlinks auf eine + zuvor vereinbarte Stelle auf dem USB-Medium. + +Die Screenshots stammen zwar noch aus den Zeiten von ds-mod. Bis auf die +Namensänderung in Freetz und einige kosmetische Änderungen hat sich +allerdings seit dieser Zeit nicht viel geändert. + +**Hauptseite:** + +.. figure:: /screenshots/18.jpg + :alt: Downloader: Hauptseite + + Downloader: Hauptseite + +**Downloader-Logs beim Hochfahren der Box:** + +.. figure:: /screenshots/19.jpg + :alt: Downloader: Startlog + + Downloader: Startlog + +- Tags +- `cgi </tags/cgi>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `tools </tags/tools>`__ diff --git a/wiki/packages/dropbear.en.rst b/wiki/packages/dropbear.en.rst new file mode 100644 index 0000000..12a4c59 --- /dev/null +++ b/wiki/packages/dropbear.en.rst @@ -0,0 +1,53 @@ +.. _Dropbear: + +Dropbear +-------- + +| Drobear is a small ssh server, client with keygenerator and scp + support. +| More information about dropbear can be found at + `​http://matt.ucc.asn.au/dropbear/dropbear.html <http://matt.ucc.asn.au/dropbear/dropbear.html>`__ + +.. _CreatingaFeetzImagewithDropbrear: + +Creating a Feetz Image with Dropbrear +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +| Follow the directions from the `Wiki <../index.en.html#>`__ +| After the following step you can configure the packages you want to + have included in your image. + +.. code:: bash + + make menuconfig + +Make sure the following is selected: + +.. code:: bash + + Package selection ---> Standard packages ---> [*] Dropbear 0.53.1 + Package selection ---> Standard packages ---> [ ] Without scp & ssh client (NEW) + Package selection ---> Standard packages ---> [ ] With zlib Compression (NEW) + Package selection ---> Standard packages ---> [*] Disable DNS reverse-lookup of the client (NEW) + Package selection ---> Standard packages ---> [ ] Build static binary (NEW) + +.. _SetupinFreetzweb-interface: + +Setup in Freetz web-interface +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +| Using the Dropbear setup page you can enable Dropbear to start + automatically at bootup. + +.. figure:: /screenshots/249.jpg + :alt: Dropbear setup + + Dropbear setup + +| From the setup page you can also select to edit authorized_keys file + which allows you to access the router with pre-shared keys i.s.o. just + a password. +| Selecting to edit the authorized_keys file will redirect you to SSH > + authorized_keys +| Look at the `authorized_key <authorized-keys.html>`__ page for more + info. diff --git a/wiki/packages/dropbear.rst b/wiki/packages/dropbear.rst new file mode 100644 index 0000000..df15e3a --- /dev/null +++ b/wiki/packages/dropbear.rst @@ -0,0 +1,449 @@ +.. _Dropbear: + +Dropbear +======== + + | "Dropbear is a relatively small SSH 2 server and client. [… …] + Dropbear is particularly useful for "embedded"-type Linux (or other + Unix) systems, such as wireless routers." + | `​http://matt.ucc.asn.au/dropbear/dropbear.html <http://matt.ucc.asn.au/dropbear/dropbear.html>`__ + +Dropbear ist ein SSH Server und Client + SCP. Es gibt zwei Pakete: +dropbear Server, Client und scp - sowie ein auf den dropbear Server +beschränktes Paket. Dropbear wurde so modifiziert, dass nur root Logins +erlaubt sind. + +.. _Grundbegriffe: + +Grundbegriffe +------------- + +- **SSH** (Secure Shell): ermöglicht eine Verbindung zwischen zwei + Rechnern (als sichere Alternative zu z.B. telnet). Dabei baut ein + *SSH-Client (z.B. PuTTY, OpenSSH, Dropbear)* eine verschlüsselte + Verbindung zu einem *SSH-Server (z.B. OpenSSH, Dropbear)* nach einer + erfolgreichen Authentifizierung auf. + Die Howtos beziehen sich größtenteils auf 2 SSH-Clients: + + #. OpenSSH für `​Windows (über eine + Cygwin-Installation <http://www.cygwin.com/>`__) oder `​Linux und + andere Betriebssysteme <http://www.openssh.com/de/>`__ + #. `​Putty mit Puttygen für Windows und + Linux <http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html>`__ + +- **SCP** (Secure Copy): ermöglicht verschlüsselte Übertragung von + Dateien zwischen zwei Rechnern. Dabei baut ein *SCP-Client (z.B. + PSCP, OpenSSH, Dropbear)* eine verschlüsselte Verbindung zu einem + *SCP-Server (z.B. OpenSSH, Dropbear)* über SSH auf. +- **Password-based Authentication**: SSH-Verbindung kommt zustande, + nachdem sich der (SSH-)Client mit einem Passwort authentifiziert hat. + + .. code:: bash + + # ssh user@host + user@host's password: + + # scp [user@host:]file_to_copy [user@host:]target_path + user@host's password: + file_to_copy 100% 20KB/s 00:10 + +- **Public Key Authentication**: SSH-Verbindung kommt zustande, nachdem + sich der (SSH-)Client mit einem *Private Key (geheimen Schlüssel)* + gegenüber einem auf dem (SSH-)Server abgelegten *Public Key + (öffentlichen Schlüssel)* authentifiziert hat. Ein Vorteil ist, dass + man zur Anmeldung kein Passwort mehr eingeben muss. + + .. code:: bash + + # ssh user@host + Authenticating with public key "rsa-key-XXXXXXXX" + + # scp [user@host:]file_to_copy [user@host:]target_path + Authenticating with public key "rsa-key-XXXXXXXX" + file_to_copy 100% 20KB/s 00:10 + +- **Host-based Authentication**: SSH definiert auch eine optionale + Host-basierte Authentifizierung. Diese wird jedoch selten verwendet + und von dropbear nicht unterstützt. + +.. _Web-Config: + +Web-Config +---------- + +.. figure:: /screenshots/201.png + :alt: Dropbear Konfiguration + + Dropbear Konfiguration + +- *Starttyp*: wahlweise bei Systemstart (**automatisch**) oder + **manuell** +- *Authorized keys*: Liste bekannter Public Keys für die Public Key + Authentication. Entspricht in der Syntax und Funktion genau der Datei + ``~/.ssh/authorized_keys`` bei einer normalen Unix-Installation. + Weitere Details sind + `​hier <http://www.lrz.de/services/security/ssh/>`__ beschrieben. Das + Format der *Authorized keys* im Web-GUI sollte (für root) so aussehen + (hier durch … abgekürzt): + + .. code:: bash + + ---root + ssh-rsa AAAAB3...o1b0=0 + +- *Port des SSH-Servers* (default: 22): Änderung des Standardports hat + zur Folge, dass bei SSH-Clients explizit der Port angegeben werden + muss. +- *Passwort Login*: **aktiviert** oder **deaktiviert** Password-based + Authentication. Sollte deaktiviert werden, wenn Public Key + Authentication verwendet wird. +- *Zusätzliche Kommandozeilen-Optionen*: Dropbear wird mit bestimmten + Optionen gestartet. Übersicht über Optionen mit + ``dropbear -?`` + +.. _SSH-ZugangmitPasswortPassword-basedAuthentication: + +SSH-Zugang mit Passwort (Password-based Authentication) +------------------------------------------------------- + +Das ist die Standardeinstellung im Dropbear. Ohne weitere Einstellungen +kann die Fritzbox folgendermaßen über SSH erreicht werden: + +.. _ZugangmitOpenSSH: + +Zugang mit OpenSSH +~~~~~~~~~~~~~~~~~~ + +.. code:: bash + + # ssh root@fritz.box + root@fritz.box's password: freetz + +.. _ZugangmitPutty: + +Zugang mit Putty +~~~~~~~~~~~~~~~~ + +#. Einstellungen setzen + ``Session/Host`` Name: ``fritz.box`` + ``Session/Port: 22`` (bzw. die Einstellung unter *Pakete* → + *Dropbear*) + ``Session/Protocol: SSH`` + ``Connection/Data/Auto-login username: root`` +#. Einstellungen speichern (optional) + bei *Session* → *Saved Sessions* beliebigen Namen (z.B. *fritzbox + ssh*) eingeben und *Save* drücken. Ab sofort kann dann per + Doppelklick auf den Namen die Verbindung aufgebaut werden (oder die + Einstellungen mit *Load* geladen werden) +#. *Open* +#. ``root@fritz.box's password: fritzbox`` + +**Wichtig:** Bei den neuen freetz Paketen ist das Standard root Passwort +nicht mehr fritzbox, sondern freetz und muss nach dem ersten Einloggen +geändert werden. + +.. _SSH-ZugangohnePasswortPublicKeyAuthentication: + +SSH-Zugang ohne Passwort (Public Key Authentication) +---------------------------------------------------- + +.. _ZugangmitOpenSSH1: + +Zugang mit OpenSSH +~~~~~~~~~~~~~~~~~~ + +#. ``ssh-keygen``, alle Abfragen mit Enter bestätigen +#. ``cat ~/.ssh/id_rsa.pub`` +#. Ausgabe von ``cat`` kopieren + *Vorsicht: Je nach verwendeter Kommandozeile können Zeilenumbrüche + mitkopiert werden, welche mit Hilfe eines Editors (Key in Editor + kopieren, Zeilenumbrüche entfernen, Key wieder kopieren) entfernt + werden sollten.* +#. Webinterface von Freetz öffnen, nach *Einstellungen* → *Authorized + keys* wechseln +#. vorher kopierten Key einfügen, *Übernehmen* +#. nun sind die serverseitigen Einstellungen abgeschlossen. Es gibt nun + 2 Möglichkeiten zum Einloggen: + + - Zugang vom selben PC und User, unter dem ``ssh-keygen`` ausgeführt + worden ist + ``ssh root@fritz.box`` + - Zugang von anderen PC oder User als ``ssh-keygen`` ausgeführt + worden ist + Wurde ``ssh-keygen`` als *user1@pc1* ausgeführt, man möchte jetzt + jedoch als *user2@pc2* Zugang über SSH auf die Fritzbox erhalten, + liegt das Problem darin, dass Dropbear *user2@pc2* nicht kennen + kann. Deshalb braucht user2 einen Ausweis, den ``ssh-keygen`` + standardmäßig im Heimatverzeichnis von user1 ``~/.ssh/id_rsa`` + ablegt und user2 zugänglich gemacht werden muss. ``id_rsa`` kann + dann beliebig umbenannt werden. Zum Einloggen über SSH auf die + Fritzbox kann nun über + ``ssh -i PfadZumIdentityFile root@fritz.box`` erfolgen (z.B. + ``ssh -i id_rsa root@fritz.box``). + Soll es jedoch genauso einfach gehen wie für *user1@pc1*, muss + einfach nur für jede Konstellation (*user1@pc2*, *user2@pc1*, …) + ssh-keygen genutzt werden um neue Schlüsselpaare zu erzeugen. Die + öffentlichen Schlüssel davon (i.d.R. ``id_rsa.pub``) sind dann + wieder in Freetz einzutragen. Jeder Schlüssel in eine eigene + Zeile. Es können quasi unendlich viele Schlüssel aufgelistet + werden. + +.. _ZugangmitPutty1: + +Zugang mit Putty +~~~~~~~~~~~~~~~~ + +#. ``puttygen`` starten +#. *Key/Generate Key Pair* +#. Maus über die leere Fläche bewegen +#. aus der Box *Public Key for pasting into …* Key komplett kopieren +#. *Save Private Key*, Warnung übergehen und in einem beliebigem + Verzeichnis mit beliebigem Namen speichern +#. Freetz Webinterface öffnen, nach *Einstellungen* → *Authorized keys* + wechseln +#. vorher kopierten Key einfügen, *Übernehmen* +#. ``putty`` starten +#. Einstellungen setzen + *Session/Host Name: fritz.box + Session/Port: 22* (bzw. die Einstellung unter *Pakete*, *Dropbear*) + *Session/Protocol: SSH* + *Connection/Data/Auto-login username: root* + *Connection/SSH/Auth/Private key file for authentication: Pfad zum + vorher gespeichertem Private Key* +#. Einstellungen speichern (optional) + bei *Session* → *Saved Sessions* beliebigen Namen (z.B. *fritzbox + ssh*) eingeben und *Save* drücken. Ab sofort kann dann per + Doppelklick auf den Namen die Verbindung aufgebaut werden (oder die + Einstellungen mit *Load* geladen werden) +#. *Open* + +.. _ZugangzurFritzboxvonaußerhalb: + +Zugang zur Fritzbox von außerhalb +--------------------------------- + +Um den SSH-Port von außen zu erreichen muß "lediglich" eine +Portweiterleitung eingerichtet werden. Leider verbietet mittlerweile das +AVM-Webinterface eine Weiterleitung auf die Box selbst. Es gibt aber ein +CGI-Paket namens AVM-Firewall, welches diese Restriktionen nicht hat: + +#. Paket CGI/AVM-Firewall mitinstallieren +#. im Menüpunkt AVM-Firewall im Freetz-Webinterface unter Ansicht "Port + Forwarding" auswählen +#. netterweise ist das was wir wollen schon voreingestellt: tcp + 0.0.0.0:22 0.0.0.0:22, also ein Forwarding von Port 22 auf Port 22 +#. die Buttons Hinzufügen und dann Übernehmen anklicken +#. den dsld, unter AVM-Dienste zu finden, neustarten + +Es kann Sinn machen Dropbear auf anderen Ports lauschen zu lassen, z.B. +um aus restriktiven Netzen herauszukommen. Dafür bieten sich Port +80(HTTP) und 443(HTTPS) an, da diese am notwendigsten sind. Wenn die +auch zu sind, ist Port 53(DNS) noch einen Versuch wert. Es können +alternativ oder zusätzlich zur obrigen Regel noch weitere für andere +Ports hinzugefügt werden. Hierzu den gewünschten Port in die obere, +etwas unglücklich, mit "(Start-)Port" Beschriftete Box eintragen. + +.. _ZugangzumWebinterfacederFritzboxoderanderenDienstenimHeimnetzvonaußerhalbz.B.hintereinemProxy: + +Zugang zum Webinterface der Fritzbox oder anderen Diensten im Heimnetz von außerhalb (z.B. hinter einem Proxy) +-------------------------------------------------------------------------------------------------------------- + +**Achtung, das Tunneln durch Proxies in Firmennetzen kann u.a. zur +Abmahnung oder sogar zur Kündigung führen. Entsprechende +Betriebsvereinbarungen bzw. Vertragsbestandteile sind unbedingt zu +berücksichtigen. Das Befolgen dieser Tipps erfolgt auf eigene Gefahr!** + +Wer von unterwegs Zugriff auf die Freetz-Oberfläche (Freetz-GUI) bzw. +die AVM-Oberfläche (AVM-GUI) benötigt, kann dafür ebenfalls PuTTY +verwenden (analog auch andere SSH-Tools). + +In Putty trägt man unter Proxy den Proxy ein. Unter Tunnels folgendes +(für das Freetz-GUI): + +.. code:: bash + + Source Port: 1081 {ein beliebiger, freier, lokaler Port} + Destination: 192.168.178.1:81 {die IP der Box im LAN) + +Nach dem Hinzufügen erscheint im PuTTY-Fenster unter "Forwarded Ports": + +.. code:: bash + + L1081 192.168.178.1:81 + +Entsprechend kann man sich das für das AVM-GUI (Port 80) einrichten: + +.. code:: bash + + Source Port: 1080 {ein beliebiger, freier, lokaler Port} + Destination: 192.168.178.1:80 {die IP der Box im LAN) + +Nach dem Starten der SSH-Session und dem Login ruft man dann das +Freetz-GUI so auf: + +.. code:: bash + + http://localhost:1081/ + +… und das AVM-GUI so: + +.. code:: bash + + http://localhost:1080/ + +Anmerkung: + +Damit der Zugriff auf das AVM-GUI (Port 80) funktioniert, muss man den +Referer unterbinden. Unter Firefox ist dazu der Wert für +`​network.http.sendRefererHeader <http://kb.mozillazine.org/Network.http.sendRefererHeader>`__ +unter about:config auf 0 (Null) zu setzen. Inwieweit dies auch für das +Freetz-GUI (Port 81) nötig ist, müsste noch ausgiebiger getestet werden. +Wer den Referer nicht benötigt, schaltet ihn wie oben beschrieben besser +ab. + +Es lassen sich auch Weiterleitungen auf beliebige Maschinen und Dienste +im Lan schalten. Z.B. Remotedesktopverbindung für eine Maschine im LAN: + +.. code:: bash + + Source Port: 3399 {ein beliebiger, freier, lokaler Port} + Destination: 192.168.178.21:3389 (die IP der gewünschten Maschine im LAN; statische DHCP-Leases sind hier vorteilhaft) + +im Remotedesktopclient dann: + +.. code:: bash + + localhost:3399 + +Noch mehr Spass bereitet die Tunneloption "Dynamic": Hier muss nur noch +der lokale, frei wählbare Quellport (z.B. 8888) angegeben werden. +Solange die SSH-Session offen ist, steht dann ein SOCKS-Proxy auf dem +angegebenen Port. Wenn man den Browser oder andere Programme mit diesem +Proxy konfiguriert (localhost:8888 in diesem Beispiel), lässt sich so +der gesamte Netzverkehr durch den Tunnel schieben. Das wird durch den +geringen Upstream üblicher DSL-Anschlüsse zwar etwas langsam, führt den +Netzverkehr aber sicher aus einem unsicheren Netz wie z.B. einem freien +WLAN heraus. + +.. _ZugangzuanderenRechnernmitderFritzbox: + +Zugang zu anderen Rechnern mit der Fritzbox +------------------------------------------- + +**Anmerkung**: In der folgenden Beschreibung wird der Host-Key, der für +den Server benötigt wird, gleichzeitig als Benutzer-Key (für den +Benutzer root) genutzt. Üblicher wäre es, dafür einen eignen +Benutzer-Key anzulegen. + +Freetz legt automatisch beim ersten Systemstart einen RSA und DSS +private key für die Fritzbox an. Diese liegen in ``/var/mod/etc/ssh/`` +in ``dss_host_key`` und ``rsa_host_key`` (als symlinks zu +``/tmp/flash``). Um nun auf einen anderen Rechner per public Key +authentication zugreifen zu können, ist erst einmal der public Key +nötig, den man mit ``# dropbearkey -f /tmp/flash/rsa_host_key -y`` zB +für den RSA key, auf dem Terminal ausgegeben bekommt. Diesen dann in die +``authorized_keys`` Datei des anderen Rechners kopieren, wie es bei SSH +üblich ist. + +Der nachfolgende Befehl kopiert den RSA key auf das Remote-System mit +der IP 192.168.178.2 für den User:user01 in die Datei +~/.ssh/authorized_keys + +.. code:: bash + + # dropbearkey -f /tmp/flash/rsa_host_key -y | ssh user01@192.168.178.2 'umask 077; cat >> .ssh/authorized_keys' + +Für einen Login ohne Passwort Angabe, muss das Keyfile wie im Beispiel +als Parameter angegeben werden. + +.. code:: bash + + # ssh -i /tmp/flash/rsa_host_key user@machine + +Dies liefert dann einen passwortlosen Login auf 'machine' wenn dort +vorher der public key hin kopiert wurde. + +.. _möglicheAnwendungvonssh: + +mögliche Anwendung von ssh +-------------------------- + +- Ausführen eines auf der Fritzbox abgelegten Skriptes + ``ssh root@fritz.box [command]`` bzw. + ``ssh -i identityfile root@fritz.box [command]`` (z.B. + ``ssh root@fritz.box '/var/tmp/flash/testscript.sh'`` zum Ausführen + von ``/var/tmp/flash/testscript.sh``) + +.. _möglicheProbleme: + +mögliche Probleme +----------------- + +- Sollte die Verbindung nach korrekter Passwortangabe auf Modellen mit + 4MB Flash Speicher abbrechen und auch Telnet Login scheitern ist es + wahrschinlich das das Kernel ohne pty devices gebaut ist. Hier hilft + die Aktivierung des Menüpunktes *Replace Kernel*. Getestet mit FBF + 5140 FW 43.04.67-freetz-1.1.3. +- *folgende Fehlermeldung nach Anmeldung mit ``ssh root@fritz.box``: + ``Permission denied (publickey).`` + Falls man sich mit einem Passwort einloggen möchte, muss + Password-Based Authentication aktiviert sein, was unter dem + Menüpunkt* Pakete *→* Dropbear *unter* Passwort Login\ *,* Aktiviert + *einstellen kann.* +- *folgende Warnung nach Anmeldung mit ``ssh root@fritz.box``: br] + \`The authenticity of host 'fritz.box (<deine Fritzbox IP>)' can't be + established.\` [[BR? ``RSA key fingerprint is XX:XX:...:XX:XX.`` + ``Are you sure you want to continue connecting (yes/no)?`` + Einfach mit* yes *bestätigen. Wird genau dann gefragt, wenn man sich + zum ersten Mal mit dem User auf die Fritzbox verbindet (bzw. der Host + in* ~/.ssh/known_hosts *nicht bekannt ist).* +- *folgende Warnung nach Anmeldung mit* ssh root@…\ *:* + + .. code:: bash + + @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ + @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! + Someone could be eavesdropping on you right now (man-in-the-middle attack)! + It is also possible that the RSA host key has just been changed. + The fingerprint for the RSA key sent by the remote host is XX:XX:...:XX:XX. + Please contact your system administrator. + Add correct host key in ~/.ssh/known_hosts to get rid of this message. + ... + + Einfach die *~/.ssh/known_hosts* löschen (wird automatisch neu + angelegt), oder die *~/.ssh/known_hosts* öffnen und entsprechende + Zeile, wo *fritz.box* erwähnt wird, löschen. Beim nächsten + Verbindungsversuch erscheint die oben erwähnte Warnung über eine + Unsicherheit über die Authentizität des Hosts, einfach mit *yes* + bestätigen. + +.. _Verbindungsaufbaubeschleunigen: + +Verbindungsaufbau beschleunigen +------------------------------- + +Wem der Aufbau einer Verbindung zu Dropbear nicht schnell genug geht, +hier ein paar Tipps: (Bei meiner Fritzbox 7050 hat es in letzter Zeit 5 +bis 6 Sekunden gedauert; Hauptursache sind laut einigen Einträgen auf +der Dropbear-Mailingliste wohl die aufwendigen Berechnungen bei +Schlüsselaustausch.) + +- Nutzt man OpenSSH als Client, gibt es die Möglichkeit, eine + bestehende Verbindung für weitere Zugriffe (ssh, scp) zu nutzen: + Siehe die Optionen ControlMaster, ControlPath, ControlPersist; + `​http://www.debian-administration.org/articles/290 <http://www.debian-administration.org/articles/290>`__ + +- In ``/etc/profile`` wird die Datei ``/etc/init.d/rc.conf`` gelesen, + was recht lange dauert. Als Alternative kann man deren Cache-Version + ``/var/env.cache`` lesen, die in ``rc.mod`` erstellt wird. + +Mit diesen beiden Maßnahmen verbinde ich mich nun (beim zweiten bis +n-ten Mal) in Sekundenbruchteilen mit meiner Fritzbox. + +- Tags +- `daemons </tags/daemons>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `server </tags/server>`__ diff --git a/wiki/packages/dtach.rst b/wiki/packages/dtach.rst new file mode 100644 index 0000000..c9a8eff --- /dev/null +++ b/wiki/packages/dtach.rst @@ -0,0 +1,59 @@ +dtach +===== + +*"dtach is a free (GPL'ed) program for POSIX-compliant OSs intended to +provide similar functionality to that of the GNU Project's Screen, but +stripping out what the developer (Ned T. Crigler) considers to be +unneeded features to provide a much slimmer product; in addition, it is +intended to interfere less with key bindings than Screen does."* +(source: Wikipedia - see below) + +*Dtach* is a tiny program that emulates the detach feature of +`screen <screen.html>`__, allowing you to run a program in an +environment that is protected from the controlling terminal and attach +to it later. It was introduced in Freetz trunk +`2636 </changeset/2636>`__ by whoopie. It is smaller than the +aforementioned *screen*. + +.. _Bedienung: + +Bedienung +--------- + +Erstellen einer neuen dtach-Session am Beispiel von +`mcabber <mcabber.html>`__: + +.. code:: bash + + dtach -c /tmp/mcabber.dtach mcabber + +Erstellen einer neuen dtach-Session, aber direkt wieder die Session +verlassen bzw. im Hintergrund starten: + +.. code:: bash + + dtach -n /tmp/mcabber.dtach mcabber + +Mit "*Strg + \\*" kann man die Session verlassen. + +Wieder in die Session "einklinken": + +.. code:: bash + + dtach -a /tmp/mcabber.dtach + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​Sourceforge-Projektseite + (Englisch) <http://dtach.sourceforge.net>`__ +- `​Wikipedia (Englisch) <http://en.wikipedia.org/wiki/Dtach>`__ +- `​Thread for discussion in + IP-Phone-Forum.de <http://www.ip-phone-forum.de/showthread.php?t=176923>`__ + +- Tags +- `console </tags/console>`__ +- `packages <../packages.html>`__ +- `tools </tags/tools>`__ diff --git a/wiki/packages/dtmfbox.rst b/wiki/packages/dtmfbox.rst new file mode 100644 index 0000000..2aa95d2 --- /dev/null +++ b/wiki/packages/dtmfbox.rst @@ -0,0 +1,276 @@ +.. _DTMFBox: + +DTMFBox +======= + +Der Name lässt es bereits vermuten: Eine "Box", die was mit "DTMF" macht +(*D*\ ual *T*\ one *M*\ ultiple *F*\ requency, siehe +`​Wikipedia <http://de.wikipedia.org/wiki/Mehrfrequenzwahlverfahren>`__), +welches sich durch Drücken auf die Telefontasten auslösen lässt. Somit +lässt sich ein Sprachmenü auf der FritzBox realisieren, welches Skripte +und Programme aufruft per "Knopfdruck". Mittels `eSpeak <espeak.html>`__ +kann man Texte auf dem Telefon ausgeben/abspielen. + +DTMFBox unterstützt SIP und CAPI. Ein Registrar ist ebenfalls +integriert, um Telefoniegeräte per SIP anzubinden +(`​Softswitch <http://de.wikipedia.org/wiki/Softswitch>`__). + +DTMFBox unterliegt der GPL - jeder ist also herzlich eingeladen, es zu +nutzen **und dazu beizusteuern** (indem z.B. selbst erstellte +Skripte/Aktionen auch für andere Nutzer verfügbar gemacht werden). + +**Derzeit funktioniert dieses Packet in den neueren Versionen nicht +mehr, die letzte Trunk version in der dieses Packet einwandfrei läuft +ist 5236** + +.. _Features: + +Features +-------- + +Mit *DTMFBox* wird uns ein mächtiges Werkzeug an die Hand gegeben. Hat +man sie ins Image eingebunden, ist noch eine einmalige "Installation" +nötig (dadurch hat man die Möglichkeit, das Ganze wahlweise im RAM oder +auf dem an die Box angeschlossenen USB-Stick unterzubringen). Alles, was +jetzt noch zu tun bleibt, ist die Einrichtung und Aktivierung von +Accounts (damit DTMFBox weiß, auf welche Rufnummern es reagieren soll) - +und schon stehen zahlreiche Funktionen zur Verfügung, z.B.: + +- Anrufbeantworter (der braucht noch seine Ansage als ``*.wav`` Datei - + oder man verwendet `eSpeak <espeak.html>`__) + + - Auflisten der Nachrichten im Freetz WebIF + - Versand eingehender Nachrichten per Mail und/oder Streaming per + FTP + - "Scheduling" (also z.B. "AB nur von 18:00 bis 09:00 Uhr (außerhalb + der Bürozeiten)" + +- Info-Menü z.B. zum + + - Erfragen der Uhrzeit + - Erfragen der aktuellen IP Adresse (wenn z.B. DDNS mal hängt) + - Mail Check ("Es gibt x neue Nachrichten") + - Webradio + - Wetterdienst + +- CallThrough/CallBack nach PIN-Eingabe +- SIP-Registrar (ISDN/Analog Telefone per SIP anbinden) +- Webphone (Java-App) zum telefonieren ohne Telefon - dafür mit Headset + am PC + +All diese Dienste sind bereits weitgehend vorkonfiguriert - man muss sie +meist nur noch Aktivieren (per Default sind die meisten Sachen +deaktiviert, sofern sie automatische Aktionen auslösen würden - wie z.B. +der Anrufbeantworter). + +Ansonsten sind der Fantasie kaum Grenzen gesetzt, wozu sich DTMFBox noch +verleiten ließe. Als Beispiel für zusätzliche Features sei die +"CallCenter Bremse" genannt, mit Hilfe derer man sich vor anonymen +"WolleRoseKaufe" Anrufern ein wenig schützen kann (wie das geht, findet +sich in `​diesem +Forumsbeitrag <http://www.ip-phone-forum.de/showthread.php?p=1169484>`__), +oder das Starten von Programmen nach PIN-Eingabe. + +.. _Einrichtung: + +Einrichtung +----------- + +Wie bereits oben angedeutet, sind zunächst ein paar vorbereitende +Schritte notwendig: + +- Einbinden ins Image + für Sprachfunktionen kann hier zusätzlich das `eSpeak + Paket <espeak.html>`__ ausgewählt, und bei DTMFBox der eSpeak Support + aktiviert werden. Ohne dies geht es auch über Webstream, der + allerdings eine Internet-Verbindung voraussetzt)) +- Image installieren (oh, wirklich?) +- Im Freetz-Menü einen der DTMFBox Menüpunkte auswählen, und DTMFBox + wahlweise im RAM oder auf USB installieren +- Accounts einrichten +- DTMFBox manuell starten +- ggf. DTMFBox für automatischen Start konfigurieren, damit es nach + einem Neustart der Box auch ohne Eingreifen des Besitzers/Betreibers + wieder aktiv wird + +.. _Konfiguration: + +Konfiguration +------------- + +Was und wie das geht, verrät Euch die gute und umfangreiche +Online-Hilfe. Sicher ließe sich diese auch nochmal komplett im Wiki +unterbringen - das hieße dann aber, sie an zwei Stellen pflegen zu +müssen; dabei bleibt erfahrungsgemäß eine Kopie "weniger aktuell". Die +Hilfe im Paket selbst wird vom Autoren mitgepflegt - für Details sei +also auf jene verwiesen. Hier wollen wir nur einen kurzen Einblick +geben, wie einfach die Konfiguration zu bewerkstelligen ist. Ich beziehe +mich damit auf Version 0.5.0 des Paketes - für spätere Versionen mag das +hier beschriebene u.U. zumindest teilweise "überholt" sein. + +Die Konfiguration erfolgt primär, wer hätte das gedacht, bequem über das +Freetz WebIF. "Primär" heißt hier nicht, dass man noch woanders tätig +werden *muss* - sondern dass der "versierte Anwender" auch über das +Dateisystem an Konfigurationsdatei und/oder Skripten arbeiten *kann*. + +.. _Accounts: + +Accounts +~~~~~~~~ + +Das hier ist ein *Muss* - ohne bleibt DTMFBox funktionslos, und wenn man +es noch so oft startet… + +Wie das meiste, sind auch die "Accounts" bereits ein wenig +vorkonfiguriert - es ist also wirklich nicht viel zu tun. Im Menüpunkt +"Basis" klappt man die Drop-Down Box auf, und wählt z.B. "acc1" +("Account `#1 </ticket/1>`__") aus. Nun werden auf der Seite die Details +angezeigt. Was nun getan werden muss, ist eigentlich nur dem Account +einen Namen zu geben (damit man ihn später "erkennt"), die zugehörige +Rufnummer (ohne Vorwahl - also die "MSN") eintragen (Achtung - nur wenn +die Anlage am ISDN-Bus hängt, für analoge Anschlüsse kommt die "MSN" in +den Namen, und bei Nummer trägt man "unknown" ein), und den Account +aktiviert - das war's im Wesentlichen. + +Nach dem Einrichten der Accounts (und ggf. weiterer Konfiguration - auf +jeden Fall vor dem Verlassen der "Basis" Seite) das Speichern nicht +vergessen, sonst war alles umsonst… + +Hier habe ich nur das Einrichten von ISDN bzw. Analoganschlüssen +beschrieben. DTMFBox kann aber auch mit VoIP (über CAPI sowie über SIP) +umgehen, und man kann sogar ISDN/Analoges über SIP abwickeln. Passende +Informationen finden sich in der Online-Hilfe, und würden diesen Artikel +sprengen - daher entfallen sie hier. + +Ruft man nun bei sich selbst an, und gibt den Menücode ein (Beispiel: +**600), können die bereits vorkonfigurierten Aktionen +(siehe**\ `oben <dtmfbox.html#Features>`__\ **) benutzt werden.** + +.. _InternesMenü: + +Internes Menü +~~~~~~~~~~~~~ + +Das interne Menü kann über die Kurzwahl des Accounts erreicht werden. +Standardmäßig gilt dies zunächst nur für ISDN. Die DTMFBox empfängt die +Meldungen auf Controller 3 und kann somit das Gespräch bei Eingabe der +Kurzwahl an das interne Menü weiterleiten. + +Bei Analog geht dies nicht, da keine Meldungen auf dem internen S0 +eintreffen! Man kann das Menü aber dennoch, mithilfe des +Registrar-Modus, erreichen: + +- Registrar-Modus aktivieren (Basiseinstellungen → voip) +- Registrierungsdaten im Account hinterlegen und aktivieren + (Basiseinstellungen → accX) +- Im AVM-Webinterface einen Internet-Telefonieaccount anlegen. Z.B.: + + - Internettelefonie-Anbieter: (anderer Anbieter) + - Internetrufnummer: 81 + - Registrar: 192.168.178.1:5061 (IP der FB und SIP-Port der DTMFBox + angeben) + - Benutzername: (Benutzername) + - Passwort: (Passwort) + - Rufnummernformat anpassen: (nichts auswählen) + +Jetzt die DTMFBox neu starten und den SIP-Account anwählen + Kurzwahl. + +Bei dem ersten Internettelefonie-Account und der Kurzwahl 801 wäre das: +\*121#801 + +.. _MenüSkriptebearbeiten: + +Menü/Skripte bearbeiten +~~~~~~~~~~~~~~~~~~~~~~~ + +Natürlich lassen sich die vorkonfigurierten Menüs auch anpassen und/oder +erweitern. So können neue Aktionen und/oder Skripte hinzugefügt, +bestehende angepasst, oder auch "ungewollte" gelöscht werden. Alles +völlig unkompliziert über das WebIF. Trotz der umfangreichen +Möglichkeiten, die DTMFBox bietet, ist dies alles weit weniger +kompliziert, als man befürchten mag. + +Wie man bestehende Aktionen erweitert oder weitere Funktionalitäten +hinzufügt, geht über diesen Artikel hinaus - für ein Beispiel sei +nochmals auf den `​Forums-Artikel zum +CallCenter-Bremser <http://www.ip-phone-forum.de/showthread.php?p=1169484>`__ +hingewiesen, der das recht gut erläutert - und natürlich auf die +Online-Hilfe. + +.. _eSpeakanpassen: + +eSpeak anpassen +~~~~~~~~~~~~~~~ + +Wem die Sprachausgabe in der Standard-Konfiguration nicht so recht +zusagt, der kann sie freilich auch noch anpassen. Die entsprechenden +Informationen finden sich hinter dem Link **dtmfbox-skript**, wenn man +etwas weiter nach unten scrollt. Folgende Optionen stehen da zur +Disposition: + ++-----------------------------------+-----------------------------------+ +| \| Option | \| Erklärung | ++-----------------------------------+-----------------------------------+ +| Modus | Hier lässt sich einstellen, | +| | welcher Modus verwendet werden | +| | soll - was natürlich abhängig von | +| | den installierten Optionen ist. | +| | Von der Qualität sind | +| | **Webstream** und **installiert** | +| | gleich - wobei **installiert** | +| | logischerweise nur ausgewählt | +| | werden sollte, wenn eSpeak auch | +| | direkt auf der Box installiert | +| | ist. Bei **Beep** wird lediglich | +| | ein Piepton ausgegeben. | ++-----------------------------------+-----------------------------------+ +| Language | Was das wohl ist? Tipp: | +| | ISO-Kürzel für Deutsch ist "de" | ++-----------------------------------+-----------------------------------+ +| Typ | Sprecher-Auswahl. Hier stehen | +| | verschiedene männliche (m1..mx) | +| | und weibliche (w1..wx) Stimmen | +| | zur Verfügung. | ++-----------------------------------+-----------------------------------+ +| Lautstärke | keine Ahnung |;-)| | ++-----------------------------------+-----------------------------------+ +| Geschwindigkeit | Von "nnaaaa jjaaaa" bis | +| | "kommstenochmit" (z.B. 170) | ++-----------------------------------+-----------------------------------+ +| Pitch | Tonhöhe - hier lassen sich aus | +| | männlichen Stimmen Soprane und | +| | aus weiblichen bärtige Ladies | +| | machen (z.B. 50) | ++-----------------------------------+-----------------------------------+ +| Pfade | Bei der standalone Version finden | +| | sich espeak, madplay usw. unter | +| | /var/dtmfbox/extras, sodass | +| | dieser Pfad hier voreingestellt | +| | ist. Bei der in Freetz | +| | integrierten Version liegen die | +| | Dinge wo anders |(*)|: | +| | **espeak:** ``/usr/bin``, | +| | **madplay:** ``/usr/bin``, | +| | **checkmaild:** ``/mod/etc`` | ++-----------------------------------+-----------------------------------+ +| | \*Achtung, das espeak Binary | +| | heisst "speak" - falls jemand | +| | danach sucht und sich wundert, | +| | dass man es unter ``/usr/bin`` | +| | nicht als "espeak" findet. | ++-----------------------------------+-----------------------------------+ + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​http://web.archive.org/web/20110830124914/http://dtmfbox.v3v.de/ <http://web.archive.org/web/20110830124914/http://dtmfbox.v3v.de/>`__ + +- Tags +- `packages <../packages.html>`__ +- `phone </tags/phone>`__ + +.. |;-)| image:: ../../chrome/wikiextras-icons-16/smiley-wink.png +.. |(*)| image:: ../../chrome/wikiextras-icons-16/asterisk.png + diff --git a/wiki/packages/e2fsprogs.rst b/wiki/packages/e2fsprogs.rst new file mode 100644 index 0000000..afb6250 --- /dev/null +++ b/wiki/packages/e2fsprogs.rst @@ -0,0 +1,29 @@ +e2fsprogs +========= + +**e2fsprogs** ist eine Tool-Sammlung zur Wartung von *ext2* and *ext3* +Dateisystemen. Diese Dateisysteme werden für gewöhnlich als Standard bei +den meisten Linux-Distributionen eingesetzt. Die Sammlung beinhaltet für +gewöhnlich: + +- **e2fsck** zum Überprüfen und ggf. reparieren der Dateisysteme +- **mke2fs** um *ext2*/*ext3* Dateisysteme zu erstellen +- **resize2fs** zum Vergrößern/Verkleinern von Dateisystemen +- **tune2fs** zur Einstellung von Dateisystem Parametern +- **dumpe2fs** zur Ausgabe von Superblock und Blockgruppen Information +- **debugfs** zur manuellen Anzeige bzw. Bearbeitung von Dateisystem + Strukturen + +Anders als es der Name vermuten lässt, ist diese Sammlung nicht auf +*ext2* beschränkt - sondern arbeitet auch mit *ext3*, welches ja +letztendlich auch nur eine Erweiterung von *ext2* darstellt. + +Weitere Informationen finden sich auf der `​e2fsprogs +Homepage <http://e2fsprogs.sourceforge.net/>`__, bei +`​Wikipedia <http://en.wikipedia.org/wiki/E2fsprogs>`__ und im +inoffiziellen `​FRITZ!Box +Wiki <http://wehavemorefun.de/fritzbox/PACKAGE_E2FSPROGS>`__. + +- Tags +- `filesystem </tags/filesystem>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/emailrelay.rst b/wiki/packages/emailrelay.rst new file mode 100644 index 0000000..8262c03 --- /dev/null +++ b/wiki/packages/emailrelay.rst @@ -0,0 +1,32 @@ +.. _E-MailRelay: + +E-MailRelay +=========== + +.. figure:: /screenshots/274.jpg + :alt: E-MailRelay + + E-MailRelay + +Von der Webseite des Herstellers: + + E-MailRelay is a simple SMTP proxy and store-and-forward message + transfer agent (MTA). When running as a proxy all e-mail messages can + be passed through a user-defined program, such as a spam filter, + which can drop, re-address or edit messages as they pass through. + When running as a store-and-forward MTA incoming messages are stored + in a local spool directory, and then forwarded to the next SMTP + server on request. + + E-MailRelay can also run as a POP3 server. Messages received over + SMTP can be automatically dropped into several independent POP3 + mailboxes. + +.. _HilfefürdieKonfiguration: + +Hilfe für die Konfiguration +--------------------------- + +| `​User guide <http://emailrelay.sourceforge.net/userguide.html>`__ +| `​Reference <http://emailrelay.sourceforge.net/reference.html>`__ +| `​Manpage <http://emailrelay.sourceforge.net/emailrelay-man.html>`__ diff --git a/wiki/packages/empty.rst b/wiki/packages/empty.rst new file mode 100644 index 0000000..cef9d63 --- /dev/null +++ b/wiki/packages/empty.rst @@ -0,0 +1,22 @@ +.. _Empty: + +Empty +===== + +**Empty** stellt eine Schnittstelle bereit, um mit Programmen in +Pseudo-Terminal Sessions +(`​PTYs <http://de.wikipedia.org/wiki/Pseudoterminal>`__) zu +kommunizieren. Sehr nützlich ist dies z.B. bei der Programmierung von +Shell-Skripten, die mit interaktiven Programmen wie +`​Telnet <http://de.wikipedia.org/wiki/Telnet>`__, +`SSH <dropbear.html>`__, +`​FTP <http://de.wikipedia.org/wiki/File_Transfer_Protocol>`__, usw. +arbeiten sollen. In einigen Fällen kann *Empty* der einfachste Ersatz +für `​TCL/expect <http://expect.nist.gov/>`__ und ähnliche +Programmiertools sein. + +- Tags +- `console </tags/console>`__ +- `packages <../packages.html>`__ +- `programming </tags/programming>`__ +- `tools </tags/tools>`__ diff --git a/wiki/packages/espeak.rst b/wiki/packages/espeak.rst new file mode 100644 index 0000000..fb0d261 --- /dev/null +++ b/wiki/packages/espeak.rst @@ -0,0 +1,72 @@ +.. _eSpeak: + +eSpeak +====== + +eSpeak ist ein "Text to Speech" Generator - oder, anders ausgedrückt, +ein "Vorlese-Programm", welches ASCII Texte mit synthetischer Stimme +wiedergeben ("vorlesen") kann. Bei Freetz wird es u.a. von +`DTMFBox <dtmfbox.html>`__ genutzt. + +.. _Installation: + +Installation +------------ + +Zur Installation ist das Paket einfach im Paket-Menü von +``make menuconfig`` auszuwählen. Unterstützung für zahlreiche +zusätzliche Sprachen lassen sich nochmals (als "Bundle") auswählen, +sobald das Paket selbst ausgewählt wird. Dies macht spätestens dann +Sinn, wenn man auch mehrere Sprachen benötigt. + +Wer die Sprachausgabe lediglich für DTMFBox benötigt, muss das +eSpeak-Paket nicht zwangsweise installieren: DTMFBox unterstützt auch +sogenanntes "WebStreaming" (die Audio-Daten werden dann auf einem +anderen Server generiert) - was allerdings eine bestehende +Internet-Verbindung voraussetzt. + +.. _Aufruf: + +Aufruf +------ + +An dieser Stelle nur ein paar **kurze** Tipps zum Aufruf von eSpeak - +Details finden sich auf der +`​Projektseite <http://espeak.sourceforge.net/commands.html>`__: + +``espeak "Hallo Welt"`` sagt einfach "Hallo Welt" mit den +Default-Einstellungen. Das kann recht komisch klingen, wenn z.B. +Englisch als Default-Sprache eingestellt ist. Daher kann man sowohl +Sprache als auch Sprecher per Parameter übergeben: +``espeak -vde+f3 "Hallo Welt"`` lässt den gleichen Text von einer +deutschen Frauenstimme säuseln - richtig geraten: "-vde" wählt Deutsch +("-ven" Englisch), das "+f" steht für "feminin" (wovon es mindestens ++f1, +f2, +f3 verschiedene "Modelle" gibt), und es gibt auch (+m1, +m2, ++m3) "maskuline" Stimmen. Den "+XX" Teil kann man ebenfalls weglassen, +wenn nur die Sprache festgelegt werden soll. + +Sollte sich die Stimme überschlagen, so kann man mit dem Parameter +``-s`` am "Speed" drehen (``-s 170`` ist ein guter Ausgangswert). Auch +die Stimmhöhe lässt sich beeinflussen: ``-p 50`` setzt den "Pitch" auf +50 (guter Ausgangswert). Höhere Werte machen männliche Stimmen zu +Eunuchen - niedrigere transformieren "anwesendes Weibsvolk" zu "bärtigen +Ladies". + +.. _Hinweis: + +Hinweis +------- + +Das Executeable findet sich auf der Box unter ``/usr/bin/speak``. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​http://espeak.sourceforge.net <http://espeak.sourceforge.net>`__ + +- Tags +- `audio </tags/audio>`__ +- `packages <../packages.html>`__ +- `phone </tags/phone>`__ diff --git a/wiki/packages/fhem.rst b/wiki/packages/fhem.rst new file mode 100644 index 0000000..619b648 --- /dev/null +++ b/wiki/packages/fhem.rst @@ -0,0 +1,43 @@ +.. _FHEM: + +FHEM +==== + +`​FHEM <http://www.koeniglich.de/fhem>`__ ist ein Open Source Programm +zur Verwaltung von Geräten zur *Home Automation*. Der Focus liegt dabei +auf Geräten der FS20 Spezifikation von +`​Contronics <http://www.contronics.de/>`__ - es werden aber auch +weitere Systeme unterstützt. *FHEM* ist überwiegend in Perl geschrieben, +und nutzt den Apache Web Server zur Bereitstellung eines Web-Frontends, +mit dem sich die verfügbaren Geräte verwalten und Steuern lassen. + +.. _Installation: + +Installation +------------ + +Eine aktuelle Installationsanleitung findet sich unter +`​http://www.koeniglich.de/fhem/fritzbox.html <http://www.koeniglich.de/fhem/fritzbox.html>`__, +und setzt auf Freetz auf. Da die dortige Seite vom Entwickler selbst +gepflegt (und somit aktuell gehalten) wird, möchte ich diese +Informationen hier nicht duplizieren. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​http://www.fs20-forum.de/ <http://www.fs20-forum.de/>`__ — Das + Forum rund um FS20 +- `​http://www.fhz-forum.de/ <http://www.fhz-forum.de/>`__ — Forum für + die FS20 Steuer-Zentralen FHZxxxx +- `​http://fhz4linux.info/tiki-index.php <http://fhz4linux.info/tiki-index.php>`__ + — FHZxxxxPC unter Linux +- `fhzctrl <fhzctrl.html>`__ ist eine resourcenschonendere, aber auch + weniger mächtige Variante + +- Tags +- `addons </tags/addons>`__ +- `homeautomation </tags/homeautomation>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/fhzctrl.rst b/wiki/packages/fhzctrl.rst new file mode 100644 index 0000000..b362c41 --- /dev/null +++ b/wiki/packages/fhzctrl.rst @@ -0,0 +1,25 @@ +fhzctrl +======= + +`​fhzctrl <http://fhzctrl.sourceforge.net/>`__ ist ein Unix-Tool zum +Management von *Home Automation* Anlagen der FS20 Spezifikation von +`​Contronics <http://www.contronics.de/>`__. Es unterstützt "normale" +i386 Architekturen und MIPS AR7 Router wie die FritzBox. + +Für *fhzctrl* gibt es (noch) kein Freetz-Paket - es wäre aber sicher +eine gute Sache, und wird bald vorhanden sein (hoffe ich). + +Wie der Name bereits suggeriert, setzt *fhzctrl* eine Zentrale +(**F**\ S20 **H**\ aus **Z**\ entrale) aus der Baureihe *FHZ1x00PC* +voraus. Es ist auch bei weitem nicht so mächtig wie etwa +`packages/fhem <fhem.html>`__ - dafür aber auch weit +resourcenschonender; es wird z.B. kein Apache benötigt. + +Weiteres bitte den gesetzten Links entnehmen, bis jemand diesen Artikel +ggf. entsprechend erweitert. + +- Tags +- `addons </tags/addons>`__ +- `homeautomation </tags/homeautomation>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/fortune.rst b/wiki/packages/fortune.rst new file mode 100644 index 0000000..edd931e --- /dev/null +++ b/wiki/packages/fortune.rst @@ -0,0 +1,88 @@ +fortune +======= + +| Das Computerprogramm Fortune ist traditionell auf Computern mit Unix + oder Linux als Betriebssystem zu finden. Es existieren aber auch für + Windows entsprechende Programme. +| Seine Funktion besteht darin, "fortune cookies" (Glückskekse) und + andere humorvolle Aphorismen anzuzeigen. +| Dank an `​zyrill <http://www.ip-phone-forum.de/member.php?u=234921>`__ + für dieses sinnfreie aber äußerst lustige Paket. So macht Konsole + wieder Spaß. + +.. _Paketkonfigurieren: + +Paket konfigurieren +------------------- + +.. figure:: /screenshots/220.png + :alt: Fortune Einstellungen + + Fortune Einstellungen + +| Falls man das Paket fortune im menuconfig ausgewählt hat kann man es + über das Webinterface konfigurieren. Dazu ist nur der Pfad mit den + Keksen anzugeben und nach dem Speichern kann man sich sofort an den + Sprüchen erfreuen. Solche fortune-Dateien findet man zum Beispiel + `​hier <http://www.freebsd.org/cgi/cvsweb.cgi/src/games/fortune/datfiles/>`__. + +.. _AnzeigenvonfortunesbeimKonsolen-Login: + +Anzeigen von fortunes beim Konsolen-Login +----------------------------------------- + +| Meist werden fortunes automatisch beim Systemstart oder Einloggen + gestartet. Das Unix-Shell-Kommando für Fortune ist **fortune** +| Um dies zu bewerkstelligen, müssen die entsprechenden Befehle in die + *.profile* im HOME-Directory des users eingefügt werden. +| Dies kann zum einen über das Freetz-Webinterface unter + *Freetz:.profile* geschehen, oder über die Konsole in der + */var/mod/root/.profile* +| Folgendes reicht dafür aus: + +.. code:: bash + + echo + /usr/bin/fortune + echo + +| +| Nach erfolgtem Login auf der Box per telnet bzw. ssh begrüßt die Box + euch mit einem zufällig gewählten Glückskeks: + +.. code:: bash + + __ _ __ __ ___ __ + |__ |_) |__ |__ | / + | |\ |__ |__ | /_ + + The fun has just begun... + + BusyBox v1.15.3 (2010-01-21 20:22:22 CET) built-in shell (ash) + Enter 'help' for a list of built-in commands. + + ermittle die aktuelle TTY + tty is "/dev/pts/0" + Console Ausgaben auf dieses Terminal umgelenkt + + GRAMMAR IS NOT A TIME OF WASTE + GRAMMAR IS NOT A TIME OF WASTE + GRAMMAR IS NOT A TIME OF WASTE + GRAMMAR IS NOT A TIME OF WASTE + + Bart Simpson on chalkboard in episode AABF10 + + /var/mod/root # + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​fortune auf + Wikipedia <http://en.wikipedia.org/wiki/Fortune_%28Unix%29>`__ +- `​fortune man page <http://linux.die.net/man/6/fortune>`__ +- `​IPPF-Thread <http://www.ip-phone-forum.de/showthread.php?t=196686>`__ + +- Tags +- `packages <../packages.html>`__ diff --git a/wiki/packages/fritzload.rst b/wiki/packages/fritzload.rst new file mode 100644 index 0000000..b835a93 --- /dev/null +++ b/wiki/packages/fritzload.rst @@ -0,0 +1,52 @@ +.. _FritzLoad: + +FritzLoad +========= + +`​FritzLoad <http://sourceforge.net/apps/trac/avmload/>`__ ist eine +Software die automatisiert Dateien von bzw. zu Sharehostern herunter- +und hochladen kann und diese auf einem gemounteten Medium (z.B. +USB-Stick) ablegt. + +| |Warning| Es ist kein Bestandteil von Freetz und wird nicht von Freetz + supportet! +| Bei Fragen oder Problemen bitte auf der `​FritzLoad + Homepage <http://sourceforge.net/apps/trac/avmload/>`__ oder im + passenden + `​IPPF-Thread <http://www.ip-phone-forum.de/showthread.php?t=147334>`__ + nachschauen. + +.. _ProblememitFreetz: + +Probleme mit Freetz +------------------- + +Es hat sich gezeigt, dass FritzLoad + +- das Starten der Fritzbox durch eine Warteschleife verzögert + (`​Link <http://sourceforge.net/apps/trac/avmload/ticket/1320>`__) +- Probleme mit external und onlinechanged verursacht +- es sich nicht ordnungsgemäß beendet und damit das Aushängen von + Datenträgern verhindert (`#910 </ticket/910>`__) + +|Warning| Deshalb: Vor einer Ticketerstellung bitte ohne FritzLoad testen. + +.. _GründeundmöglicheLösungen: + +Gründe und mögliche Lösungen +---------------------------- + +FritzLoad installiert in rc.custom das selbe Script das ohne Freetz in +debug.cfg genutzt würde. Dadurch werden unnötige Warteschleifen +hinzugefügt und rc.custom läuft dauerhaft. + +Eine bessere und Freetz-konformere Lösung wäre hier ein separates +Init-Script für Freetz dem Paket hinzuzufügen das in autorun.sh +gestartet und in autostop.sh gestoppt würde. Auf jegliche Installation +jenseits Entpacken auf den Stick könnte dann auch verzichtet werden, und +FritzLoad wäre zur Fehlersuche jederzeit im Handumdrehen "abziehbar". + +Diese Lösung sollte dann auch vom FritzLoad Autor gepflegt werden. + +.. |Warning| image:: ../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/packages/fstyp.rst b/wiki/packages/fstyp.rst new file mode 100644 index 0000000..3c3e2e7 --- /dev/null +++ b/wiki/packages/fstyp.rst @@ -0,0 +1,15 @@ +fstyp +===== + +**fstyp** erlaubt es einem Anwender, den Dateisystem-Typ eines +eingebundenen oder auch nicht eingebundenen Dateisystems zu ermitteln. + +| In Freetz wird fstyp von freetzmount genutzt, um das Dateisystem zu + erkennen und korrekt zu mounten. +| Hinweis: Bei Verwendung der Option "mount-by-Label" wird das ganze + durch **blkid** erledigt (und fstyp wird hierfür überflüssig). Hat + aber den Nachteil, dass das Image etliche Kilobyte größer wird. + +- Tags +- `filesystem </tags/filesystem>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/fuse.rst b/wiki/packages/fuse.rst new file mode 100644 index 0000000..de9ad2e --- /dev/null +++ b/wiki/packages/fuse.rst @@ -0,0 +1,45 @@ +.. _FUSE: + +FUSE +==== + +`​FUSE <http://de.wikipedia.org/wiki/Filesystem_in_Userspace>`__ +(`​Filesystem <http://de.wikipedia.org/wiki/Dateisystem>`__ in +`​Userspace <http://de.wikipedia.org/wiki/Userspace>`__) ist ein +`​Kernel-Modul <http://de.wikipedia.org/wiki/Kernel-Modul>`__, das es +ermöglicht, Dateisystem-Treiber aus dem +`​Kernel-Mode <http://de.wikipedia.org/wiki/Betriebssystemkern>`__ in +den `​User-Mode <http://de.wikipedia.org/wiki/Ring_(CPU)>`__ zu +verlagern. Auf diese Weise können auch nicht-priviligierte Benutzer +(also jene, die nicht *root* heißen) Dateisysteme einbinden bzw. +erstellen. Die *FUSE* Module agieren quasi als "Bridge" zu den +Kernel-Schnittstellen. + +*FUSE* lässt sich besonders gut einsetzen, um virtuelle Dateisysteme zu +verwirklichen. Anders als bei traditionellen Dateisystemen, die sich um +das Speichern und Laden von Daten auf der Disk zu kümmern haben, +speichern virtuelle Dateisysteme selbst keine Daten. Sie sind vielmehr +eine "View" oder "Übersetzung" eines bereits existierenden Datei- oder +Speichersystems. Im Prinzip kann jede für *FUSE* verfügbare Resource als +Dateisystem exportiert werden. + +In Freetz basiert z.B. das `NTFS <ntfs-3g.html>`__ Paket auf *FUSE*. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​Wikipedia: + FUSE <http://de.wikipedia.org/wiki/Filesystem_in_Userspace>`__ +- `​FUSE Project Homepage <http://fuse.sourceforge.net/>`__ + (Sourceforge) +- `​Official list of FUSE + filesystems <http://fuse.sourceforge.net/wiki/index.php/FileSystems>`__ +- `​Develop your own filesystem with + FUSE <http://www.ibm.com/developerworks/linux/library/l-fuse/>`__ +- s3fslite für Freetz: `#796 </ticket/796>`__ + +- Tags +- `filesystem </tags/filesystem>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/gw6.rst b/wiki/packages/gw6.rst new file mode 100644 index 0000000..9502fc0 --- /dev/null +++ b/wiki/packages/gw6.rst @@ -0,0 +1,21 @@ +gw6 +=== + +gw6 ist ein IPv6 Client für +`​gogo6/freenet6 <http://gogonet.gogo6.com/page/freenet6-services>`__ + +| Eine anonyme Nutzung ohne Registrierung ist möglich, mit einem Account + hingegen bekommt man ein ganzes Subnetz zugeteilt. +| Falls es Probleme beim Einloggen gibt kann man einen eigenen + Broker-Server einstellen, z.B. amsterdam.freenet6.net + +.. _Alternativen: + +Alternativen +------------ + +- `Aiccu <aiccu.html>`__ für SixXS + +- Tags +- `network </tags/network>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/haserl.rst b/wiki/packages/haserl.rst new file mode 100644 index 0000000..591b62b --- /dev/null +++ b/wiki/packages/haserl.rst @@ -0,0 +1,86 @@ +.. _Haserl: + +Haserl +====== + +"*Haserl is a small program that uses shell or Lua script to create cgi +web scripts. It is intended for environments where PHP or ruby are too +big.* + +*It was written for Linux, but is known to run on FreeBSD. A typical use +is to run cgi scripts in an embedded environment, using a small web +server, such as mini-httpd, lighty, or the server built into busybox.*" + +.. _Usingbusyboxhttpdinet: + +Using busybox httpd / inet +-------------------------- + +Inetd custom config: + +.. code:: bash + + #:httpd-start: test web interface + 8088 stream tcp nowait root /var/media/ftp/uFlash/httpd/httpd-start httpd-start -i + +httpd-start: + +.. code:: bash + + #!/bin/sh + + export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/mod/sbin:/mod/bin:/mod/usr/sbin:/mod/usr/bin + export LD_LIBRARY_PATH=/mod/lib + + homedir=/var/media/ftp/uFlash/httpd/www + config=/var/media/ftp/uFlash/httpd/httpd.conf + + cd "$homedir" + exec httpd "$@" -p 8088 -c "$config" -h "$homedir" -r "Freetz" 2>/dev/null + +Allow execution: + +.. code:: bash + + chmod +x httpd-start + +httpd.conf can be an empty file: + +.. code:: bash + + touch httpd.conf + +/var/media/ftp/uFlash/httpd/www/cgi-bin/info.cgi: + +.. code:: bash + + #!/usr/bin/haserl --shell=lua + Content-Type: text/html; charset=UTF-8 + + <html> + <body> + <h1>Info</h1> + <% for n,v in pairs(ENV) do print(n, v, '<br />') end %> + </body> + </html> + +Allow execution: + +.. code:: bash + + chmod +x info.cgi + +Test: +`​http://fritz.box:8088/cgi-bin/info.cgi <http://fritz.box:8088/cgi-bin/info.cgi>`__ + +.. _Links: + +Links +----- + +- `​Homepage <http://haserl.sourceforge.net/>`__ +- `Patch for LUA support </ticket/1326>`__ + +- Tags +- `packages <../packages.html>`__ +- `web </tags/web>`__ diff --git a/wiki/packages/hd-idle.rst b/wiki/packages/hd-idle.rst new file mode 100644 index 0000000..7eeb4cc --- /dev/null +++ b/wiki/packages/hd-idle.rst @@ -0,0 +1,22 @@ +hd-idle +======= + +`​hd-idle <http://hd-idle.sourceforge.net/>`__ ist ein Tool, um externe +Festplatten nach einer festgelegten "Idle-Zeit" (also "Nix-Tun") +herunterzufahren ("Spin-Down"). Da die meisten externen +IDE-Festplatten-Gehäuse das Setzen eines "Idle-Timers" nicht erlauben, +wird ein Utility wie *hd-idle* (oder das mit Freetz ebenfalls verfügbare +`spindown-CGI <spindown.html>`__) benötigt, um den Job zu erledigen. + +Es gibt, herstellerabhängig 3 verschiedene Powermodes: + +.. code:: bash + + active/idle (normal operation) + standby (low power mode, drive has spun down) + sleeping (lowest power mode, drive is completely shut down) + +- Tags +- `filesystem </tags/filesystem>`__ +- `hardware </tags/hardware>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/hiawatha.rst b/wiki/packages/hiawatha.rst new file mode 100644 index 0000000..4aee6e8 --- /dev/null +++ b/wiki/packages/hiawatha.rst @@ -0,0 +1,67 @@ +hiawatha +======== + +"*Hiawatha is a webserver for Unix and has been build with security in +mind. This resulted in a highly secure webserver, in both code and +features. This webserver runs on Linux, BSD, MacOS X and Windows. +Although it can run any kind of CGI / FastCGI application, it has been +optimized for usage with PHP.*" + +.. _Quickcompare: + +Quick compare +------------- + ++------------+---------------------+---------------------+ +| | **Memory** :sup:`1` | **Binary** :sup:`2` | ++------------+---------------------+---------------------+ +| *hiawatha* | ~1320 kB | ~105 kB | ++------------+---------------------+---------------------+ +| *lighttpd* | ~1768 kB | ~409 kB | ++------------+---------------------+---------------------+ + +#. After one request "*Hello world!* " +#. Minimal menuconfig, including libraries, excluding *pthread*, + *md5sum* + +.. code:: bash + + -rwxr-xr-x 1 root root 105788 Apr 25 20:29 hiawatha + -rwxr-xr-x 1 root root 150324 Apr 25 10:56 lighttpd + -rwxr-xr-x 1 root root 5496 Apr 25 10:56 mod_access.so + -rwxr-xr-x 1 root root 16772 Apr 25 11:11 mod_dirlisting.so + -rwxr-xr-x 1 root root 6320 Apr 25 10:56 mod_indexfile.so + -rwxr-xr-x 1 root root 10584 Apr 25 10:56 mod_staticfile.so + -rwxr-xr-x 1 root root 219916 Apr 24 08:54 libpcre.so.0.0.1 + +.. _Security: + +Security +-------- + +You might want to add this or similar to the extra configuration: + +.. code:: bash + + BanOnGarbage = 300 + BanOnMaxPerIP = 60 + BanOnMaxReqSize = 300 + KickOnBan = yes + RebanDuringBan = yes + +And you might want to limit the number of simultaneous connections too: + +.. code:: bash + + ConnectionsTotal = 5 + ConnectionsPerIP = 3 + +.. _Links: + +Links +----- + +- `​Homepage <http://www.hiawatha-webserver.org/>`__ +- `Ticket with patches </ticket/1139>`__ +- `​Linux magazine about + hiawatha <http://www.linux-magazine.com/Issues/2009/107/Hiawatha>`__ diff --git a/wiki/packages/hol.rst b/wiki/packages/hol.rst new file mode 100644 index 0000000..1540d1d --- /dev/null +++ b/wiki/packages/hol.rst @@ -0,0 +1,68 @@ +| Halt-on-Lan ist ein Paket zum Steuern vom Rechner im lokalen Netz von + der FritzBox heraus. Es basiert auf + `​poweroff.exe <http://users.telenet.be/jbosman/poweroff/poweroff.htm>`__ + einem Skript für Windows-Rechner, redet seine Sprache und ermöglicht + den Rechner herunterzufahren, neu zu starten und einige weitere + Aktionen. +| Seit `r5024 </changeset/5024>`__ ist HOL-Paket im trunk. +| Langfristig ist angedacht HOL mit WOL zu verbinden und HOL-Aktionen + aus dem erweiterten WOL-WebIF zu ermöglichen. Momentan ist es noch + nicht implementiert und man sollte sich mit der Kommandozeile + befreunden: + +.. code:: bash + + /var/mod/root # hol + hol v1.0 Halt-On-Lan script + Author hermann72pb <http://www.ip-phone-forum.de/member.php?u=80424> + + Usage: hol HOST [ACTION TIME MESSAGE] + HOST Hostname or ip address: e.g. my.computer or 192.168.178.20 + ACTION Actions for poweroff: e.g. shutdown, reboot, logoff, lock, etc. + TIME time in seconds for warning before the action: + e.g. 10 or 0 for no warning + MESSAGE Warning message: e.g. Please close all your files + /var/mod/root # hol 192.168.178.20 + /var/mod/root # hol 192.168.178.20 lock + /var/mod/root # hol MeinPC monitor_off 15 + /var/mod/root # hol DeinNotebook monitor_off 15 "Hey, du\nschalte aus!" + +Man kann aber schon jetzt die HOL-Aufrufe als callmonitor-Aktionen oder +als cron-Einträge benutzen. Zur Konfiguration der Default-Aktionen und +sonstiger Parameter gibt es eine Konfigurationsseite zum Paket HOL im +FREETZ-WebIF. Aus dieser Konfigurationseite ist es jedoch nicht möglich, +die Aktionen zu initiieren. + +| Weitere Informationen und Diskussion zum HOL-Paket können dem + entsprechenden + `​Thread <http://www.ip-phone-forum.de/showthread.php?t=211366>`__ in + IPPF entnommen werden. +| Um den Rechner von der FritzBox ansteuern zu können, muss auf dem + Rechner eine poweroff.exe-kompatible Anwendung laufen. Das kann z.B. + `​poweroff.exe <http://users.telenet.be/jbosman/poweroff/poweroff.htm>`__ + selbst sein. Da + `​poweroff.exe <http://users.telenet.be/jbosman/poweroff/poweroff.htm>`__ + leider nicht richtig und nicht zuverlässig zu funktionieren scheint, + wurde vom Benutzer + `​linuxkasten <http://www.ip-phone-forum.de/member.php?u=217599>`__ + aus IPPF eine Alternative dafür + (`​remotehalt <http://www.nefkom.info/crats/software/remotehalt/>`__) + für Windows geschrieben. Es wird empfohlen ab jetzt + `​remotehalt <http://www.nefkom.info/crats/software/remotehalt/>`__ + anstatt von + `​poweroff.exe <http://users.telenet.be/jbosman/poweroff/poweroff.htm>`__ + zu benutzen. +| Auch für Linux-Anweder werden gerade passende Lösungen erarbeitet. Zum + einen existiert eine getarte + `​Sammlung <http://www.ip-phone-forum.de/showpost.php?p=1501078&postcount=1>`__ + zum entpacken und selbst installieren, zum anderen gibt es dafür auch + eine + `​inetd-Variante <http://www.ip-phone-forum.de/showpost.php?p=1553804&postcount=39>`__. +| Sobald alle rechnerseitigen Anwendungen vollständig implementiert und + ausreichend getestet sind, werden hier die + `Download <../Download.html>`__-Informationen dafür überarbeitet. + +- Tags +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `tools </tags/tools>`__ diff --git a/wiki/packages/hp-utils.rst b/wiki/packages/hp-utils.rst new file mode 100644 index 0000000..7c84f30 --- /dev/null +++ b/wiki/packages/hp-utils.rst @@ -0,0 +1,37 @@ +hp-utils +======== + +`​hp-utils <http://www.michaeldenk.de/projects/hp-utils/>`__ ist eine +Portierung einiger Tools von `​HPLIP <http://hplipopensource.com/>`__ +von Python nach C. hp-utils greift dabei auf die Bibliothek libhpmud +zurück und setzt das Paket `HPLIP <hplip.html>`__ voraus. + +hp-utils stellt Commandline-Tools zur Verfügung und bietet auch ein +Web-Interface (standardmäßig unter +`​http://fritz.box:83/ <http://fritz.box:83/>`__), das derzeit den +Druckerstatus und Tintenstand anzeigt und mit dem man eine +Druckkopfreinigung starten kann. + +Folgende Tools sind enthalten: + ++-----------------------------------+-----------------------------------+ +| **hp-probe** | Probe connected HP devices. | ++-----------------------------------+-----------------------------------+ +| **hp-status** | Display current status for | +| | supported HPLIP printers. | ++-----------------------------------+-----------------------------------+ +| **hp-levels** | Display bar graphs of current | +| | supply levels for supported HPLIP | +| | printers. | ++-----------------------------------+-----------------------------------+ +| **hp-clean** | Cartridge cleaning utility for | +| | HPLIP supported inkjet printers. | ++-----------------------------------+-----------------------------------+ +| **hp-printserv** | Simple print server. | ++-----------------------------------+-----------------------------------+ +| **hp-timedate** | Set the time and date on an HP | +| | Officejet. | ++-----------------------------------+-----------------------------------+ +| **hp-faxsetup** | Setup fax settings on an HP | +| | Officejet. | ++-----------------------------------+-----------------------------------+ diff --git a/wiki/packages/hplip.rst b/wiki/packages/hplip.rst new file mode 100644 index 0000000..4f6ff3e --- /dev/null +++ b/wiki/packages/hplip.rst @@ -0,0 +1,16 @@ +.. _HPLIP: + +HPLIP +===== + +`​HP Linux Imaging and Printing <http://hplipopensource.com/>`__ (HPLIP) +ermöglicht das Drucken und Scannen auf HP-Geräten unter Linux +(`​unterstütze +Geräte <http://hplipopensource.com/hplip-web/supported_devices/index.html>`__). + +Da die Druckfunktionalität sowieso schon über den AVM-Printserver +möglich ist, wird durch dieses Paket lediglich die Scanfunktionalität +zur Verfügung gestellt. Außerdem bietet das Paket die nötige +Infrastruktur für `hp-utils <hp-utils.html>`__, womit man z.B. den +Tintenstand und den Druckerzustand in einem Web-Interface anzeigen +lassen kann. diff --git a/wiki/packages/htpdate.rst b/wiki/packages/htpdate.rst new file mode 100644 index 0000000..e1cf979 --- /dev/null +++ b/wiki/packages/htpdate.rst @@ -0,0 +1,13 @@ +htpdate +======= + +Dieses Paket kann dazu genutzt werden die Uhrzeit der Fritzbox zu +synchronisieren. Dazu wird das HTTP Protokoll genutzt und dessen Header +ausgewertet. Eine Synchronisierung über Proxyserver ist möglich. + +.. _Links: + +Links +----- + +Manpage: `​htpdate(8) <http://linux.die.net/man/8/htpdate>`__ diff --git a/wiki/packages/httptunnel.rst b/wiki/packages/httptunnel.rst new file mode 100644 index 0000000..737b78a --- /dev/null +++ b/wiki/packages/httptunnel.rst @@ -0,0 +1,49 @@ +httptunnel +========== + +`​httptunnel <http://www.nocrew.org/software/httptunnel.html>`__ +erstellt eine virtuell, bi-direktionale Datenverbindung, welche über das +HTTP Protokoll getunnelt wird. Die erforderlichen HTTP-Requests können +bei Bedarf auch über Proxies geleitet werden. + +Dieser Ansatz ist hilfreich für all jene, die hinter einer restriktiven +Firewall sitzen. Sofern WWW Zugriff erlaubt ist - und sei es auch nur +über einen Proxy -, kann *httptunnel* verwendet werden, um z.B. per +Telnet auf einen Rechner außerhalb der Firewall zuzugreifen. + +Ein etwas anschaulicheres Beispiel anbei von +`​sweetie-pie <http://www.ip-phone-forum.de/member.php?u=62645>`__ aus +`​diesem +Thread <http://www.ip-phone-forum.de/showthread.php?p=536622#post536622>`__: + +.. code:: bash + + PC in der Firma Proxy in der Firma Fritzbox + + +-------+ Verbunden auf +-------+ Heimnetz + |Putty |--+ 127.0.0.1:22 |sshd |--> via ssh-Tunnel + |-------| | +-----+ | |<-+ (Port 22) + |htc |<-+ Port 22 |HTTP | |-------| | + | |------------------>|Proxy|------------->|hts |--+ + +-------+ +-----+ Port 9999 +-------+ + +Derzeit ist httptunnel nur als Binary (3.3) für Freetz verfügbar, d.h. +es gibt noch kein WebGUI für grafische Einstellungen. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​httptunnel + Homepage <http://www.nocrew.org/software/httptunnel.html>`__ +- `​Mini-HowTo bei LinuxWiki.org <http://linuxwiki.org/HttpTunnel>`__ +- `​Wikipedia Artikel zum HTTP + Tunneling <http://en.wikipedia.org/wiki/HTTP_tunnel>`__ (Englisch) +- `​Thread im + IP-Phone-Forum <http://www.ip-phone-forum.de/showthread.php?t=167980>`__ + +- Tags +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `tunnel </tags/tunnel>`__ diff --git a/wiki/packages/igmpproxy.rst b/wiki/packages/igmpproxy.rst new file mode 100644 index 0000000..8549912 --- /dev/null +++ b/wiki/packages/igmpproxy.rst @@ -0,0 +1,84 @@ +igmpproxy +========= + +`​igmpproxy <http://sourceforge.net/projects/igmpproxy/>`__ ist ein +einfacher multicast routing Daemon der für multicast forwarding zwischen +Netzwerken z.B. für IPTV benutzt wird. + +.. code:: bash + + Usage: igmpproxy [-h] [-d] [-v [-v]] <configfile> + + -h Display this help screen + -d Run in debug mode. Output all messages on stderr + -v Be verbose. Give twice to see even debug messages. + +Configfile: + +.. code:: bash + + ######################################################## + # + # Example configuration file for the IgmpProxy + # -------------------------------------------- + # + # The configuration file must define one upstream + # interface, and one or more downstream interfaces. + # + # If multicast traffic originates outside the + # upstream subnet, the "altnet" option can be + # used in order to define legal multicast sources. + # (Se example...) + # + # The "quickleave" should be used to avoid saturation + # of the upstream link. The option should only + # be used if it's absolutely nessecary to + # accurately imitate just one Client. + # + ######################################################## + + ##------------------------------------------------------ + ## Enable Quickleave mode (Sends Leave instantly) + ##------------------------------------------------------ + quickleave + + ##------------------------------------------------------ + ## Configuration for nas0 (Upstream Interface) + ##------------------------------------------------------ + phyint nas0 upstream ratelimit 0 threshold 1 + altnet 10.1.12.0/24 + + ##------------------------------------------------------ + ## Configuration for lan (Downstream Interface) + ##------------------------------------------------------ + phyint lan downstream ratelimit 0 threshold 1 + + ##------------------------------------------------------ + ## Configuration for Disabled Interfaces + ##------------------------------------------------------ + phyint dsl disabled + phyint lo disabled + +Damit igmpproxy auf der FritzBox läuft muss multid mit der option "-i" +(disable IGMP-Proxy) gestarted werden. Die Namen der Interfaces sind +abhängig von der Konfiguration der Box und müssen angepasst werden. Im +Beispiel wird das von `br2684ctrl <br2684ctl.html>`__ erzeugte "nas0" +als Upstream Interface verwendet. + +Derzeit ist igmpproxy nur als Binary (0.1) für Freetz verfügbar, d.h. es +gibt noch kein WebGUI für grafische Einstellungen. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​igmpproxy + SourceForge <http://sourceforge.net/projects/igmpproxy/>`__ +- `​IPPF-Thread: AONTV mit der + FritzBox <http://www.ip-phone-forum.de/showthread.php?t=208004&highlight=aontv>`__ + +- Tags +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `routing </tags/routing>`__ diff --git a/wiki/packages/imapproxy.en.rst b/wiki/packages/imapproxy.en.rst new file mode 100644 index 0000000..3b558b8 --- /dev/null +++ b/wiki/packages/imapproxy.en.rst @@ -0,0 +1,41 @@ +.. _ImapProxy: + +ImapProxy +========= + +"*ImapProxy is a caching IMAP proxy server intended for use with WebMail +clients that cannot maintain persistent connections to an IMAP server.*" + +.. _Setup: + +Setup +----- + +Just start it and point your IMAP (web) client to fritz.box:143. + +If you want to use the proxy remote, you have to forward port 143 using +the `AVM-Firewall <avm-firewall.html>`__. Beware that if you don't +restrict the ip addresses everyone can use your proxy. + +One of the features is that ImapProxy is patched to use Yahoo! IMAP. +This feature is automatically used if your email address contains lower +case "yahoo". + +.. _Links: + +Links +----- + +- `​ImapProxy homepage <http://imapproxy.org/>`__ +- `​Ticket with patch <http://trac.freetz.org/ticket/847>`__ +- `​IPPF + thread <http://www.ip-phone-forum.de/showthread.php?t=216517>`__ +- `​Free IMAP and SMTPs + access <http://en.wikipedia.org/wiki/Yahoo!_Mail#Free_IMAP_and_SMTPs_access>`__ + (wikipedia about Yahoo!) + +- Tags +- `mail </tags/mail>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `proxy </tags/proxy>`__ diff --git a/wiki/packages/inadyn-mt.en.rst b/wiki/packages/inadyn-mt.en.rst new file mode 100644 index 0000000..f6ad40e --- /dev/null +++ b/wiki/packages/inadyn-mt.en.rst @@ -0,0 +1,100 @@ +.. _Inadyn: + +Inadyn +------ + +| Inadyn is an update client that keeps your IP address up to date at + your DNS name provider. +| But also if you have a free Host Service from dyn.com you can use the + update client to update your account within every 30 days to prevent + it from being deleted. +| Just using the service is not sufficient to prevent your account from + getting expired. +| An update client prevents your account from becoming expired, and also + makes sure a IP address change is updated for your host service. +| More info about Inadyn can be found via: + `​http://dyn.com/support/clients/linux/ <http://dyn.com/support/clients/linux/>`__ +| For general update client information you can look here: + `​http://dyn.com/support/clients/ <http://dyn.com/support/clients/>`__ + +It appears from the forum that it is not possible anymore to apply for a +new free account. But on page +`​http://dyn.com/legal/account-ownership-and-recovery-policy/ <http://dyn.com/legal/account-ownership-and-recovery-policy/>`__ +there is a reference that a new account can be created via +`​https://account.dyn.com/entrance/ <https://account.dyn.com/entrance/>`__ +Just give it a try. + +|Warning| From 7-May-2014 + + | From 7-May the free Dyn account will stop. See `​Dyn + blog <http://dyn.com/blog/why-we-decided-to-stop-offering-free-accounts/>`__. + +| + +|Warning| Since 14-May-2013 + + Starting now, if you would like to maintain your free Dyn account, + you must log into your account once a month. Failure to do so will + result in expiration and loss of your hostname. This activity helps + us eliminate hostnames that are no longer needed and/or dormant. Note + that using an update client will no longer suffice for this monthly + login. + +Dyn users should have a look at the following (german): +`​http://www.ip-phone-forum.de/showthread.php?t=260356 <http://www.ip-phone-forum.de/showthread.php?t=260356>`__ +and `OpenDD <opendd.html>`__ + +.. _CreatingaFeetzImagewithInadyn: + +Creating a Feetz Image with Inadyn +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +| Follow the directions from the `/wiki/WikiStart.en# + Wiki <../index.en.html#%20Wiki>`__ +| After the following step you can configure the packages you want to + have included in your image. + +.. code:: bash + + make menuconfig + +Make sure the following is selected: + +.. code:: bash + + [*] Show advanced options + +.. code:: bash + + Package selection ---> Testing ---> [*] Inadyn-mt 02.24.36 + +.. _SetupinFreetzweb-interface: + +Setup in Freetz web-interface +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +| To update your account within the default 30 days you can use the + parameter forced_update_period followed by the update period in + seconds. +| E.g. for one day you can use 86400 or for 10 days 864000. + +.. figure:: /screenshots/238.jpg + :alt: Howto Inadyn Setup + + Howto Inadyn Setup + +If you have enabled the syslog you can verify the syslog messages. E.g. +via a telnet or ssh connection you can using the following command: + +.. code:: bash + + logread + +Or via the Freetz web interface: Status > Syslog You can filter on +INADYN to show only Inadyn related messages. You will see that the every +10 minutes by default the IP address is verified for changes. Only if +the IP address changed, your account at your DNS provider is updates +with this new IP address. + +.. |Warning| image:: ../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/packages/inadyn-mt.rst b/wiki/packages/inadyn-mt.rst new file mode 100644 index 0000000..5af2d61 --- /dev/null +++ b/wiki/packages/inadyn-mt.rst @@ -0,0 +1,48 @@ +.. _Inadyn-MT: + +Inadyn-MT +========= + +Inadyn-MT ist ein kleiner DynDNS-Client der es erlaubt, unkompliziert +bis zu 5 DynDNS-Accounts mit der FritzBox zu nutzen. + +.. figure:: /screenshots/109.png + :alt: inadyn Konfiguration + + inadyn Konfiguration + +| Zu den einzelnen Menüpunkten: + +| **Starttyp:** Automatisch (mit dem Starten der Box), oder Manuell + (starten des Dienstes von Hand). + +| **Verbose Level (0-5):** Hier wird eingestellt, in wie weit Einträge + in den Syslog gemacht werden sollen. +| **Account0 bis Account4:** Auswahl für mehrere Accounts + +| **DNS Service:** Auswahl des Serviceanbieters (alternativ auch + "Benutzerdefiniert") +| **Custom URL:** Hauptsächlich für Provider gedacht, die nicht in der + Auswahlliste stehen. Im Falle von z.B. *dyndns* bleibt diese Zeile + leer. +| **Username:** Username +| **Passwort:** Passwort +| **Alias:** Hier kommt die Adresse hin, für die man sich registriert + hat. +| **Optionen:** Hier können weitere Optionen (falls Notwendig) angegeben + werden, ist aber auch haupsächlich für Provider gedacht, die nicht in + der Auswahlliste stehen. + +Folgende DynDNS-Anbieter stehen in der Auswahlliste zur Verfügung: + +- `​http://dyndns.org <http://dyndns.org>`__ +- `​http://afraid.org <http://afraid.org>`__ +- `​http://zoneedit.com <http://zoneedit.com>`__ +- `​http://no-ip.com <http://no-ip.com>`__ + +Weitere Provider können über *Benutzerdefiniert* eingerichtet werden. + +- Tags +- `dyndns </tags/dyndns>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/inetd.rst b/wiki/packages/inetd.rst new file mode 100644 index 0000000..c6d149b --- /dev/null +++ b/wiki/packages/inetd.rst @@ -0,0 +1,99 @@ +inetd +===== + +.. figure:: /screenshots/206.png + :alt: Inetd Webinterface + + Inetd Webinterface + +Hier handelt es sich nur um ein virtuelles **inetd** Paket, welches das +benötigte Konfigurations-Framework bereitstellt. Ein kompatibles +``inetd`` Binary wird zusätzlich benötigt - wobei derzeit nur der +Busybox-\ *inetd* unterstützt wird (der aktuelle Stand kann in der Hilfe +zu diesem Paket in +`menuconfig <../help/howtos/common/install/menuconfig.html>`__ +eingesehen werden). + +Aus dem Hilfetext des Paketes (siehe "make menuconfig"): + + *This feature is required by the Inetd Freetz package, otherwise you + may deactivate it. ATTENTION, this feature is NOT deactivated + automatically if the Inetd Freetz package is unselected.* + +Es ist zu beachten, dass BusyBox-\ *inetd* eine bestimmte Box als +Standardbox mit *inetd* im Image hat (z.B. 7270). Wenn man die +voreingestellte Box auf eine andere umändert, bei welcher kein inetd +verwendet wird/verwendet werden kann (z.B. 3170), dann bleibt *inetd* +trotzdem ausgewählt. Man kann es manuell abwählen (Advanced options ⇒ +BusyBox options ⇒ inetd) oder nach dem Beenden von "make menuconfig" und +Speichern der Einstellungen mittels "make config-clean-deps" (Details +`hier <../help/fritz_faq.html>`__) abwählen. Dabei werden aber alle +Sachen deaktiviert, zu denen es keine abhängigen, angewählten Patches, +Pakete etc. gibt. Danach müsste man ggf. also noch einmal "make +menuconfig" aufrufen, und das noch einmal überprüfen. + +.. _Benutzerdefiniert: + +Benutzerdefiniert +----------------- + +| Es können eigene Daemons eingetragen werden die inetd anbieten soll. + Auch können auch in inetd integrierte Services angegeben werden. +| Beispiele: + +.. code:: bash + + 31337 stream tcp nowait root /var/media/ftp/uStor01/binary binary -i + + echo stream tcp nowait root internal + echo dgram udp wait root internal + + discard stream tcp nowait root internal + discard dgram udp wait root internal + + daytime stream tcp nowait root internal + daytime dgram udp wait root internal + + chargen stream tcp nowait root internal + chargen dgram udp wait root internal + + time stream tcp nowait root internal + time dgram udp wait root internal + +Hinweis: Es können nur Servicenamen benutzt werden die in /etc/services +hinterlegt sind + +.. _Konfiguration: + +Konfiguration +------------- + +Hier wird der Inhalt der /etc/inetd.conf angezeigt wie sie von Freetz +generiert wurde. Sie kann hier nicht geändert werden. + +.. _a: + +.. _WeiterführendeLinks: + +Weiterführende Links +~~~~~~~~~~~~~~~~~~~~ + +- `​Wikipedia Artikel zu + ''inetd'' <http://de.wikipedia.org/wiki/Inetd>`__ +- `​Linuxfibel: ''inetd'' + Grundlagen <http://de.linwiki.org/index.php/Linuxfibel_-_Netzwerk_Grundlagen_-_Internet_Service_D%C3%A4mon>`__ + +.. _FürEntwickler: + +Für Entwickler +~~~~~~~~~~~~~~ + +- Ein einfaches Webinterface mit inetd-Unterstützung + `oidentd </browser/trunk/make/oidentd/files>`__ +- Erweiterung eines Paketes mit 2 Diensten, wobei der Webserver + inetd-fähig wird (vnstat-cgi): `r4926 </changeset/4926>`__ + +- Tags +- `daemons </tags/daemons>`__ +- `packages <../packages.html>`__ +- `tools </tags/tools>`__ diff --git a/wiki/packages/inotify-tools.rst b/wiki/packages/inotify-tools.rst new file mode 100644 index 0000000..1a5e108 --- /dev/null +++ b/wiki/packages/inotify-tools.rst @@ -0,0 +1,328 @@ +.. _Inotify-Tools: + +Inotify-Tools +============= + +**Inotify** ist eine Kernel-Schnittstelle zur Überwachung von +Dateizugriffen, verbunden mit einem Event-Mechanismus, von dem man sich +über bestimmte Ereignisse benachrichtigen lassen kann. Siehe dazu den +`​deutschen +(kurz) <http://de.wikipedia.org/wiki/Linux_%28Kernel%29#Inotify>`__ und +`​englischen (ausführlich) <http://en.wikipedia.org/wiki/Inotify>`__ +Wikipedia-Artikel. + +.. _InotifyundInotify-Toolsallgemein: + +Inotify und Inotify-Tools allgemein +----------------------------------- + +Die `​Inotify-Tools <http://inotify-tools.sourceforge.net>`__ sind eine +kleine Sammlung von Werkzeugen bzw. Programmierschnittstellen, um +bequemer diesen mächtigen Mechanismus nutzen zu können. Wir stellen als +Freetz-Paket zwei ausführbare Werkzeuge und eine Bibliothek zur +Verfügung, und zwar + +- inotifywait, +- inotifywatch und +- libinotifytools + +Verwendungsbeispiele gibt es ebenfalls auf der +`​Sourceforge-Projektseite <http://inotify-tools.sourceforge.net/#info>`__. +**Inotifywait** wartet auf ein Ereignis, für das man sich vorher +registriert hat und kehrt dann zurück, wenn es eintritt. Das Ganze geht +auch im Hintergrundbetrieb, wenn man Ereignisse nicht nur einmalig, +sondern dauerhaft beobachten möchte. **Inotifywatch** hingegen sammelt +und summiert statistische Daten zu Dateisystem-Ereignissen und stellt +sie in tabellarischer Textdarstellung zur Verfügung. + +.. _DateizugriffederFritzBoxabdemStartbeobachten: + +Dateizugriffe der FritzBox ab dem Start beobachten +-------------------------------------------------- + +Eine besondere Anwendung, für die das Startskript ``rc.S`` durch einen +speziellen, immer eingebauten Patch vorbereitet wird, ist das +Protokollieren sämtlicher Dateisystemzugriffe beim Starten der Box. +``rc.S`` ist das erste Skript, welches von ``init`` ausgeführt wird, +d.h. die Protokollierung beginnt wirklich sehr früh (direkt nach dem +Start des Watchdogs), man verpaßt nichts Wichtiges. Da es keinen Sinn +macht, diese Protokollierung immer durchzuführen, kann man sie ein- und +ausschalten. Dafür verwendet man das kernel_args-API?. Vor dem zu +protokollierenden Startvorgang, also vor dem Reboot, aktiviert man die +Protokollierung: + +:: + + # API laden + . /usr/bin/kernel_args + # Aktivieren (Achtung, kein "=", zwei Parameter!) + ka_setValue InotifyBootAnalysis y + # Prüfen, ob Variable gesetzt + ka_getArgs + # Ergebnis z.B. idle=4 foo=bar InotifyBootAnalysis=y + +Anstatt den Wert "y" kann man auch einen positiven Ganzzahlwert +zuordnen, der automatisch bei jedem Start um 1 vermindert wird, bis er +schließlich 0 werden würden, was zum Folgewert "n" und zur automatischen +Deaktivierung der Funktion führt. So kann man erstens das Deaktivieren +nicht auf Dauer vergessen und zweitens mögliche Probleme beim Hochfahren +der Box durch das Logging eliminieren, indem man sie einfach oft genug +neu startet, bis die Funktion wieder inaktiv ist. + +Deaktivieren kann man die Funktion auch manuell, indem man in obiger +Code-Sequenz eine Zeile austauscht: + +:: + + # Deaktivieren + ka_setValue InotifyBootAnalysis n + +Auch ganz löschen kann man die Variable aus dem Bootloader Environment: + +:: + + # Variable ganz löschen + ka_removeVariable InotifyBootAnalysis + +Wenn das Logging erst einmal gestartet wurde, läuft es immer weiter, bis +man es manuell stoppt, nachdem der Startvorgang abgeschlossen ist bzw. +auch danach noch man so viel protokolliert hat, wie man möchte. Es +könnte ja sein, daß man außer dem Startvorgang noch einige Stunden oder +Tage die Box weiter beobachten möchte, um festzustellen, welche Dateien +überhaupt benutzt werden oder nicht, um sie dann in Verbindung mit dem +`Downloader-CGI <downloader.html>`__ auszulagern und nachzuladen oder +ganz aus der Firmware zu entfernen, um Platz zu schaffen für mehr oder +größere Pakete, was gerade bei Boxen mit nur 4 MB Flash-Größe eine Kunst +für sich ist. Die 8-MB-Boxen sind da weniger eingeengt, aber auch dort +kann es interessant sein, falls man unter "Featuritis" leidet. + +Wie also stoppt man die Protokollierung, bevor einem der Speicher +volläuft? + +:: + + # Protokollierung anhalten + /etc/init.d/rc.inotify_tools stop + +Ob die Protokollierung gerade läuft, kann man so feststellen: + +:: + + # Status prüfen ("running" oder "stopped") + /etc/init.d/rc.inotify_tools status + +Es ist auch jederzeit im laufenden Betrieb möglich, die Protokollierung +einzuschalten, um bei Bedarf zur Laufzeit alle Dateizugriffe zu +beobachten: + +:: + + # Protokollierung (neu) starten + /etc/init.d/rc.inotify_tools start + +Achtung, ein kleiner Ausflug ins noch Technischere: Man sollte wissen, +daß ``rc.inotify_tools start`` eine evtl. bereits laufende +Protokollierung kurzzeitig stoppt und sie dann sofort neu startet. Das +ist etwas ungewohnt, kann aber nützlich sein in Situationen, wo Init von +einem Skript aufgrund z.B. ``kill -1 1``, wie ``rc.mini_fo`` es +verwendet, um in mehreren Durchgängen sein Overlay-Dateisystem +aufzuziehen, beendet wird, um dann neu gestartet zu werden und nochmals +die Startskripten aufzurufen. Dazwischen kann die Protokollierung +entweder noch laufen oder abgebrochen worden sein. Jedenfalls startet +Inotify-Tools in diesem Fall neu, ggf. jetzt mit Ausgabe auf das frisch +gemountete *mini_fo* (vorher auf das nun überdeckte, darunter liegende +Dateisystem). + +.. _Waswirdvonrc.inotify_toolsprotokolliert: + +Was wird von rc.inotify_tools protokolliert? +-------------------------------------------- + +Wir könnten alles protokollieren, aber das wäre eine große Datenmenge, +weil bestimmte Zugriffe, z.B. auf häufig verwendete Dateien wie +``busybox``, ``uClibc`` oder ``libcrypt`` das Log zumüllen. Daß sie +verwendet werden, sollte sowieso selbstverständlich sein, und wir werden +sie auch ganz bestimmt nicht aus der Firmware auslagern. Also werden sie +bei der Protokollierung nicht berücksichtigt. So sieht in ``rc.S`` die +Passage aus, wo die Protokollierung gestartet wird: + +:: + + echo "starting inotifywait" + inotifywait -c -r -m / \ + @/dev @/proc @/var @/rom @/sto \ + --exclude 'busybox|uClibc|libcrypt-0' \ + >> /var/iw.log 2> /dev/null & + sleep 3 + +Es wird also kontinuierlich geloggt, und zwar rekursiv alles ab dem +Wurzel-Verzeichnis ("/" als Parameter am Ende der ersten Aufruf-Zeile). +Ausgeschlossen sind die virtuellen oder für interne *Mini_fo*-Zwecke +verwandten Verzeichnisse ``/dev``, ``/proc``, ``/rom``, ``/sto`` sowie +die RAM-Disk ``/var``, desweiteren Dateien, welche die Zeichenketten +"busybox", "uClibc" oder "libcrypt-0" enthalten - die "-0" am Ende +grenzt übrigens ``libcrypt`` von ``libcrypto`` ab. + +Das Log wird geschrieben in die RAM-Disk nach ``/var/iw.log`` - "iw" wie +"inotifywait". + +.. _Ausgabeformat: + +Ausgabeformat +------------- + +Was steht nun drin in ``/var/iw.log`` bzw. wie sieht es aus? Ein kleiner +Ausschnitt: + +.. code:: bash + + /etc/,"CLOSE_NOWRITE,CLOSE",.subversion + /lib/,"CLOSE_NOWRITE,CLOSE",libgcc_s.so.1 + /lib/,"CLOSE_NOWRITE,CLOSE",libgcc_s.so.1 + /lib/,OPEN,libgcc_s.so.1 + /lib/,ACCESS,libgcc_s.so.1 + /lib/modules/2.6.13.1-ohio/modules/,DELETE_SELF, + /lib/modules/2.6.13.1-ohio/modules/,IGNORED, + /lib/modules/2.6.13.1-ohio/kernel/drivers/char/avm_event/,DELETE_SELF, + /lib/modules/2.6.13.1-ohio/kernel/drivers/char/avm_event/,IGNORED, + /lib/modules/2.6.13.1-ohio/kernel/drivers/char/avalanche_led/,DELETE_SELF, + /lib/modules/2.6.13.1-ohio/kernel/drivers/char/avalanche_led/,IGNORED, + /lib/,"CLOSE_NOWRITE,CLOSE",libgcc_s.so.1 + /usr/share/images/,OPEN,edge_lt.png + /usr/share/images/,ACCESS,edge_lt.png + /usr/share/images/,"CLOSE_NOWRITE,CLOSE",edge_lt.png + +Mit dem Aufruf aus ``rc.S`` heraus wurde dafür gesorgt, daß in einem +leicht woanders (Tabellenkalkulation, Datenbank) importierbaren, +kommagetrennten CSV-Format protokolliert wird. Wie die einzelnen Daten +zu interpretieren sind, entnimmt man der Dokumentation der +Inotify-Tools, das ist nicht Freetz-spezifisch. + +Falls man andere Daten sammeln möchte, z.B. Zugriffe auf die RAM-Disk +mit protokolliert haben möchte, nur ein bestimmtes Verzeichnis +beobachten möchte, nur Schreibvorgänge beobachten möchte usw., kann man +``inotifywait`` immer noch manuell starten oder für vorgefertigte +Statistiken auch mal ``inotifywatch`` bemühen. + +.. _Log-DateiregelmäßigkonsolidierenumPlatzzusparen: + +Log-Datei regelmäßig konsolidieren, um Platz zu sparen +------------------------------------------------------ + +Zum Zweck des Platzsparens in Firmware-Images interessiert uns +vermutlich weniger, auf welche Dateien in welcher Reihenfolge, wie oft, +auf welche Weise (lesen, schreiben, anlegen, löschen etc.) zugegriffen +wurde, sondern lediglich, auf welche Dateien *überhaupt* zugegriffen +wurde - bzw. auf welche nicht, denn die würden dann im Log fehlen. Dafür +wäre eine kumulierte Ausgabe praktisch, welche + +- das Log bei Überschreiten einer bestimmten Größe kondensiert auf eine + Liste reiner Pfad- und Dateinamen, alphabetisch nach Pfad sortiert, +- diese kondensierte Liste mit einer evtl. vorhandenen vorherigen + Version vereinigt und Dubletten entfernt, +- das große Log löscht und zu diesem Zweck kurz zwischendurch die + Protokollierung anhält, +- die Protokollierung ins große Log neu startet, bis die Maximalgröße + wieder erreicht wird + +usw. immer im Kreis. Folgendes Skript habe ich in meiner +``/var/tmp/flash/rc.custom``, sie wird also nach dem Ende des +Freetz-Startvorgangs ausgeführt: + +:: + + # Create script for continuous file access logging and log file consolidation + cat << 'EOF' > /var/tmp/iw_continuous + #!/bin/sh + + # If inotify logging is inactive, start it + if [ "$(/etc/init.d/rc.inotify_tools status)" != "running" ]; then + /etc/init.d/rc.inotify_tools start + fi + + MAX_LOG_SIZE=$(( 10 * 1024 )) + while true; do + sleep 60 + if [[ $(( $MAX_LOG_SIZE - $(cat /var/iw.log | wc -c) )) -gt 0 ]]; then + #echo "current size of iw.log < $MAX_LOG_SIZE - continue logging" + continue; + fi + #echo "current size of iw.log >= $MAX_LOG_SIZE - consolidate file list and restart logging" + cat /var/iw.log | grep '^/' | sed 's/,.*,//' | sort | uniq | sed 's/\/\//\//' > /var/iw-unique.tmp + touch /var/iw-unique.log + cat /var/iw-unique.log >> /var/iw-unique.tmp + cat /var/iw-unique.tmp | sort | uniq > /var/iw-unique.log + rm -f /var/iw-unique.tmp /var/iw.log + /etc/init.d/rc.inotify_tools start + done + EOF + + chmod +x /var/tmp/iw_continuous + + # If inotifywait is already running, start continuous logging script + if [ "$(/etc/init.d/rc.inotify_tools status)" == "running" ]; then + /var/tmp/iw_continuous > /dev/null 2>&1 & + fi + +Das Skript erzeugt ein weiteres, ausführbares Skript, welches im +Hintergrund gestartet wird und die eigentliche kontinuierliche +Konsolidierung des großen Logs übernimmt. Die konsolidierte Liste der +Dateien wird regelmäßig aktualisiert in ``/var/iw-unique.log``, wo man +sie jederzeit einsehen kann. Sie sieht in etwa so aus (Ausschnitt): + +.. code:: bash + + / + /etc/.subversion + /etc/default.callmonitor/system.cfg + /etc/init.d/rc.bftpd + /etc/init.d/rc.cifsmount + /etc/init.d/rc.crond + /etc/init.d/rc.dropbear + /etc/init.d/rc.inotify_tools + /etc/init.d/rc.mini_fo + /etc/init.d/rc.nfsroot + /etc/init.d/rc.samba + /etc/init.d/rc.swap + /etc/init.d/rc.syslogd + /etc/init.d/rc.telnetd + /etc/init.d/rc.webcfg + /etc/init.d/rc.wol + /etc/static.pkg + /lib/libgcc_s.so.1 + /lib/modules/2.6.13.1-ohio/kernel/drivers/char/avalanche_led/ + /lib/modules/2.6.13.1-ohio/kernel/drivers/char/avm_event/ + /lib/modules/2.6.13.1-ohio/modules/ + /usr + /usr/ + /usr/lib/callmonitor/applets/rc.callmonitor.sh + +.. _Schlußwort: + +Schlußwort +---------- + +Damit steht ein mächtiges und nun im nachhinein auch dokumentiertes +Analyse-Werkzeug zur Verfügung, mit dem die Möglichkeiten der +"Platzspar-Jünger" sich hoffentlich etwas erweitern werden. Viel Spaß +beim Ausprobieren. Geduld, Ihr kommt dahinter, bei mir hat es auch +gedauert - leider hatte ich diese Doku aus naheliegenden Gründen nicht. +|;-)| + +Im Forum war der Ursprung dieses Pakets meine Idee und Anfrage +`​dort <http://www.ip-phone-forum.de/showthread.php?t=134151>`__, +aktuell kann über das Paket und diesen Artikel diskutiert werden im +neuen Thema `​Paket Inotify-Tools + +Anwendungen <http://www.ip-phone-forum.de/showthread.php?t=150597>`__ + +`​Alexander Kriegisch +(kriegaex) <http://www.ip-phone-forum.de/member.php?u=117253>`__ + +- Tags +- `init </tags/init>`__ +- `monitoring </tags/monitoring>`__ +- `packages <../packages.html>`__ +- `tools </tags/tools>`__ + +.. |;-)| image:: ../../chrome/wikiextras-icons-16/smiley-wink.png + diff --git a/wiki/packages/iodine.rst b/wiki/packages/iodine.rst new file mode 100644 index 0000000..42cc2bc --- /dev/null +++ b/wiki/packages/iodine.rst @@ -0,0 +1,100 @@ +iodine +====== + +`​iodine <http://code.kryo.se/iodine/>`__ erlaubt es, IPv4 Daten über +DNS zu tunneln. Eine hilfreiche Sache, wenn man z.B. hinter einer +restriktiven Firewall sitzt - da DNS Traffic in den seltensten Fällen +geblockt wird |;)| + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​iodine Homepage <http://code.kryo.se/iodine/>`__ +- `​iodine Man page <http://linux.die.net/man/8/iodine>`__ +- `​iodine documentation <http://code.kryo.se/iodine/README.html>`__ + +.. _UsingwithFreeDNS: + +Using with FreeDNS +------------------ + +See package `dns2tcp <dns2tcp.html>`__ for signing up with FreeDNS and +some other details. + +Put this in your *rc.custom* (there is no WebIF): + +.. code:: bash + + mkdir /tmp/iodine + chown nobody /tmp/iodine + iodined -c -P <password> -u nobody -t /tmp/iodine 10.0.0.1 -p 10053 dns2tcp.strangled.net + +(assuming user *nobody* exists) + +The trunk version of Freetz has an iodine WebIF now (changeset #6657; +thanks oliver!) + +Create a tunnel from the client like this: + +.. code:: bash + + sudo ./bin/iodine -f -P <password> dns2tcp.strangled.net + +To connect to Polipo?: + +.. code:: bash + + ssh root@10.0.0.1 -L 8123:localhost:8123 + +The advantages over `dns2tcp <dns2tcp.html>`__ are: + +- There is an iodine Windows client available +- It is possible to run iodine on Android +- Traffic can easily be route through the tunnel + +Building `​iodine for +Android <http://blog.bokhorst.biz/5123/computers-en-internet/iodine-for-android/>`__. + +.. _Security: + +Security +-------- + +Install `iptables <iptables.html>`__ and add these rules to allow only +traffic to the internet and not your local net: + +.. code:: bash + + iptables -I OUTPUT -o dns0 -s 192.168.178.0/24 -j DROP + iptables -I INPUT -i dns0 -d 192.168.178.0/24 -j DROP + iptables -A FORWARD -i dns0 -o dsl -j ACCEPT + iptables -A FORWARD -i dns0 -j DROP + +Of course you can always allow specific traffic from tunnel to your +local net, for example to a SSH server by using something like: + +.. code:: bash + + iptables -I INPUT -i dns0 -p tcp --dport 22 -j ACCEPT + +.. _Forwarding: + +Forwarding +---------- + +iodine can forward DNS requests for unknown (sub)domains to a real +DNS-server on another port with this switch: + +.. code:: bash + + -b 5353 + +- Tags +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `tunnel </tags/tunnel>`__ + +.. |;)| image:: ../../chrome/wikiextras-icons-16/smiley-wink.png + diff --git a/wiki/packages/iptables-cgi.rst b/wiki/packages/iptables-cgi.rst new file mode 100644 index 0000000..18159e6 --- /dev/null +++ b/wiki/packages/iptables-cgi.rst @@ -0,0 +1,143 @@ +iptables-cgi +============ + +**iptables-CGI** ist ein Web-Frontend für +`​iptables <http://de.wikipedia.org/wiki/Iptables>`__. Mittels iptables +lassen sich Firewallregeln umsetzen, indem einzelne Portregeln erstellt +bzw. gelöscht werden. Genutzt wird iptables u.a. von +`knockd <knock.html>`__. + +.. _Installation: + +Installation +------------ + +iptables-cgi kann in ``make menuconfig`` angewählt werden, wenn man +iptables markiert. + +.. _HäufigeFragenHowto: + +Häufige Fragen / Howto +---------------------- + +Die Funktionen und die Geschichte von iptables wird hier nicht +wiederholt bzw. erzählt, denn dazu gibt es schon genug Dokumentation in +Internet. Eine sehr gute Seite ist z.B. folgende: +`​http://de.wikipedia.org/wiki/Iptables <http://de.wikipedia.org/wiki/Iptables>`__ + +Hier wird nur auf das Webinterface von iptables eingegangen und mit +einfachen Sätzen erklärt, wie man damit arbeitet. + +.. _Activation: + +Activation +~~~~~~~~~~ + +Wenn hier "Active" ausgewählt wird, dann werden die iptables Module beim +Starten der Box geladen. + +Beim "Stop" unter Dienste werden die Regeln und die Module entladen. + +.. _iptablesaddremoverule: + +iptables add/remove rule +~~~~~~~~~~~~~~~~~~~~~~~~ + ++-----------------------------------+-----------------------------------+ +| **Bezeichnug** | **Funktion** | ++-----------------------------------+-----------------------------------+ +| Add | Fügt eine neue Regel hinzu | ++-----------------------------------+-----------------------------------+ +| Insert | Fügt eine neue Regel in die unter | +| | "Position" angegebene Stelle ein | ++-----------------------------------+-----------------------------------+ +| Position (ID) | Dieses Feld ist nur in Verbindung | +| | mit Insert nutzbar | ++-----------------------------------+-----------------------------------+ +| Chain | Gibt an, in welche Tabelle die | +| | Regel abgelegt werden soll | ++-----------------------------------+-----------------------------------+ +| Source Address | Bestimmt die ausgehende | +| | IP-Adresse (host) | ++-----------------------------------+-----------------------------------+ +| Destination Address | Bestimmt die Ziel IP-Adresse | +| | (host) | ++-----------------------------------+-----------------------------------+ +| Port | Gibt den Source / Destination | +| | Port an (ANY = Alle) | ++-----------------------------------+-----------------------------------+ +| Protokoll | Das verwendete Protokoll = tcp, | +| | udp, icmp (ping) | ++-----------------------------------+-----------------------------------+ +| Interface | Gibt das Interface an, auf das | +| | die Regel wirken soll | ++-----------------------------------+-----------------------------------+ +| NAT | Network Address Translation / | +| | Maskierung der Adresse | ++-----------------------------------+-----------------------------------+ +| Action | Gibt an, ob Erlaubt (Accept) oder | +| | Verbot (Drop) oder Loggen (LOG) | ++-----------------------------------+-----------------------------------+ + +Für die Felder **Source Address** und **Destination Address** können +auch in der HOSTS gespeicherte Hostnamen eingetragen werden. Die Box +macht eine automatische Namensauflösung. + +.. _Services: + +Services +~~~~~~~~ + +Die unter **Port** auswählbaren Services (Dienste) sind unter +*Einstellungen → Iptables: Services* gespeichert und können beliebig +erweitert werden. Dabei bitte den folgenden Syntax verwenden: + +.. code:: bash + + Service:Port z.B. SSH:22 + +.. _Rules: + +Rules +~~~~~ + +Die Regeln werden fest in den Flash-Speicher der Box gespeichert und +gehen also nicht verloren. Diese Regel-Liste kann auch unter +*Einstellungen → Iptables: Rules* händig verändert werden. Beim +speichern dieser Liste werden die regeln sofort angewendet. + +.. _LöschenvonRegeln: + +Löschen von Regeln +~~~~~~~~~~~~~~~~~~ + +Regeln können entweder über den *Remove* Link rechts neben der +entsprechenden Regel gelöscht werden, oder manuell unter *Einstellungen +→ Iptables: Rules* + +.. _ZuBeachten: + +Zu Beachten +----------- + +In diversen Foren kursiert die Halbwahrheit, dass IPTables instabil sei +und die Box zu unprovozierten Reboots verleitet. Dies ist so nicht ganz +korrekt: IPTables selbst läuft stabil. Die Probleme werden durch das +**conntrack** Modul verursacht, sofern es geladen ist. Da es für die +allgemeine Funktion von IPTables jedoch nicht unbedingt benötigt wird, +muss man es auch nicht installieren. + +|Warning| Bei der Auswahl von iptables-cgi in ``make menuconfig`` wird +*conntrack* u.U. rekursiv mit ausgewählt. Man kann es jedoch manuell +abwählen, sodass dessen Installation unterbleibt. + +- Tags +- `cgi </tags/cgi>`__ +- `firewall </tags/firewall>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `routing </tags/routing>`__ +- `security </tags/security>`__ + +.. |Warning| image:: ../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/packages/iptables.en.rst b/wiki/packages/iptables.en.rst new file mode 100644 index 0000000..3c7a22a --- /dev/null +++ b/wiki/packages/iptables.en.rst @@ -0,0 +1,388 @@ +iptables +======== + +.. _Currentstatelargelybroken: + +Current state (largely broken) +------------------------------ + +| For the 7390 and later, but also for the 7270 with releases from the + last years, iptables doesn't work with 'connection tracking' and + 'state matching'. +| Without these two options a lot of configuration scenarios are not + possible. If you look for an iptables/ip6tables solution without the + use of connection tracking or state matching you can try to add ip + tables form the Freetz menu configuration (make menuconfig), but read + on for additional information. + +| What I understood the reason for connection tracking & state matching + not working is two fold. +| For connection tracking and state matching specifically, AVM has its + own connection tracking solution, which uses the same symbol names, + causing a conflict with the iptables modules. Secondly the behavior of + Packet Acceleration (PA) causes packets not to be handled by the + kernel, but by the PA kernel module + (`​Avm_pa.ko <http://www.wehavemorefun.de/fritzbox/Avm_pa.ko>`__). + Packet Acceleration is a feature that AVM introduced years back (end + 2011). + +| An reason not to use an older firmware for e.g. the 7270 is a + significant vulnerability that was publically misused around February + 2014 (`​vulnerability + info <https://www.heise.de/newsticker/meldung/Angriffe-auf-Fritzboxen-AVM-empfiehlt-Abschaltung-der-Fernkonfiguration-2106542.html>`__). + AVM released firmware fixes for most boxes. + +.. _Whatisiptablesandwhoneedsit: + +What is iptables and who needs it? +---------------------------------- + +| **iptables** is a command line user interface for managing and + configuring the built-in Linux kernel netfilter firewall. + +| It targets users, who want to achieve full control over their network + traffic and efficiently protect their private networks from Internet + hacker attacks and spy-ware. + +Properly configured, the iptables / netfilter package on the FritzBox +router protects all devices behind from unwanted access. This filter is +able to check, dump, forward, prioritize or manipulate network packages +and implement a border line defense against DoS attacks, port scans and +unwanted traffic. It can e.g. stop "home calling" of installed software +packages etc. This package leverages the FritzBox hardware to a +feature-rich, powerful Firewall solution, comparable to expensive +professional business grade devices. + +The basic netfilter filter engine is built-in into the Linux kernel - +this has implications to the different FritzBox types since the 72xx +boxes all have a more recent kernel than the 71xx variants. So some +features of iptables are only available in the newer 7270. + +- the older boxes (71xx) have issues with the conntrack module (limited + RAM and the old Linux kernel leads to Memory overflows of the + tracking tables resulting in unexpected reboots of the box) +- There is no Web UI for iptables on the 7270 yet. +- 7270 has more RAM and a more recent kernel - conntrack works great + (conntrack = connection tracking module, implements stateful firewall + package rules, e.g. for ftp, VoIP, etc.) +- some syntax of iptables commands / abilities differ between 71xx and + 7270 boxes. +- the command / abilities depend on loaded modules (iptables is a + modular system!), some error messages result from missing / not yet + loaded modules. + +.. _WhatisthedifferencebetweenAVMFirewallandiptablescantheyco-existonthesamesystem: + +What is the difference between AVM Firewall and iptables, can they co-exist on the same system? +----------------------------------------------------------------------------------------------- + +- The `AVM Firewall <avm-firewall.html>`__ is an integrated part of the + **dsld** from AVM (dsl daemon). It "sits" on the DSL interface and + controls exclusively the traffic trough this interface. The abilities + include connection tracking (stateful), port forwarding, traffic + shaping and packet filtering. After passing the dsld module, the data + packages arrive at the internal interface and are distributed to the + box and their interfaces without further control. The default input / + output rules are set to PERMIT, anything is allowed, what is not + blocked by a specific rule. There are only few rules set to block + some NetBIOS ports and a known virus port. Inbound traffic is + protected by NAT (network address translation) only, only packages + requested from inside (connection tracking) or set by port forwarding + rules can be translated to the destination private (RFC) IP address + range. However this is a week protection, many ports are open by + default (VoIP, TR064 / TR069 …), the dsld is a piece of proprietary + undocumented software of AVM, no source code is available, many + multimedia ports are open, also remote management via tr069/tr064 is + by default open to the ISPs, what is a potential vulnerability. + Logging is not implemented. + +- iptables based firewalls are deeply integrated into lowest layers of + the Linux kernel. They control any network traffic from / to or + through the box. They are the ultimate protection of the box from + unwanted access both from outside and LAN traffic. Using iptables one + can implement powerful DMZ security zones, protection against DoS + attacks and port scans, and even a deep-inspection of data packages + is possible. Beside this, one can define rules for virtual + interfaces, control VPN tunnel traffic and create source / + destination NAT rules for virtual hosts. Iptables / netfilter is a + powerful, state-of-the-art Open Source firewall - and last but not + least it can log the traffic by rules! + +- Both firewall solutions act on completely different areas (AVM FW is + completely encapsulated in the dsld module, iptables/netfilter is + integrated in the OS kernel), so they and their rules are independent + from each other, beside the fact, that the (external) traffic is + serialized and must bypass both: that means a ALLOW rule of the one + cannot bypass a DENY/REJECT rule of the other, both must be + configured to allow the desired traffic. Here some pass-trough + examples: + +.. + + | Traffic targeting the FritzBox: + | **DSL < — > AVM Firewall (NAT) < — > iptables Firewall < — > + (FritzBox) < — > iptables Firewall < — > LAN / WLAN** + + | Traffic between the Internet and LAN interfaces: + | **DSL < — > AVM Firewall (NAT) < — > iptables Firewall < — > LAN + / WLAN** + +.. + + | DMZ or VPN Tunnel traffic to LAN/WLAN : + | **DMZ / Tunnel Interfaces < — > iptables Firewall < — > LAN / + WLAN** + +- Because AVM FW controls the dsl modem, one cannot completely remove + it without a replacement while operating the box as a DSL router. +- Both firewalls can operate side-by-side without any issues, one has + to consider, that both need to be configured to allow desired traffic + (serialization) +- Because they are "cascaded", one can benefit from increased security: + a hacker must bypass 2 independent firewall solutions to gain access + to the box and devices behind. +- Even ISP operators are using the "backdoor" configuration + capabilities of tr064/tr069 protocol have no chance to access the + router and devices behind protected by well-configured iptables + rules. +- The best-practise configuration / strongest protection can be + achieved by applying rigorous traffic rules on both firewalls and + allowing only necessary traffic. + +.. _HowtobuildiptablesforFreetz: + +How to build iptables for Freetz? +--------------------------------- + +- select iptables **and** all needed modules using `make + menuconfig <../help/howtos/common/install/menuconfig.html>`__ while + building the firmware (unstable branch) +- not listed modules (e.g. ULOG target) can be added after + reconfiguring and replacing the kernel `replace + kernel <../help/howtos/development/make_kernel.html>`__ / **make + kernelconfig** (for experienced developers only!) +- the availability of the modules depends on the kernel version and + configured kernel options. + +.. _Configuration:Aftersuccessfulfirmwarebuildandupload: + +Configuration: After successful firmware build and upload +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- first of all: it is recommended to test the rules interactively using + ssh or telnet. +- before one can start defining rules, the modules have to be loaded by + **modprobe** into the RAM. + +| Here an example script to load the necessary modules for the rules + described in this wiki: + +.. code:: bash + + # the most common modules needed: + modprobe ip_tables + modprobe iptable_filter + modprobe x_tables + modprobe xt_tcpudp + + # Alternative LOG und REJECT targets: + modprobe ipt_LOG + modprobe ipt_REJECT + + # if one wants to use ip ranges in the rules: + modprobe ipt_iprange + + # same for port ranges: + modprobe xt_multiport + + # for stateful firewall rules (conntrack): + modprobe xt_state + modprobe xt_conntrack + modprobe ip_conntrack + modprobe ip_conntrack_ftp + modprobe ip_conntrack_tftp + +- After registering / loading the modules we can start defining rules + (here some rules for a strong basic protection): + +.. code:: bash + + # # # FIREWALL RULES + + iptables -N TRANS + # Outbound for surfing the Internet: + # 20 FTP data, 21 FTP, 22 SSH, 25 SMTP, 80 HTTP, 110 POP3, 443 HTTPS, 465 SSMTP, 995 POP3S, 5060 VoIP + # 53 DNS, 67/68 DHCP, 80 HTTP, 123 NTP, 5060 VoIP + iptables -A TRANS -p tcp -s 192.168.0.0/24 -m multiport --dport 20,21,22,25,80,110,443,465,995,5060 -j ACCEPT + iptables -A TRANS -p udp -s 192.168.0.0/24 -m multiport --dport 53,67,68,80,123,5060 -j ACCEPT + iptables -A TRANS -p icmp -s 192.168.0.0/24 -j ACCEPT + + # conntrack rules for returning data packages: + iptables -A TRANS -m state --state RELATED,ESTABLISHED -j ACCEPT + + # ... Some rules for known hosts + # ... + + iptables -A TRANS -j LOG --log-prefix "[IPT] DENY-LAN-ACCESS " # log all dropped packets + iptables -A TRANS -j DROP # PARANOIA LINK + + # # # Rules for Fritz Device + + iptables -A INPUT -p udp -s 0.0.0.0 -d 255.255.255.255 --sport 68 --dport 67 -j ACCEPT #DHCP + iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT # LOCALHOST + iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT # LAN + iptables -A INPUT -s 169.254.0.0/16 -i lan -j ACCEPT # EMERGENCY LAN + iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT + iptables -A INPUT -p tcp --dport 5060 -j ACCEPT # VoIP + iptables -A INPUT -p udp --dport 5060 -j ACCEPT # VoIP + iptables -A INPUT -j LOG --log-prefix "[IPT] DENY-FRITZ-ACCESS " # Log other traffic + iptables -A INPUT -j DROP # PARANOIA IN + iptables -P INPUT DROP # Default policy DROP + + iptables -A OUTPUT -d 192.168.0.0/24 -j ACCEPT # Allow LAN + iptables -A OUTPUT -d 224.0.0.1/24 -j ACCEPT # UPnP + iptables -A OUTPUT -d 239.255.255.250 -j ACCEPT + iptables -A OUTPUT -d 127.0.0.1 -j ACCEPT # Local Host + iptables -A OUTPUT -p udp -m multiport --dport 53,123,5060 -j ACCEPT # DNS, TIME, VoIP + iptables -A OUTPUT -p tcp --dport 5060 -j ACCEPT # VoIP + iptables -A OUTPUT -p tcp --dport 80 -d 63.208.196.0/24 -j ACCEPT # DynDNS + iptables -A OUTPUT -d myMailServer.com -j ACCEPT # e-Mail OUT + iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # stateful conntrack + iptables -A OUTPUT -d 212.42.244.73 -p tcp --dport 80 -j ACCEPT # Plugins Server AVM + + # iptables -A OUTPUT -d www.dasoertliche.de -p tcp --dport 80 -j ACCEPT # Phone book reverse look-up targets + # iptables -A OUTPUT -d www.dastelefonbuch.de -p tcp --dport 80 -j ACCEPT + # iptables -A OUTPUT -d www.goyellow.de -p tcp --dport 80 -j ACCEPT + # iptables -A OUTPUT -d www.11880.com -p tcp --dport 80 -j ACCEPT + # iptables -A OUTPUT -d www.google.de -p tcp --dport 80 -j ACCEPT + # iptables -A OUTPUT -d www.das-telefonbuch.at -p tcp --dport 80 -j ACCEPT + # iptables -A OUTPUT -d www.search.ch -p tcp --dport 80 -j ACCEPT + # iptables -A OUTPUT -d www.anywho.com -p tcp --dport 80 -j ACCEPT + + iptables -A OUTPUT -j LOG --log-prefix "[IPT] WARNING-CALL-HOME " # Log forbidden outbound traffic + iptables -P OUTPUT DROP # and DROP it. + + # # # Rules for FORWARD + + iptables -P FORWARD DROP + iptables -A FORWARD -j TRANS # LAN - WAN traffic rules + iptables -A FORWARD -j LOG --log-prefix "[IPT] DENY-FWD-ACCESS " + +- compared to the AVM firewall, iptables rules apply immediately, + without the need of a restart. +- after testing, iptables rules can be persisted in the following + script: **/var/flash/debug.cfg**, so they survive a box reboot. +- first load all needed modules with **modprobe** +- than define **iptables** rules in the right order (top down + processing) +- Packages passing LOG targets are shown on console 0. + +.. _HintsregardingFritzBox7270:: + +Hints regarding FritzBox 7270: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +AVM has customized the printk module while implementing DECT base +station functions, that is responsible for the handling of the kernel +log messages, and they do not hit the syslog any longer. With this +command one can temporary turn off the AVM printk (what leads to +unavailability of DECT) to get a real syslog / klog of system messages. + + **echo STD_PRINTK > /dev/debug** + +To revert the settings to AVM printk and re-enable DECT type: + + **echo AVM_PRINTK > /dev/debug** + +The log appears then again on console 0 and is no longer in the syslog. + +You can also try a patch from `this ticket </ticket/254>`__, but first +read the comments carefully. + +.. _WhatisthedifferenceofINPUTOUTPUTandFORWARDchains: + +What is the difference of INPUT, OUTPUT and FORWARD chains +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- the INPUT chain filters inbound traffic to the box / localhost + itself, this rules expose services of the FritzBox to the "rest of + the world". +- the OUTPUT chain filters outbound traffic initiated by the box, this + are rules for services the box needs from outside (e.g. DNS, + NTP,etc.) +- the FORWARD chain filters traffic trough the box from one interface + to another (e.g. Internet < — > LAN/WLAN ) (pass-trough services) +- the conntrack rules target the returning data packets, they must be + defined in the complementary path (for INPUT rules in the OUTPUT path + etc.) + +.. _Hintsregardingtheexamplecode: + +Hints regarding the example code +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- the first rule of the INPUT chain should be an ACCEPT rule for the + admin interface to prevent a lock-out from the box (don't forget the + according conntrack rule in the OUTPUT chain!). +- set the default policy for all chains to DENY after everything is + tested and works (last rule!) +- in the example there was a new chain TRANS defined to show the + capabilities of this great piece of software. +- in the example there are no rules for VoIP traffic, one can easily + add them when needed +- there are no NAT rules, because NAT is already done by dsld, we use + both firewalls here +- we use only some of the available modules, please feel free to load + others using *modprobe* when needed for special rules +- this example is quite restrictive regarding the traffic of the box to + the Internet, anything not explicitly allowed is forbidden. +- it gives you only a glimpse of the opportunities iptables offers, for + more information search online for the wiki of iptables / netfilter + in your preferred language. + +.. _IsolateguestnetworkfromLAN: + +Isolate guest network from LAN +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +These rules will prevent access to the local area network, including the +box itself from the guest network: + +.. code:: bash + + iptables -A INPUT -d 192.168.178.0/24 -i guest -j DROP + iptables -A FORWARD -i guest -o dsl -j ACCEPT + iptables -A FORWARD -i guest -j DROP + iptables -A OUTPUT -s 192.168.178.0/24 -o guest -j DROP + +The guest network can only use the internet. Assuming the default subnet +(192.168.178.0/24). + +.. _MoreLinks: + +More Links +---------- + +- `cpmaccfg <../help/howtos/security/switch_config.html>`__ - How to + build a DMZ +- `OpenVPN <openvpn.html>`__ - VPN Tunnel on the FritzBox +- `AVM Firewall <avm-firewall.html>`__ - The little Brother of iptables +- `Freetz as interner Router / + Firewall <../help/howtos/security/router_and_firewall.html>`__ +- `Split WLAN and LAN using + iptables <../help/howtos/security/split_wlan_lan.html>`__ +- `​IPv6 + Sicherheit <http://www.ip-phone-forum.de/showpost.php?p=1488444&postcount=74>`__ +- `​On Netfilter <http://wiki.openwrt.org/doc/howto/netfilter>`__ +- Search `​Freetz - + Forum <http://www.ip-phone-forum.de/forumdisplay.php?f=525>`__ - Best + place for questions regarding Freetz! + +.. _Questions: + +Questions +--------- + +- Should UDP 80 not be blocked? +- Should 224.0.0.1/24 and 239.255.255.250 not be blocked on the WAN + side? diff --git a/wiki/packages/iptables.rst b/wiki/packages/iptables.rst new file mode 100644 index 0000000..9467a65 --- /dev/null +++ b/wiki/packages/iptables.rst @@ -0,0 +1,439 @@ +iptables +======== + +.. _Wasistiptablesundwerbrauchtesüberhaupt: + +Was ist iptables und wer braucht es überhaupt? +---------------------------------------------- + +| **iptables** ist ein Kommandozeilen User Interface zur Konfiguration / + Verwaltung der im jeweiligen Linux Kernel eingebauten sehr mächtigen + `​netfilter <http://de.wikipedia.org/wiki/Netfilter/iptables>`__ - + Firewall Funktionen. + +| Zielgruppe sind Anwender, die die volle Kontrolle über ihren Netzwerk + Verkehr erlangen wollen und sich so effektiv vor Attacken und + unliebsamem Ausspähen schützen möchten. + +Der Linux Paketfilter iptables / netfilter schützt bei richtiger +Konfiguration gegen viele Bedrohungen aus dem Netz. Er kann intelligent +Daten Pakete prüfen, verwerfen, abweisen, weiterleiten, priorisieren +oder manipulieren und schützt so vor den meisten bekannten DoS Atacken, +Portscans und unerlaubten Zugriffen. Gezielt eingesetzt kann er z.B. +auch das lästige "nach Hause telefonieren" von vielen Anwendungen +unterbinden. Mit Hilfe von iptables kann der kundige Anwender aus seiner +FritzBox eine leistungsfähige Firewall machen, die den Vergleich mit +teuren professionellen Lösungen nicht scheuen muss. + +Da die Basis für iptables / netfilter im Linux Kernel steckt, ergibt +sich für Freetz und die FritzBox folgende Problematik: die aktuelle 7270 +hat unter Anderem einen neueren Kernel als die älteren Boxen der 7170er +Generation, was Auswirkungen auf iptables hat. + +- die älteren Modelle (vor der 7270) hatten auf Grund des alten Kernels + und der beschränkten HW Probleme mit conntrack (Überläufe der + Tracking - Tabellen und daraus resultierende Reboots der Box) +- Für die 7270 gibt es noch kein Web-Interface (kein firewall-cgi) +- Die 7270 hat mehr Arbeitsspeicher und einen neueren Kernel, und damit + keine Probleme mehr mit mit conntrack (connection tracking Modul, + benötigt um stateful Firewall Regeln z.B. für ftp, VoIP etc. zu + erstellen). +- Die Syntax der iptables Anweisungen / Fähigkeiten von iptables auf + der 7270 und 71xx können von einander abweichen. +- Welcher Befehl mit welcher Syntax im Endeffekt akzeptiert wird hängt + von den **geladenen** Modulen ab, werden Module "vergessen", bekommt + man nur zum Teil aussagefähige Fehlermeldungen. + +.. _WasistderUnterschiedzurAVMFirewallwievertragensichbeide: + +Was ist der Unterschied zur AVM Firewall, wie vertragen sich beide? +------------------------------------------------------------------- + +- Die `AVM Firewall <avm-firewall.html>`__ ist Bestandteil des **dsld** + von AVM (der dsl deamon). Sie "sitzt" sozusagen auf dem DSL Modem und + kümmert sich ausschließlich um den Verkehr, der durch dieses + Interface fließt. Intern kann sie connection tracking, port + forwarding, traffic shaping und filtern von Paketen. Nach dem + Firewall-Modul landen die Pakete auf die FritzBox und gehen ohne + weitere Kontrolle an alle internen Interfaces, sowie Dienste der Box. + Die Default- IN/OUT Regeln der AVM Firewall sind "PERMIT": also + alles, was nicht verboten wird, wird durchgelassen. Verboten wird + lediglich NetBIOS Verkehr und ein Port, welches ein bekannter Virus + mal missbraucht hat. Jeder abgehende Verkehr von Box & Netzwerk ist + erlaubt. Ungebetener ankommender Verkehr ins LAN scheitert nur am + NAT, die Box selbst ist weitestgehend ungeschützt (dsld als einzige + Hürde). Mit geeigneten Regeln und dem AVM Firewall Paket in Freetz + kann diese Firewall für den Internet Verkehr weiter eingeschränkt + werden. Das Modul ist closed source, was es genau macht, weiss nur + AVM, es gibt keine LOG Möglichkeit. Die Box ist offen für diverse + Multimedia Ports, sowie Fernwartung über TR069. + +- Die iptables Firewall kontrolliert den gesamten Netzwerkverkehr auf + unterster Betriebssystem Ebene. Jedes Interface wird überwacht und + jedes Paket, dass zur Box, von der Box weg oder durch die Box von + einem zum anderen Interface will, kommt an iptables nicht vorbei. + Diese Firewall ist der ultimative Schutz für die Box vor Angriffen + von außen **und** innen. Mit ihr lassen sich sinnvoll z.B. DMZ + Segmente und Sicherheitszonen realisieren. Sie bietet auch die + Möglichkeit DoS Attacken und Portscans wirksam zu bekämpfen. Auch + Deep Inspections von Paketen sind möglich. Darüber hinaus lassen sich + virtuelle Hosts realisieren, und source oder destination NAT + Scenarien umsetzen. Mit iptables lassen sich natürlich auch Regeln + für VPN - Tunnel Interfaces und virtuelle Interfaces definieren. Mit + anderen Worten iptables ist viel mächtiger und leistungsfähiger, + ausserdem ist es Open Source und es kann den Verkehr loggen. + +- Beide Firewalls wirken auf völlig unterschiedliche Bereiche und + operieren unabhängig voneinander. Auch ihre Konfiguration ist + unabhängig, bis auf die Tatsache, dass **beide nacheinander** auf den + Internet Verkehr Anwendung finden. Das bedeutet, dass *Freigaben* der + einen nicht die *Sperren* der anderen umgehen können. Folgende Bilder + sollen den Fluss veranschaulichen: + +.. + + | Verkehr von und zur FritzBox: + | **DSL < — > AVM Firewall (NAT) < — > iptables Firewall < — > + (FritzBox) < — > iptables Firewall < — > LAN / WLAN** + + | Verkehr zwischen Internet und LAN Interfaces: + | **DSL < — > AVM Firewall (NAT) < — > iptables Firewall < — > LAN + / WLAN** + +.. + + | Verkehr in einer DMZ oder VPN Tunnel zum LAN/WLAN : + | **DMZ / Tunnel Interfaces < — > iptables Firewall < — > LAN / + WLAN** + +- da die AVM Firewall (**dsld**) ja auch für die DSL Protokolle + verantwortlich ist, kann man in der Betriebsart **DSL Router** ohne + Ersatz nicht darauf verzichten. +- Man kann **problemlos beide gleichzeitig** betreiben, die Regeln + sollten entsprechend bei **beiden** für die gewünschten Protokolle + durchlässig sein. +- Da sie kaskadiert sind, bieten sie in Kombination einen zusätzlichen + wirksamen Schutz vor Hacker und Ausspäher, selbst wenn die AVM + Firewall durch eine Hintertür (z.B. mit TR069 Um-Konfiguration der + AVM Firewall durch Provider) ausgehebelt wird, bleiben alle Systeme + (FritzBox + Geräte im LAN / WLAN) sicher vor unliebsamen Gästen + geschützt. +- die sicherste, optimale Konfiguration ist, wenn beide Firewalls + vollständig konfiguriert werden, so dass jede für sich den vollen + Schutz des Systems garantieren kann und nur gewünschten Verkehr + zulässt. + +.. _Wiebautmaniptables: + +Wie baut man iptables? +---------------------- + +- iptables und alle gewünschten Module müssen mit `make + menuconfig <../help/howtos/common/install/menuconfig.html>`__ beim + Bauen der Firmware ausgewählt werden (unter packages→unstable, die + Option ist nur sichtbar wenn "Show Advanced Options" aktiviert ist) +- wenn benötigte Module nicht angeboten werden (z.B. ULOG Ziel etc.), + kann man diese mit `replace + kernel <../help/howtos/development/make_kernel.html>`__ / **make + kernelconfig** im Kernel hinzufügen und durch geeignete Patches + dazubauen (Nur für erfahrene Entwickler!) +- Die Verfügbarkeit der einzelnen Module hängt von den Fähigkeiten der + jeweiligen Kernel Version ab. + +.. _Konfiguration:Firmwareerfolgreicherstelltundaufgespieltsogehtesweiter: + +Konfiguration: Firmware erfolgreich erstellt und aufgespielt, so geht es weiter +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- zunächst mal empfiehlt es sich interaktiv die Regeln zu erstellen und + zu testen +- bevor man damit beginnen kann, müssen die für die jeweiligen Regeln + benötigten Module in das System geladen werden. + +| Hier ein Beispiel - Script für das Laden der Module: + +.. code:: bash + + # Die wichtigsten Module, ohne die nichts geht: + modprobe ip_tables + modprobe iptable_filter + modprobe x_tables + modprobe xt_tcpudp + + # Alternative Ziele LOG und REJECT: + modprobe ipt_LOG + modprobe ipt_REJECT + + # Bei Verwendung von IP Adressbereichen: + modprobe ipt_iprange + + # Bei Verwendung von Port Bereichen + modprobe xt_multiport + + # Fuer stateful firewall Regeln (conntrack): + modprobe xt_state + modprobe xt_conntrack + modprobe ip_conntrack + modprobe ip_conntrack_ftp + modprobe ip_conntrack_tftp + +- Danach werden die Regeln / Ketten erstellt (hier ein Beispiel für + diverse Regeln): + +.. code:: bash + + # # # FIREWALL RULES + + iptables -N TRANS + # Ausgehende Regeln für Internet Surfen: + iptables -A TRANS -p tcp -s 192.168.0.0/24 -m multiport --dport 20,21,22,25,80,110,443,465,995,5060 -j ACCEPT + iptables -A TRANS -p udp -s 192.168.0.0/24 -m multiport --dport 53,67,68,80,123,5060 -j ACCEPT + iptables -A TRANS -p icmp -s 192.168.0.0/24 -j ACCEPT + + # conntrack für eingehende Antwortpakete: + iptables -A TRANS -m state --state RELATED,ESTABLISHED -j ACCEPT + + # ... Eigene Regeln für bekannte hosts + # ... + + iptables -A TRANS -j LOG --log-prefix "[IPT] DENY-LAN-ACCESS " # abgewiesene Pakete Loggen + iptables -A TRANS -j DROP # PARANOIA LINK + + # # # Rules for Fritz Device + + iptables -A INPUT -p udp -s 0.0.0.0 -d 255.255.255.255 --sport 68 --dport 67 -j ACCEPT + iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT # LOCALHOST + iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT # LAN + iptables -A INPUT -s 169.254.0.0/16 -i lan -j ACCEPT # EMERGENCY LAN + iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT + iptables -A INPUT -p tcp --dport 5060 -j ACCEPT # VoIP + iptables -A INPUT -p udp --dport 5060 -j ACCEPT # VoIP + iptables -A INPUT -j LOG --log-prefix "[IPT] DENY-FRITZ-ACCESS " # Log other traffic + iptables -A INPUT -j DROP # PARANOIA IN + iptables -P INPUT DROP # Default policy DROP + + iptables -A OUTPUT -d 192.168.0.0/24 -j ACCEPT # Allow LAN + iptables -A OUTPUT -d 224.0.0.1/24 -j ACCEPT # UPnP + iptables -A OUTPUT -d 239.255.255.250 -j ACCEPT + iptables -A OUTPUT -d 127.0.0.1 -j ACCEPT # Local Host + iptables -A OUTPUT -p udp -m multiport --dport 53,123,5060 -j ACCEPT # DNS, TIME, VoIP + iptables -A OUTPUT -p tcp --dport 5060 -j ACCEPT # VoIP + iptables -A OUTPUT -p tcp --dport 80 -d 63.208.196.0/24 -j ACCEPT # DynDNS + iptables -A OUTPUT -d myMailServer.com -j ACCEPT # e-Mail OUT + iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # stateful conntrack + iptables -A OUTPUT -d 212.42.244.73 -p tcp --dport 80 -j ACCEPT # Plugins Server AVM + + # iptables -A OUTPUT -d www.dasoertliche.de -p tcp --dport 80 -j ACCEPT # Für Telefonbuch Abfrage durch die Box + # iptables -A OUTPUT -d www.dastelefonbuch.de -p tcp --dport 80 -j ACCEPT + # iptables -A OUTPUT -d www.goyellow.de -p tcp --dport 80 -j ACCEPT + # iptables -A OUTPUT -d www.11880.com -p tcp --dport 80 -j ACCEPT + # iptables -A OUTPUT -d www.google.de -p tcp --dport 80 -j ACCEPT + # iptables -A OUTPUT -d www.das-telefonbuch.at -p tcp --dport 80 -j ACCEPT + # iptables -A OUTPUT -d www.search.ch -p tcp --dport 80 -j ACCEPT + # iptables -A OUTPUT -d www.anywho.com -p tcp --dport 80 -j ACCEPT + + iptables -A OUTPUT -j LOG --log-prefix "[IPT] WARNING-CALL-HOME " # Nicht Erlaubten ausgehenden Traffic Loggen + iptables -P OUTPUT DROP # und Sperren + + # # # Rules for FORWARD + + iptables -P FORWARD DROP + iptables -A FORWARD -j TRANS # Regeln für LAN - WAN Verkehr + iptables -A FORWARD -j LOG --log-prefix "[IPT] DENY-FWD-ACCESS " + +- Im Gegensatz zur AVM-Firewall werden iptables Regeln sofort wirksam, + bei Regeländerungen in der AVM Firewall ist ein Restart vom dsld + nötig. +- Wenn man alle gewünschten Regeln definiert und getestet hat, kann man + sie als Batch in die **/var/flash/debug.cfg** schreiben beim Start + der Box automatisch aktivieren. +- Zunächst alle benötigten Module mit **modprobe** laden +- danach die **iptables** Anweisungen in der richtigen Reihenfolge + eintragen. (Die Ketten werden immer von oben nach unten abgearbeitet! + ) +- im Kernel Log / auf Konsole1 sieht man alle LOG Einträge der Pakete, + die die entsprechenden LOG Anweisungen passieren. +- Und + `​hier <http://www.chiark.greenend.org.uk/~peterb/network/drop-vs-reject>`__ + noch ein lesenswerter Artikel, der sich mit den Vor- bzw. Nachteilen + von REJECT bzw. DROP beschäftigt. + +.. _AnmerkungzuKernelLogs: + +Anmerkung zu Kernel Logs +~~~~~~~~~~~~~~~~~~~~~~~~ + +AVM hat Änderungen im System eingebaut, die das Protokollieren von +Kernel Meldungen im Syslog verhindern. Um die LOG Einträge im Syslog zu +schreiben kann man mit : + + **echo STD_PRINTK > /dev/debug** + +den AVM_PRINTK (und damit DECT) temporär abschalten. Mit der Anweisung: + + **echo AVM_PRINTK > /dev/debug** + +wird der ursprüngliche Zustand wiederhergestellt und DECT funktioniert +wieder; die LOG Einträge werden wieder nur noch auf Konsole1 ausgegeben. + +You can also try a patch from `this ticket </ticket/254>`__, but first +read the comments carefully. + +.. _WasistderUnterschiedvonINPUTOUTPUTundFORWARD: + +Was ist der Unterschied von INPUT, OUTPUT und FORWARD +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- INPUT Kette filtert nur den eingehenden Verkehr zum localhost + (FritzBox), damit werden Dienste die die FritzBox bereitstellt + freigeschaltet. +- OUTPUT Kette filtert nur den Verkehr, der von der FritzBox + (localhost) in andere Netze geht, also Dienste, die die FritzBox + benötigt. +- FORWARD Kette filtert den Verkehr zwischen den Interfaces, also z.B. + Internet < — > LAN / WLAN, also Dienste, die die Box "durchschleust". +- conntrack Regeln dienen dem Daten-Rückfluss und sind deshalb immer im + komplementären Zweig der Regel angesiedelt für INPUT Regel im OUTPUT + Zweig etc.) + +.. _HinweisezumCodeBeispiel: + +Hinweise zum Code Beispiel +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- Die erste / oberste Regel der INPUT / OUTPUT Ketten sollte immer ein + ausreichendes ACCEPT für den Admin Zugang beinhalten, damit man sich + nicht aus Versehen selbst aussperrt. +- Die default Policy sollte erst dann auf DENY gestellt werden, wenn + man alles erfolgreich getestet hat, man kann auch darauf verzichten + wenn man als letzte Regel der jeweiligen Kette eine DENY oder REJECT + Regel für alle Pakete formuliert. +- im Beispiel wurde auch eine eigene Kette TRANS definiert und im + FORWARD Zweig eingehängt, um die Fähigkeiten zu demonstrieren. +- Das Beispiel beinhaltet keine Regeln für VoIP / Portforwarding etc. + Es ist ein auf der 7270 getesteter minimaler Satz für die + Basis-Internet Funktionalität und kann natürlich beliebig erweitert + werden. +- Es sind keine NAT Regeln enthalten, da der **dsld** (AVM-Firewall & + DSL Interface) im System belassen wurde und diese Aufgabe bestens + vorher erfüllt. +- Es wurden nur die Module beschrieben / geladen, die für das Beispiel + relevant sind, bei Bedarf können weitere Module per *modprobe* + geladen werden. +- Das Beispiel ist sehr restriktiv, was den Verkehr der FritzBox ins + Internet betrifft; es verbietet alles, was nicht explizit per Regel + erlaubt wird. +- Das Beispiel zeigt einen sehr kleinen Teil der Fähigkeiten von + iptables, wer mehr will findet im `​Linux-Kompendium: Linux-Firewall + mit + IP-Tables <http://de.wikibooks.org/wiki/Linux-Kompendium:_Linux-Firewall_mit_IP-Tables>`__ + jede Menge nützliches Wissen vermittelt. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `iptables-cgi <iptables-cgi.html>`__ - Eine Weboberfläche für + iptables (freetz paket) +- `NHIPT - iptables CGI <nhipt.html>`__ - Weboberfläche für iptables + (unterstützt IPv4 & IPv6; Als freetz Paket oder direkt von USB + nutzbar) +- `cpmaccfg <../help/howtos/security/switch_config.html>`__ - Trennen + der LAN Interface Bridge und Konfiguration einer DMZ +- `OpenVPN <openvpn.html>`__ - VPN Tunnel mit der FritzBox +- `AVM Firewall <avm-firewall.html>`__ - Der kleine Bruder von iptables +- `Freetz als interner Router mit + Firewall <../help/howtos/security/router_and_firewall.html>`__ +- `WLAN und LAN trennen mit + iptables <../help/howtos/security/split_wlan_lan.html>`__ +- Die Suchfunktion im `​Freetz - + Forum <http://www.ip-phone-forum.de/forumdisplay.php?f=525>`__ bietet + auch weitere Hilfe zu speziellen Fragen + +— cando + +.. _ÄltereBeiträgebetreffenFritzBoxenvorder72xxSerie: + +Ältere Beiträge (betreffen FritzBoxen vor der 72xx Serie) +========================================================= + +Damit man **iptables** verwenden kann, müssen die entsprechenden +Kernel-Module in Freetz einkompiliert sein. Bei der Auswahl der Module +aus der Unzahl der Möglichkeiten kann hilfreich sein, firewall-cgi? zu +aktivieren, auch wenn es dann nicht benutzt wird. Die wichtigsten +iptables-Module werden dann automatisch einkompiliert. + +.. code:: bash + + host# scp ../ds-0.2.5/kernel/root/usr/lib/iptables/libipt_limit.so root@fritz:/mod/lib + fritz# iptables -m limit -h + host# scp + ../ds-0.2.5/kernel/modules-4mb/lib/modules/2.4.17_mvl21-malta-mips_fp_le/kernel/net/ipv4/netfilter/iptable_nat.o root@fritz:/mod/lib + fritz# insmod insmod /mod/lib/iptable_nat.o + +Siehe auch Howto: `WLAN und LAN trennen mit +iptables <../help/howtos/security/split_wlan_lan.html>`__ + +.. _KnownBugFritzBoxvor7270: + +Known Bug (FritzBox vor 7270) +----------------------------- + +|Warning| Nach Laden des Conntack-Moduls weist der Kernel immer wieder +Pakete mit ``...ip_conntrack_tcp: INVALID: invalid TCP flag combinat`` +o.ä. ab. Das ist ja gut so. Aber warum kommen die nicht an den +iptables-Chains vorbei? Das scheint vorher zu passieren. + +danisahne schreibt dazu: + + Das ist schon mehreren aufgefallen. Ich habe keine Ahnung (hab mich + noch nicht genauer damit beschäftigt, warum diese Pakete als INVALID + erkannt werden. Tatsache ist, dass deswegen das forewall-cgi Paket + nicht zusammen mit der Telefonie funktioniert. Ist quasi noch ein + offener Bug. + +.. + + UPDATE: Das Problem sollte ab Version 0.2.7 gelöst sein. + Verbindungen, die vor dem Laden des iptables conntrack Moduls + aufgebaut wurden, werden dann als INVALID erkannt. Der Workaround in + 0.2.7 läd diese Module im Skript modload, falls sie mitinstalliert + wurden. — danisahne + +|Warning| ds26: Die Module werden nicht automatisch geladen. Mit geladenem +ip_conntrack stürzt meine Box nach ca. 3h ab. Ich hab den dsld im +Verdacht. Aber hier müsste mal jemand weiterforschen… — olistudent + +|Warning| Ich habe festgestellt, dass es sich erheblich bessert, wenn man +folgendes macht: + +.. code:: bash + + # 32MB RAM + CONNTRACK_MAX=2048 + # CONNTRACK_MAX/8 + CONNTRACK_HASH=256 + + modprobe ip_tables + modprobe ip_conntrack hashsize=$CONNTRACK_HASH + modprobe ipt_state + modprobe iptable_filter + modprobe iptable_nat + echo $CONNTRACK_MAX > /proc/sys/net/ipv4/netfilter/ip_conntrack_max + +Hier führten diese Einstellungen zu Uptimes von ~ 2 Tagen statt +mindestens 5x Reboot am Tag (W900V) (`Ticket 260 </ticket/260>`__) + + — crissi + +- Tags +- `firewall </tags/firewall>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `routing </tags/routing>`__ +- `security </tags/security>`__ +- `überarbeiten </tags/%C3%BCberarbeiten>`__ + +.. |Warning| image:: ../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/packages/irssi.rst b/wiki/packages/irssi.rst new file mode 100644 index 0000000..d9f6bc6 --- /dev/null +++ b/wiki/packages/irssi.rst @@ -0,0 +1,29 @@ +irssi +===== + +`​irssi <http://www.irssi.org/>`__ ist ein +Konsolen-\ `​IRC-Client <http://de.wikipedia.org/wiki/IRC-Client>`__ - +d.h. im Gegensatz zu den meisten anderen IRC-Clients, verwendet *irssi* +keine grafische Oberfläche. Das macht ihn natürlich für unsere +Freetz-Box interessant. Da *irssi* über eine auf +`​Perl <http://de.wikipedia.org/wiki/Perl_(Programmiersprache)>`__ +basierende "Scripting Engine" verfügt, lässt sich die Kernfunktionalität +über Perl-Skripte erweitern - sofern man auf der Box auch Perl (z.B. +[packages/microperl microperl]) installiert hat. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​irssi Homepage <http://www.irssi.org/>`__ +- `​Wikipedia-Artikel zu + ''irssi'' <http://de.wikipedia.org/wiki/Irssi>`__ +- `​irssi Dokumentation <http://de.wikibooks.org/wiki/Irssi>`__ auf + WikiBooks + +- Tags +- `console </tags/console>`__ +- `im </tags/im>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/jamvm.rst b/wiki/packages/jamvm.rst new file mode 100644 index 0000000..7b1f9f6 --- /dev/null +++ b/wiki/packages/jamvm.rst @@ -0,0 +1,54 @@ +.. _JamVM: + +JamVM +===== + +`​JamVM <http://jamvm.sourceforge.net/>`__ ist eine neue `​Java Virtual +Machine <http://en.wikipedia.org/wiki/Java_Virtual_Machine>`__, die der +JVM Spezifikation Version 2 (blue book) entspricht. Im `​Vergleich mit +den meisten anderen +VM's <http://bugblogger.com/java-vms-compared-160/>`__ (frei und +kommerziell) ist *JamVM* extrem klein ("stripped executables" für +PowerPC nur ~160K, und für Intel 140K). Dennoch unterstützt es, anders +als andere "kleine" VMs (z.B. KVM) die vollständige Spezifikation, und +enthält Support für "object finalisation", Soft/Weak/Phantom Referenzen, +class-unloading, das `​Java Native +Interface <http://de.wikipedia.org/wiki/Java_Native_Interface>`__ (JNI) +und die Reflection API. + +JamVM nutzt die `​GNU +Classpath <http://de.wikipedia.org/wiki/GNU_Classpath>`__ Java Class +Library. Eine Reihe von Klassen sind Referenz-Klassen, die für eine +spezielle VM angepasst werden müssen. Diese werden zusammen mit *JamVM* +gebündelt. + +|Warning| **Anmerkung:** *JamVM* wird nicht mit der Class Library von Suns +oder IBMs JVMs funktionieren. + +Da die normale Klassenbiliothek (glibj.zip) über 9 MB groß ist wird +standardmäßig nur eine reduzierte Version (mini.jar) installiert. +Deshalb muss jamvm folgendermaßen aufgerufen werden um z.B. die Datei +Hello.class im aktuellen Verzeichnis aufzurufen: + +.. code:: bash + + jamvm -Xbootclasspath/a:/usr/share/classpath/mini.jar Hello + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​JavaVM Homepage <http://jamvm.sourceforge.net/>`__ +- `​Vergleich verschiedener + JVMs <http://bugblogger.com/java-vms-compared-160/>`__ +- `​List of + JVMs <http://en.wikipedia.org/wiki/List_of_Java_virtual_machines>`__ +- `​freie Java + Implementierungen <http://en.wikipedia.org/wiki/Free_Java_implementations>`__ + +- Tags +- `packages <../packages.html>`__ + +.. |Warning| image:: ../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/packages/knock.rst b/wiki/packages/knock.rst new file mode 100644 index 0000000..cffd6af --- /dev/null +++ b/wiki/packages/knock.rst @@ -0,0 +1,32 @@ +knockd +====== + +*"Wer klopfet, dem wird aufgetan"* - so könnte man dieses Paket +überschreiben. *knockd* bietet eine gute Möglichkeit, Dienste von Remote +zu starten. Läuft der (übrigens sehr resourcenschonende) Knock-Daemon +auf der Fritzbox, so kann man z.B. - bei entsprechender Konfiguration - +durch das korrekte "Klopfzeichen" signalisieren, dass man "rein möchte". +Wurde der richtige "Knock Code" gesendet, startet knockd das zugehörige +Programm (z.B. den SSH Daemon). Ein weiteres "Klopfen" beendet ihn dann +später wieder. Dieses Vorgehen bietet zusätzliche Sicherheit, da Ports +nur dann offen sind, wenn man sie auch wirklich braucht - der Portscan +eines Hackers läuft also damit meist ins Leere. + +.. _WeiterführendeLinks:: + +Weiterführende Links: +--------------------- + +- `​Ein kurzer Workshop zu + knockd <http://wiki.hetzner.de/index.php/Knockd>`__ +- `​Artikel zu + "Portknocking" <http://blog.roothell.org/archives/146-Portknocking-Tools-Teil-1-knockd.html>`__ +- `​Knockd Demo auf + Youtube <http://www.youtube.com/watch?v=EbzrLPf6D7Y>`__ + +- Tags +- `daemons </tags/daemons>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `security </tags/security>`__ +- `server </tags/server>`__ diff --git a/wiki/packages/ldd.rst b/wiki/packages/ldd.rst new file mode 100644 index 0000000..36d001e --- /dev/null +++ b/wiki/packages/ldd.rst @@ -0,0 +1,33 @@ +ldd +=== + +**ldd** steht für **L**\ ist **D**\ ynamic **D**\ ependencies. Es +handelt sich hier um ein kleines Konsolen-Tool, mit dem sich +herausfinden lässt, ob ein Binary von anderen Binaries (in der Regel +`​dynamische +Bibliotheken <http://de.wikipedia.org/wiki/Programmbibliothek#Dynamische_Bibliotheken>`__) +abhängt und wenn ja, von welchen. + +Wie die Beschreibung richtig vermuten lässt, wird *ldd* in der Regel von +Entwicklern benutzt - wohingegen der "normale Anwender" sie eher selten +bis gar nicht benötigt. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​ldd Man + page <http://www.gsp.com/cgi-bin/man.cgi?section=1&topic=ldd>`__ +- `​Unix Tip: Viewing library dependencies with + ldd <http://www.itworld.com/nls_unix_lib060727>`__ +- `​Linker and Libraries + guide <http://docsun.cites.uiuc.edu/sun_docs/C/solaris_9/SUNWdev/LLM/p14.html>`__ + +-------------- + +- Tags +- `console </tags/console>`__ +- `packages <../packages.html>`__ +- `programming </tags/programming>`__ +- `tools </tags/tools>`__ diff --git a/wiki/packages/lighttpd.rst b/wiki/packages/lighttpd.rst new file mode 100644 index 0000000..d9f4866 --- /dev/null +++ b/wiki/packages/lighttpd.rst @@ -0,0 +1,141 @@ +.. _lighttpdWebserver: + +lighttpd Webserver +================== + +Mit diesem Paket ist es möglich, den lighttpd Webserver zu erstellen. + +.. _Einrichtung: + +Einrichtung +----------- + +Um den Webserver nutzen zu können, muss ein Verzeichnis erstellt werden, +in dem der lighttpd agieren kann. Dieses muss unbedingt erstellt und mit +den nötigen Rechten versehen werden. + +-------------- + +**Unbedingt beachten:** In dieser Anleitung wird angenommen, dass +`USB-root <usbroot.html>`__ genutzt wird. Sollte USB-root nicht +verwendet werden, muss auf die folgenden Verzeichnisstrukturen noch +größeres Augenmerk gelegt werden. In solch einem Fall **könnte** +``/var/media/ftp/uStor01/rootfs/www`` eine Analogie für ``/www`` sein. + +-------------- + +Zunächst muss eine Konsolensitzung mit dem Router bestehen, es spielt +keine Rolle, ob dafür Telnet oder `SSH <dropbear.html>`__ genutzt wird. + +:: + + # erstelle Webserver-Verzeichnis und setze 'rwxr-xr-x'-Rechte + mkdir /www + chmod -R 755 /www + +Nun kann man im Freetz-Konfigurationsfrontend die Einstellungen für den +lighttpd anpassen und übernehmen. Daraufhin wird die benötigte +Verzeichnisstruktur innerhalb des Webserver-Verzeichnisses angelegt. Die +Dokumente müssen im Verzeichnis ``/www/websites`` liegen. Je nach +Einstellung ist der Server nun bspw. über ``http://fritz.box:8008`` +verfügbar. + +.. _Perl: + +Perl +---- + +Will man Perl-Skripte mit dem Webserver benutzen und den +``chroot``-Modus benutzen, muss man sich darum kümmern, dass das Paket +`microperl <microperl.html>`__ sowie dessen Bibliotheken in die +Verzeichnisstruktur des lighttpd kopiert wird. + +:: + + # kopiere 'microperl' als 'perl' in das '/usr/bin'-Verzeichnis des Webservers + cp -p /usr/bin/microperl /www/usr/bin/perl + + # erstelle ein Verzeichnis '/lib' für die Bibliotheken + mkdir /www/lib + + # kopiere die von 'microperl' benötigten Bibliotheken in das '/lib'-Verzeichnis des Webservers + # Abhängigkeiten können mit 'ldd /usr/bin/microperl' ausgegeben werden + cp -p /lib/ld-uClibc.so.0 /www/lib + cp -p /lib/libc.so.0 /www/lib + cp -p /lib/libgcc_s.so.1 /www/lib + cp -p /lib/libm.so.0 /www/lib + +Wenn neben ``*.cgi``-Dateien auch ``*.pl``-Dateien ausgeführt werden +sollen, muss außerdem noch eine Zeile in die 'Additional'-Konfiguration +von lighttpd (zu finden im Freetz-Konfigurationsmenü unter ``Settings`` +→ ``'lighttpd: Additional``): + +.. code:: bash + + # aktiviere CGI Unterstützung für *.pl-Dateien + cgi.assign += ( ".pl" => "/usr/bin/perl" ) + +Außerdem muss darauf geachtet werden, dass jegliche Perl-Skripte +Ausführrechte haben, dies ist mit einem einfachen ``chmod 755 DATEI.pl`` +zu erledigen. + +.. _Lua: + +Lua +--- + +make menuconfig: + +- *lighttpd > build with LUA support* +- *lighttpd > lighttpd Modules > include mod_magnet* + +Example: + +- put this in *lighttpd > Additional*: + +.. code:: bash + + server.modules += ( "mod_magnet" ) + magnet.attract-physical-path-to = ( server.document-root + "/ip.lua" ) + +- put this in *ip.lua* in your document root: + +.. code:: bash + + lighty.header["Content-Type"] = "text/html" + lighty.content = { "Your IP-address is: ", lighty.env["request.remote-ip"] } + return 200 + +- browse to *http://fritz.box:<configured port>/ip.lua* + +Links: + +- `​The Programming Language LUA <http://www.lua.org/>`__ +- `​Lighttpd - Docs:ModMagnet - lighty + labs <http://redmine.lighttpd.net/wiki/lighttpd/Docs:ModMagnet>`__ +- `​AbsoLUAtion - The powerful combo of Lighttpd + + Lua <http://redmine.lighttpd.net/wiki/1/AbsoLUAtion>`__ + +Advantage over PHP: small, fast, low memory usage, feature rich +programming language. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​Wikipedia Artikel <http://de.wikipedia.org/wiki/Lighttpd>`__ zu + Lighttpd +- `​Lighttpd Homepage <http://www.lighttpd.net>`__ +- `​Forumsdiskussion <http://www.ip-phone-forum.de/showthread.php?t=185448>`__ + im IPPF zu diesem Paket +- `​HowTo <http://www.howtoforge.com/setting-up-webdav-with-lighttpd-debian-etch>`__ + setting up webdav with lighttpd in Debian Etch +- `​HowTo <http://www.howtoforge.de/howto/wie-man-webdav-mit-lighttpd-auf-debian-etch-konfiguriert>`__ + (s.o., auf Deutsch) + +- Tags +- `daemons </tags/daemons>`__ +- `packages <../packages.html>`__ +- `server </tags/server>`__ +- `web </tags/web>`__ diff --git a/wiki/packages/lsof.rst b/wiki/packages/lsof.rst new file mode 100644 index 0000000..6f4a7ac --- /dev/null +++ b/wiki/packages/lsof.rst @@ -0,0 +1,26 @@ +lsof +==== + +Mit ``lsof`` lässt sich feststellen, welche Dateien wo und von wem +gerade geöffnet sind. Dies kann sehr hilfreich sein, wenn man z.B. ein +angeschlossenes Wechselmedium (USB-Stick oder USB-Festplatte) von der +Box entfernen will, sich das Dateisystem aber nicht "unmounten" lässt, +weil es noch in Benutzung ist ("still in use") - mount sagt einem ja +nur, dass dem so sei, gibt aber keine Details bekannt. + +Beispiel: + +.. code:: bash + + # lsof /var + COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME + syslogd 350 root 5w VREG 222,5 0 440818 /var/adm/messages + syslogd 350 root 6w VREG 222,5 339098 6248 /var/log/syslog + cron 353 root cwd VDIR 222,5 512 254550 /var -- atjobs + +Weitere Informationen finden sich u.a. bei +`​Wikipedia <http://en.wikipedia.org/wiki/Lsof>`__. + +- Tags +- `filesystem </tags/filesystem>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/ltrace.rst b/wiki/packages/ltrace.rst new file mode 100644 index 0000000..b8ade4b --- /dev/null +++ b/wiki/packages/ltrace.rst @@ -0,0 +1,25 @@ +ltrace +====== + +`​ltrace <http://ltrace.alioth.debian.org/>`__ ist ein Debug-Tool, mit +dem sich von einem Programm ausgelöste "Library Calls" +(Bibliotheks-Aufrufe) sowie alle empfangenen Signale monitoren lassen. +Ein vergleichbares Tool findet sich im Paket `strace <strace.html>`__. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​ltrace Homepage <http://ltrace.alioth.debian.org/>`__ +- `​ltrace Man page <http://linux.die.net/man/1/ltrace>`__ +- `​PDF paper about ''ltrace'' + internals <http://ols.108.redhat.com/2007/Reprints/branco-Reprint.pdf>`__ + +-------------- + +- Tags +- `console </tags/console>`__ +- `packages <../packages.html>`__ +- `programming </tags/programming>`__ +- `tools </tags/tools>`__ diff --git a/wiki/packages/lua.rst b/wiki/packages/lua.rst new file mode 100644 index 0000000..b4806eb --- /dev/null +++ b/wiki/packages/lua.rst @@ -0,0 +1,31 @@ +.. _Lua: + +Lua +=== + +`​Lua <http://www.lua.org/>`__ ist eine +`​Skriptsprache <http://de.wikipedia.org/wiki/Skriptsprache>`__ zum +Einbinden in Programme, um diese leichter weiterentwickeln und warten zu +können. Eine der besonderen Eigenschaften von Lua ist die geringe Größe +des kompilierten Skript-Interpreters. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​Lua Homepage <http://www.lua.org/>`__ +- `​Wikipedia Artikel <http://de.wikipedia.org/wiki/Lua>`__ +- `​Lua für Anfänger <http://lua.gts-stolberg.de/>`__ +- `​Lua + Links <http://www.dmoz.org/World/Deutsch/Computer/Programmieren/Sprachen/Lua/>`__ +- `​Libraries And + Bindings <http://lua-users.org/wiki/LibrariesAndBindings>`__ +- `Ticket with patch for common libraries </ticket/1325>`__ +- `LUA for Haserl </ticket/1326>`__ + +-------------- + +- Tags +- `packages <../packages.html>`__ +- `programming </tags/programming>`__ diff --git a/wiki/packages/lynx.rst b/wiki/packages/lynx.rst new file mode 100644 index 0000000..b9ede46 --- /dev/null +++ b/wiki/packages/lynx.rst @@ -0,0 +1,35 @@ +.. _Lynx: + +Lynx +==== + +`​Lynx <http://lynx.isc.org/>`__ ist ein Web-Browser, der ohne grafische +Oberfläche daherkommt - also von der Konsole zu nutzen ist. Anstelle von +Grafiken stellt er die "ALT"-Tags ("Alternative Description") dar, bzw. +(so diese nicht vorhanden sind) den Namen der Bilddatei. Man kann Lynx +auch so konfigurieren, dass er diese als "Links" darstellt, die mit +einem externen Programm geöffnet werden. +`​Cookies <http://de.wikipedia.org/wiki/HTTP-Cookie>`__ und +`​Image-Maps <http://de.wikipedia.org/wiki/Verweissensitive_Grafik>`__ +werden ebenfalls unterstützt - Tabellen hingegen nur eingeschränkt, +`​Java <http://de.wikipedia.org/wiki/Java_(Programmiersprache)>`__ sowie +`​JavaScript <http://de.wikipedia.org/wiki/Javascript>`__ überhaupt +nicht. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​Lynx Homepage <http://lynx.isc.org/>`__ +- `​The History of + Lynx <http://people.cc.ku.edu/~grobe/early-lynx.html>`__ +- `​Tips on using + Lynx <http://brainstormsandraves.com/articles/browsers/lynx/>`__ +- `​Liste von + Web-Browsern <http://de.wikipedia.org/wiki/Liste_von_Webbrowsern>`__ + +- Tags +- `console </tags/console>`__ +- `packages <../packages.html>`__ +- `web </tags/web>`__ diff --git a/wiki/packages/m-i-t.rst b/wiki/packages/m-i-t.rst new file mode 100644 index 0000000..9041b1c --- /dev/null +++ b/wiki/packages/m-i-t.rst @@ -0,0 +1,19 @@ +module-init-tools +================= + +Das Paket **module-init-tools** (oder kurz: *m-i-t*) enthält diverse +Programme zur Verwaltung von Kernel-Modulen - also quasi die Programme +``insmod``, ``lsmod``, ``rmmod``, ``depmod`` und ``modprobe``. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​Linux-From-the-Scratch: + Module-Init-Tools <http://oss.erdfunkstelle.de/lfs-de/6.0/online/chapter06/module-init-tools.html>`__ + +- Tags +- `console </tags/console>`__ +- `packages <../packages.html>`__ +- `tools </tags/tools>`__ diff --git a/wiki/packages/madplay.rst b/wiki/packages/madplay.rst new file mode 100644 index 0000000..ee123f9 --- /dev/null +++ b/wiki/packages/madplay.rst @@ -0,0 +1,27 @@ +madplay +======= + +`​MAD <http://www.underbit.com/products/mad/>`__ ist ein qualitativ +hochwertiger `​MPEG <http://de.wikipedia.org/wiki/MPEG>`__ Audio +Decoder. MPEG rein - +`​PCM <http://de.wikipedia.org/wiki/Puls-Code-Modulation>`__ raus, und +zwar in 24-Bit. Da *MAD* bei sämtlichen Berechnungen auf +Gleitkomma-Zahlen verzichtet, eignet es sich besonders für "Embedded +Systems" sowie "schwachbrüstige Systeme". + +*Freetz* verwendet *MAD' z.B. im Paket*\ `DTMFBox <dtmfbox.html>`__\ *.* + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​MAD Homepage <http://www.underbit.com/products/mad/>`__ +- `​MAD Projektseite <http://sourceforge.net/projects/mad/>`__ + (Sourceforge) + +-------------- + +- Tags +- `audio </tags/audio>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/matrixtunnel.rst b/wiki/packages/matrixtunnel.rst new file mode 100644 index 0000000..b4966f0 --- /dev/null +++ b/wiki/packages/matrixtunnel.rst @@ -0,0 +1,30 @@ +matrixtunnel +============ + +Die Idee für **matrixtunnel** hat der Autor nach eigenen Worten von +`stunnel <stunnel.html>`__ geklaut. Es handelt sich hier um eine +Möglichkeit, das Webinterface per https ansprechen zu können. Im +Gegensatz zu *stunnel* basiert *matrixtunnel* jedoch auf der +superkleinen *matrixssl* Bibliothek. + +Eine gute Beschreibung, wie man einen MT einrichtet, findet sich im +Artikel zur +`Rudi-Shell <rudi-shell.html#https-Zugriffreloadedimproved>`__. Ein +Stückchen weiter oben wird auch beschrieben, wie man `Zertifikate +erzeugen <rudi-shell.html#SichererZugriffviahttps>`__ kann, die sowohl +für OpenSSL als auch für MatrixSSL passend sind. + +Übrigens: *matrixtunnel* kann man nicht nur für das Verschlüsseln von +http, sondern auch für beliebige TCP Connections einsetzten. + +|Warning| Achtung: matrixtunnel wird nicht mehr gefplegt, der Autor hat +aber einen Nachfolger `xrelayd <xrelayd.html>`__ vorgestellt, der jedoch +etwas mehr Platz als die Kombination matrixtunnel/matrixssl benötigt. + +- Tags +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `tunnel </tags/tunnel>`__ + +.. |Warning| image:: ../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/packages/mc.rst b/wiki/packages/mc.rst new file mode 100644 index 0000000..95e7d30 --- /dev/null +++ b/wiki/packages/mc.rst @@ -0,0 +1,26 @@ +*TODO: Verschiedene Menüoptionen beschreiben, insbesondere +Subshell-Support mit Bash …* + +.. _MidnightCommander: + +Midnight Commander +================== + +Der Midnight Commander ist ein OpenSource-Klon des Norton Commander - +und wesentlich umfangreicher als z.B. der `DECO <deco.html>`__, was sich +natürlich nicht zuletzt auch in seiner Größe bemerkbar macht (DECO: ca. +60kb, mc (ohne Hilfedateien): ca. 400kb). + +Er erlaubt das navigieren durch die Verzeichnisstruktur, die Anzeige und +Editierung von Textdateien und sogar das Entpacken von Archiven. Auch +ein FTP-Client ist enthalten, sodass man auf FTP-Server fast so bequem +zugreifen kann wie auf lokale Verzeichnisse. + +`​Wikipedia-Beitrag zum Midnight +Commander <http://de.wikipedia.org/wiki/Midnight_Commander>`__ + +- Tags +- `console </tags/console>`__ +- `packages <../packages.html>`__ +- `tools </tags/tools>`__ +- `überarbeiten </tags/%C3%BCberarbeiten>`__ diff --git a/wiki/packages/mcabber.rst b/wiki/packages/mcabber.rst new file mode 100644 index 0000000..d1bd61f --- /dev/null +++ b/wiki/packages/mcabber.rst @@ -0,0 +1,37 @@ +mcabber +======= + +`​mcabber <http://mcabber.com/>`__ ist ein textbasierter +`​Jabber <http://de.wikipedia.org/wiki/Extensible_Messaging_and_Presence_Protocol>`__ +Client, der auf `​ncurses <http://de.wikipedia.org/wiki/Ncurses>`__ +aufbaut. + +*mcabber* unterstützt u.a. + +- SSL/GnuTLS +- `​OpenPGP <http://en.wikipedia.org/wiki/OpenPGP>`__ +- Multi-User Chat +- History logging +- `​ASpell <http://en.wikipedia.org/wiki/Aspell>`__ +- External action triggers + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​mcabber Homepage <http://mcabber.com/>`__ +- `​mcabber Mirror <http://nerim.lilotux.net/mcabber/>`__ +- `​Vergleich von IM + Clients <http://en.wikipedia.org/wiki/Comparison_of_instant_messaging_clients>`__ + (Englisch) +- `​Anleitung aus dem Forum um die Fritzbox über Jabber zu + steuern <http://www.ip-phone-forum.de/showthread.php?p=1552715>`__ + +-------------- + +- Tags +- `console </tags/console>`__ +- `im </tags/im>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/mediaserver.rst b/wiki/packages/mediaserver.rst new file mode 100644 index 0000000..33cfdb4 --- /dev/null +++ b/wiki/packages/mediaserver.rst @@ -0,0 +1,141 @@ +**This package was removed in**\ `r1823 </changeset/1823>`__\ **!** + +.. _Mediaserver: + +Mediaserver +=========== + +Der Mediaserver kann mittels Freetz aus der Labor-Version von AVM +extrahiert und in andere Firmwares integriert werden. AVM beschreibt den +Server als +`​FRITZ!Musikbox <http://www.avm.de/de/Service/Service-Portale/Service-Portal/Labor/labor_download_usb_host/labor_download_usb_host.php>`__ +- im Grunde ist es aber "nur" ein UPnP-Mediaserver, welcher Mediendaten +(in diesem Fall MP3s) an kompatible Hard- und Software streamt. + +Wer den *Mediaserver* in der Firmware seiner FritzBox hat, ihn aber gar +nicht benötigt, kann ihn auch mit einem +`Patch <../patches/remove_mediasrv.html>`__ aus selbiger entfernen +lassen. Er macht ja z.B. keinerlei Sinn, wenn auf der Box gar keine +Media-Dateien (MP3 etc.) vorhanden sind, und mangels angeschlossenem +Storage auch gar kein Platz für selbige vorhanden wäre. + +.. _Funktionsweise: + +Funktionsweise +-------------- + +Sobald ein USB-Massenspeicher mit FAT32-Dateisystem von der FritzBox +erkannt wird, wird über die storage-Konfig des Hotplug-Daemons der +Mediaserver gestartet. Der FTP-Server läuft weiterhin, der Mediaserver +verlinkt sogar auf das Verzeichnis des FTP-Servers. + +In der Ereignisanzeige sollte folgende Meldung erscheinen: + +.. code:: bash + + Mediaserver mit xx Mediendateien gestartet. Alle Mediendateien stehen zur Verfügung. + +Mit den entsprechenden UPnP-Clients kann dann auf die MP3s zugegriffen +werden. + +.. _Dateien: + +Dateien +------- + +Folgende Dateien gehören zum Mediaserver-Paket: + ++-----------------------------------+-----------------------------------+ +| \|Datei | \|Zweck | ++-----------------------------------+-----------------------------------+ +| ``/sbin/start_mediasrv`` | Prüft verschiedene Ordner, setzt | +| | einen Link von /var/media/ftp auf | +| | /var/media/mediapath, startet den | +| | Mediaserver. | ++-----------------------------------+-----------------------------------+ +| ``/sbin/stop_mediasrv`` | Stoppt den Mediaserver. | ++-----------------------------------+-----------------------------------+ +| ``/sbin/mediasrv`` | Das eigentliche Server-Binary. | ++-----------------------------------+-----------------------------------+ +| ``/usr/lib/mediasrv/ConnectionMan | | +| ager.xml`` | | ++-----------------------------------+-----------------------------------+ +| ``/usr/lib/mediasrv/MediaServerDe | | +| vDesc-template.xml`` | | ++-----------------------------------+-----------------------------------+ +| ``/usr/lib/mediasrv/mediapath`` | | ++-----------------------------------+-----------------------------------+ +| ``/usr/lib/mediasrv/MediaServerDe | | +| vDesc.xml`` | | ++-----------------------------------+-----------------------------------+ +| ``/usr/lib/mediasrv/ContentDirect | | +| ory.xml`` | | ++-----------------------------------+-----------------------------------+ +| ``/etc/default.Fritz_Box_7170/{av | | +| m,1und1,freenet}/ConnectionManage | | +| r.xml`` | | ++-----------------------------------+-----------------------------------+ +| ``/etc/default.Fritz_Box_7170/{av | | +| m,1und1,freenet}/MediaServerDevDe | | +| sc-template.xml`` | | ++-----------------------------------+-----------------------------------+ +| ``/etc/default.Fritz_Box_7170/{av | | +| m,1und1,freenet}/mediapath`` | | ++-----------------------------------+-----------------------------------+ +| ``/etc/default.Fritz_Box_7170/{av | | +| m,1und1,freenet}/MediaServerDevDe | | +| sc.xml`` | | ++-----------------------------------+-----------------------------------+ +| ``/etc/default.Fritz_Box_7170/{av | | +| m,1und1,freenet}/ContentDirectory | | +| .xml`` | | ++-----------------------------------+-----------------------------------+ + +Außerdem werden verschiedene Bibliotheken benutzt, die auch in normalen +Firmware enthalten sind (z.B. für UPnP oder HTTP), und verschiedene +Skripte prüfen, ob ein Mediaserver in der Firmware enthalten ist und +reagieren entsprechend. + +.. _KompatibleClientsAuswahl: + +Kompatible Clients (Auswahl) +---------------------------- + +.. _Software: + +Software +~~~~~~~~ + +- Itunes +- Windows Mediaplayer 11 + +.. _Hardware: + +Hardware +~~~~~~~~ + +- Roku Soundbridge +- Terractec Noxon +- Pinnacle Systems Soundbridge + +.. _Firmware-Kompatibilität: + +Firmware-Kompatibilität +----------------------- + +Ein extrahierter Mediaserver lässt sich nicht wahllos mit jeder anderen +Firmware kombinieren, zum einen müssen verschiedene Scripte für das +Starten des Mediaservers schon vorbereitet sein, zum anderen müssen die +Bibliotheken der beiden Firmwares kompatibel sein, da verschiedene +Querabhängigkeiten existieren. + +Der Mediaserver aus der Laborversion 29.04.95-7553 funktioniert z.B. mit +den stabilen Firmwares 29.04.37 und 40.04.37. + +Der Mediaserver aus 29.04.95-8221 geht mit den beiden obigen Firmwares +nicht, dafür aber mit der 29.04.39. + +- Tags +- `audio </tags/audio>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/mediatomb.rst b/wiki/packages/mediatomb.rst new file mode 100644 index 0000000..a947d92 --- /dev/null +++ b/wiki/packages/mediatomb.rst @@ -0,0 +1,35 @@ +.. _MediaTomb: + +MediaTomb +========= + +**MediaTomb** ist ein OpenSource (GPL) UPnP MediaServer mit einer +schönen Web-Oberfläche, der das Streamen digitaler Medien im Heimnetz +und das Ansehen/Anhören auf einer ganzen Reihe von UPnP kompatiblen +Geräten (oftmals auch mit "DLNA" gekennzeichnet) ermöglicht. + +Eine vollständige Installation dürfte in den wenigsten Fällen in das +Dateisystem der Fritzbox passen (sofern man nicht etliche andere Dinge +weglässt): Allein das Binary bringt ca. 1.2 Megabyte auf die Waage, und +hinzu kommen noch weitere etwa 2.5 Megabyte Abhängigkeiten +(``libavcodec`` mit gut 1.2 MB, ``libsqlite3`` mit knapp 700 kB, +``libtag`` mit knapp 500 kB, ``ffmpeg`` …). + +Die Konfiguration von *MediaTomb* erfolgt dateibasiert (im `​UbuntuWiki +MediaTomb Artikel <http://wiki.ubuntuusers.de/Mediatomb>`__ ist dies +recht gut beschrieben). Informationen zu einem dafür in Freetz +integrierten Web-Interface finden sich u. a. in +`ticket:1993 </ticket/1993>`__. + +:sup:`(vielleicht mag noch jemand, der MediaTomb erfolgreich auf seine +Box bekommen hat, Hinweise zum "wie" ergänzen – insbesondere +hinsichtlich des Platzbedarfs?)` + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​MediaTomb Homepage <http://mediatomb.cc/>`__ +- `​UbuntuWiki MediaTomb + Artikel <http://wiki.ubuntuusers.de/Mediatomb>`__ diff --git a/wiki/packages/microperl.rst b/wiki/packages/microperl.rst new file mode 100644 index 0000000..824a9c0 --- /dev/null +++ b/wiki/packages/microperl.rst @@ -0,0 +1,30 @@ +microperl +========= + +**microperl** ist eine Perl Distribution, die noch kleiner ist als +*miniperl* (deswegen auch "micro" - vielleicht kommen bald noch nanoperl +und picoperl? |:-?|) Doch der Name täuscht leicht: Das Binary hat noch +satte 2 MB, dazu kommen 11 MB and Libraries (die zum Glück nicht +zwingend notwendig sind) - so Micro ist es also dann doch nicht… + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​bootstrapping with + microperl <http://www.perlmonks.org/?node_id=228040>`__ +- `​What is + Microperl <http://www.foo.be/docs/tpj/issues/vol5_3/tpj0503-0003.html>`__ +- `​IPPF + Artikel <http://www.ip-phone-forum.de/showthread.php?t=114888>`__ von + `​bodega <http://www.ip-phone-forum.de/member.php?u=101616>`__ + +-------------- + +- Tags +- `packages <../packages.html>`__ +- `programming </tags/programming>`__ + +.. |:-?| image:: ../../chrome/wikiextras-icons-16/smiley-confuse.png + diff --git a/wiki/packages/mini_fo.rst b/wiki/packages/mini_fo.rst new file mode 100644 index 0000000..58b8bad --- /dev/null +++ b/wiki/packages/mini_fo.rst @@ -0,0 +1,130 @@ +mini_fo +======= + +.. figure:: /screenshots/205.png + :alt: Mini_fo Webinterface + + Mini_fo Webinterface + +**mini_fo** ist ein Overlay-Dateisystem vergleichbar mit +`​UnionFS <http://de.wikipedia.org/wiki/UnionFS>`__, welches von +diversen Live-Distributionen (z.B. Knoppix) bekannt ist. Vereinfacht +ausgedrückt, lässt sich damit ein schreibgeschütztes Dateisystem +beschreibbar machen. Natürlich kann man auf dem schreibgeschützten +Medium nicht wirklich (physisch) schreiben: Änderungen werden an anderer +Stelle gespeichert, was aber für den Anwender derart transparent +geschieht, dass er davon eigentlich nichts merkt - sondern wirklich den +Eindruck eines einzelnen, beschreibbaren Mediums hat. + +.. _KonfigurationWebinterface: + +Konfiguration (Webinterface) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Das Paket wird über das Webinterface konfiguriert. Hierbei kann der +Speicherort für die Änderungen ausgewählt werden. Entweder RAM +(flüchtig) oder JFFS2 (reboot resistent). Bei Auswahl der Option JFFS2 +muss genügend freier Speicherplatz verfügbar sein (die Daten werden gzip +komprimiert abgespeichert): + +.. code:: bash + + root@fritz:/var/mod/root# df /dev/mtdblock5 + Filesystem 1K-blocks Used Available Use% Mounted on + /dev/mtdblock5 3200 2612 588 82% /sto + +Das Paket kann nur durch einen Reboot de-/aktiviert werden. + +.. _KonfigurationperHand: + +Konfiguration (per Hand) +~~~~~~~~~~~~~~~~~~~~~~~~ + +**mini_fo** ist ein Kernel-Modul, das man entweder ohne Argumente mit +insmod lädt… + +.. code:: bash + + insmod mini_fo + +…oder in der Freetz-Oberfläche in Modules einträgt, damit es beim Start +geladen wird: + +.. code:: bash + + mini_fo + +Ist es aktiv steht der mount-type 'mini_fo' zur Verfügung. Um /usr/www +beschreibbar zu machen genügt diese Zeile in rc.custom: + +.. code:: bash + + mkdir -p /tmp/usrwww /tmp/usrwww-sto && \ + mount -o bind /usr/www /tmp/usrwww && \ + mount -t mini_fo -o base=/tmp/usrwww,sto=/tmp/usrwww-sto minifo /usr/www + +Im Pfad /tmp/usrwww-sto befinden sich dann jegliche Änderungen. + +.. _MöglicheNebeneffekte: + +Mögliche Nebeneffekte +~~~~~~~~~~~~~~~~~~~~~ + +Ein Firmware-Update kann evtl. mit geladenem mini_fo Modul scheitern +(getestet mit 7170 4.8x). Es gibt dann keine Fehlermeldung aber die Box +hängt vor dem Herunterfahren und der Flash-Vorgang kommt nie zustande. +Wenn dies passiert sollte man vor einer Firmware-Aktualisierung ohne +mini_fo booten. Aktueller Trunk zeigt das Phenomen nicht. + +Wird mini_fo auf einer Box ohne JFFS2-Partition betrieben fängt es auch +Schreibzugriffe auf /data ab, zumindest bis ein USB-Stick gemountet ist. +In /sto/mini_fo taucht dann data/tam/config und data/tam/rec/ mit dem +Datum 2000 (also vor Zeitsync) auf. Dieser Nebeneffekt ermöglicht es +Anrufbeantworter ohne JFFS2-Partition und ohne USB-Stick zu testen, z.B. +zur Weiterleitung per Email mit anschließender Löschung. Dabei sollte +man die Aufnahmelänge begrenzen damit der RAM-Speicher nicht +versehentlich aufgebraucht werden kann. Speichert mini_fo im RAM gehen +allerdings bei einem Neustart alle derart definierten Anrufbeantworter +verloren. + +Bei Modellen der Generation 7170 zeigten sich Watchdog initiierte +Rebootschleifen (ca. 2-4min) bei aktiviertem WLAN mit Verschlüsselung im +DSL-Modem Modus (also Default nach Werksreset). Rebootgrund in crash.log +ist dann ein dsld Watchdog Timeout. Ohne WPA Verschlüsselung oder im +IP-Client Modus zeigt sich das Phenomen nicht. Offensichtlich werden +Semaphoren die dsld zur Verwaltung von Shared Memory in /var/tmp/csem +ablegt teilweise in /sto abgefragt und der Mechanismus empfindlich +gestört. + +.. _Restoreoriginalfile: + +Restore original file +~~~~~~~~~~~~~~~~~~~~~ + +The modified files are stored here (trunk version): + +.. code:: bash + + /sto/mini_fo/... + +So for example a modified */usr/sbin/blkid* is stored as +*/sto/mini_fo/usr/sbin/blkid*. + +If you remove the latter one, the original one will reappear in your +file system. + +.. _Sieheauch: + +Siehe auch +~~~~~~~~~~ + +- `​diesen + Thread <http://www.ip-phone-forum.de/showthread.php?t=111226>`__ im + Forum. +- `​mini_fo project + page <http://www.denx.de/twiki/bin/view/Know/MiniFOHome>`__. + +- Tags +- `filesystem </tags/filesystem>`__ +- `packages <../packages.html>`__ +- `überarbeiten </tags/%C3%BCberarbeiten>`__ diff --git a/wiki/packages/minidlna.rst b/wiki/packages/minidlna.rst new file mode 100644 index 0000000..864d0c9 --- /dev/null +++ b/wiki/packages/minidlna.rst @@ -0,0 +1,28 @@ +.. _MiniDLNA: + +MiniDLNA +======== + +.. figure:: /screenshots/243.jpg + :alt: minidlna + + minidlna + +| MiniDLNA ist ein DLNA Server der darauf abzielt vollständig kompatibel + mit DLNA/UPnp-AV Clients zu sein. + +.. _Konfiguartion: + +Konfiguartion +------------- + +Das ``Datenbankverzeichnis`` sollte auf einen USB-Stick gelegt werden, +damit die Datenbank nicht bei jedem Reboot neu aufgebaut werden muss. + +.. _Links: + +Links +----- + +Projektseite: +`​http://sourceforge.net/projects/minidlna/ <http://sourceforge.net/projects/minidlna/>`__ diff --git a/wiki/packages/mod.rst b/wiki/packages/mod.rst new file mode 100644 index 0000000..ba94e8a --- /dev/null +++ b/wiki/packages/mod.rst @@ -0,0 +1,190 @@ +.. _Freetz-MOD: + +(Freetz-) MOD +============= + +| "mod" ist das sogenannte Base-Package. Es wird immer automatisch + installiert. +| Hiermit können grundlegende Dienste von Freetz wie Swap, + `FREETZ-MOUNT <../patches/freetzmount.html>`__, + `external <../help/howtos/common/external.html>`__ und das + Freetz-Webinterface konfiguriert werden. +| |Warning| Abhängig von der Konfiguration sind nur bestimmte zu sehen. + +swap +~~~~ + +Als Faustregel sollte man die Größe des RAMs als Größe der Swapdatei +nehmen. + +Über den Parameter *swappiness* (seit `r6882 </changeset/6882>`__) kann +das Swapverhalten beeinflusst werden. Je höher der eingetragene Wert ist +desto früher fängt die Box an den Auslagerungsspeicher zu nutzen +(`​Weiterlesen <http://lwn.net/Articles/83588/>`__). + +Vor allem beim Betrieb speicher hungriger Pakete wie z.B. +`PHP <php.html>`__, Tor `packages/tor <tor.html>`__ oder +`Transmission <transmission.html>`__ ist die Nutzung von Swap zu +empfehlen. + +get_ip +~~~~~~ + +Das Skript *get_ip* ermittelt die öffentliche IP, was an verschiedenen +Stellen in Freetz und dessen Packages benötigt wird. + +Hier kann das standardmäßige Verhalten von *get_ip* an die lokalen +Gegebenheiten angepasst werden. So funktioniert bei einer FritzBox, die +das Internet "mitbenutzt" (IP-Client) oder UMTS verwendet, nur die +``--extquery`` Methode, da die Box keine öffentliche IP erhält (NAT). +Die Standardeinstellung ``--all`` deckt diesen Fall jedoch ab, weil sie +nacheinander mehrere Methoden durchprobiert, bis die externe IP +ermittelt wurde. Wer ca. 0,4 s pro Abfrage (also 90%) sparen möchte, +kann hier in diesem Fall aber die Methode von ``-all`` auf +``--extquery`` ändern. + +.. _Konfigurationsdateien: + +Konfigurationsdateien +--------------------- + +.. _a.profile: + +.profile +~~~~~~~~ + +| Dies wird beim Login ausgeführt. Es können zB Aliase für häuftig + genutzte Befehle definiert werden: +| Beispiel: + +.. code:: bash + + alias nl="sed '=' | sed 'N;s/\n/\t/'" + alias tcpdump6="tcpdump ip6 or proto ipv6" + +crontab +~~~~~~~ + +| Der "cron" Daemon führt Befehle zu bestimmten Zeiten aus. Er wird + durch die crontab konfiguriert. +| Syntax: + +.. code:: bash + + Minute | Stunde | Tag | Monat | Wochentag | Befehl + +Beispiel: + +.. code:: bash + + 55 23 * * 7 logger "Es ist Sonntag, 5 Minuten vor 12" + */10 * * * * logger "Es sind wieder 10 Minuten vergangen" + * 6,18 * * * logger "Es ist 6 Uhr" + +|Warning| Im Gegensatz zu "normalen" Linux Systemen fehlt die +"Besitzer"-Spalte und alle Befehle werden als root ausgeführt. + +dtrace +~~~~~~ + +| Die Befehle in dieser Datei werden durch die Tastenkombination + ``#97*3*`` am Telefon ausgeführt. +| Beispiel: + +.. code:: bash + + #!/bin/sh + if [ "$(/etc/init.d/rc.lighttpd status)" != "stopped" ]; then + /etc/init.d/rc.lighttpd stop + else + /etc/init.d/rc.lighttpd start + fi + +|Warning| Nur sichtbar wenn der replace-dtrace Patch ausgewählt wurde! + +hosts +~~~~~ + +| Hier können IP-Adressen, Hostnamen und MAC-Adressen für DNS und DHCP + zueinander zugeordnet werden. Siehe auch `dnsmasq: Einträge in der + Hosts-Liste <dnsmasq.html#EinträgeinderHosts-Liste>`__ +| Syntax: + +.. code:: bash + + <ipaddr>|* <hwaddr>|[id:]<client_id>|* [net:]<netid>|* <hostname>|* [ignore] + +Beispiel: + +.. code:: bash + + 192.168.178.20 * * MeinPC-1 + 192.168.178.21 11:22:33:44:55:66 * MeinPC-2 + +modules +~~~~~~~ + +| Die Kernel-Module die in dieser Datei aufgeführt sind werden während + des Bootvorgangs geladen. +| Beispiel: + +.. code:: bash + + pl2303 + ftdi_sio + +|Warning| Die Namen der Module sind ohne Pfad und die Endung ``.ko`` +anzugeben. + +rc.custom +~~~~~~~~~ + +| Die Befehle in dieser Datei werden nach dem Bootvorgang ausgeführt. +| |Warning| Es dürfen keine Befehle eingetragen sein, die im Vordergrund + bleiben oder sehr lange brauchen. Dies könnte Probleme beim Starten + der FritzBox verursachen. Bei Befehlen in Verbindung mit einen + USB-Stick, bitte die Erweiterung rc.external verwenden. + +rc.external +~~~~~~~~~~~ + +| Diese Datei wird ausgeführt nachdem der Datenträger auf dem sich die + `external <../help/howtos/common/external.html>`__-Dateien befinden + eingehängt wurde und bevor er ausgehängt wird. +| Beispiel: + +.. code:: bash + + #!/bin/sh + case "$1" in + load) + logger "Datenträger eingehängt" + ;; + unload) + logger "Datenträger ausgehängt" + ;; + esac + +| +| |Warning| Bitte ``Advanced Options`` → ``External`` → + ``Enable external processing`` für diese Erweiterung aktivieren. + +shutdown +~~~~~~~~ + +| Die Befehle in dieser Datei werden während des Herunterfahres + ausgeführt. + +.. _udev_firstudev_final: + +udev_first / udev_final +~~~~~~~~~~~~~~~~~~~~~~~ + +Regeln die von UDEV ausgeführt werden. Siehe `Custom UDEV +rules <../patches/custom_udev_rules.html>`__. + +- Tags +- `packages <../packages.html>`__ + +.. |Warning| image:: ../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/packages/mtr.rst b/wiki/packages/mtr.rst new file mode 100644 index 0000000..84fdb05 --- /dev/null +++ b/wiki/packages/mtr.rst @@ -0,0 +1,28 @@ +mtr +=== + +`​mtr <http://www.bitwizard.nl/mtr/>`__ (**M**\ y **TR**\ aceroute) +kombiniert die Funktionalität von +`​traceroute <http://en.wikipedia.org/wiki/Traceroute>`__ und +`​ping <http://en.wikipedia.org/wiki/Ping>`__ in einem. Es untersucht +Router auf dem Pfad, indem es die Anzahl der +`​Hops <http://en.wikipedia.org/wiki/Hop_(telecommunications)>`__ +limitiert, die ein Paket durchlaufen darf, und wertet die Responses +ihres "Verfallsdatums" aus. Diesen Prozess wiederholt *mtr* regelmäßig, +gewöhnlich einmal pro Sekunde. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​Wikipedia + Artikel <http://en.wikipedia.org/wiki/Mtr_(My_traceroute)>`__ + (Englisch) +- `​BitWizard's MTR page <http://www.bitwizard.nl/mtr/>`__ + +- Tags +- `console </tags/console>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `tools </tags/tools>`__ diff --git a/wiki/packages/nagios.rst b/wiki/packages/nagios.rst new file mode 100644 index 0000000..905b5db --- /dev/null +++ b/wiki/packages/nagios.rst @@ -0,0 +1,50 @@ +.. _Nagios: + +Nagios +====== + +Die Software `​Nagios <http://www.nagios.org/>`__ (Network + Hagios, +früher NetSaint) dient der Überwachung komplexer IT-Infrastrukturen. + +Nagios bietet dazu eine Sammlung von Modulen zur Überwachung von +Netzwerken, Hosts und speziell Diensten sowie einer Web-Schnittstelle +zum Abfragen der gesammelten Daten. Nagios steht unter der GPL, ist also +Freie Software, und läuft unter zahlreichen Unix-ähnlichen +Betriebssystemen. + +Nagios kann mit Modulen erweitert werden. Zahlreiche fertige Module sind +bereits verfügbar, und auch die Entwicklung eigener Module ist oft nicht +unbedingt kompliziert. + +In *Freetz* baut *Nagios* auf das Paket `microperl <microperl.html>`__ +auf. + +|Warning| Das Paket hat momentan keine Weboberfläche. Die +Konfigurationsdateien sind nicht auf die Box angepasst und sowohl die +html- als auch die cgi-Dateien werden nicht ins Image kopiert. Hier ist +also einiges an Handarbeit nötig. + +.. _WeiterführendeInformationen: + +Weiterführende Informationen +---------------------------- + +- `​offizielle Homepage <http://www.nagios.org/>`__ +- `​Übersicht über Plug-ins, Artikel etc. zu + Nagios <http://nagiosexchange.org/>`__ +- `​Übersicht über Add-ons <http://www.nagiosforge.org/>`__ inkl. + Versionsverwaltung, Snippets und Mailinglisten etc. zu Nagios +- `​Wiki für Nagios-relevante Themen <http://nagioswiki.org/>`__, z.B. + HowTos, Addons, … +- `​Wikipedia Artikel <http://de.wikipedia.org/wiki/Nagios>`__ + +-------------- + +- Tags +- `monitoring </tags/monitoring>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `tools </tags/tools>`__ + +.. |Warning| image:: ../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/packages/nano-shell.rst b/wiki/packages/nano-shell.rst new file mode 100644 index 0000000..c202422 --- /dev/null +++ b/wiki/packages/nano-shell.rst @@ -0,0 +1,119 @@ +.. _Nano-Shell: + +Nano-Shell +========== + +Die **Nano-Shell** führt beliebige Shell-Komandos via URL aus, d.h. an +eine Webadresse angehängte Parameter werden von einem kleinen CGI-Skript +ausgewertet. Die Nano-Shell ist noch kleiner und leichtgewichtiger als +die `Rudi-Shell <rudi-shell.html>`__, denn sie kommt ohne +Einstiegs-Oberfläche aus. Im Folgenden wird der ins Deutsche übersetzte +Hilfetext aus ``make menuconfig`` zitiert, ergänzt um einige zusätzliche +Informationen: + +Dieses kleine Paket ermöglicht es sowohl der AVM- als auch der +Freetz-Weboberfläche, benutzerdefinierte Shell-Kommandos auszuführen und +ihre Befehls- bzw. Fehlerausgaben anzuzeigen, falls vorhanden. + +.. _Sicherheitshinweis: + +Sicherheitshinweis +------------------ + +|Warning| **ACHTUNG!** Die Nano-Shell sollte nur für Debugging-Zwecke +(Entwicklung, Fehlersuche) verwendet werden, z.B. wenn *telnetd, sshd +(Dropbear)* oder *Rudi-Shell* aus irgendeinem Grund nicht verfügbar bzw. +nicht zugreifbar sind. Sie ist eine Art Reservefallschirm oder letzter +Ausweg, um Kommandos auf der Router-Box auszuführen, wenn alles andere +scheitert, aber zumindest eine der beiden Weboberflächen (AVM oder +Freetz) noch zugreifbar sind. |Warning| + +Da die Nano-Shell in der AVM-Oberfläche die Paßwortabfrage umgeht, +handelt es sich hierbei um ein |Warning| **potentielles Sicherheitsrisiko** +|Warning|, sofern Ihre Router-Box aus dem LAN/WAN für Fremde zugreifbar +ist. Das Freetz-Paßwort wird allerdings abgefragt, da es bereits auf +Webserver-Ebene greift und nicht wie bei AVM in der +Web-Applikationslogik implementiert ist. + +.. _Benutzung: + +Benutzung +--------- + +Schicken Sie einfach ein URL-kodiertes Kommando an das Nano-CGI, welches +z.B. folgende Basisadressen haben kann: + +- `​http://fritz.box/cgi-bin/shell.cgi <http://fritz.box/cgi-bin/shell.cgi>`__ + (AVM-Weboberfläche) +- `​http://speedport.ip/cgi-bin/shell.cgi <http://speedport.ip/cgi-bin/shell.cgi>`__ + (AVM) +- `​http://192.168.0.1/cgi-bin/shell.cgi <http://192.168.0.1/cgi-bin/shell.cgi>`__ + (AVM) +- `​http://fritz.box:81/cgi-bin/shell.cgi <http://fritz.box:81/cgi-bin/shell.cgi>`__ + (Freetz-Weboberfläche) +- `​http://speedport.ip:81/cgi-bin/shell.cgi <http://speedport.ip:81/cgi-bin/shell.cgi>`__ + (Freetz) +- `​http://192.168.0.1:81/cgi-bin/shell.cgi <http://192.168.0.1:81/cgi-bin/shell.cgi>`__ + (Freetz) + +oder allgemein eben der Name bzw. die IP-Adresse, unter der Ihre +Router-Box im Netz zu erreichen ist. + +Einige Beispiel-Kommandos samt zugehöriger kodierter URLs: + ++-----------------------------------+-----------------------------------+ +| Kommando | URL | ++-----------------------------------+-----------------------------------+ +| ls -l /var/tmp | `​http://fritz.box/cgi-bin/shell. | +| | cgi?ls%20-l%20%2Fvar%2Ftmp <http: | +| | //fritz.box/cgi-bin/shell.cgi?ls% | +| | 20-l%20%2Fvar%2Ftmp>`__ | ++-----------------------------------+-----------------------------------+ +| /usr/sbin/telnetd -p 2323 -l | `​http://fritz.box/cgi-bin/shell. | +| /bin/sh | cgi?%2Fusr%2Fsbin%2Ftelnetd%20-p% | +| | 202323%20-l%20%2Fbin%2Fsh <http:/ | +| | /fritz.box/cgi-bin/shell.cgi?%2Fu | +| | sr%2Fsbin%2Ftelnetd%20-p%202323%2 | +| | 0-l%20%2Fbin%2Fsh>`__ | ++-----------------------------------+-----------------------------------+ +| echo "Erster Befehl"; cat | `​http://fritz.box/cgi-bin/shell. | +| /etc/motd; echo "Dritter Befehl" | cgi?echo%20%22Erster%20Befehl%22% | +| | 3B%20cat%20%2Fetc%2Fmotd%3B%20ech | +| | o%20%22Dritter%20Befehl%22 <http: | +| | //fritz.box/cgi-bin/shell.cgi?ech | +| | o%20%22Erster%20Befehl%22%3B%20ca | +| | t%20%2Fetc%2Fmotd%3B%20echo%20%22 | +| | Dritter%20Befehl%22>`__ | ++-----------------------------------+-----------------------------------+ + +Es gibt **Online-Kodierer/-Dekodierer** für URLs im WWW, z.B. diesen +`​URL-En-/Decoder <http://netzreport.googlepages.com/online_tool_zur_url_kodierung_de.html#kodieren>`__, +der ASCII und UTF-8 kann, oder auch diesen +`​Encoder <http://www.simplelogic.com/Developer/InetEncode.asp>`__ bzw. +`​Decoder <http://www.simplelogic.com/Developer/URLDecode.asp>`__, der +Sonderzeichen in Latin-1 (ISO-8859-1) (de)kodiert. Außerdem kann man mit +``httpd -d STRING`` via BusyBox ebenfalls URL-Dekodierung machen. + +**Usability-Tip** (getestet in IE 7, Opera 9.23, Firefox 2.0.6, +Konqueror 3.5.8): Viele Browser akzeptieren auch unkodierte +CGI-Parameter, also Befehler im Klartext, d.h. normalerweise kann man +anstatt der kodierten Befehle oben auch Folgendes schreiben: + +.. code:: bash + + http://fritz.box/cgi-bin/shell.cgi?ls -l /var/tmp + http://fritz.box/cgi-bin/shell.cgi?/usr/sbin/telnetd -p 2323 -l /bin/sh + http://fritz.box/cgi-bin/shell.cgi?echo "Erster Befehl"; cat /etc/motd; echo "Dritter Befehl" + +Viel Spaß beim Ausprobieren! + +`​Alexander Kriegisch +(kriegaex) <http://www.ip-phone-forum.de/member.php?u=117253>`__ + +- Tags +- `cgi </tags/cgi>`__ +- `packages <../packages.html>`__ +- `tools </tags/tools>`__ + +.. |Warning| image:: ../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/packages/nano.rst b/wiki/packages/nano.rst new file mode 100644 index 0000000..676d6b4 --- /dev/null +++ b/wiki/packages/nano.rst @@ -0,0 +1,22 @@ +nano +==== + +**Nano** ist ein kleiner Texteditor für die Konsole, der aber im +Gegensatz zu (n)vi eine Bedienung wie ein normaler Editor (z.B. der +Windows-Editor) besitzt. Es ist also nicht erforderlich viel Kommandos +zu lernen, bevor man ihn nutzen kann. Daher ist er für Anfänger und +User, die nicht des 10-Finger-Systems mächtig sind, oftmals weit besser +geeignet als vi. + +Damit man die Pos1 und Home Tasten auch in Nano benutzen kann ist +(zumindest bei mir in der Kombination putty / Windows) das Setzen der +Umgebungsvariable TERM hilfreich: + +.. code:: bash + + export TERM=xterm + +in der rc.custom tut den Trick. + +- Tags +- `packages <../packages.html>`__ diff --git a/wiki/packages/ncftp.rst b/wiki/packages/ncftp.rst new file mode 100644 index 0000000..142d281 --- /dev/null +++ b/wiki/packages/ncftp.rst @@ -0,0 +1,117 @@ +ncftp +===== + +*"NcFTP Client (also known as just NcFTP) is a set of FREE application +programs implementing the File Transfer Protocol (FTP)."* + +.. _WasistNcFTP: + +Was ist NcFTP? +-------------- + +NcFTP Client ist ein FTP Client für die Kommandozeile. Er besitzt +fortgeschrittene Funktionen wie z.B. automatisches Vervollständigen von +Dateinamen, Hintergrundverarbeitung, Bookmarks, Herunterladen ganzer +Verzeichnissbäume oder Verzeichniscaching. + +NcFTP bringt die Befehle ncftpget, ncftpput, ncftpls mit. Mit diesen +können Dateien direkt via Kommandozeilenbefehl herunter- oder +heraufgeladen bzw. Verzeichnisse angezeigt werden. Dies ist besonders +für Shell-Scripte äußerst hilfreich. + +Quelle: `​apfelwiki <http://www.apfelwiki.de/Main/NcFTPClient>`__ + +.. _WozukannNcFTPbenutztwerden: + +Wozu kann NcFTP benutzt werden? +------------------------------- + +| 1.) Upload von Dateien ohne, dass der PC gestartet sein muß. +| 2.) `Download <../Download.html>`__ von Datein ohne, dass der PC + gestartet sein muß. + +.. _WieinstalliereichNcFTP: + +Wie installiere ich NcFTP? +-------------------------- + +Das NcFTP-Package ist beim Bauen eines neuen Freetz-Images auszuwählen. +Im Trunk ist NcFTP unter Packages→Testing zu finden. + +.. figure:: /screenshots/214.png + :alt: Ort im Trunk + + Ort im Trunk + +.. _WiestarteichNcFTP: + +Wie starte ich NcFTP? +--------------------- + +Als erstes schreibt man ein Skript z.B. **upload.sh** mit folgendem +Inhalt: + +.. code:: bash + + nohup ncftpput -u XXX -p XXX remote-host /remote/path/ /local/path/* + +Anschließend startet man es per Telnet/SSH mit dem Befehl **sh +upload.sh**. + +.. _WieistderBefehlimupload.sh-Skriptaufgebaut: + +Wie ist der Befehl im upload.sh-Skript aufgebaut? +------------------------------------------------- + +.. code:: bash + + nohup ncftpput -u (Username) -p (Password) -m (Adresse des FTP-Servers) /(Zielordner auf dem FTP)/ /(Pfad zum lokalen/eigenen Ordner)/* + +Beispiel: + +.. code:: bash + + nohup ncftpput -u freetz -p mypass -m mustermann.no-ip.org /Uploads/ /var/media/ftp/uStor01/User/Mustermann/Downloads/* + +| **Zur Info:** Das **nohup** sorgt dafür das das Skript weiter läuft + obwohl Putty beendet wird. + +.. _WiesiehtderBefehlfüreindownload.shSkriptaus: + +Wie sieht der Befehl für ein download.sh Skript aus? +---------------------------------------------------- + +.. code:: bash + + nohup ncftpget -u (Username) -p (Password) (Ziel-FTP) (local-Verzeichnis) /(remote-Verzeichnis)/* + +Beispiel: + +.. code:: bash + + nohup ncftpget -u freetz -p mypass mustermann.no-ip.org /var/media/ftp/uStor01/Downloads /Downloads/* + +.. _WiekannicheinenabweichendenPortnutzen: + +Wie kann ich einen abweichenden Port nutzen? +-------------------------------------------- + +Falls nicht der Standard-Port (21) genutzt werden soll kann man den +gewünschten Port über den Parameter **-P xx** angeben. Der angegebene +Port sollte natürlich zu dem Port passen auf dem der Server hört. + +.. code:: bash + + nohup ncftpput -u (Username) -p (Password) -P (Ziel-Port) -m (Adresse des FTP-Servers) /(Zielordner auf dem FTP)/ /(Pfad zum lokalen/eigenen Ordner)/* + +Beispiel: + +.. code:: bash + + nohup ncftpput -u freetz -p mypass -P 1234 -m mustermann.no-ip.org /Uploads/ /var/media/ftp/uStor01/User/Mustermann/Downloads/* + +- Tags +- `filetransfer </tags/filetransfer>`__ +- `ftp </tags/ftp>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/ndas.en.rst b/wiki/packages/ndas.en.rst new file mode 100644 index 0000000..d43792c --- /dev/null +++ b/wiki/packages/ndas.en.rst @@ -0,0 +1,365 @@ +.. _NDAS: + +NDAS +---- + +| NDAS (**N**\ etwork **D**\ irect **A**\ ttached **S**\ torage) is + Ximeta's patented technology which enables all digital storage devices + (HDD, ODD, Memory, Tape Drives) direct connection into standard + Ethernet networks. +| All users or systems on the network can directly control, use and + share those devices. +| More info about NDAS on Linux can be found via: + `​http://ndas4linux.iocellnetworks.com/ <http://ndas4linux.iocellnetworks.com/>`__ +| I'm using NDAS currenlty to play movies up to 720p. + +.. _CreatingaFeetzImagewithNDAS: + +Creating a Feetz Image with NDAS +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +| **Note** NDAS is now supported for little endian (e.g. 7170, 7270) and + big endian (e.g. 7390) thanks to + `​ER13 <http://www.ip-phone-forum.de/member.php?u=83184>`__. +| The changes are introduced in `11390 </changeset/11390>`__ to + `11392 </changeset/11392>`__, `11434 </changeset/11434>`__, and + `11464 </changeset/11464>`__. +| Follow the directions from the `Wiki <../index.en.html#>`__ +| After the following step you can configure the packages you want to + have included in your image. + +.. code:: bash + + make menuconfig + +Make sure the following is selected: + +.. code:: bash + + Package selection ---> Packages ---> [*] (binary only) + +Recommended optional additional packages: + + | `NTFS-3G <ntfs-3g.html>`__ + | `Samba <samba.html>`__ + +or(/and) + + | `NFS Server <nfsd.html>`__ (no ntfs support, but a faster) + | with optionally some additional patches for ext3 or/and ReiserFS + (see Patches —→ … in menuconfig) + +.. _SetupinFreetz: + +Setup in Freetz +~~~~~~~~~~~~~~~ + +| There is currently (Freetz-trunk `11464 </changeset/11464>`__) no + web-interface available for NDAS. +| You can configure NDAS via console (e.g. via ssh or telnet access), + but you can also use a script in rc.custom to get all configured for + NDAS to work at startup. + +.. _Manualconfigureviaconsole: + +Manual configure via console +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Details can be found in the following two threads +`​http://www.ip-phone-forum.de/showthread.php?t=241882 <http://www.ip-phone-forum.de/showthread.php?t=241882>`__ +and +`​http://www.ip-phone-forum.de/showthread.php?t=149182 <http://www.ip-phone-forum.de/showthread.php?t=149182>`__ + +| First create the needed character and block-devices using the mknod + command. +| You can create block-devices for multiple drives and multiple + partitions. Below example for one drive with one partition. + +.. code:: bash + + mknod -m 644 /dev/ndas c 60 0 + mknod -m 644 /dev/nda b 60 0 + mknod -m 644 /dev/nda1 b 60 1 + +.. + + For additional partitions you can create the devices nodes with + /dev/nda<partition-number> b 60 <partition-number> + +You can verify the creation of the devices with the following well known +command + +.. code:: bash + + ls -la /dev/nd* + +.. + + The block-devices will start with a 'b', character-devices start will + a 'c'. + +Next the kernel moduls needs to be loaded. + +.. code:: bash + + insmod /lib/modules/`uname -r`/kernel/fs/ndas/ndas_sal.ko + insmod /lib/modules/`uname -r`/kernel/fs/ndas/ndas_core.ko ndas_dev=lan + insmod /lib/modules/`uname -r`/kernel/fs/ndas/ndas_block.ko + +.. + + | The option ndas_dev=lan enables the module only for Eth and WiFi, + and not for Wan interfaces. + | If you have your internal Ethernet switch configured as router (see + `​here <http://www.ip-phone-forum.de/showthread.php?t=243444>`__ + for more background info in German), you will connect and access + the NDAS device only via one of the routed Ethernet ports, and you + can/should use ndas_dev=eth0 + | Be aware that the protocol used by the NDAS device is not routed, + so only within the broadcast domain you can access the NDAS device. + +To verify the three modules are loaded properly you can use the +following command: + +.. code:: bash + + lsmod + +Now the NDAS driver 'NDAS Administration Tool' should be started. This +is done with: + +.. code:: bash + + ndasadmin start + +Following is to register the netdisk with the ID and key, that should be +found on the NDAS device. + +.. code:: bash + + ndasadmin register "rrrrr-rrrrr-rrrrr-rrrrr-wwwww" --name ndas-01 + +.. + + The ID is the 'rrrrr-rrrrr-rrrrr-rrrrr' part which is 20 characters + long, and is always needed. The key is the 'wwwww' part which is 5 + characters long and is optional to allow write access. + +| If the disk is connected to the LAN network, and powered on the disk + should become visible at this point. +| Verify the status via the proc filesystem /proc with the following + commands. + +.. code:: bash + + cat /proc/ndas/devs + +.. + + To see the disk details and the status. + +.. code:: bash + + cat /proc/ndas/devices/ndas-01/slots + +.. + + Shows the number of slots. + +The NetDisks can be enabled with one of the following three modes: For +read access use the following + +.. code:: bash + + ndasadmin enable -s 1 -o r + +For read/write access the following can be used: + +.. code:: bash + + ndasadmin enable -s 1 -o w + +For shared write access use: + +.. code:: bash + + ndasadmin enable -s 1 -o s + +Also a mountpoint is needed that can be created with: + +.. code:: bash + + mkdir /var/media/ndas/ntfs/ + +As last step, mounting the block-device under the mountpoint just +created. The mount command depends on the formatting of the drive. So +far I had only success with an NTFS formatted drive. + +Mount an NTFS formatted drive: + +.. code:: bash + + ntfs-3g -o rw /dev/nda1 /var/media/ndas + +A FAT formatted drive should be mounted with: + +.. code:: bash + + mount -t fat /dev/nda1 /var/media/ndas + +But I wasn't able to mount my FAT32 formatted drive, also tried -t vfat. + +.. _Scriptatstartup: + +Script at startup +^^^^^^^^^^^^^^^^^ + +You can use the script in file rc.custom, which can be edited via the +`web-interface <mod.html#rc_custom>`__. + +.. code:: bash + + #! /bin/sh + # Create the character file to send the commands + test ! -c /dev/ndas && mknod -m 644 /dev/ndas c 60 0 + M=0 + # Let's create the block device files to access the hard disk. + # Just for 3 hard disk, each with 3 partitions, but you can increase if you want. + for s in a b c; + do + test ! -b /dev/nd${s} && mknod -m 644 /dev/nd${s} b 60 $M + for t in 1 2 3; + do + M=$(($M + 1)) + test ! -b /dev/nd${s}${t} && mknod -m 644 /dev/nd${s}${t} b 60 $M + done + M=$(($M + 16 - $t)) + done + + # Now load the system abstraced layer implementation for NDAS technology + insmod /lib/modules/`uname -r`/kernel/fs/ndas/ndas_sal.ko > /dev/null 2>&1 + if [ ! $? ] ; then + echo " Module ndas_sal failed to load"; + exit 1; + fi + # Load the NDAS core functions, the proprietary driver. + insmod /lib/modules/`uname -r`/kernel/fs/ndas/ndas_core.ko ndas_dev=lan > /dev/null 2>&1 + if [ ! $? ] ; then + echo " Module ndas_core failed to load" + exit 1; + fi + # Load the block device implementation for NDAS + insmod /lib/modules/`uname -r`/kernel/fs/ndas/ndas_block.ko > /dev/null 2>&1 + if [ ! $? ] ; then + echo " Module ndas_block failed to load" + exit 1; + fi + # Start the service + /usr/bin/ndasadmin start > /dev/null 2>&1 + if [ ! $? ]; then + echo " ndasadmin start failed" + exit 1; + fi + + # Register the device + /usr/bin/ndasadmin register rrrrr-rrrrr-rrrrr-rrrrr-wwwww --name ndas-01 > /dev/null 2>&1 + sleep 5 + + # Enable connection with first NDAS blockdevice in exclusive-write mode + /usr/bin/ndasadmin enable -s 1 -o s + sleep 5 + mkdir -p /var/media/ndas/usb /var/media/ndas/ntfs /var/media/ndas/fat /var/media/ndas/ext2 + sleep 5 + # mount ntfs NDAS disk, /dev/nda1 in this case, in read write mode + ntfs-3g -o rw /dev/nda1 /var/media/ndas/ntfs + # mount ext2 NDAS disk, /dev/nda2 in this case + mount /dev/nda2 /var/media/ndas/ext2 + + # Restart Samba with NetDisk mounted + /etc/init.d/rc.samba restart + # Restart NFS server with NetDisk mounted + /etc/init.d/rc.nfsd restart + +.. _Troubleshooting: + +Troubleshooting +^^^^^^^^^^^^^^^ + +Here a list of troubleshooting commands. + +#. ls -la /dev/nd\* + The output should give one character device /dev/ndas, per disk one + block device starting with /dev/nda for the first disk, and for each + partition another block device. +#. lsmod + The output should show the 3 modules loaded, which are **ndas_sal**, + **ndas_core**, **ndas_block**. +#. cat /proc/ndas/devs + The output should give the NDASName choosen, the ID, an indication if + the key is used for write access, serialnumber of the NetDisk, NDAS + version which is 1, the status of the NetDisk, and the slot number + that is assigned to the NetDisk. +#. cat /proc/ndas/devices/ndas-01/slots + The output should give the assigned slots number, which is **1** in + my case. +#. cat /proc/partitions + The output should show a NDAS partition for each NetDisk, and one for + each partition on that NetDisk (so at least two). +#. ls -la /var/media/ndas + The output should show the mountpoint, and if the NetDisk is mounted + the content of the NetDisk. +#. mount + The output should show one line for each partition mounted. It will + show the device node, the mountpoint, the filesystem type and the + options used (e.g. read/write (rw) or read only (ro)) +#. cat /etc/debug + Behaves like a tail -f of a regular file where debug messages are + shown to standard output. + +.. _Troubleclearing: + +Troubleclearing +^^^^^^^^^^^^^^^ + +Some hints that could be helpful. + +#. Unmount the NetDrive partition with + ``umount /dev/nda<partition-number>`` + If the umount fails verify if applications like Samba are stopped. +#. Disable the NetDisk with + ``ndasadmin disable -s 1`` +#. Stop the NDAS Driver with + ``ndasadmin stop`` + Be aware that after stopping the driver you also have to re-register + the NetDrive. +#. If the enable command indicates the NetDrive is in use by another + entity, and you know it isn't, power off the NetDrive and try again. +#. After powering off the NetDisk I had to do the following to get it + working again: + + - Stop Samba or NFS (e.g. /etc/init.d/rc.samba stop, or + /etc/init.d/rc.nfsd stop) + - Unmount the NetDisk (e.g. umount /dev/nda1) + - Disable the NDAS NetDisk (e.g. ndasadmin disable -s 1) + - Enable the NDAS NetDisk (e.g. ndasadmin enable -s 1 -o s) + - Mount the NetDisk again (e.g. ntfs-3g -o rw /dev/nda1 + /var/media/ndas/ntfs) + - Start Samba or NFS again (e.g. /etc/init.d/rc.samba start, or + /etc/init.d/rc.nfsd start) + +.. _Usages: + +Usages +~~~~~~ + +| I used to have Ndas toghether with Samba on my 7270v3, to play movies + from the ntfs formated NetDrive, via a Win7 pc over HDMI to my TV. +| This is working well for movies upto 720p, 1080p (e.g. upto 8GB). I + also tried a 1080p of about 25GB, but that didn't work out. +| Via monitoring using `Net-SNMP <netsnmp.en.html>`__ I found that it is + the CPU resources on the 7270v3, which is the limiting factor. +| Currently I'm using Ndas with NFS on my 7390, with ext3 formatted + NetDrive, via a Win7 pc over HDMI to my TV. +| I found it possible to play a movie of about 25GB with 1080p, only the + very high detailed fragments where causing issues. +| It is still the CPU resources on the 7390 causing a bottleneck. diff --git a/wiki/packages/ndas.rst b/wiki/packages/ndas.rst new file mode 100644 index 0000000..2ef1a8e --- /dev/null +++ b/wiki/packages/ndas.rst @@ -0,0 +1,361 @@ +NDAS +==== + +Network Direct Attached Storage (NDAS) ist ein proprietäres System zur +Anbindung externer Speichermedien wie Festplatten, Flash-Speicher oder +Bandlaufwerke an ein Netzwerk. Die Patente für NDAS hält die +amerikanische Firma Ximeta. [1] + +Da Ximeta seinen Linux Support eingestellt hat hier die original +Anleitung. Die Links darin funktionieren nicht mehr. + +.. _a1.UsingNDASdriver: + +1. Using NDAS driver +-------------------- + +.. _RegistertheNDASdevice: + +Register the NDAS device +~~~~~~~~~~~~~~~~~~~~~~~~ + +You can find NDAS "ID" and NDAS "key" from the the bottom of the +NetDisk. + +If your NDAS ID (20 characters) and NDAS key (5 characters) are + +.. code:: bash + + ID: AF7R2-2MKK4-UHG9S-5RHTG + KEY: 8QT6U + +then execute the following commands as root (in most systems it will be +sufficient to type ``# ndasadmin...`` rather than full +``# /usr/sbin/ndasadmin...``) + +.. code:: bash + + /usr/sbin/ndasadmin register <NDAS ID>-<NDAS key> --name <NetDisk Name to be> + or + /usr/sbin/ndasadmin register <NDAS ID>-<NDAS key> -n <NetDisk Name to be> + +vis: + +.. code:: bash + + /usr/sbin/ndasadmin register AF7R2-2MKK4-UHG9S-5RHTG-8QT6U --name MyDisk + or + /usr/sbin/ndasadmin register AF7R2-2MKK4-UHG9S-5RHTG-8QT6U -n MyDisk + +| Please note that 'MyDisk' is any name named by you. +| Sucessful registering means NOT the Disk ist reached sucessful via + Network! +| You will get the numeric slot number(s) for each disk on the NetDisk + by + +.. code:: bash + + cat /proc/ndas/devices/MyDisk/slots + +check the status of the NetDisks, if you can't get the slot number from +commands above. + +.. code:: bash + + cat /proc/ndas/devs + Name ID Key Serial Ver Status Slots + MyDisk01 ABCDEFGHIJKLMNO***** Yes 00800000 1 Online 1 + MyDisk02 ABCDEFGHIJKLMNP***** Yes 00800001 1 Offline + +If the Status is "Offline" make sure the NetDisk turns on and is +attached in the same network. + +.. _EnabletheNDASdevice: + +Enable the NDAS device +~~~~~~~~~~~~~~~~~~~~~~ + +To enable the NetDisk, please type the following commands: + +Use the numeric slot number that you get from +/proc/ndas/devices/MyDisk/slots. If you get '1' as the slot number from +/proc/ndas/devices/MyDisk/slots then, execute one of the following +command with root privilege. + +.. code:: bash + + /usr/sbin/ndasadmin enable -s 1 -o w # exclusive write and read mode + + /usr/sbin/ndasadmin enable -s 1 -o r # read-only mode + + /usr/sbin/ndasadmin enable -s 1 -o s # for GFS/OCFS2 file system + +This command will print out the path of the block device file. For +example, + +.. code:: bash + + /dev/nda, /dev/ndb, /dev/ndas-001000001-0. + +Your NetDisk will then have to be partitioned and/or formatted if not +already. + +.. _PartitionandfilesystemontheNDASdevice: + +Partition and file system on the NDAS device +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +To partition or format, please do the following: + +WARNING: All data will be erased. + +partition +^^^^^^^^^ + +.. code:: bash + + fdisk /dev/nda (fdisk <path of the block device file> see output of ndasadmin enable), + * use p to show the current partition table + * use n to create a new partion + +format +^^^^^^ + +use for example: + +.. code:: bash + + mkfs -t ext2 /dev/nda1 + or + mkfs.ext3 /dev/ndas-08019896-0p1 -L ndas_disc1 + ... + +| where /dev/ndas-08019896-0 is the path of the block device file and p1 + stands for *partion 1* +| (just check the output of *fdisk -l /dev/ndas-08019896-0*) +| The option -L lables the partition as *ndas_disc1* + +Your NetDisk is now ready for use! + +.. _ReadingPartitionsonalreadyformattedNDASdevicemounting: + +Reading Partitions on already formatted NDAS device & mounting +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- try + +.. code:: bash + + blkid + +which should give all partition information for your entire Linux +system, including the NDAS device. This is very useful if you already +have multiple partitions on your NDAS device. You then need to + +.. code:: bash + + mount -t <filesystem> <device name> <mount directory> + +in normal way. + +- **If the disk is formatted other than NDAS mode, there is a + possibility that partitions may not be accessed. This is because NDAS + reserves some data from the end of disk. You need to format again in + NDAS mode.** +- **If you don't have "blkid" on your system, try "ls /dev/nd*", or + "cat /proc/partitions"** + +.. _AutomaticUserMounting: + +Automatic User Mounting +~~~~~~~~~~~~~~~~~~~~~~~ + +These commands may differ slightly for your particular configuration. + +Once your Netdisk drivers are properly setup, create a mount point for +the device: + +.. code:: bash + + # mkdir /mnt/netdisk + +Under Ubuntu distrobutions, it's best to put this point in /media, +rather than /mnt, for conformity. You may name the point anything you +like. + +Next, locate the device. + +.. code:: bash + + $ ls /dev/ndas* + /dev/ndas /dev/ndas-00110749-0 /dev/ndas-00110749-0p1 + +The drive itself, in this example, is at /dev/ndas-00110749-0. The +primary (and only, in this case) partition is /dev/ndas-00110749-0p1. + +Determine the format of the disk + +.. code:: bash + + # fdisk -l /dev/ndas-00110749-0 + + Disk /dev/ndas-00110749-0: 160.0 GB, 160039788544 bytes + 255 heads, 63 sectors/track, 19457 cylinders + Units = cylinders of 16065 * 512 = 8225280 bytes + + Device Boot Start End Blocks Id System + /dev/ndas-00110749-0p1 1 19457 156288321 b W95 FAT32 + +In this example, it is a FAT32 drive. + +Next, back up and add this information to your /etc/fstab file + +.. code:: bash + + # cp /etc/fstab /etc/fstab.backup + # nano /etc/fstab + +You may use any text editor you like in place of nano. + +At the end of this file, add the information for your netdisk. The basic +format for a line is DEVICE LOCATION FORMAT OPTIONS DUMP PASS. For our +example, we have a netdisk at /dev/ndas-00110749-0p1. We want it mounted +at /mnt/netdisk. The format of the netdisk is vfat. For options, we want +to use the defaults, allow users to mount it, and to not mount it +automatically at boot. We don't need dump or pass for anything. The line +we'd add is: + +.. code:: bash + + /dev/ndas-00110749-0p1 /mnt/netdisk vfat defaults,user,noauto 0 0 + +Save the file, and exit your editor. + +Now, any user on this machine should be able to mount the netdisk with +this command: + +.. code:: bash + + $ mount /mnt/netdisk + +We've specified all the other information about the device in +/etc/fstab, so no more is required. + +Due to how and when the device drivers and /etc/fstab load, setting the +device to automatically mount in /etc/fstab usually does not work. +You'll need to either set a boot time cron job, add it to your X session +startup, etc. This is outside the scope of this wiki, please see your +system documentation for further information on this. + +.. _AdditionalCommandsfortheNDASdevice: + +Additional Commands for the NDAS device +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +To disable the NetDisk: + +.. code:: bash + + /usr/sbin/ndasadmin disable -s 1 + +.. + + Note: disable is to make the NetDisk to be disconnected from the + Linux machine. especially it will release the exclusively write + permission and the other Linux / MS Windows machine can gain the + exclusive write permission. + +To Unregister the NetDisk + +.. code:: bash + + /usr/sbin/ndasadmin unregister --name MyDisk + +.. + + Note: 'unregister' is to delete the registration so that the NetDisk + is not registered in the next booting of Linux machine. + + Note: The name 'MyDisk' should be the parameter you set on 'register' + command. + +Please refer to README as the original document. + +.. _a2.UsingNDASharddiskarray: + +2. Using NDAS harddisk array +---------------------------- + +- Add how to use the NDAS harddisks with Linux Software RAID +- Add how to use the NDAS hard disks with XIMETA RAID +- Add how to use the NDAS hard disks with Linux LVM + +.. _a3.SharethedatafilesontheNDASharddisks: + +3. Share the data/files on the NDAS hard disks +---------------------------------------------- + +NDAS on WINDOWS apparently supports simultaneous r/w from multiple +machines on the LAN. I could not find any documentation explaining if +this is only true for partitions formated as FAT or NTFS, or for any +file system, but for the moment I'll assume that this fiture does not +depend on the filesystem. Since a Windows ext3 driver exists, this could +be used for sharing the data between windows and Linux machines. +Alternativelz, Linux can also access NTFS, but last time I checked (long +ago), r/w support was poor… + +Unfortunately, the Linux version of the driver does not support the +simultanous r/w from multiple machines. An NDAS partition can only be +mounted r/w from ONE linux machine at a time, the rest of the machines +may only use it in ro mode. The only exceptions are the shared +filesystems such as GFS and OCFS2. A simple GFS configuration is shown +in this Wiki. I just checked the documentation, and unfortunately +neither OCFS2 noe GFS drivers for windows exist. So in short, there is +no way to simultanously mount any filesystem in r/w mode on both Linux +and Windows machines. This is so sad. |:-(| + +- How to share the NDAS hard disk with GFS +- How to share the NDAS hard disk with FAT32 file system +- How to share the NDAS hard disk with OCFS2 +- Add how to share the NDAS hard disk with NTFS + +.. code:: bash + + For example type on the command line: + + mount -t ntfs-3g /dev/ndas-00611109-0p1 /mnt/windows < -o force > + + Or add the option to the relevant row in the /etc/fstab file: + + /dev/ndas-00611109-0p1 /mnt/windows ntfs-3g defaults 0 0 + +- Add how to share the NDAS hard disk with ext2/3 + +.. _a4.NDASrobustnes: + +4. NDAS robustnes? +------------------ + +I wondered how robust the NDAS protocol, host device and linux driver +are… The result of the small test I just did is not so good as I hoped: + +- Mount the ndas partition on my linux host in rw mode (ext3 partition) +- Start a copy operation on a large file +- Turning the NDAS device by pressing the power off button +- Turning the NDAS device on again. + +Result: The file transfer stopped while the device was offline, and then +resumed on its own as soon as the NDAS device came online again. +Unfortunately, **the file was corrupted** in the end. On a bright side, +this is still better than linux hangup. + +.. _Referenzen: + +Referenzen +---------- + +[1] `​Wikipedia Seite zu +NDAS <http://de.wikipedia.org/wiki/Network_Direct_Attached_Storage>`__ + +.. |:-(| image:: ../../chrome/wikiextras-icons-16/smiley-sad.png + diff --git a/wiki/packages/netatalk.rst b/wiki/packages/netatalk.rst new file mode 100644 index 0000000..694232a --- /dev/null +++ b/wiki/packages/netatalk.rst @@ -0,0 +1,3 @@ +Noch keine Beschreibung. Bitte Konfigurationshinweise und weiterführende +Links auf der `​Seite <https://github.com/svoop/freetz-netatalk>`__ des +freetz-Paket-Entwicklers beachten. diff --git a/wiki/packages/netcat.rst b/wiki/packages/netcat.rst new file mode 100644 index 0000000..7fa7fbb --- /dev/null +++ b/wiki/packages/netcat.rst @@ -0,0 +1,34 @@ +netcat +====== + +`​netcat <http://netcat.sourceforge.net/>`__ ist ein einfaches Werkzeug, +um Daten von der Standardein- oder -ausgabe über Netzwerkverbindungen zu +transportieren. Es arbeitet als Client oder Server mit den Protokollen +`​TCP <http://de.wikipedia.org/wiki/Transmission_Control_Protocol>`__ +und `​UDP <http://de.wikipedia.org/wiki/User_Datagram_Protocol>`__. Die +Manpage bezeichnet es als TCP/IP swiss army knife (Schweizer Armeemesser +für `​TCP/IP <http://de.wikipedia.org/wiki/TCP/IP>`__). + +Eine Alternative zu *netcat* bietet das Paket `socat <socat.html>`__. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​netcat Homepage <http://netcat.sourceforge.net/>`__ +- `​netcat Man page <http://linux.die.net/man/1/nc>`__ +- `​Anwendungsbeispiele <http://www.jfranken.de/homepages/johannes/vortraege/netcat.de.html>`__ +- `​Deutschsprachige + Dokumentation <http://www.remoteshell-security.com/netcat.php>`__ mit + vielen Anwendungsbeispielen +- `​Deutschsprachige Anleitung zu Netcat und + Cryptcat <http://www.highgames.com/?set=hardwareview&view=2>`__ + +-------------- + +- Tags +- `console </tags/console>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `tools </tags/tools>`__ diff --git a/wiki/packages/netsnmp.en.rst b/wiki/packages/netsnmp.en.rst new file mode 100644 index 0000000..5180d76 --- /dev/null +++ b/wiki/packages/netsnmp.en.rst @@ -0,0 +1,167 @@ +.. _Net-SNMP: + +Net-SNMP +-------- + +| Net-SNMP (**S**\ imple **N**\ etwork **M**\ anagement **P**\ rotocol) + includes an open source SNMPd agent to monitor and administer SNMP + capable network devices like routers and switches. +| You can poll the snmpd agent on the router to obtain e.g. interface or + CPU statistics information and display this in a nice graph with the + help of a program like `​MRTG <http://oss.oetiker.ch/mrtg/>`__ +| More info about Net-SNMP can be found via: + `​http://www.net-snmp.org/ <http://www.net-snmp.org/>`__ + +.. _CreatingaFeetzImagewithNet-SNMP: + +Creating a Feetz Image with Net-SNMP +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +| Follow the directions from the `Wiki <../index.en.html#>`__ +| After the following step you can configure the packages you want to + have included in your image. + +.. code:: bash + + make menuconfig + +Make sure the following is selected (so I have 1 out of 3 selected): + +.. code:: bash + + Package selection ---> Standard packages ---> [*] Net-SNMP 5.4.2.1 snmpd + Package selection ---> Standard packages ---> [ ] With openssl encryption (NEW) + Package selection ---> Standard packages ---> [ ] With zlib compression (NEW) + +.. _SetupinFreetzweb-interface: + +Setup in Freetz web-interface +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +conf +^^^^ + +| First you should create a snmpd.conf file. This file contains all + configuration options for Net-SNMP, including a community string, + which you can regard as a password for access control. [[br] A full + description of all possible parameters can be found in the online + manual page: + `​http://www.net-snmp.org/docs/man/snmpd.conf.html <http://www.net-snmp.org/docs/man/snmpd.conf.html>`__ +| You can edit the snmpd.conf file via the Freetz web-interface via + Net-SNMP > snmpd.conf + +If you would like to have a minimal config you can use the following: + +.. code:: bash + + rocommunity public + rwcommunity private + +| This way access contol is only based on the communiy string. + +| I found an example config with more accss contol options in one of the + attachments in this thread: + `​http://www.ip-phone-forum.de/showthread.php?t=122073 <http://www.ip-phone-forum.de/showthread.php?t=122073>`__ +| This shows how to control access based on source IP address range with + additional options to restrict access. + +.. code:: bash + + ## sec.name source community + ## ======== ====== ========= + com2sec readonly 127.0.0.0/8 <community string> + com2sec readonly 192.168.0.0/16 <community string> + #com2sec paranoid default <community string> + com2sec paranoid 172.16.0.0/16 <community string> + + ## Access.group.name sec.model sec.name + ## ================= ========= ======== + group MyROSystem v1 paranoid + group MyROSystem v2c paranoid + group MyROSystem usm paranoid + group MyROGroup v1 readonly + group MyROGroup v2c readonly + group MyROGroup usm readonly + + ## MIB.view.name incl/excl MIB.subtree mask + ## ============== ========= =========== ==== + view all included .1 80 + view system included .1.3.6.1.2.1.1 + + ## MIB + ## group.name context sec.model sec.level prefix read write notif + ## ========== ======= ========= ========= ====== ==== ===== ===== + access MyROSystem "" any noauth exact system none none + access MyROGroup "" any noauth exact all none none + +| If you only allow access from inside your trusted network you can use + the default community string, which is for readonly **public** and for + readwrite **private**. +| More information on the View-Based Access Control Model (VACM) can be + found on the `​Net-SNMP + Wiki <http://www.net-snmp.org/wiki/index.php/Vacm>`__ + +.. figure:: /screenshots/247.jpg + :alt: Net-SNMP snmpd.conf + + Net-SNMP snmpd.conf + +setup +^^^^^ + +| After saving a snmpd.conf file using the Net-SNMP > snmpd.conf setup + page you can enable Net-SNMP to start automatically at bootup. + +.. figure:: /screenshots/246.jpg + :alt: Net-SNMP Setup + + Net-SNMP Setup + +verify +^^^^^^ + +| With many Linux distributions you als have snmp tools included like + snmpget, snmpset, snmpwalk, … +| A quick guide how to use these tools can be found `​on the + net-snmp.org + site <http://www.net-snmp.org/wiki/index.php/Tutorials>`__. + +Some commands: To get a list of interface descriptions (ifDesc): + + snmpwalk -v 2c -c <community string> 192.168.178.1 + .1.3.6.1.2.1.2.2.1.2 + +.. + + snmpwalk -v 2c -c <community string> -O a 192.168.178.1 + .1.3.6.1.2.1.2.2.1.2 + +To get a list of all available objects: + + snmpwalk -v 2c -c <community string> 192.168.178.1 .1 + +.. _MRTG: + +MRTG +---- + +| The Multi Router Traffic Grapher will allow you to generate nice + graphs of the data available via SNMP. +| This can be system information like uptime, interface information and + statistics, and more. +| The graphs can help a lot with trouble clearing issues, both with the + FritsBox (e.g. CPU memory), and in the network. +| For more info see the `​MRTG site <http://oss.oetiker.ch/mrtg/>`__. + +| Here an example on the graph you can generate: + +.. figure:: /screenshots/248.jpg + :alt: MRTG lan interface daily graph + + MRTG lan interface daily graph + +The following wiki page will provide more detailed information to +installation and configuration: + +- `More detailed information and installation + instructions <netsnmp/mrtg.en.html>`__ diff --git a/wiki/packages/netsnmp.rst b/wiki/packages/netsnmp.rst new file mode 100644 index 0000000..8c1cbbc --- /dev/null +++ b/wiki/packages/netsnmp.rst @@ -0,0 +1,51 @@ +.. _Net-SNMP: + +Net-SNMP +======== + +**SNMP** ist das **S**\ imple **N**\ etwork **M**\ anagement +**P**\ rotocol (einfaches Netzwerk-Verwaltungs Protokoll). Dieses +Protokoll wird genutzt, um die Geräte in großen Netzwerken verwalten zu +können. Fast jeder bessere Switch spricht SNMP. Man kann dann z.B. +remote einzelne Ports ein- bzw. ausschalten oder den aktuellen Traffic +einsehen und vieles mehr. + +Dazu werden sogenannte Agenten eingesetzt, hier das Programm **snmpd** +(SNMP-Daemon), das direkt auf dem zu überwachenden Gerät (FRITZBox) +läuft. Diese Agenten sind in der Lage, den Zustand des Gerätes zu +erfassen und auch selbst Einstellungen vorzunehmen oder Aktionen +auszulösen. + +Da hier im Wiki noch keine weitere Beschreibung vorhanden ist, zur +Information vorläufig das Folgende: + +- `​snmpd auf der + FB <http://www.ip-phone-forum.de/showthread.php?t=122073>`__ +- `​snmpd.conf + anpassen <http://www.ip-phone-forum.de/showthread.php?t=142295>`__ +- `​Einrichtung von SNMP-Agenten im Forschungszentrum + Jülich <http://www.fz-juelich.de/zam/docs/tki/tki_html/t0320/t0320.html>`__ + +Im Webinterface von Freetz gibt es - sofern der snmpd im Image eingebaut +ist - unter *Einstellungen* den Punkt *snmpd.conf*. Dort kann man die +Datei ``snmpd.conf`` direkt editieren. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​Net-SNMP Homepage <http://www.net-snmp.org/>`__ (hier finden sich + auch englisch-sprachige Tutorials) +- `​Wikipedia Article on Net-SNMP + (English) <http://en.wikipedia.org/wiki/Net-SNMP>`__ +- `​Wikipedia: + SNMP <http://de.wikipedia.org/wiki/Simple_Network_Management_Protocol>`__ +- `​SNMPLink.ORG <http://www.snmplink.org/>`__ (EN) gibt zahlreiche + Referenzen zum Thema SNMP + +-------------- + +- Tags +- `network </tags/network>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/netsnmp/mrtg.en.rst b/wiki/packages/netsnmp/mrtg.en.rst new file mode 100644 index 0000000..0d95067 --- /dev/null +++ b/wiki/packages/netsnmp/mrtg.en.rst @@ -0,0 +1,1610 @@ +.. _MRTG: + +MRTG +---- + +| The Multi Router Traffic Grapher will allow you to generate nice + graphs of the data available via SNMP. +| This can be system information like uptime, interface information and + statistics, and more. +| For more info see the `​MRTG site <http://oss.oetiker.ch/mrtg/>`__. + +| Here an example on the graph you can generate: + +.. figure:: /screenshots/248.jpg + :alt: MRTG lan interface daily graph + + MRTG lan interface daily graph + +.. _InstallingMRTG: + +Installing MRTG +~~~~~~~~~~~~~~~ + +I installed MRTG on a Win7 pc. For this I followed the `​Windows +Installation +Guide <http://oss.oetiker.ch/mrtg/doc/mrtg-nt-guide.en.html>`__. + +| I also installed MGTG as a service. + +.. _MRTGConfigfile: + +MRTG Config file +~~~~~~~~~~~~~~~~ + +| You can generate a initial config file with the cfgmaker tool. +| This will query the snmp agent, and from the obtained info a config + file is created: + + perl cfgmaker public@192.168.178.1 —global "WorkDir: c:\www\mrtg" + —output mrtg.cfg + +| But be aware that I have noticed that interface index numbering + changes often at reboot, or when router parameters are changed. +| For the wifi interfaces 'wifi0' and 'ath0' of the 7270v3 I have even + seen multiple interface indexes were created where only the last + created with actual counters. A restart of the snmpd will correct + this. + +| In the generated config file most, if not all, are commented out due + to e.g. if there is no speed information found. Start with remove the + comments character for one interface, and get this to work. +| After you have cleared all possible config errors (e.g. watch leading + spaces which seems not accepted at some locations), you can add more + interfaces. +| You can also change the ADSL related interfaces to have two speeds + (asymmetric) so the percentage of used link speed for up and down is + more realistic. + +| Here my current config for the 7270v3: I added config for monitoring + CPU load (1, 5, and 15 minutes average), CPU Usage, and Memory usages. + This to help with trouble shooting performance issues. +| A good explanation of how to interpret the CPU load values can be + found + `​here <http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages>`__. + +.. code:: bash + + # Created by + # cfgmaker public@192.168.178.1 --global "WorkDir: c:\www\mrtg" --output mrtg.cfg + + ### Global Config Options + + # for UNIX + # WorkDir: /home/http/mrtg + + # or for NT + # WorkDir: c:\mrtgdata + WorkDir: c:\Users\<user>\www\mrtg + RunAsDaemon: yes + + ### Global Defaults + + # to get bits instead of bytes and graphs growing to the right + # Options[_]: growright, bits + + EnableIPv6: no + + ###################################################################### + # System: fritz.fonwlan.box + # Description: Linux fritz.fonwlan.box 2.6.19.2 #1 Fri Apr 8 14:13:30 CEST 2011 mips + # Contact: root@localhost + # Location: Unknown + ###################################################################### + + ## Interface 1 >> Descr: 'cpmac0' | Name: 'No Name' | Ip: 'No Ip' | Eth: 'No Ethernet Id' ### + ## The following interface is commented out because: + ## * has no ifSpeed property + + Target[192.168.178.1_cpmac0]: \cpmac0:public@192.168.178.1: + SetEnv[192.168.178.1_cpmac0]: MRTG_INT_IP="No Ip" MRTG_INT_DESCR="cpmac0" + MaxBytes[192.168.178.1_cpmac0]: 12500000 + Title[192.168.178.1_cpmac0]: Traffic Analysis for 1 -- cpmac0 100Mbit/s Ethernet switch + PageTop[192.168.178.1_cpmac0]: <h1>Traffic Analysis for 1 -- cpmac0 100Mbit/s Ethernet switch</h1> + <div id="sysdetails"> + <table> + <tr> + <td>System:</td> + <td>fritz.fonwlan.box in Unknown</td> + </tr> + <tr> + <td>Maintainer:</td> + <td>root@localhost</td> + </tr> + <tr> + <td>Description:</td> + <td>cpmac0 </td> + </tr> + <tr> + <td>ifType:</td> + <td>ethernetCsmacd (6)</td> + </tr> + <tr> + <td>ifName:</td> + <td>No Name</td> + </tr> + <tr> + <td>Max Speed:</td> + <td>12.5 MBytes/s</td> + </tr> + <tr> + <td>Ip:</td> + <td>No Ip (No DNS name)</td> + </tr> + </table> + </div> + + ## Interface 2 >> Descr: 'lo' | Name: 'No Name' | Ip: '127.0.0.1' | Eth: 'No Ethernet Id' ### + ## The following interface is commented out because: + ## * it is a Software Loopback interface + + Target[192.168.178.1_lo]: \lo:public@192.168.178.1: + SetEnv[192.168.178.1_lo]: MRTG_INT_IP="127.0.0.1" MRTG_INT_DESCR="lo" + MaxBytes[192.168.178.1_lo]: 1250000 + Title[192.168.178.1_lo]: Traffic Analysis for 2 -- lo Local Loopback Interface + PageTop[192.168.178.1_lo]: <h1>Traffic Analysis for 2 -- lo Local Loopback Interface</h1> + <div id="sysdetails"> + <table> + <tr> + <td>System:</td> + <td>fritz.fonwlan.box in Unknown</td> + </tr> + <tr> + <td>Maintainer:</td> + <td>root@localhost</td> + </tr> + <tr> + <td>Description:</td> + <td>lo </td> + </tr> + <tr> + <td>ifType:</td> + <td>softwareLoopback (24)</td> + </tr> + <tr> + <td>ifName:</td> + <td>No Name</td> + </tr> + <tr> + <td>Max Speed:</td> + <td>1250.0 kBytes/s</td> + </tr> + <tr> + <td>Ip:</td> + <td>127.0.0.1 (localhost)</td> + </tr> + </table> + </div> + + ### Interface 3 >> Descr: 'sit0' | Name: 'No Name' | Ip: 'No Ip' | Eth: 'No Ethernet Id' ### + ### The following interface is commented out because: + ### * it is administratively DOWN + ### * it is operationally DOWN + ### * has no ifSpeed property + # + # Target[192.168.178.1_sit0]: \sit0:public@192.168.178.1: + # SetEnv[192.168.178.1_sit0]: MRTG_INT_IP="No Ip" MRTG_INT_DESCR="sit0" + # MaxBytes[192.168.178.1_sit0]: 0 + # Title[192.168.178.1_sit0]: Traffic Analysis for 3 -- sit0 + # PageTop[192.168.178.1_sit0]: <h1>Traffic Analysis for 3 -- sit0</h1> + # <div id="sysdetails"> + # <table> + # <tr> + # <td>System:</td> + # <td>fritz.fonwlan.box in Unknown</td> + # </tr> + # <tr> + # <td>Maintainer:</td> + # <td>root@localhost</td> + # </tr> + # <tr> + # <td>Description:</td> + # <td>sit0 </td> + # </tr> + # <tr> + # <td>ifType:</td> + # <td>Encapsulation Interface (131)</td> + # </tr> + # <tr> + # <td>ifName:</td> + # <td>No Name</td> + # </tr> + # <tr> + # <td>Max Speed:</td> + # <td>0.0 Bytes/s</td> + # </tr> + # <tr> + # <td>Ip:</td> + # <td>No Ip (No DNS name)</td> + # </tr> + # </table> + # </div> + + ## Interface 4 >> Descr: 'eth0' | Name: 'No Name' | Ip: 'No Ip' | Eth: 'No Ethernet Id' ### + ## The following interface is commented out because: + ## * has no ifSpeed property + + Target[192.168.178.1_eth0]: \eth0:public@192.168.178.1: + SetEnv[192.168.178.1_eth0]: MRTG_INT_IP="No Ip" MRTG_INT_DESCR="eth0" + MaxBytes[192.168.178.1_eth0]: 12500000 + Title[192.168.178.1_eth0]: Traffic Analysis for 4 -- eth0 + PageTop[192.168.178.1_eth0]: <h1>Traffic Analysis for 4 -- eth0</h1> + <div id="sysdetails"> + <table> + <tr> + <td>System:</td> + <td>fritz.fonwlan.box in Unknown</td> + </tr> + <tr> + <td>Maintainer:</td> + <td>root@localhost</td> + </tr> + <tr> + <td>Description:</td> + <td>eth0 </td> + </tr> + <tr> + <td>ifType:</td> + <td>ethernetCsmacd (6)</td> + </tr> + <tr> + <td>ifName:</td> + <td>No Name</td> + </tr> + <tr> + <td>Max Speed:</td> + <td>12.5 MBytes/s</td> + </tr> + <tr> + <td>Ip:</td> + <td>No Ip (No DNS name)</td> + </tr> + </table> + </div> + + ## Interface 6 >> Descr: 'lan' | Name: 'No Name' | Ip: '169.254.1.1' | Eth: 'No Ethernet Id' ### + ## The following interface is commented out because: + ## * has no ifSpeed property + + Target[192.168.178.1_lan]: \lan:public@192.168.178.1: + SetEnv[192.168.178.1_lan]: MRTG_INT_IP="169.254.1.1" MRTG_INT_DESCR="lan" + MaxBytes[192.168.178.1_lan]: 12500000 + Title[192.168.178.1_lan]: Traffic Analysis for 6 -- lan (eth + wifi) + PageTop[192.168.178.1_lan]: <h1>Traffic Analysis for 6 -- lan (eth + wifi)</h1> + <div id="sysdetails"> + <table> + <tr> + <td>System:</td> + <td>fritz.fonwlan.box in Unknown</td> + </tr> + <tr> + <td>Maintainer:</td> + <td>root@localhost</td> + </tr> + <tr> + <td>Description:</td> + <td>lan </td> + </tr> + <tr> + <td>ifType:</td> + <td>ethernetCsmacd (6)</td> + </tr> + <tr> + <td>ifName:</td> + <td>No Name</td> + </tr> + <tr> + <td>Max Speed:</td> + <td>12.5 MBytes/s</td> + </tr> + <tr> + <td>Ip:</td> + <td>169.254.1.1 (No DNS name)</td> + </tr> + </table> + </div> + + ## Interface 7 >> Descr: 'guest' | Name: 'No Name' | Ip: '192.168.179.1' | Eth: 'No Ethernet Id' ### + ## The following interface is commented out because: + ## * has no ifSpeed property + + Target[192.168.178.1_guest]: \guest:public@192.168.178.1: + SetEnv[192.168.178.1_guest]: MRTG_INT_IP="192.168.179.1" MRTG_INT_DESCR="guest" + MaxBytes[192.168.178.1_guest]: 6750000 + Title[192.168.178.1_guest]: Traffic Analysis for 7 -- guest (Guest WiFi) + PageTop[192.168.178.1_guest]: <h1>Traffic Analysis for 7 -- guest (Guest WiFi)</h1> + <div id="sysdetails"> + <table> + <tr> + <td>System:</td> + <td>fritz.fonwlan.box in Unknown</td> + </tr> + <tr> + <td>Maintainer:</td> + <td>root@localhost</td> + </tr> + <tr> + <td>Description:</td> + <td>guest </td> + </tr> + <tr> + <td>ifType:</td> + <td>ethernetCsmacd (6)</td> + </tr> + <tr> + <td>ifName:</td> + <td>No Name</td> + </tr> + <tr> + <td>Max Speed:</td> + <td>6.75 MBytes/s</td> + </tr> + <tr> + <td>Ip:</td> + <td>192.168.179.1 (No DNS name)</td> + </tr> + </table> + </div> + + ## Interface 22 >> Descr: 'wifi0' | Name: 'No Name' | Ip: 'No Ip' | Eth: 'No Ethernet Id' ### + ## The following interface is commented out because: + ## * has no ifSpeed property + + Target[192.168.178.1_wifi0]: \wifi0:public@192.168.178.1: + SetEnv[192.168.178.1_wifi0]: MRTG_INT_IP="No Ip" MRTG_INT_DESCR="wifi0" + MaxBytes[192.168.178.1_wifi0]: 6750000 + Title[192.168.178.1_wifi0]: Traffic Analysis for 22 -- wifi0 + PageTop[192.168.178.1_wifi0]: <h1>Traffic Analysis for 22 -- wifi0</h1> + <div id="sysdetails"> + <table> + <tr> + <td>System:</td> + <td>fritz.fonwlan.box in Unknown</td> + </tr> + <tr> + <td>Maintainer:</td> + <td>root@localhost</td> + </tr> + <tr> + <td>Description:</td> + <td>wifi0 </td> + </tr> + <tr> + <td>ifType:</td> + <td>ethernetCsmacd (6)</td> + </tr> + <tr> + <td>ifName:</td> + <td>No Name</td> + </tr> + <tr> + <td>Max Speed:</td> + <td>6.75 MBytes/s</td> + </tr> + <tr> + <td>Ip:</td> + <td>No Ip (No DNS name)</td> + </tr> + </table> + </div> + + ## Interface 25 >> Descr: 'ath0' | Name: 'No Name' | Ip: 'No Ip' | Eth: 'No Ethernet Id' ### + ## The following interface is commented out because: + ## * has no ifSpeed property + + Target[192.168.178.1_ath0]: \ath0:public@192.168.178.1: + SetEnv[192.168.178.1_ath0]: MRTG_INT_IP="No Ip" MRTG_INT_DESCR="ath0" + MaxBytes[192.168.178.1_ath0]: 6750000 + Title[192.168.178.1_ath0]: Traffic Analysis for 25 -- ath0 + PageTop[192.168.178.1_ath0]: <h1>Traffic Analysis for 25 -- ath0</h1> + <div id="sysdetails"> + <table> + <tr> + <td>System:</td> + <td>fritz.fonwlan.box in Unknown</td> + </tr> + <tr> + <td>Maintainer:</td> + <td>root@localhost</td> + </tr> + <tr> + <td>Description:</td> + <td>ath0 </td> + </tr> + <tr> + <td>ifType:</td> + <td>ethernetCsmacd (6)</td> + </tr> + <tr> + <td>ifName:</td> + <td>No Name</td> + </tr> + <tr> + <td>Max Speed:</td> + <td>6.75 MBytes/s</td> + </tr> + <tr> + <td>Ip:</td> + <td>No Ip (No DNS name)</td> + </tr> + </table> + </div> + + ## Interface 30 >> Descr: 'guest1' | Name: 'No Name' | Ip: 'No Ip' | Eth: 'No Ethernet Id' ### + ## The following interface is commented out because: + ## * has no ifSpeed property + + Target[192.168.178.1_guest1]: \guest1:public@192.168.178.1: + SetEnv[192.168.178.1_guest1]: MRTG_INT_IP="No Ip" MRTG_INT_DESCR="guest1" + MaxBytes[192.168.178.1_guest1]: 6750000 + Title[192.168.178.1_guest1]: Traffic Analysis for 30 -- guest1 (Guest WiFi) + PageTop[192.168.178.1_guest1]: <h1>Traffic Analysis for 30 -- guest1 (Guest WiFi)</h1> + <div id="sysdetails"> + <table> + <tr> + <td>System:</td> + <td>fritz.fonwlan.box in Unknown</td> + </tr> + <tr> + <td>Maintainer:</td> + <td>root@localhost</td> + </tr> + <tr> + <td>Description:</td> + <td>guest1 </td> + </tr> + <tr> + <td>ifType:</td> + <td>ethernetCsmacd (6)</td> + </tr> + <tr> + <td>ifName:</td> + <td>No Name</td> + </tr> + <tr> + <td>Max Speed:</td> + <td>6.75 MBytes/s</td> + </tr> + <tr> + <td>Ip:</td> + <td>No Ip (No DNS name)</td> + </tr> + </table> + </div> + + ## Interface 37 >> Descr: 'dsl' | Name: 'No Name' | Ip: 'No Ip' | Eth: 'No Ethernet Id' ### + ## The following interface is commented out because: + ### * has no ifSpeed property + + Target[192.168.178.1_dsl]: \dsl:public@192.168.178.1: + SetEnv[192.168.178.1_dsl]: MRTG_INT_IP="No Ip" MRTG_INT_DESCR="dsl" + MaxBytes1[192.168.178.1_dsl]: 1500000 + MaxBytes2[192.168.178.1_dsl]: 128000 + Title[192.168.178.1_dsl]: Traffic Analysis for 37 -- dsl + PageTop[192.168.178.1_dsl]: <h1>Traffic Analysis for 37 -- dsl</h1> + <div id="sysdetails"> + <table> + <tr> + <td>System:</td> + <td>fritz.fonwlan.box in Unknown</td> + </tr> + <tr> + <td>Maintainer:</td> + <td>root@localhost</td> + </tr> + <tr> + <td>Description:</td> + <td>dsl </td> + </tr> + <tr> + <td>ifType:</td> + <td>ppp (23)</td> + </tr> + <tr> + <td>ifName:</td> + <td>No Name</td> + </tr> + <tr> + <td>Max Speed:</td> + <td>1.50 MBytes/s Downstream, 128 kBytes/s Upstream</td> + </tr> + <tr> + <td>Ip:</td> + <td>No Ip (No DNS name)</td> + </tr> + </table> + </div> + + ## Interface 38 >> Descr: 'adsl' | Name: 'No Name' | Ip: 'No Ip' | Eth: 'No Ethernet Id' ### + ## The following interface is commented out because: + ## * has no ifSpeed property + + Target[192.168.178.1_adsl]: \adsl:public@192.168.178.1: + SetEnv[192.168.178.1_adsl]: MRTG_INT_IP="No Ip" MRTG_INT_DESCR="adsl" + MaxBytes1[192.168.178.1_adsl]: 1500000 + MaxBytes2[192.168.178.1_adsl]: 128000 + Title[192.168.178.1_adsl]: Traffic Analysis for 38 -- atm + PageTop[192.168.178.1_adsl]: <h1>Traffic Analysis for 38 -- atm</h1> + <div id="sysdetails"> + <table> + <tr> + <td>System:</td> + <td>fritz.fonwlan.box in Unknown</td> + </tr> + <tr> + <td>Maintainer:</td> + <td>root@localhost</td> + </tr> + <tr> + <td>Description:</td> + <td>adsl </td> + </tr> + <tr> + <td>ifType:</td> + <td>atm (37)</td> + </tr> + <tr> + <td>ifName:</td> + <td>No Name</td> + </tr> + <tr> + <td>Max Speed:</td> + <td>1.50 MBytes/s Downstream, 128 kBytes/s Upstream</td> + </tr> + <tr> + <td>Ip:</td> + <td>No Ip (No DNS name)</td> + </tr> + </table> + </div> + + ## Interface 43 >> Descr: 'sixxs' | Name: 'No Name' | Ip: 'No Ip' | Eth: 'No Ethernet Id' ### + ## The following interface is commented out because: + ## * has no ifSpeed property + + Target[192.168.178.1_sixxs]: \sixxs:public@192.168.178.1: + SetEnv[192.168.178.1_sixxs]: MRTG_INT_IP="No Ip" MRTG_INT_DESCR="sixxs" + MaxBytes1[192.168.178.1_sixxs]: 1500000 + MaxBytes2[192.168.178.1_sixxs]: 128000 + Title[192.168.178.1_sixxs]: Traffic Analysis for 43 -- sixxs + PageTop[192.168.178.1_sixxs]: <h1>Traffic Analysis for 43 -- sixxs</h1> + <div id="sysdetails"> + <table> + <tr> + <td>System:</td> + <td>fritz.fonwlan.box in Unknown</td> + </tr> + <tr> + <td>Maintainer:</td> + <td>root@localhost</td> + </tr> + <tr> + <td>Description:</td> + <td>sixxs </td> + </tr> + <tr> + <td>ifType:</td> + <td>Other (1)</td> + </tr> + <tr> + <td>ifName:</td> + <td>No Name</td> + </tr> + <tr> + <td>Max Speed:</td> + <td>1.50 MBytes/s Downstream, 128 kBytes/s Upstream</td> + </tr> + <tr> + <td>Ip:</td> + <td>No Ip (No DNS name)</td> + </tr> + </table> + </div> + + # Router CPU one minute load averages + Target[cpu.1]:.1.3.6.1.4.1.2021.10.1.5.1&.1.3.6.1.4.1.2021.10.1.5.1:public@192.168.178.1: + RouterUptime[cpu.1]: sysUpTime.0:public@192.168.178.1: + MaxBytes[cpu.1]: 1000 + Title[cpu.1]: CPU LOAD + PageTop[cpu.1]: <H1>CPU one minute load averages</H1> + <div id="sysdetails"> + <table> + <tr> + <td>System:</td> + <td>fritz.fonwlan.box 7270</td> + </tr> + <tr> + <td>Maintainer:</td> + <td>root@localhost</td> + </tr> + <tr> + <td>Description:</td> + <td>One minute load averages</td> + </tr> + </table> + </div> + ShortLegend[cpu.1]: avg cpu/min + Factor[cpu.1]: 0.01 + YLegend[cpu.1]: CPU Utilization + Legend1[cpu.1]: CPU Utilization (Load) + Legend2[cpu.1]: CPU Utilization (Load) + Legend3[cpu.1]: + Legend4[cpu.1]: + LegendI[cpu.1]: + LegendO[cpu.1]:  Usage + Options[cpu.1]: gauge, unknaszero + + # Router CPU five minute load averages + Target[cpu.2]:.1.3.6.1.4.1.2021.10.1.5.2&.1.3.6.1.4.1.2021.10.1.5.2:public@192.168.178.1: + RouterUptime[cpu.2]: .1.3.6.1.2.1.1.3.0:public@192.168.178.1: + MaxBytes[cpu.2]: 1000 + Title[cpu.2]: CPU LOAD + PageTop[cpu.2]: <H1>CPU five minute load averages</H1> + <div id="sysdetails"> + <table> + <tr> + <td>System:</td> + <td>fritz.fonwlan.box 7270</td> + </tr> + <tr> + <td>Maintainer:</td> + <td>root@localhost</td> + </tr> + <tr> + <td>Description:</td> + <td>Five minute load averages</td> + </tr> + </table> + </div> + ShortLegend[cpu.2]: avg cpu/5 min + Factor[cpu.2]: 0.01 + YLegend[cpu.2]: CPU Utilization + Legend1[cpu.2]: CPU Utilization (Load) + Legend2[cpu.2]: CPU Utilization (Load) + Legend3[cpu.2]: + Legend4[cpu.2]: + LegendI[cpu.2]: + LegendO[cpu.2]:  Usage + Options[cpu.2]: gauge, unknaszero + + # Router CPU fifteen minute load averages + Target[cpu.3]:.1.3.6.1.4.1.2021.10.1.5.3&.1.3.6.1.4.1.2021.10.1.5.3:public@192.168.178.1: + RouterUptime[cpu.3]: sysUpTime.0:public@192.168.178.1: + MaxBytes[cpu.3]: 1000 + Title[cpu.3]: CPU LOAD + PageTop[cpu.3]: <H1>CPU fifteen minute load averages</H1> + <div id="sysdetails"> + <table> + <tr> + <td>System:</td> + <td>fritz.fonwlan.box 7270</td> + </tr> + <tr> + <td>Maintainer:</td> + <td>root@localhost</td> + </tr> + <tr> + <td>Description:</td> + <td>Fifteen minute load averages</td> + </tr> + </table> + </div> + ShortLegend[cpu.3]: avg cpu/15 min + Factor[cpu.3]: 0.01 + YLegend[cpu.3]: CPU Utilization + Legend1[cpu.3]: CPU Utilization (Load) + Legend2[cpu.3]: CPU Utilization (Load) + Legend3[cpu.3]: + Legend4[cpu.3]: + LegendI[cpu.3]: + LegendO[cpu.3]:  Usage + Options[cpu.3]: gauge, unknaszero + + # Router CPU Utilization ssCpuIdle.0 + Target[cpu.idle]: 100 - .1.3.6.1.4.1.2021.11.11.0&.1.3.6.1.4.1.2021.11.11.0:public@192.168.178.1: + RouterUptime[cpu.idle]: sysUpTime.0:public@192.168.178.1: + MaxBytes[cpu.idle]: 1000 + Title[cpu.idle]: CPU Utilization + PageTop[cpu.idle]: <H1>CPU Utilization</H1> + <div id="sysdetails"> + <table> + <tr> + <td>System:</td> + <td>fritz.fonwlan.box 7270</td> + </tr> + <tr> + <td>Maintainer:</td> + <td>root@localhost</td> + </tr> + <tr> + <td>Description:</td> + <td>CPU Utilization</td> + </tr> + </table> + </div> + ShortLegend[cpu.idle]: % + YLegend[cpu.idle]: CPU Utilization + Legend1[cpu.idle]: CPU Utilization %(Load) + Legend2[cpu.idle]: CPU Utilization %(Load) + Legend3[cpu.idle]: + Legend4[cpu.idle]: + LegendI[cpu.idle]: + LegendO[cpu.idle]:  Usage + Options[cpu.idle]: gauge, unknaszero + + # Router Used Memory = Memory - Free Memory + # The total memory can be obtained from /proc/meminfo + # For the 7390 the MemTotal = 109168 kB + # For the 7270v3 the MemTotal = 59716 kB + Target[mem.used]: 59716 - .1.3.6.1.4.1.2021.4.11.0&.1.3.6.1.4.1.2021.4.11.0:public@192.168.178.1: + RouterUptime[mem.used]: sysUpTime.0:public@192.168.178.1: + MaxBytes[mem.used]: 59716 + Title[mem.used]: Used Memory + PageTop[mem.used]: <H1>Used Memory</H1> + <div id="sysdetails"> + <table> + <tr> + <td>System:</td> + <td>fritz.fonwlan.box 7270</td> + </tr> + <tr> + <td>Maintainer:</td> + <td>root@localhost</td> + </tr> + <tr> + <td>Description:</td> + <td>Used Memory</td> + </tr> + </table> + </div> + ShortLegend[mem.used]: kBytes + YLegend[mem.used]: Used Memory + Legend1[mem.used]: Used Memory (Total is 59716) + Legend2[mem.used]: Used Memory (Total is 59716) + Legend3[mem.used]: + Legend4[mem.used]: + LegendI[mem.used]: + LegendO[mem.used]:  Usage + Options[mem.used]: gauge, unknaszero + + WorkDir: c:\Users\<user>\www\mrtg + +For the 7390 I have the following config (not so much different). + +.. code:: bash + + # Created by + # cfgmaker public@192.168.178.1 --global "WorkDir: c:\www\mrtg" --output mrtg_7390.cfg + + ### Global Config Options + + # for UNIX + # WorkDir: /home/http/mrtg + + # or for NT + # WorkDir: c:\mrtgdata + WorkDir: c:\Users\<user>\www\mrtg + RunAsDaemon: yes + + ### Global Defaults + + # to get bits instead of bytes and graphs growing to the right + # Options[_]: growright, bits + + EnableIPv6: no + + ###################################################################### + # System: fritz.fonwlan.box + # Description: Linux fritz.fonwlan.box 2.6.28.10 #1 Thu Mar 21 15:33:40 CET 2013 mips + # Contact: root@localhost + # Location: Unknown + ###################################################################### + + ## Changes to use RRDTool as explained in: http://oss.oetiker.ch/mrtg/doc/mrtg-rrd.en.html + # LogFormat: rrdtool + # PathAdd: c:\rrdtool\rrdtool-1.4.7\win32\Debug + # LibAdd: c:\rrdtool\rrdtool-1.4.7\bindings\perl-shared + ## Interface 1 >> Descr: 'lo' | Name: 'No Name' | Ip: '127.0.0.1' | Eth: 'No Ethernet Id' ### + ## The following interface is commented out because: + ## * it is a Software Loopback interface + + Target[192.168.178.1_lo]: \lo:public@192.168.178.1: + SetEnv[192.168.178.1_lo]: MRTG_INT_IP="127.0.0.1" MRTG_INT_DESCR="lo" + MaxBytes[192.168.178.1_lo]: 1250000 + Title[192.168.178.1_lo]: Traffic Analysis for 1 -- lo Local Loopback Interface + PageTop[192.168.178.1_lo]: <h1>Traffic Analysis for 1 -- lo Local Loopback Interface</h1> + <div id="sysdetails"> + <table> + <tr> + <td>System:</td> + <td>fritz.fonwlan.box in Unknown</td> + </tr> + <tr> + <td>Maintainer:</td> + <td>root@localhost</td> + </tr> + <tr> + <td>Description:</td> + <td>lo </td> + </tr> + <tr> + <td>ifType:</td> + <td>softwareLoopback (24)</td> + </tr> + <tr> + <td>ifName:</td> + <td>No Name</td> + </tr> + <tr> + <td>Max Speed:</td> + <td>1250.0 kBytes/s</td> + </tr> + <tr> + <td>Ip:</td> + <td>127.0.0.1 (localhost)</td> + </tr> + </table> + </div> + + ### Interface 2 >> Descr: 'sit0' | Name: 'No Name' | Ip: 'No Ip' | Eth: 'No Ethernet Id' ### + ### The following interface is commented out because: + ### * it is administratively DOWN + ### * it is operationally DOWN + ### * has no ifSpeed property + # + # Target[192.168.178.1_sit0]: \sit0:public@192.168.178.1: + # SetEnv[192.168.178.1_sit0]: MRTG_INT_IP="No Ip" MRTG_INT_DESCR="sit0" + # MaxBytes[192.168.178.1_sit0]: 0 + # Title[192.168.178.1_sit0]: Traffic Analysis for 2 -- sit0 + # PageTop[192.168.178.1_sit0]: <h1>Traffic Analysis for 2 -- sit0</h1> + # <div id="sysdetails"> + # <table> + # <tr> + # <td>System:</td> + # <td>fritz.fonwlan.box in Unknown</td> + # </tr> + # <tr> + # <td>Maintainer:</td> + # <td>root@localhost</td> + # </tr> + # <tr> + # <td>Description:</td> + # <td>sit0 </td> + # </tr> + # <tr> + # <td>ifType:</td> + # <td>Encapsulation Interface (131)</td> + # </tr> + # <tr> + # <td>ifName:</td> + # <td>No Name</td> + # </tr> + # <tr> + # <td>Max Speed:</td> + # <td>0.0 Bytes/s</td> + # </tr> + # <tr> + # <td>Ip:</td> + # <td>No Ip (No DNS name)</td> + # </tr> + # </table> + # </div> + + ## Interface 3 >> Descr: 'cpmac0' | Name: 'No Name' | Ip: 'No Ip' | Eth: 'No Ethernet Id' ### + ## The following interface is commented out because: + ## * has no ifSpeed property + + Target[192.168.178.1_cpmac0]: \cpmac0:public@192.168.178.1: + SetEnv[192.168.178.1_cpmac0]: MRTG_INT_IP="No Ip" MRTG_INT_DESCR="cpmac0" + MaxBytes[192.168.178.1_cpmac0]: 128000000 + Title[192.168.178.1_cpmac0]: Traffic Analysis for 3 -- cpmac0 1Gbit/s Ethernet switch + PageTop[192.168.178.1_cpmac0]: <h1>Traffic Analysis for 3 -- cpmac0 1Gbit/s Ethernet switch</h1> + <div id="sysdetails"> + <table> + <tr> + <td>System:</td> + <td>fritz.fonwlan.box in Unknown</td> + </tr> + <tr> + <td>Maintainer:</td> + <td>root@localhost</td> + </tr> + <tr> + <td>Description:</td> + <td>cpmac0 </td> + </tr> + <tr> + <td>ifType:</td> + <td>ethernetCsmacd (6)</td> + </tr> + <tr> + <td>ifName:</td> + <td>No Name</td> + </tr> + <tr> + <td>Max Speed:</td> + <td>128 MBytes/s</td> + </tr> + <tr> + <td>Ip:</td> + <td>No Ip (No DNS name)</td> + </tr> + </table> + </div> + + ## Interface 4 >> Descr: 'eth0' | Name: 'No Name' | Ip: 'No Ip' | Eth: 'No Ethernet Id' ### + ## The following interface is commented out because: + ## * has no ifSpeed property + + Target[192.168.178.1_eth0]: \eth0:public@192.168.178.1: + SetEnv[192.168.178.1_eth0]: MRTG_INT_IP="No Ip" MRTG_INT_DESCR="eth0" + MaxBytes[192.168.178.1_eth0]: 12500000 + Title[192.168.178.1_eth0]: Traffic Analysis for 4 -- eth0 + PageTop[192.168.178.1_eth0]: <h1>Traffic Analysis for 4 -- eth0</h1> + <div id="sysdetails"> + <table> + <tr> + <td>System:</td> + <td>fritz.fonwlan.box in Unknown</td> + </tr> + <tr> + <td>Maintainer:</td> + <td>root@localhost</td> + </tr> + <tr> + <td>Description:</td> + <td>eth0 </td> + </tr> + <tr> + <td>ifType:</td> + <td>ethernetCsmacd (6)</td> + </tr> + <tr> + <td>ifName:</td> + <td>No Name</td> + </tr> + <tr> + <td>Max Speed:</td> + <td>12.5 MBytes/s</td> + </tr> + <tr> + <td>Ip:</td> + <td>No Ip (No DNS name)</td> + </tr> + </table> + </div> + + ## Interface 5 >> Descr: 'lan' | Name: 'No Name' | Ip: '169.254.1.1' | Eth: 'No Ethernet Id' ### + ## The following interface is commented out because: + ## * has no ifSpeed property + Target[192.168.178.1_lan]: \lan:public@192.168.178.1: + SetEnv[192.168.178.1_lan]: MRTG_INT_IP="169.254.1.1" MRTG_INT_DESCR="lan" + MaxBytes[192.168.178.1_lan]: 12500000 + Title[192.168.178.1_lan]: Traffic Analysis for 5 -- lan (eth + wifi) + PageTop[192.168.178.1_lan]: <h1>Traffic Analysis for 5 -- lan (eth + wifi)</h1> + <div id="sysdetails"> + <table> + <tr> + <td>System:</td> + <td>fritz.fonwlan.box in Unknown</td> + </tr> + <tr> + <td>Maintainer:</td> + <td>root@localhost</td> + </tr> + <tr> + <td>Description:</td> + <td>lan </td> + </tr> + <tr> + <td>ifType:</td> + <td>ethernetCsmacd (6)</td> + </tr> + <tr> + <td>ifName:</td> + <td>No Name</td> + </tr> + <tr> + <td>Max Speed:</td> + <td>12.5 MBytes/s</td> + </tr> + <tr> + <td>Ip:</td> + <td>169.254.1.1 (No DNS name)</td> + </tr> + </table> + </div> + + ## Interface 6 >> Descr: 'guest' | Name: 'No Name' | Ip: '192.168.179.1' | Eth: 'No Ethernet Id' ### + ## The following interface is commented out because: + ## * has no ifSpeed property + + Target[192.168.178.1_guest]: \guest:public@192.168.178.1: + SetEnv[192.168.178.1_guest]: MRTG_INT_IP="192.168.179.1" MRTG_INT_DESCR="guest" + MaxBytes[192.168.178.1_guest]: 37500000 + Title[192.168.178.1_guest]: Traffic Analysis for 6 -- guest (Guest WiFi) + PageTop[192.168.178.1_guest]: <h1>Traffic Analysis for 6 -- guest (Guest WiFi)</h1> + <div id="sysdetails"> + <table> + <tr> + <td>System:</td> + <td>fritz.fonwlan.box in Unknown</td> + </tr> + <tr> + <td>Maintainer:</td> + <td>root@localhost</td> + </tr> + <tr> + <td>Description:</td> + <td>guest </td> + </tr> + <tr> + <td>ifType:</td> + <td>ethernetCsmacd (6)</td> + </tr> + <tr> + <td>ifName:</td> + <td>No Name</td> + </tr> + <tr> + <td>Max Speed:</td> + <td>37.5 MBytes/s</td> + </tr> + <tr> + <td>Ip:</td> + <td>192.168.179.1 (No DNS name)</td> + </tr> + </table> + </div> + + ## Interface 19 >> Descr: 'wifi0' | Name: 'No Name' | Ip: 'No Ip' | Eth: 'No Ethernet Id' ### + ## The following interface is commented out because: + ## * has no ifSpeed property + + Target[192.168.178.1_wifi0]: \wifi0:public@192.168.178.1: + SetEnv[192.168.178.1_wifi0]: MRTG_INT_IP="No Ip" MRTG_INT_DESCR="wifi0" + MaxBytes[192.168.178.1_wifi0]: 37500000 + Title[192.168.178.1_wifi0]: Traffic Analysis for 19 -- wifi0 + PageTop[192.168.178.1_wifi0]: <h1>Traffic Analysis for 19 -- wifi0</h1> + <div id="sysdetails"> + <table> + <tr> + <td>System:</td> + <td>fritz.fonwlan.box in Unknown</td> + </tr> + <tr> + <td>Maintainer:</td> + <td>root@localhost</td> + </tr> + <tr> + <td>Description:</td> + <td>wifi0 </td> + </tr> + <tr> + <td>ifType:</td> + <td>Other (1)</td> + </tr> + <tr> + <td>ifName:</td> + <td>No Name</td> + </tr> + <tr> + <td>Max Speed:</td> + <td>37.5 MBytes/s</td> + </tr> + <tr> + <td>Ip:</td> + <td>No Ip (No DNS name)</td> + </tr> + </table> + </div> + + ## Interface 20 >> Descr: 'wifi1' | Name: 'No Name' | Ip: 'No Ip' | Eth: 'No Ethernet Id' ### + ## The following interface is commented out because: + ## * has no ifSpeed property + + Target[192.168.178.1_wifi1]: \wifi1:public@192.168.178.1: + SetEnv[192.168.178.1_wifi1]: MRTG_INT_IP="No Ip" MRTG_INT_DESCR="wifi1" + MaxBytes[192.168.178.1_wifi1]: 37500000 + Title[192.168.178.1_wifi1]: Traffic Analysis for 20 -- wifi1 + PageTop[192.168.178.1_wifi1]: <h1>Traffic Analysis for 20 -- wifi1</h1> + <div id="sysdetails"> + <table> + <tr> + <td>System:</td> + <td>fritz.fonwlan.box in Unknown</td> + </tr> + <tr> + <td>Maintainer:</td> + <td>root@localhost</td> + </tr> + <tr> + <td>Description:</td> + <td>wifi1 </td> + </tr> + <tr> + <td>ifType:</td> + <td>Other (1)</td> + </tr> + <tr> + <td>ifName:</td> + <td>No Name</td> + </tr> + <tr> + <td>Max Speed:</td> + <td>37.5 MBytes/s</td> + </tr> + <tr> + <td>Ip:</td> + <td>No Ip (No DNS name)</td> + </tr> + </table> + </div> + + ## Interface 25 >> Descr: 'ath0' | Name: 'No Name' | Ip: 'No Ip' | Eth: 'No Ethernet Id' ### + ## The following interface is commented out because: + ## * has no ifSpeed property + + Target[192.168.178.1_ath0]: \ath0:public@192.168.178.1: + SetEnv[192.168.178.1_ath0]: MRTG_INT_IP="No Ip" MRTG_INT_DESCR="ath0" + MaxBytes[192.168.178.1_ath0]: 37500000 + Title[192.168.178.1_ath0]: Traffic Analysis for 25 -- ath0 + PageTop[192.168.178.1_ath0]: <h1>Traffic Analysis for 25 -- ath0</h1> + <div id="sysdetails"> + <table> + <tr> + <td>System:</td> + <td>fritz.fonwlan.box in Unknown</td> + </tr> + <tr> + <td>Maintainer:</td> + <td>root@localhost</td> + </tr> + <tr> + <td>Description:</td> + <td>ath0 </td> + </tr> + <tr> + <td>ifType:</td> + <td>ethernetCsmacd (6)</td> + </tr> + <tr> + <td>ifName:</td> + <td>No Name</td> + </tr> + <tr> + <td>Max Speed:</td> + <td>37.5 MBytes/s</td> + </tr> + <tr> + <td>Ip:</td> + <td>No Ip (No DNS name)</td> + </tr> + </table> + </div> + + ## Interface 26 >> Descr: 'ath1' | Name: 'No Name' | Ip: 'No Ip' | Eth: 'No Ethernet Id' ### + ## The following interface is commented out because: + ## * has no ifSpeed property + + Target[192.168.178.1_ath1]: \ath1:public@192.168.178.1: + SetEnv[192.168.178.1_ath1]: MRTG_INT_IP="No Ip" MRTG_INT_DESCR="ath1" + MaxBytes[192.168.178.1_ath1]: 37500000 + Title[192.168.178.1_ath1]: Traffic Analysis for 26 -- ath1 + PageTop[192.168.178.1_ath1]: <h1>Traffic Analysis for 26 -- ath1</h1> + <div id="sysdetails"> + <table> + <tr> + <td>System:</td> + <td>fritz.fonwlan.box in Unknown</td> + </tr> + <tr> + <td>Maintainer:</td> + <td>root@localhost</td> + </tr> + <tr> + <td>Description:</td> + <td>ath1 </td> + </tr> + <tr> + <td>ifType:</td> + <td>ethernetCsmacd (6)</td> + </tr> + <tr> + <td>ifName:</td> + <td>No Name</td> + </tr> + <tr> + <td>Max Speed:</td> + <td>37.5 MBytes/s</td> + </tr> + <tr> + <td>Ip:</td> + <td>No Ip (No DNS name)</td> + </tr> + </table> + </div> + + ## Interface 37 >> Descr: 'dsl' | Name: 'No Name' | Ip: 'No Ip' | Eth: 'No Ethernet Id' ### + ## The following interface is commented out because: + ## * has no ifSpeed property + + Target[192.168.178.1_dsl]: \dsl:public@192.168.178.1: + SetEnv[192.168.178.1_dsl]: MRTG_INT_IP="No Ip" MRTG_INT_DESCR="dsl" + MaxBytes1[192.168.178.1_dsl]: 1500000 + MaxBytes2[192.168.178.1_dsl]: 128000 + Title[192.168.178.1_dsl]: Traffic Analysis for 37 -- dsl + PageTop[192.168.178.1_dsl]: <h1>Traffic Analysis for 37 -- dsl</h1> + <div id="sysdetails"> + <table> + <tr> + <td>System:</td> + <td>fritz.fonwlan.box in Unknown</td> + </tr> + <tr> + <td>Maintainer:</td> + <td>root@localhost</td> + </tr> + <tr> + <td>Description:</td> + <td>dsl </td> + </tr> + <tr> + <td>ifType:</td> + <td>ppp (23)</td> + </tr> + <tr> + <td>ifName:</td> + <td>No Name</td> + </tr> + <tr> + <td>Max Speed:</td> + <td>1.50 MBytes/s Downstream, 128 kBytes/s Upstream</td> + </tr> + <tr> + <td>Ip:</td> + <td>No Ip (No DNS name)</td> + </tr> + </table> + </div> + + ## Interface 38 >> Descr: 'adsl' | Name: 'No Name' | Ip: 'No Ip' | Eth: 'No Ethernet Id' ### + ## The following interface is commented out because: + ## * has no ifSpeed property + + Target[192.168.178.1_adsl]: \adsl:public@192.168.178.1: + SetEnv[192.168.178.1_adsl]: MRTG_INT_IP="No Ip" MRTG_INT_DESCR="adsl" + MaxBytes1[192.168.178.1_adsl]: 1500000 + MaxBytes2[192.168.178.1_adsl]: 128000 + Title[192.168.178.1_adsl]: Traffic Analysis for 38 -- atm + PageTop[192.168.178.1_adsl]: <h1>Traffic Analysis for 38 -- atm</h1> + <div id="sysdetails"> + <table> + <tr> + <td>System:</td> + <td>fritz.fonwlan.box in Unknown</td> + </tr> + <tr> + <td>Maintainer:</td> + <td>root@localhost</td> + </tr> + <tr> + <td>Description:</td> + <td>adsl </td> + </tr> + <tr> + <td>ifType:</td> + <td>atm (37)</td> + </tr> + <tr> + <td>ifName:</td> + <td>No Name</td> + </tr> + <tr> + <td>Max Speed:</td> + <td>1.50 MBytes/s Downstream, 128 kBytes/s Upstream</td> + </tr> + <tr> + <td>Ip:</td> + <td>No Ip (No DNS name)</td> + </tr> + </table> + </div> + + ## Interface 43 >> Descr: 'sixxs' | Name: 'No Name' | Ip: 'No Ip' | Eth: 'No Ethernet Id' ### + ## The following interface is commented out because: + ## * has no ifSpeed property + + Target[192.168.178.1_sixxs]: \sixxs:public@192.168.178.1: + SetEnv[192.168.178.1_sixxs]: MRTG_INT_IP="No Ip" MRTG_INT_DESCR="sixxs" + MaxBytes1[192.168.178.1_sixxs]: 1500000 + MaxBytes2[192.168.178.1_sixxs]: 128000 + Title[192.168.178.1_sixxs]: Traffic Analysis for 43 -- sixxs + PageTop[192.168.178.1_sixxs]: <h1>Traffic Analysis for 43 -- sixxs</h1> + <div id="sysdetails"> + <table> + <tr> + <td>System:</td> + <td>fritz.fonwlan.box in Unknown</td> + </tr> + <tr> + <td>Maintainer:</td> + <td>root@localhost</td> + </tr> + <tr> + <td>Description:</td> + <td>sixxs </td> + </tr> + <tr> + <td>ifType:</td> + <td>Other (1)</td> + </tr> + <tr> + <td>ifName:</td> + <td>No Name</td> + </tr> + <tr> + <td>Max Speed:</td> + <td>1.50 MBytes/s Downstream, 128 kBytes/s Upstream</td> + </tr> + <tr> + <td>Ip:</td> + <td>No Ip (No DNS name)</td> + </tr> + </table> + </div> + + # Router CPU one minute load averages + Target[cpu.1]:.1.3.6.1.4.1.2021.10.1.5.1&.1.3.6.1.4.1.2021.10.1.5.1:public@192.168.178.1: + RouterUptime[cpu.1]: sysUpTime.0:public@192.168.178.1: + MaxBytes[cpu.1]: 1000 + Title[cpu.1]: CPU LOAD + PageTop[cpu.1]: <H1>CPU one minute load averages</H1> + <div id="sysdetails"> + <table> + <tr> + <td>System:</td> + <td>fritz.fonwlan.box 7390</td> + </tr> + <tr> + <td>Maintainer:</td> + <td>root@localhost</td> + </tr> + <tr> + <td>Description:</td> + <td>One minute load averages</td> + </tr> + </table> + </div> + ShortLegend[cpu.1]: avg cpu/min + Factor[cpu.1]: 0.01 + YLegend[cpu.1]: CPU Utilization + Legend1[cpu.1]: CPU Utilization (Load) + Legend2[cpu.1]: CPU Utilization (Load) + Legend3[cpu.1]: + Legend4[cpu.1]: + LegendI[cpu.1]: + LegendO[cpu.1]:  Usage + Options[cpu.1]: gauge, unknaszero + + # Router CPU five minute load averages + Target[cpu.2]:.1.3.6.1.4.1.2021.10.1.5.2&.1.3.6.1.4.1.2021.10.1.5.2:public@192.168.178.1: + RouterUptime[cpu.2]: .1.3.6.1.2.1.1.3.0:public@192.168.178.1: + MaxBytes[cpu.2]: 1000 + Title[cpu.2]: CPU LOAD + PageTop[cpu.2]: <H1>CPU five minute load averages</H1> + <div id="sysdetails"> + <table> + <tr> + <td>System:</td> + <td>fritz.fonwlan.box 7390</td> + </tr> + <tr> + <td>Maintainer:</td> + <td>root@localhost</td> + </tr> + <tr> + <td>Description:</td> + <td>Five minute load averages</td> + </tr> + </table> + </div> + ShortLegend[cpu.2]: avg cpu/5 min + Factor[cpu.2]: 0.01 + YLegend[cpu.2]: CPU Utilization + Legend1[cpu.2]: CPU Utilization (Load) + Legend2[cpu.2]: CPU Utilization (Load) + Legend3[cpu.2]: + Legend4[cpu.2]: + LegendI[cpu.2]: + LegendO[cpu.2]:  Usage + Options[cpu.2]: gauge, unknaszero + + # Router CPU fifteen minute load averages + Target[cpu.3]:.1.3.6.1.4.1.2021.10.1.5.3&.1.3.6.1.4.1.2021.10.1.5.3:public@192.168.178.1: + RouterUptime[cpu.3]: sysUpTime.0:public@192.168.178.1: + MaxBytes[cpu.3]: 1000 + Title[cpu.3]: CPU LOAD + PageTop[cpu.3]: <H1>CPU fifteen minute load averages</H1> + <div id="sysdetails"> + <table> + <tr> + <td>System:</td> + <td>fritz.fonwlan.box 7390</td> + </tr> + <tr> + <td>Maintainer:</td> + <td>root@localhost</td> + </tr> + <tr> + <td>Description:</td> + <td>Fifteen minute load averages</td> + </tr> + </table> + </div> + ShortLegend[cpu.3]: avg cpu/15 min + Factor[cpu.3]: 0.01 + YLegend[cpu.3]: CPU Utilization + Legend1[cpu.3]: CPU Utilization (Load) + Legend2[cpu.3]: CPU Utilization (Load) + Legend3[cpu.3]: + Legend4[cpu.3]: + LegendI[cpu.3]: + LegendO[cpu.3]:  Usage + Options[cpu.3]: gauge, unknaszero + + # Router CPU Utilization ssCpuIdle.0 + Target[cpu.idle]: 100 - .1.3.6.1.4.1.2021.11.11.0&.1.3.6.1.4.1.2021.11.11.0:public@192.168.178.1: + RouterUptime[cpu.idle]: sysUpTime.0:public@192.168.178.1: + MaxBytes[cpu.idle]: 1000 + Title[cpu.idle]: CPU Utilization + PageTop[cpu.idle]: <H1>CPU Utilization</H1> + <div id="sysdetails"> + <table> + <tr> + <td>System:</td> + <td>fritz.fonwlan.box 7390</td> + </tr> + <tr> + <td>Maintainer:</td> + <td>root@localhost</td> + </tr> + <tr> + <td>Description:</td> + <td>CPU Utilization</td> + </tr> + </table> + </div> + ShortLegend[cpu.idle]: % + YLegend[cpu.idle]: CPU Utilization + Legend1[cpu.idle]: CPU Utilization %(Load) + Legend2[cpu.idle]: CPU Utilization %(Load) + Legend3[cpu.idle]: + Legend4[cpu.idle]: + LegendI[cpu.idle]: + LegendO[cpu.idle]:  Usage + Options[cpu.idle]: gauge, unknaszero + + # Router Used Memory = Memory - Free Memory + # The total memory can be obtained from /proc/meminfo + # For the 7390 the MemTotal = 109168 kB + # Without Swap: + # Target[mem.used]: 109168 - .1.3.6.1.4.1.2021.4.11.0&.1.3.6.1.4.1.2021.4.11.0:public@192.168.178.1: + # With Swap enabled: + Target[mem.used]: .1.3.6.1.4.1.2021.4.5.0&.1.3.6.1.4.1.2021.4.5.0:public@192.168.178.1 - .1.3.6.1.4.1.2021.4.6.0&.1.3.6.1.4.1.2021.4.6.0:public@192.168.178.1 + RouterUptime[mem.used]: sysUpTime.0:public@192.168.178.1: + MaxBytes[mem.used]: 109168 + Title[mem.used]: Used Memory + PageTop[mem.used]: <H1>Used Memory</H1> + <div id="sysdetails"> + <table> + <tr> + <td>System:</td> + <td>fritz.fonwlan.box 7390</td> + </tr> + <tr> + <td>Maintainer:</td> + <td>root@localhost</td> + </tr> + <tr> + <td>Description:</td> + <td>Used Memory</td> + </tr> + </table> + </div> + ShortLegend[mem.used]: kBytes + YLegend[mem.used]: Used Memory + Legend1[mem.used]: Used Memory (Total is 109168) + Legend2[mem.used]: Used Memory (Total is 109168) + Legend3[mem.used]: + Legend4[mem.used]: + LegendI[mem.used]: + LegendO[mem.used]:  Usage + Options[mem.used]: gauge, unknaszero + + WorkDir: c:\Users\<user>\www\mrtg + +.. _Onepageoverview: + +One page overview +~~~~~~~~~~~~~~~~~ + +| MRTG offers a tool to generate a web-page with for a specific period, + e.g. all one-day graphs of all configured targets on one page. +| In a dos-box in the mrtg\bin directory execute the following (replace + <name> with your prefered name for the page). For a page with one-day + graphs: + + perl indexmaker —output <name>.htm mrtg.cfg + +For a page with graphs of a week, month or year: + + perl indexmaker —show=week —output <name>.htm mrtg.cfg perl + indexmaker —show=month —output <name>.htm mrtg.cfg perl indexmaker + —show=year —output <name>.htm mrtg.cfg + +Then move the created .htm file to the directory with all the generated +MRTG pages. + +.. _MGTGasaservice: + +MGTG as a service +~~~~~~~~~~~~~~~~~ + +With a new installation on Win7 I installed I decided to install on the +following locations i.s.o. the root of the c: directory: + +Web-pages: + + C:\Users\<user>\www\mrtg\\ + +MRTG: + + C:\Program Files (x86)\mrtg-2.17.4\\ + +Net-SNMP: + + C:\Program Files (x86)\Net-SNMP\\ + +You need to obtain the following two programs to create the service: + + instsrv.exe srvany.exe + +Copy them to C:\Program Files (x86)\mrtg-2.17.4\bin\\ directory. + +I generated a service named mrtg_7390. + +.. code:: bash + + cd C:\Program Files (x86)\mrtg-2.17.4\bin\ + instsrv "MRTG_7390" "C:\Program Files (x86)\mrtg-2.17.4\bin\srvany.exe" + +Create a registry file at the following location: + + C:\Program Files (x86)\mrtg-2.17.4\bin\mrtg_7390.reg + + .. code:: bash + + [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MRTG_7390\Parameters] + "Application"="c:\\Program Files\\perl64\\bin\\wperl.exe" + "AppParameters"="\"c:\\Program Files (x86)\\mrtg-2.17.4\\bin\\mrtg\" \"c:\\Program Files (x86)\\mrtg-2.17.4\\bin\\mrtg_7390.cfg\"" + "AppDirectory"="c:\\Program Files (x86)\\mrtg-2.17.4\\bin\\" + +Add the entries in the in the registry using the following command: + + regedit /s mrtg_7390.reg + +.. figure:: /screenshots/279.png + :alt: MRTG as a Service Registry entry + + MRTG as a Service Registry entry + +.. figure:: /screenshots/280.png + :alt: MRTG as a Service Registry entry parameters + + MRTG as a Service Registry entry parameters + +.. _Webpageexamples: + +Web page examples +~~~~~~~~~~~~~~~~~ diff --git a/wiki/packages/nfs-utils.rst b/wiki/packages/nfs-utils.rst new file mode 100644 index 0000000..666628c --- /dev/null +++ b/wiki/packages/nfs-utils.rst @@ -0,0 +1,33 @@ +.. _NFS-UtilsNFS-Server: + +NFS-Utils / NFS-Server +====================== + +Die NFS-Utils erweitern Freetz um einen NFS Server inklusive +Administrationswebinterface (siehe `nfsd-cgi <nfsd.html>`__) für die +Konfigdateien ``Exports``, ``allow_hosts`` und ``deny_hosts``. + +.. _Hinweise: + +Hinweise +-------- + +- Exports funktionieren nur richtig mit ext2, ext3 oder ReiserFS + Dateisystemen. +- Squashfs und tmpfs/ramfs (/var) können nicht über NFS exportiert + werden +- Wenn keine Verbindung zustande kommt kann das an einer falschen NFS + Version des Clients liegen. Beheben kann man das mit dem zusätzlichen + mount Parameter ``-o nfsvers=3``. + +.. _Referenzen: + +Referenzen +---------- + +- `​http://www.ip-phone-forum.de/showthread.php?p=1609992 <http://www.ip-phone-forum.de/showthread.php?p=1609992>`__ +- `​http://de.wikipedia.org/wiki/Network_File_System <http://de.wikipedia.org/wiki/Network_File_System>`__ + +- Tags +- `filesystem </tags/filesystem>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/nfs.rst b/wiki/packages/nfs.rst new file mode 100644 index 0000000..e19ba81 --- /dev/null +++ b/wiki/packages/nfs.rst @@ -0,0 +1,54 @@ +.. _NFS: + +NFS +=== + +Um den doch etwas begrenzten Speicherplatz zu erweitern, kann man die +Fritzbox als NFS-Client benutzen. Da es kein Webinterface für diese +Funktion gibt muss das manuell erledigt werden. Zur Nutzung von +NFS-Shares muss das NFS-Kernel-Modul im menuconfig ausgewählt werden. +Abhängig von der verwendeten Konfiguration kann NFS auch fest im Kernel +sein. Dann kann man das modprobe weglassen und der mount-Befehl reicht +aus. + +:: + + modprobe nfs + mount -t nfs -o soft server:/export/fritzbox mountpunkt + +Damit das nach dem Hochfahren der Fritzbox automatisch passiert kann man +z.B. das hier in die debug.cfg einbauen: + +:: + + ( + nfssrv=mein.server.zu.hause + + while ! ping -c 1 $nfssrv ; do + sleep 30 + done + + base=/var/mod/root + mkdir $base/mnt + modprobe nfs + mount -t nfs -o soft $nfssrv:/export/fritzbox $base/mnt + + cd $base + + $base/mnt/startup.sh + ) 2>&1 | logger & + +Damit wird gewartet, bis der NFS-Server erreichbar ist, dann gemountet +und gleich ein dort liegendes ``startup.sh`` ausgeführt. + +.. _Alternative: + +Alternative +----------- + +Komfortabler geht das ganze mit `autofs <autofs.html>`__, damit werden +die Verzeichnisse nur bei Bedarf gemountet. + +- Tags +- `filesystem </tags/filesystem>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/nfsd.en.rst b/wiki/packages/nfsd.en.rst new file mode 100644 index 0000000..e15b3fa --- /dev/null +++ b/wiki/packages/nfsd.en.rst @@ -0,0 +1,268 @@ +.. _NFSD_CGI: + +NFSD_CGI +-------- + +| NFSD_CGI is the web-interface for the NFSD (Server) on Freetz. + +| Some observations: +| Currently using NFS with a 7390 using Freetz-trunk revision 11466. +| Using this revision I didn't observe permission issues like with + Freetz-1.2 for my 7270v3. +| As mount I'm using a `NDAS-NetDisk <ndas.html>`__ which is Ext3 + formatted. + +.. _etcexportsexportsinGUI: + +/etc/exports (exports in GUI) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +| My currect config allows 192.168.178.0/24 and localhost (for the local + NFS Client). + +.. code:: bash + + /var/media/ndas/ext3 192.168.178.0/255.255.250.0(rw,no_subtree_check) localhost(rw) + +/etc/hosts.allow +~~~~~~~~~~~~~~~~ + +| Looks only the first two lines are needed, but the others should not + harm. + +.. code:: bash + + mountd,nfsd,portmap: 192.168.178.0/255.255.255.0 , localhost + lockd: 192.168.178.0/255.255.255.0 , localhost + rquotad: 192.168.178.0/255.255.255.0 , localhost + statd: 192.168.178.0/255.255.255.0 , localhost + +/etc/hosts.deny +~~~~~~~~~~~~~~~ + +| Only deny the NFS related services + +.. code:: bash + + mountd,nfsd,portmap:ALL + lockd:ALL + rquotad:ALL + statd:ALL + +.. _VerificationonServer:: + +Verification on Server: +~~~~~~~~~~~~~~~~~~~~~~~ + +| Below some helpfull commands for trouble-shooting on the server. +| Unfortunately ``rpcinfo`` and ``nfsstat`` where not available on my + FB. Maybe ``rpcinfo`` is available if 'replace kernel' is used. + +List of kernel supported filesystems by the FB: + +.. code:: bash + + cat /proc/filesystems + +| Just look if the filesystems you are planning to use are listed. + +.. code:: bash + + /etc/init.d/rc.nfsd status + +| Status should be ``running``. Use the following ``ps`` command first + to see which processes are actually running before restarting the nfs + server. + +.. code:: bash + + ps -wl | grep 'nfs\|portmap\|lockd\|statd\|mountd\|quota' + +| portmap, lockd, mountd, and nfsd should be all listed as a process. +| You can use ``/etc/init.d/rc.nfsd stop`` and + ``/etc/init.d/rc.nfsd start`` to stop and start the nfs server. + +.. code:: bash + + exportfs + +| Should show the hosts or subnets (incl. localhost if configured) + configured in /etc/exports + +.. code:: bash + + mount + +| Look that the mounted disk allows rw (if intended) + +If you also have the `NFS Client </wiki/packages/nfs.en>`__ installed on +the FB, the following verification is available: + +.. code:: bash + + mount -t nfs localhost:/<share-path> /<mount-point> + +To show from the server which nfs exports are in use: + +.. code:: bash + + showmount --all + showmount --exports + +To verify layer-4 network information (e.g. used ports): + +.. code:: bash + + netstat -anp + +| + +.. code:: bash + + logread + +.. _rsizeandwsizebuffers: + +rsize and wsize buffers +~~~~~~~~~~~~~~~~~~~~~~~ + +| The read and write buffers are assigned during the ``mount`` on the + client. +| The server supports a buffer size that range from 4kbytes to + 1024kbytes (RPCSVC_MAXPAYLOAD (1*1024*1024u)) in steps of 1kbyte. +| Finding the optimal buffer size is normally the best option to get a + better performance. +| I only have a ndas Net-Disk mounted, and found that all rsize values + had a similar variation in the results. +| The FB CPU is the bottleneck. +| It might be interesting to retest this with a USB-stick to see if than + varying the buffersizes would show a difference. + +| I tested the performance with + `​Bonnie++ <http://www.coker.com.au/bonnie++>`__ using one of the + `​experimental + versions <http://www.coker.com.au/bonnie++/experimental/>`__ + +.. _Bonnie: + +Bonnie++ +^^^^^^^^ + +| For this I used two scripts to: run the test, unmount/mount both + client and server mounts, restart nfsd, and mounted the client with a + different rsize parameter. +| During the tests I only varied the rsize parameter, because I'm only + interested in the read optimalisation now, but changing both wsize and + rsize is also possible. +| Each test takes about 35 minutes (with 1gigbyte transfers), so you can + do about 16 overnight. +| Here the scripts I used: + +main script: + +.. code:: bash + + #!/bin/sh + + # the initial test with a rsize of 32768 (=32k) and increased with steps of 32k to 1024k + # rsize=32768 + # for the second test again 32 test using 1gigabyte using the best result -16*1k to +16*1k + # rsize to test is rsize=294912. Start rsize is + rsize=(294912-16384) + i=1 + date > results.txt + date +%s >> results.txt + while [ $i -le 32 ]; do + echo ======================================================= >> results.txt + echo ======================================================= + echo setup bonny++ test with rsize of $(($rsize+1024*$i)) + echo setup bonny++ test with rsize of $(($rsize+1024*$i)) >> results.txt + mount -o hard,intr,rsize=$(($rsize+1024*$i)) 192.168.178.1:<full_share_path> <local_mount_point> + bonnie++ -d <local_mount_point> -s 1g -n 0 -m nfs_client_$rsize -f -b -u root >> results.txt 2>> results.txt + echo ======================================================= >> results.txt + umount <local_mount_point> + expect autologin.sh + i=$(($i + 1)) + done + date >> results.txt + date +%s >> results.txt + +expect script: + +.. code:: bash + + #!/usr/bin/expect + + spawn ssh root@192.168.178.1 + # expect "connecting (yes/no)?" + # send "yes\r" + expect "assword:" + send "<your_passwd>\r" + expect "#" + send "/etc/init.d/rc.nfsd stop\r" + expect "done." + send "umount /dev/nda2\r" + expect "#" + send "mount /dev/nda2 <mount-point>\r" + expect "#" + send "/etc/init.d/rc.nfsd start\r" + expect "done." + +You can obtain a nice html page of your results with: + +.. code:: bash + + cat results.txt | grep ,,, | bon_csv2html > /tmp/nfs_client_test.html + +But you can also use the csv format output in an Excel sheet. I attached +3 html files showing my results. + +.. _MRTGCPUUtil: + +MRTG CPU Util +^^^^^^^^^^^^^ + +.. figure:: /screenshots/276.png + :alt: CPU Util 7390 bonnie++ test script + + CPU Util 7390 bonnie++ test script + +| In the `MRTG <netsnmp.en.html>`__ graph of the CPU Utilization you can + clearly see that the CPU Utilization is the bottleneck in my setup + using a `NDAS NetDisk <ndas.html>`__. +| The picture shows I started the test at about 7:20am which took until + 1:10am the next day. +| Than I did two manual bonny++ tests at 1:15am and 2am. Than started a + new batch test using the scripts at about 2:45am. + +.. _References: + +References +~~~~~~~~~~ + +| `​NFS howto <http://nfs.sourceforge.net/nfs-howto/index.html>`__ +| `​bonnie++ <http://www.coker.com.au/bonnie++/>`__ and the + `​experimental <http://www.coker.com.au/bonnie++/experimental/>`__ + page +| `​bonnie++ examples <http://www.googlux.com/bonnie.html>`__ + +Anhänge (3) +~~~~~~~~~~~ + +- `ndas_nfs_client_32k_1024k.html </attachment/wiki/packages/nfsd.en/ndas_nfs_client_32k_1024k.html>`__\ `​ </raw-attachment/wiki/packages/nfsd.en/ndas_nfs_client_32k_1024k.html>`__ + (33.3 KB) - hinzugefügt von *RomMon* `vor 4 + Jahren </timeline?from=2014-01-04T16%3A27%3A55Z&precision=second>`__. + “Bonnie++ test results 7390 rsize from 32kbytes to 1024kbytes with + 32kbytes steps” +- `ndas_nfs_client_288k_test.html </attachment/wiki/packages/nfsd.en/ndas_nfs_client_288k_test.html>`__\ `​ </raw-attachment/wiki/packages/nfsd.en/ndas_nfs_client_288k_test.html>`__ + (33.3 KB) - hinzugefügt von *RomMon* `vor 4 + Jahren </timeline?from=2014-01-04T16%3A30%3A22Z&precision=second>`__. + “„Bonnie++ test results 7390 rsize 288k plus/minus 16k in steps of + 1k” +- `ndas_nfs_client_287k_test.html </attachment/wiki/packages/nfsd.en/ndas_nfs_client_287k_test.html>`__\ `​ </raw-attachment/wiki/packages/nfsd.en/ndas_nfs_client_287k_test.html>`__ + (10.3 KB) - hinzugefügt von *RomMon* `vor 4 + Jahren </timeline?from=2014-01-04T16%3A31%3A17Z&precision=second>`__. + “Bonnie++ test results 7390 rsize is 287k 8 repeates” + +Alle Anhänge herunterladen als: +`.zip </zip-attachment/wiki/packages/nfsd.en/>`__ diff --git a/wiki/packages/nfsd.rst b/wiki/packages/nfsd.rst new file mode 100644 index 0000000..e46dfc4 --- /dev/null +++ b/wiki/packages/nfsd.rst @@ -0,0 +1,116 @@ +*TODO: Hinweise aus Forums Thread reinkopieren?* + +.. _NFSD_CGI: + +NFSD_CGI +======== + +**NFSD-CGI** bietet die Möglichkeit die FritzBox als NFS-Server zu +betreiben. Hiermit kann zum Beispiel von einer dbox2 direkt auf einen +angeschlossenen USB-Datenträger gestream werden. Richtig gut +funktioniert das aber nur mit einer 7270. Die Administration des Servers +erfolgt über das Webinterface. Hier kann die Startart (``automatisch`` +oder ``manuell``) ausgewählt werden und es können die 3 +Konfigurationsdateien ``exports``, ``hosts.allow`` und ``hosts.deny`` +bearbeitet werden.NFSD-CGI bedient sich der Pakete nfs-utils, portmap +und tcp_wrappers. Dieses werden automatisch bei der Anwahl von NFSD-CGI +mit ausgewählt und verbrauchen etwas Speicher. + +.. _Hinweise: + +Hinweise +-------- + +NFSD-CGI wählt automatisch die nfs-utils (ca. 120kb), sowie portmap (ca. +20kb)(\ *insgesamt* ca. 200kb). Braucht man zu einem späteren Zeitpunkt +NFS nicht mehr, genügt es nicht, im ``menuconfig`` NFSD-CGI abzuwählen - +auch die Pakete nfs-utils und portmap müssen wieder abgewählt werden und +ein anschließendes ``make config-clean-deps`` beseitigt die restlichen +überbleibsel. Für Kernel 2.6.13.1 werden außerdem die Module nfsd, lockd +und sunrpc benötigt. Bei 2.6.19.2 sind diese bereits fest im Kernel +eingebaut. + +.. _Exampleconfiguration: + +Example configuration +--------------------- + +get uid and gid: + +.. code:: bash + + id -u bittorrent + id -g bittorrent + +export: + +.. code:: bash + + /var/media/ftp/uData *(rw,all_squash,anonuid=100,anongid=1,insecure,sync,subtree_check) + +hosts.allow: + +.. code:: bash + + mountd,nfsd,portmap: 192.168.178.0/255.255.255.0 + +hosts.deny: + +.. code:: bash + + ALL: ALL + +Ubuntu client: + +.. code:: bash + + sudo mount -t nfs -o vers=3,rw,rsize=65536,wsize=65536 fritz.box:/var/media/ftp/uData /media/uData + +Line in /etc/fstab: + +.. code:: bash + + fritz.box:/var/media/ftp/uData /media/uData nfs vers=3,rw,rsize=65536,wsize=65536 + +Maximum block size: + +.. code:: bash + + cat /proc/fs/nfsd/max_block_size + +To change the block size, first stop *nfsd* and execute these commands: + +.. code:: bash + + mount -t nfsd nfsd /proc/fs/nfsd + echo 65536 > /proc/fs/nfsd/max_block_size + +.. _Fehlerquellen: + +Fehlerquellen +------------- + +- Falls die NFS-Freigabe nicht beschreibbar ist, dann kann das an den + verwendeten Optionen in der export liegen: + + .. code:: bash + + no_root_squash,anonuid=0,anongid=0 + +Diese Optionen bewirken, dass der root-User des Clients auch als root +auf dem Server schreiben darf. Und dass der Benutzer nobody die uid/gid +0 benutzt. + +.. _Links: + +Links +----- + +- `​Man page nsfd <http://linux.die.net/man/8/nfsd>`__ +- `​Man page exports <http://linux.die.net/man/5/exports>`__ + +- Tags +- `cgi </tags/cgi>`__ +- `filesystem </tags/filesystem>`__ +- `packages <../packages.html>`__ +- `überarbeiten </tags/%C3%BCberarbeiten>`__ diff --git a/wiki/packages/nhipt.en.rst b/wiki/packages/nhipt.en.rst new file mode 100644 index 0000000..f844e18 --- /dev/null +++ b/wiki/packages/nhipt.en.rst @@ -0,0 +1,286 @@ +.. _NHIPT-iptablesfirewallGUI: + +NHIPT - iptables firewall GUI +============================= + +.. _MOTIVATION: + +MOTIVATION +---------- + + iptables is a command-line interface for configuring the high - + sophisticated + `​netfilter <http://de.wikipedia.org/wiki/Netfilter/iptables>`__ + Linux kernel firewall. The nhipt web front-end exposes the whole + potential of iptables in a user-friendly UI of your FritzBox and + leverages this consumer device to the level of a professional + firewall, supporting both IPv4 & IPv6 Layer-3 protocols. The UI can + be either integrated in your firmware image or run stand-alone + externally from an attached device (e.g. USB-Stick). + +.. _PREREQUISITES:: + +PREREQUISITES: +-------------- + +- iptables have to be **installed and running**. + It is recommended to build at least the following kernel modules in + your firmware image (the more you choose, the more fun you'll have): + +.. + + +-------------------+----------------------+----------------+-----------------+ + | \* ip_tables | \* ip_conntrack | \* ipt_log | \* xt_state | + | \* x_tables | \* ip_conntrack_ftp | \* ipt_REJECT | \* xt_conntrack | + | \* iptable_filter | \* ip_conntrack_tftp | \* ipt_iprange | \* xt_multiport | + | | | | \* xt_tcpudp | + +-------------------+----------------------+----------------+-----------------+ + + **!!! Please don't forget to include the according shared libraries + too in your firmware image !!!** + +.. + + | The ideal build includes a replaced kernel with autoload kernel + modules enabled (**make kernel-menuconfig** → **L**\ oadable + modules support → **A**\ utomatic kernel module loading). + | Prior to first use you must start iptables either by : **iptables + -S** *(if you have a replaced kernel with automatic kernel modules + loading)* + | or (whithout autoload) by using **modprobe <modulname>** for each + module. + +.. _YOUHAVETHECHOICEOF3INSTALLOPTIONS:: + +YOU HAVE THE CHOICE OF 3 INSTALL OPTIONS: +----------------------------------------- + +nhipt.cgi.(version).tar.gz +~~~~~~~~~~~~~~~~~~~~~~~~~~ + + This is the naked GUI - you can run it directly from an USB stick, + without the integration in freetz. + +**Installation:** + +- copy the file **nhipt.cgi** to your stick (e.g. to: + /var/media/ftp/uStor01/**ipt/cgi-bin**) +- set execute permissions to the file. +- set up the httpd deamon for the UI on the folder above of the cgi-bin + (e.g. to\ **/ipt**) and use a free tcp port (e.g. 83). + +.. code:: bash + + chmod +x /var/media/ftp/uStor01/ipt/cgi-bin/nhipt.cgi + httpd -P /var/run/nhipt.pid -p 83 -h /var/media/ftp/uStor01/ipt + +.. + + Now you can access the UI via + `​http://fritz.box:83/cgi-bin/nhipt.cgi <http://fritz.box:83/cgi-bin/nhipt.cgi>`__ + +ipt.(version).tar.gz +~~~~~~~~~~~~~~~~~~~~ + + The external comfort package with freetz integration + +**Installation:** + +- unpack to **/var/media/ftp/uStor01/**. +- set execute permissions to **register.sh** +- run **register.sh** + +.. code:: bash + + chmod +x /var/media/ftp/uStor01/ipt/register.sh + . /var/media/ftp/uStor01/ipt/register.sh + +.. + + Now you should have a brand-new package in the freetz UI, where + you can configure all the installation options. + +.. _usemakemenuconfig: + +use *make menuconfig* +~~~~~~~~~~~~~~~~~~~~~ + + Install the UI permanent in your firmware using the recent trunk. + +**Installation:** + + | start with **make menuconfig**, go to **P**\ ackage Selection → + **W**\ eb Interface → select option **NHIPT Iptables CGI**. + | Now you get all iptables modules listed for your convenience. Make + your selections and create your firmware the usual way. + +.. _BEHINDTHESCENES:: + +BEHIND THE SCENES: +------------------ + +.. _Furtherinformation:: + +Further information: +~~~~~~~~~~~~~~~~~~~~ + +- `iptables Wiki for beginners <iptables.en.html>`__ +- `​Windows Ports & + Services <http://technet.microsoft.com/en-us/library/cc959833%28printer%29.aspx>`__ + +.. + + The interface reads interactively the current rule set of your + firewall and enables you to edit all rules, tables, chains, policies + etc. online and life! This means, after submitting your changes the + new rule immediately takes effect. The bad news are: You can + accidentally lock out yourself - the good news are: it does not + matter - the rule is not persistently saved - just reboot your box to + the last known good rule set. When you have finished playing around + with your rules and everything works as you like it you can click on + **[Persist rules]** to save your work permanently and + reboot-resistant either to the flash memory of the box or to the + attached USB device **[BOOT FROM FLASH / USB] + [SET BOOT + DIRECTORY]**. You can either use the guided UI to alter / add your + rules for each chain or you can enter your rules using the command + line expert interface on top. To add additional tables and modules + use the selection checkboxes or modprobe them by hand in the expert + UI. If you have ipv6 enabled and loaded, the UI also shows you the + filter tables for ipv6. + + For security reason you can limit the access to the UI to a dedicated + Admin-IP or Admin-IP-Range using: **[SET / CHANGE ADMIN IP]**. + +.. + + For the DECT boxes there is an option to set up an internal log + deamon to catch the deviated kernel messages and present them in the + UI. The log directory can be set up to any writeable destination. + + Error and system messages are shown in the bottom lines of the UI for + your information, status 0 means OK. + +.. _Bootprocess: + +Boot process +~~~~~~~~~~~~ + +- **debug.cfg** can be used to bootstrap the iptables rulset. +- **rc.nhipt load** is called by **rc.mod** / **run level 20** and + checks, if debug.cfg has startet the firewall, otherwise + */tmp/flash/nhiptboot.cfg* is called to initialize the firewall +- **debug.cfg** and **nhiptboot.cfg** use the same script settings and + + - wait - if configured for USB ready or time-out + - copy the settings file **nhipt.par** as configured from the source + (flash / USB) to the RAM disc + - copy the start script **nhipt.cfg** to the RAM disc + - run the start script **nhipt.cfg** detached in the background. + +- **nhipt.cfg**: + + - stop dsld if configured for security reason + - wait for delay timer (if configured to prevent mistakenly + lock-out) + - start dsld if configured + - start Web-Server for the UI + - start internal log-deamon if configured + - load all saved rules + +.. + + **Scenario 1:** stand-alone CGI - boots always from *debug.cfg*, + rules can be saved either to the flash or to the usb stick. + + **Scenario 2:** dynamic freetz - boots either from *debug.cfg* or + delayed from *freetz rc.custom* (rc.custom is used to re-integrate + the dynamic modules in freetz after reboot) + +.. + + **Scenario 3:** *Runlevel of Freetz* - integrated start-up, + optional *debug.cfg* can be used for early protection. + +.. _configfile: + +config file +~~~~~~~~~~~ + +| At run-time you'll find it here: */var/tmp/nhipt.par*, persistently + stored at BOOTDIR along with the *nhipt.cfg* + +.. code:: bash + + BACK=/var/media/ftp/uStor01/save + CHANGED=0 + DELAY=0 + LOGTARGET=internal + DSLDOFF=0 + ADMINIP= + LOGD=/var/media/ftp/uStor01/log + AIRBAG=0 + MYIP= + BOOTSTRAP=freetz + PORT=83 + BOOT=flash + BOOTDIR=/tmp/flash + ROOT=/usr/ipt + +.. _filescontainedinthefreetzpackage: + +files contained in the freetz package +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. code:: bash + + /etc/default.nhipt/nhipt.cfg rwxrwxrwx # config for freetz UI + /etc/init.d/rc.nhipt r-xr-xr-x # call-back for freetz UI, boot loader + /usr/ipt/index.html r--r--r-- # frameset for UI + /usr/ipt/cgi-bin/nhipt.cgi r-xr-xr-x # the CGI for iptables + /lib/cgi-bin/nhipt.cgi r-xr-xr-x # the CGI for freetz settings + +.. _RECOMMENDATIONS:: + +RECOMMENDATIONS: +---------------- + +Unexperianced users should read this carefully to prevent permanent +lock-outs. + +Firewalls protect systems from intruders based on rules and policies. +They are obeyed by the system - the system cannot guess who is good and +who's bad. Eventually even experienced firewall admin's can lock +themselves out. It is good to know, how to recover from this in advance. + + The following hints can make your life easier: + +- you can look at all scripts - but don't change them manually, if you + are not certain what they do exactly. +- save rule sets permanently only if everything works as it should - + test at least your admin access to the box. Use the BackUp Option so + you can start over from a known-good set-up. +- Use in the beginning the usb stick as boot target. If you lock-out + yourself - just pull out the stick and reboot. No iptables will be + loaded! +- For Newbees there is a **[safe]** Mode. The firewall automatically + takes care, that under all circumstances the Admin-IP will not be + locked-out from the box (IPv4 only). +- switching back to **[advanced]** lets you remove this safety rules + later. +- use the **[Boot-Delay]** option - this gives you some time to login + and kill your naughty rule-set. +- if you enter a wrong Admin-IP and lock yourself out from the UI - no + problem. Use freetz UI to fix or edit **/var/tmp/nhipt.par** - Delete + the ADMINIP= Entry. +- if you ignore all this hints and finally lock yourself - the last + chance is to flash a brand new image without iptables and delete the + rules manually. + +.. _DOWNLOAD: + +DOWNLOAD +-------- + + The latest version can be downloaded here: `​IPPF + Forum <http://www.ip-phone-forum.de/showpost.php?p=1420252&postcount=1>`__, + there are also tons of information to read in the forum. diff --git a/wiki/packages/nhipt.rst b/wiki/packages/nhipt.rst new file mode 100644 index 0000000..943e6ff --- /dev/null +++ b/wiki/packages/nhipt.rst @@ -0,0 +1,414 @@ +.. _NHIPT-iptablesfirewallGUI: + +NHIPT - iptables firewall GUI +============================= + +.. figure:: /screenshots/178.jpg + :alt: nhipt Seite im Freetz Webinterface + + nhipt Seite im Freetz Webinterface + +.. _MOTIVATION: + +MOTIVATION +---------- + + iptables ist ein Kommandozeilen User Interface zur Konfiguration / + Verwaltung der im jeweiligen Linux Kernel eingebauten sehr mächtigen + `​netfilter <http://de.wikipedia.org/wiki/Netfilter/iptables>`__ - + Firewall Funktionen. Mit dem nhipt - Web Interface kann man das + gesamte Spektrum von iptables über eine benutzerfreundliche + Oberfläche an der Fritz-Box nutzen. Das cgi kann als Paket sowohl in + die Firmware integriert, als auch stand-alone als externes Paket + genutzt werden. + +.. _VORAUSSETZUNGEN:: + +VORAUSSETZUNGEN: +---------------- + +- nhipt wurde für die 7270 erstellt und läuft auf alle 72xx Boxen mit + dem neuen Kernel problemlos, 71xx / 70xx Boxen mit dem alten Kernel + können mit Einschränkungen ebenfalls genutzt werden +- Einschränkungen bei Verwendung von Boxen mit älterem Kernel + (71xx/70xx): + + - Systemwarnungen beim Versuch (nichtexistierender) Kernelmodule zu + laden + - Conntrack Regeln können Probleme bereiten + +- nhipt läuft auch auf der 7390 sehr gut, Voraussetzung ist allerdings + das Einspielen des unten angehängten Patches, sonst sieht man nur + einen weißen Bildschirm. +- iptables müssen **vorhanden sein und laufen**. + Mindestens folgende Module sollten im Freetz-Image sein (wer Platz + hat, lieber alle, dann kann das Interface sein Potential voll + entfalten): + +.. + + +-------------------+----------------------+----------------+-----------------+ + | \* ip_tables | \* ip_conntrack | \* ipt_log | \* xt_state | + | \* x_tables | \* ip_conntrack_ftp | \* ipt_REJECT | \* xt_conntrack | + | \* iptable_filter | \* ip_conntrack_tftp | \* ipt_iprange | \* xt_multiport | + | | | | \* xt_tcpudp | + +-------------------+----------------------+----------------+-----------------+ + + **!!! Bitte nicht vergessen, auch die zugehörigen shared libraries + in die Firmware zu integrieren !!!** + +.. + + Ideal ist ein Build mit Replaced Kernel und eingeschalteter + Autoload modules Funktion des Kernels: + + .. code:: bash + + user@Linux: make kernel-menuconfig + (L)oadable modules support + (A)utomatic kernel module loading + + | Vor dem ersten Start **iptables -S** eingeben, um iptables zu + laden *(bei Built mit replaced kernel und automatic kernel + module loading)* + | Alternativ (ohne autoload Option) mit **modprobe <modulname>** + die oben genannten iptables Module einzeln laden. + +.. _ESSTEHEN3PAKETEZURAUSWAHL:: + +ES STEHEN 3 PAKETE ZUR AUSWAHL: +------------------------------- + +nhipt.cgi.(version).tar.gz +~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Das ist das reine GUI, es läuft direkt vom Stick ohne Integration in + freetz. + +**Installation:** + +- Datei **nhipt.cgi** z.B. im Verzeichnis (z.B.: + /var/media/ftp/uStor01/**ipt/cgi-bin** auf dem stick auspacken +- execute Rechte darauf setzen. +- einen httpd-Dienst auf das übergeordnete Verzeichnis **/ipt** und + einem freien port (z.B. 83) einrichten. + +.. code:: bash + + chmod +x /var/media/ftp/uStor01/ipt/cgi-bin/nhipt.cgi + httpd -P /var/run/nhipt.pid -p 83 -h /var/media/ftp/uStor01/ipt + +.. + + Aufgerufen wird das Interface mit + `​http://fritz.box:83/cgi-bin/nhipt.cgi <http://fritz.box:83/cgi-bin/nhipt.cgi>`__ + +ipt.(version).tar.gz +~~~~~~~~~~~~~~~~~~~~ + + Das ist das Advanced-Comfort Paket mit dynamischer Freetz + Integration. + +**Installation:** + +- auf **/var/media/ftp/uStor01/** entpacken. +- Datei **register.sh** mit execute rechten versehen +- Das Script **register.sh** ausführen + +.. code:: bash + + chmod +x /var/media/ftp/uStor01/ipt/register.sh + . /var/media/ftp/uStor01/ipt/register.sh + +.. + + Im Freetz ist nun ein neues Paket zu sehen. Dort kann man den Rest + konfigurieren und das Interface starten. + +.. _Übermakemenuconfig: + +Über *make menuconfig* +~~~~~~~~~~~~~~~~~~~~~~ + + | Das GUI wird in den ROM der FritzBox über den Firmware build + integriert, (z.Zt. nur im aktuellen trunk oder als patch) + +**Installation:** + + | *Bei Verwendung des Patches* nhipt.patch(ver).tar.gz + + | in den freetz ordner wechseln, patch hineinkopieren und + anwenden: *patch -p0 < nhipt.patch* + | in den Ordner *make/nhipt/files/root/…* wechseln und die execute + Rechte auf alle Dateien setzen (Siehe DATEIEN IM FREETZ PAKET + weiter unten) + +.. + + | **make menuconfig** aufrufen, im Bereich **P** ackage Selection —→ + **W** eb Interface —→ die Option **NHIPT Iptables CGI** anwählen. + | Nun werden alle iptables Module als Untermenu sichtbar und können + zusammengestellt werden. Danach die übliche Vorgehensweise zum + Firmware Bauen…. + +.. _ARBEITSWEISE:: + +ARBEITSWEISE: +------------- + +.. _TippsLiteratur:: + +Tipps & Literatur: +~~~~~~~~~~~~~~~~~~ + +- `Wiki zu iptables für Einsteiger <iptables.html>`__ +- `​Von Windows verwendete Ports & + Services <http://technet.microsoft.com/en-us/library/cc959833%28printer%29.aspx>`__ + +.. + + Es werden alle aktiven Regeln aufgelistet und können wie üblich + sofort bearbeitet werden. Reboot-Fest werden die Regeln durch die + Speicherfunktion **[Persist rules]** . Das erzeugte Start-Script + kann entweder im Flash der Box oder extern abgelegt werden **[BOOT + FROM FLASH / USB] + [SET BOOT DIRECTORY]** . Beim Start wird es + von der debug.cfg automatisch zum Leben erweckt. Die Regeln können + sowohl per Masken-Auswahl (die passenden Module werden für die + meisten Regeln an Hand der Parameter automatisch ermittelt), als + auch im Expert Mode (Kommandozeile mit iptables syntax) eingegeben + werden, sie wirken stets sofort. + + Alle Tabellen, sowie die wichtigsten Erweiterungen von + **conntrack** und **nat** kann man im User Interface anwählen, sie + werden automatisch geladen oder beim Abwählen - wenn möglich - + entladen, das Interface unterstützt sowohl IPv4 als auch IPv6 + Regelwerke (bei eingeschaltetem ipv6 auf der Box). + +.. + + Wenn man eine Admin Adresse oder Subnetz im Feld **[CHANGE ADMIN + IP]** einträgt, kann man die Konfiguration nur noch von dieser IP + aus ausführen, die Sperre bleibt auch über eine Reboot hinaus + wirksam. + + Zusätzlich besitzt das CGI eine eigene Log-Funktion für die DECT + Boxen. Das cgi übernimmt auf Wunsch hierfür alle nötigen + Einstellungen, das Log-Verzeichnis ist frei wählbar. + +.. + + Die Fehlermeldungen, Systemmeldungen etc. von iptables und dem UI + werden in die Status - Zeilen unterhalb des Regelwerkes + ausgegeben, Status 0 ist immer OK. + +.. _Bootprozess: + +Bootprozess +~~~~~~~~~~~ + +- **debug.cfg** kann die Einstellungen in die RAM-Disk kopieren und die + Initialisierung starten. +- **rc.nhipt load** wird von **rc.mod** / **run level 20** aufgerufen + und prüft, ob die Settings bereits in der RAM Disk sind (durch + vorherigen boot mit **debug.cfg**). Sind sie es nicht, wird + */tmp/flash/nhiptboot.cfg* aufgerufen (die an Stelle der *debug.cfg* + die Initialisierung übernimmt) +- **debug.cfg** und **nhiptboot.cfg** sind inhaltlich identisch + aufgebaut + + - sie warten bei Bedarf auf USB Stick + - kopieren von bekannter Stelle (flash / USB) die Settings + **nhipt.par** in die RAM Disk + - kopieren Start Script **nhipt.cfg** in die RAM Disk + - starten Firewall Start Script **nhipt.cfg** und schicken es in den + Hintergrund. + +- **nhipt.cfg**: + + - dsld (wenn eingestellt) stoppen + - Verzögeriungstimer (wenn eingestellt) abwarten + - dsld (wenn eingestellt) starten + - Web-Server für UI starten, + - Interner Log Service (wenn eingestellt) starten, + - Firewall Rules laden + +.. + + **Szenario 1:** Standalone CGI - bootet immer von *debug.cfg* , + Regeln im flash / stick + + **Szenario 2:** dynamisches freetz - bootet entweder von der + *debug.cfg* oder verspätet über *freetz rc.custom* beim + Integrieren der cgi in freetz (install script für freetz + Integration trägt sich in die rc.custom automatisch ein für reboot + Fähigkeit) + +.. + + **Szenario 3:** Integration in die *Runlevel von Freetz* , + optional weiterhin über *debug.cfg* . + +.. _Konfigurationsdatei: + +Konfigurationsdatei +~~~~~~~~~~~~~~~~~~~ + +| Die Konfigurationsdatei ist zur Laufzeit unter */var/tmp/nhipt.par* zu + finden, reboot-fest wird sie in BOOTDIR zusammen mit der *nhipt.cfg* + abgelegt + +.. code:: bash + + BACK=/var/media/ftp/uStor01/save + CHANGED=0 + DELAY=0 + LOGTARGET=internal + DSLDOFF=0 + ADMINIP= + LOGD=/var/media/ftp/uStor01/log + AIRBAG=0 + MYIP= + BOOTSTRAP=freetz + PORT=83 + BOOT=flash + BOOTDIR=/tmp/flash + ROOT=/usr/ipt + +.. _DateienimfreetzPaket: + +Dateien im freetz Paket +~~~~~~~~~~~~~~~~~~~~~~~ + +.. code:: bash + + /etc/default.nhipt/nhipt.cfg rwxrwxrwx # config für freetz maske + /etc/init.d/rc.nhipt r-xr-xr-x # call-back für freetz maske, boot loader + /usr/ipt/index.html r--r--r-- # frameset für UI + /usr/ipt/cgi-bin/nhipt.cgi r-xr-xr-x # das CGI für iptables + /lib/cgi-bin/nhipt.cgi r-xr-xr-x # das CGI für freetz Einstellungen + +.. _GUTGEMEINTERATSCHLÄGE:: + +GUT GEMEINTE RATSCHLÄGE: +------------------------ + + Noch eins zum Thema Aussperren, für alle, die noch nie eine Firewall + installiert haben. + +.. + + Firewalls schützen Systeme vor unbefugtem Zugriff auf der Basis von + Regeln, diese werden stur und kosequent ausgeführt. Das kann dazu + führen, dass jemand, der sich vorher nicht ausreichend Gedanken über + seine Regeln gemacht hat, sich vom System selbst aussperrt. Das + passiert Laien oft, und auch Profis sind nicht immer davor sicher. + + Damit die Konsequenzen nicht zu drastisch sind, hier ein paar + Empfehlungen / Regeln für den Anfänger: + +- Schauen ist OK, manuelles Ändern an Scripten ist tabu , wenn man + nicht vorzeitig graue Haare bekommen will. +- Regelwerke erst dauerhaft speichern **[Persist rules]**, wenn alles + funktioniert, wie es soll. Ein Reboot lädt das letzte gespeicherte + Regelwerk, und alles ist wieder OK, ältere Versionen werden als + Backup mit Zeitstempel im **[SET BACKUP DIRECTORY]** Verzeichnis + abgelegt. +- Am Anfang lieber den Stick zum Speichern verwenden. Im Notfall kann + man den vor dem Booten abziehen und die Box startet ohne iptables + Firewall. +- Das UI hat eine Anfänger **[safe]** und eine Profi-Betriebsart + **[advanced]**, Umschaltbar über **[Admin Level]**. Im Safe - Modus + wehrt sich die Firewall sehr erfolgreich gegen alle Aussperrversuche + des Administrators. Er bewirkt, dass in allen für den Adminzugang + wichtigen Chains eine ACCEPT Regel für diese spezielle IP Adresse + eingetragen wird. Nach Umschalten in **[advanced]** kann man wie + gewohnt alle Regeln editieren oder Löschen. +- Ein **[Boot-Delay]** , (wählbar von **[Aus]** bis **[10 Min]**) kann + auch gegen Aussperren eingestellt werden. Während dieser Zeit ist + nach einem Kaltstart der Box ungehinderter Zugriff möglich. Zur + Sicherheit kann der Internetzugang während dieser Zeit automatisch + verhindert werden **[stop dsld on delay]** +- Ausgesperrt aus der Admin Oberfläche durch Eingabe einer falschen IP + Adresse: Datei: **/var/tmp/nhipt.par** enthällt die falsche Eingabe. + Zeile ADMINIP=… löschen und GUI neu aufrufen. *Tipp: Man kann auch + ein Subnetz für die AdminIP eintragen - z.B. 192.168.0.10/30 - das + erlaubt den Zugriff von den Adressen + 192.168.0.8..192.168.0.11*\ `​Online IP + Rechner <http://www.csgnetwork.com/ipinfocalc.html>`__. +- Wenn man das alles ignoriert und wider besseren Wissens sich trotzdem + aussperrt, hilft nur noch ein erneutes Flashen der Firmware. + +.. _DOWNLOAD: + +DOWNLOAD +-------- + + Die aktuelle Version, sowie Anmerkungen, Tipps & Tricks und + weiterführende Links finden sich hier: `​IPPF + Forum <http://www.ip-phone-forum.de/showpost.php?p=1420252&postcount=1>`__ + +.. _BEKANNTEPROBLEME: + +BEKANNTE PROBLEME +----------------- + + *Bei der 7390 wird nur eine leere Seite angezeigt, Regeln lassen sich + nicht anzeigen / hinzufügen.* + +.. + + Der angefügte Patch beseitigt dieses Problem und ähnliche bei anderen + Boxen. Außerdem erweitert der Patch die Möglichkeiten des UI, auch + Log Informationen zur Firewall und zum System aus dem Syslog der Box + auszugeben, wenn in einer Datei gelogt wird (ausgewertet werden die + letzten 50 Einträge aus bis zu 4 Logfiles *filename* , *filename* .0, + *filename* .1, *filename* .2, der Pfad und Dateiname werden + automatisch anhand der Parameter des laufenden syslogd Prozesses + ermittelt). + +.. _SCREENSHOTS: + +SCREENSHOTS +----------- + +.. figure:: /screenshots/179.jpg + :alt: nhipt Webinterface + + nhipt Webinterface + +- Tags +- `cgi </tags/cgi>`__ +- `firewall </tags/firewall>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `routing </tags/routing>`__ +- `security </tags/security>`__ + +Anhänge (5) +~~~~~~~~~~~ + +- `nhipt.cgi(0.8.2).tar.gz </attachment/wiki/packages/nhipt/nhipt.cgi(0.8.2).tar.gz>`__\ `​ </raw-attachment/wiki/packages/nhipt/nhipt.cgi(0.8.2).tar.gz>`__ + (13.7 KB) - hinzugefügt von *cando* `vor 8 + Jahren </timeline?from=2009-11-19T10%3A27%3A09Z&precision=second>`__. + “Stand-Alone Web GUI” +- `ipt(0.8.2).tar.gz </attachment/wiki/packages/nhipt/ipt(0.8.2).tar.gz>`__\ `​ </raw-attachment/wiki/packages/nhipt/ipt(0.8.2).tar.gz>`__ + (17.1 KB) - hinzugefügt von *cando* `vor 8 + Jahren </timeline?from=2009-11-19T10%3A28%3A16Z&precision=second>`__. + “Dynamic freetz integration Package (for external USB device)” +- `Iptables_Tutorial_1.2.pdf </attachment/wiki/packages/nhipt/Iptables_Tutorial_1.2.pdf>`__\ `​ </raw-attachment/wiki/packages/nhipt/Iptables_Tutorial_1.2.pdf>`__ + (1.9 MB) - hinzugefügt von *cando* `vor 8 + Jahren </timeline?from=2009-11-19T10%3A34%3A57Z&precision=second>`__. + “extended iptables tutorial v1.2.2 Copyright © 2001-2006 Oskar + Andreasson” +- `nhipt.patch(0.8.2).tar.gz </attachment/wiki/packages/nhipt/nhipt.patch(0.8.2).tar.gz>`__\ `​ </raw-attachment/wiki/packages/nhipt/nhipt.patch(0.8.2).tar.gz>`__ + (27.1 KB) - hinzugefügt von *cando* `vor 8 + Jahren </timeline?from=2009-11-19T11%3A48%3A04Z&precision=second>`__. + “Patch zur manuellen Integration in die Firmware (ROM)” +- `nhipt.patch.tar.gz </attachment/wiki/packages/nhipt/nhipt.patch.tar.gz>`__\ `​ </raw-attachment/wiki/packages/nhipt/nhipt.patch.tar.gz>`__ + (3.4 KB) - hinzugefügt von *cando* `vor 8 + Jahren </timeline?from=2010-08-19T09%3A52%3A31Z&precision=second>`__. + “Patch nhipt für andere Boxen (7390, 71xx), funktioniert auch mit der + 7270” + +Alle Anhänge herunterladen als: +`.zip </zip-attachment/wiki/packages/nhipt/>`__ diff --git a/wiki/packages/nmap.rst b/wiki/packages/nmap.rst new file mode 100644 index 0000000..4d497bb --- /dev/null +++ b/wiki/packages/nmap.rst @@ -0,0 +1,99 @@ +.. _Nmap: + +Nmap +==== + +"*Nmap ("Network Mapper") is a free and open source (license) utility +for network exploration or security auditing. Many systems and network +administrators also find it useful for tasks such as network inventory, +managing service upgrade schedules, and monitoring host or service +uptime. Nmap uses raw IP packets in novel ways to determine what hosts +are available on the network, what services (application name and +version) those hosts are offering, what operating systems (and OS +versions) they are running, what type of packet filters/firewalls are in +use, and dozens of other characteristics. It was designed to rapidly +scan large networks, but works fine against single hosts.*" + +.. _Example: + +Example +------- + +.. code:: bash + + root@fritz:/var/media/ftp/uData# nmap localhost + + Starting Nmap 4.68 ( http://nmap.org ) at 2011-04-20 09:06 CEST + Interesting ports on localhost (127.0.0.1): + Not shown: 1699 closed ports + PORT STATE SERVICE + 21/tcp open ftp + 22/tcp open ssh + 23/tcp open telnet + 53/tcp open domain + 80/tcp open http + 81/tcp open hosts2-ns + 111/tcp open rpcbind + 443/tcp open https + 1011/tcp open unknown + 1012/tcp open unknown + 2007/tcp open dectalk + 2047/tcp open dls + 5060/tcp open sip + 8080/tcp open http-proxy + 8123/tcp open polipo + 8888/tcp open sun-answerbook + + Nmap done: 1 IP address (1 host up) scanned in 4.598 seconds + +.. _Knownopenports: + +Known open ports +---------------- + ++-----------------+-----------------+-----------------+-----------------+ +| **Port** | **Function** | **Program/proce | **Anmerkung** | +| | | ss** | | ++-----------------+-----------------+-----------------+-----------------+ +| 81 | Freetz! | inetd | | ++-----------------+-----------------+-----------------+-----------------+ +| 82 | AVM's Webfilter | contfiltd | bei Firmware | +| | | | 7270 05.05 auf | +| | | | Port 81 | ++-----------------+-----------------+-----------------+-----------------+ +| 111 | portmapper | portmap | | +| | (nfs) | | | ++-----------------+-----------------+-----------------+-----------------+ +| 1011 | AVM's | telefon | | +| | telefon-daemon | | | ++-----------------+-----------------+-----------------+-----------------+ +| 1012 | AVM's | telefon | | +| | telefon-daemon | | | ++-----------------+-----------------+-----------------+-----------------+ +| 2007 | ??? | telefon | | ++-----------------+-----------------+-----------------+-----------------+ +| 2047 | nfs v3 | nfsd | | ++-----------------+-----------------+-----------------+-----------------+ +| 8080 | AVM's | ctlmgr.bin | | +| | Kindersicherung | | | ++-----------------+-----------------+-----------------+-----------------+ +| 8888 | AVM's | telefon | | +| | telefon-daemon | | | ++-----------------+-----------------+-----------------+-----------------+ + +Useful command: + +.. code:: bash + + netstat -anp + +.. _Links: + +Links +----- + +- `​home page <http://nmap.org/>`__ +- `​IPPF: Port + 8080 <http://www.ip-phone-forum.de/showthread.php?t=188842>`__ +- `​IPPF: Offene + (Freetz-)Ports <http://www.ip-phone-forum.de/showthread.php?t=213465>`__ diff --git a/wiki/packages/ntfs-3g.rst b/wiki/packages/ntfs-3g.rst new file mode 100644 index 0000000..d045599 --- /dev/null +++ b/wiki/packages/ntfs-3g.rst @@ -0,0 +1,35 @@ +.. _NTFS-3G: + +NTFS-3G +======= + +`​NTFS-3G <http://www.ntfs-3g.com/>`__ ist ein Treiber für das +`​NTFS-Dateisystem <http://de.wikipedia.org/wiki/Dateisystem>`__ unter +Linux, Solaris, FreeBSD, Mac OS X und NetBSD mit umfassender +Schreibunterstützung. + +Im Gegensatz zum Kernel-NTFS Treiber unterstützt *NTFS-3G* die meisten +Dateisystem-Operationen: Dateien jeder Größe können auf NTFS +Dateisystemen erstellt, modifiziert, umbenannt, verschoben oder gelöscht +werden (ausgenommen komprimierte und verschlüsselte Dateien). Es ist +auch experimentelle Unterstützung zur Modifikation von +`​ACLs <http://de.wikipedia.org/wiki/Access_Control_List>`__ und +`​Dateisystem-Berechtigungen <http://de.wikipedia.org/wiki/Dateiberechtigung>`__ +vorhanden. + +*NTFS-3G* basiert auf dem `FUSE <fuse.html>`__ Paket. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​NTFS-3G Homepage <http://www.ntfs-3g.com/>`__ +- `​Wikipedia Artikel <http://en.wikipedia.org/wiki/NTFS3G>`__ + (englisch) +- `​Comparing JFS, XFS, NTFS-3G and ZFS-FUSE + performance <http://www.csamuel.org/2007/04/25/comparing-ntfs-3g-to-zfs-fuse-for-fuse-performance/>`__ + +- Tags +- `filesystem </tags/filesystem>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/obexftp.rst b/wiki/packages/obexftp.rst new file mode 100644 index 0000000..f737f47 --- /dev/null +++ b/wiki/packages/obexftp.rst @@ -0,0 +1,31 @@ +.. _ObexFTP: + +ObexFTP +======= + +**ObexFTP** ist ein Protokoll zum Austausch von Dateien mit Obex-fähigen +Geräten, wobei es sich bei letzteren meist um Mobiltelefone handelt. +Dieses Paket hängt von weiteren Paketen und Libraries ab, u.a. von +`Bluez-Utils <bluez-utils.html>`__ sowie *libopenobex*. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​OpenObex Projekt <http://dev.zuckschwerdt.org/openobex/>`__ +- `​ObexFTP + FAQ <http://dev.zuckschwerdt.org/openobex/wiki/ObexFtpFaq>`__ +- `​Wikipedia: Obex <http://de.wikipedia.org/wiki/OBEX>`__ (Deutsch - + kurz) +- `​Wikipedia: Obex <http://de.wikipedia.org/wiki/OBEX>`__ (Englisch - + ausführlich) + +-------------- + +- Tags +- `bluetooth </tags/bluetooth>`__ +- `bluez </tags/bluez>`__ +- `filetransfer </tags/filetransfer>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/onlinechanged.rst b/wiki/packages/onlinechanged.rst new file mode 100644 index 0000000..0dacac0 --- /dev/null +++ b/wiki/packages/onlinechanged.rst @@ -0,0 +1,16 @@ +.. _Onlinechanged: + +Onlinechanged +============= + +You can send yourself an e-mail when your box comes online like this: + +.. code:: bash + + online) + mailer -s "Freetz online" -t <your e-mail address> + ;; + +For this to work, you should configure the `​AVM Push +service <http://fritz.box/system/push.lua>`__, but it is not necessary +to enable it. diff --git a/wiki/packages/onlinechanged_cgi.rst b/wiki/packages/onlinechanged_cgi.rst new file mode 100644 index 0000000..aa397b2 --- /dev/null +++ b/wiki/packages/onlinechanged_cgi.rst @@ -0,0 +1,35 @@ +.. _Onlinechanged-CGI: + +Onlinechanged-CGI +================= + +AVM-Firmwares beinhalten einen Mechanismus, welcher dafür sorgt, daß + +- beim Start der Box (Parameter $1 hat den Wert "start"), +- bei der Trennung der Internet-Verbindung (Parameter $1 hat den Wert + "offline") und auch +- beim Neuaufbau der Internet-Verbindung (Parameter $1 hat den Wert + "online") + +jeweils das Skript */bin/onlinechanged* aufgerufen wird, welches +wiederum weitere Skripten unterhalb der Verzeichnisse +*/etc/onlinechanged* und */var/tmp/onlinechanged*, sofern vorhanden, +aufruft. Diese Skripten (re-)initialisieren diverse Dienste, wie z.B. +WebDAV (Online-Speicher). + +Auch diverse Freetz-Pakete benötigen die Möglichkeit, beim Wechsel des +Verbindungsstatus gewisse Aktionen durchzuführen, z.B. DynDNS-Hostnamen +mit neuer IP-Adresse zu registrieren, VPN-Verbindungen neu aufzubauen +etc. Das Paket Onlinechanged-CGI ermöglicht es dem Benutzer darüber +hinaus, eigene Aktionen anzustoßen, bspw. eine E-Mail mit der aktuellen +IP an den Benutzer zu senden. + +**Hinweis:** AVM Onlinechanged funktioniert nur auf Geräten, die so +konfiguriert sind, daß sie die Internet-Verbindung selbst herstellen +(also i.d.R. via DSL oder via PPPoE), nicht auf Boxen hinter einem NAT +(z.B. bei "Internetverbindung mitbenutzen"). Falls auf solchen Geräten +auch Onlinechanged ausgeführt werden soll, geht das über den `Patch +"replace onlinechanged" <../patches/replace_onlinechanged.html>`__, der +auch zur Anwendung kommt in Problemfällen bei Geräten, wo AVM +Onlinechanged nicht zuverlässig funktioniert (siehe entsprechendes +`​IPPF-Thema <http://www.ip-phone-forum.de/showthread.php?t=231873>`__). diff --git a/wiki/packages/opendd.rst b/wiki/packages/opendd.rst new file mode 100644 index 0000000..9c45bff --- /dev/null +++ b/wiki/packages/opendd.rst @@ -0,0 +1,116 @@ +.. _OpenDD: + +OpenDD +====== + +.. figure:: /screenshots/177.jpg + :alt: Konfigurationsseite OpenDD + + Konfigurationsseite OpenDD + +OpenDD ist ein Client um dynamische DNS Einträge zu aktualisieren. +Vorteil gegenüber `inadyn <inadyn-mt.html>`__ ist, dass sich OpenDD +nicht ständig im Arbeitsspeicher befindet sondern nur nach einem +Reconnect gestartet wird. Es kann eine eMail bei IP-Wechsel versendet +werden. Ausgaben werden über Syslog ausgegeben + +.. _nach25TagenUpdaten: + +nach 25 Tagen Updaten +--------------------- + +| Diese Option sollte man wählen, wenn sich die IP längere Zeit nicht + ändert, wie es bei Kabelinternet Anbietern üblich ist. Dadurch wird + vermieden, dass nach 1 Monat der Hostname deaktiviert wird. Sollte die + Box länger nicht neu gestartet werden bitte noch "cron" einschalten, + damit die Überprüfung erfolgt. Der Eintrag für cron wird von OpenDD + automatisch erstellt. +| Nach solch einem erzwungenen Update wird die Datei + ``/tmp/flash/opendd/opendd.onforcedupdate`` ausgeführt. Damit kann zB + ein Skript zum Einloggen auf der DynDns-Webseite ausgeführt werden, um + eine Sperre des Domainnamens zu verhindern. Dies Skript muss aber + zusätzlich von `onlinechanged <onlinechanged.html>`__ ausgeführt + werden! Beispielskripte: + `​http://forum.mbremer.de/viewtopic.php?f=62&t=1756&p=24340#p24340 <http://forum.mbremer.de/viewtopic.php?f=62&t=1756&p=24340#p24340>`__ + +.. _get_ipParameter: + +get_ip Parameter +---------------- + +Hiermit wird konfiguriert wie die externe IP ermittelt wird. Ab +Trunk-Version `r7376 </changeset/7376>`__ wird get_ip an `zentraler +Stelle <mod.html#get_ip>`__ konfiguriert, wodurch diese Option bei +opendd entfällt. + +.. _Account: + +Account +------- + +Hier werden die Daten des DNS-Kontos eingetragen: + ++-----------------------------------+-----------------------------------+ +| Server | Angabe des genutzten | +| | DNS-Providers (z.B. Dyndns: | +| | members.dyndns.org) | ++-----------------------------------+-----------------------------------+ +| Hostname | Der DNS-Name, für den man sich | +| | registriert hat (z.B. | +| | Musterman.heimnetz.org) | ++-----------------------------------+-----------------------------------+ +| Benutzername | Der Benutzername des Accounts | ++-----------------------------------+-----------------------------------+ +| Passwort | Das Passwort des Accounts | ++-----------------------------------+-----------------------------------+ +| SSL nutzen | Wenn der Account verschlüsselt | +| | aktualisiert werden soll (Port | +| | 443) | ++-----------------------------------+-----------------------------------+ + +| Das SSL-Zertifikat findet sich in der Buildumgebung unter: +| ``.../freetz-trunk/packages/target-mipsel_uClibc-0.9.29/opendd-0.7.9/root/etc/default.opendd/opendd.pem`` + +.. _E-Mail: + +E-Mail +------ + +In diesem Abschnitt kann eine E-Mail-Benachrichtigung eingerichtet +werden: + ++-----------------------------------+-----------------------------------+ +| eMail verschicken | Mit dieser Option wird das | +| | Versenden des Statusreports | +| | aktiviert/ deaktiviert | ++-----------------------------------+-----------------------------------+ +| Absender | E-Mail-Adresse, mit welcher der | +| | Report versendet werden soll | +| | (z.B. Musterman@internet.de) | ++-----------------------------------+-----------------------------------+ +| Empfänger | E-Mail-Adresse, an die der Report | +| | gesendet werden soll (kann die | +| | gleiche wie Absender sein) | ++-----------------------------------+-----------------------------------+ +| E-Mail-Server | Postausgangs-Server des | +| | Absender-Accounts (z.B. für | +| | Freenet: mx.freenet.de) | ++-----------------------------------+-----------------------------------+ +| Benutzername | Benutzername des | +| | Absender-Accounts | ++-----------------------------------+-----------------------------------+ +| Passwort | Passwort des Absender-Accounts | ++-----------------------------------+-----------------------------------+ +| Timeout | Wie lange auf eine Antwort des | +| | E-Mail Servers gewartet wird (nur | +| | Freetz, `#2132 </ticket/2132>`__) | ++-----------------------------------+-----------------------------------+ +| max. Versuche | Maximale Anzahl an Versuchen den | +| | E-Mail Server zu erreichen (nur | +| | Freetz, `#2132 </ticket/2132>`__) | ++-----------------------------------+-----------------------------------+ + +- Tags +- `dyndns </tags/dyndns>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/openntpd.rst b/wiki/packages/openntpd.rst new file mode 100644 index 0000000..8f5240b --- /dev/null +++ b/wiki/packages/openntpd.rst @@ -0,0 +1,96 @@ +.. _OpenNTPD: + +OpenNTPD +======== + +*"OpenNTPD ist eine FREIE und einfach zu benutzende Implementierung des +Network Time Protocol. OpenNTPD kann die lokale Uhr mit NTP-Servern +abgleichen und selbst als NTP-Server fungieren, also die lokale Uhrzeit +anderen Systemen zur Verfügung stellen."* +`​http://www.openntpd.org/de/ <http://www.openntpd.org/de/>`__ + +Mit **OpenNTPD** lässt sich die Zeit per Internet synchronisieren. +Natürlich kann man das von jedem PC aus auch, und die Fritzbox (multid +daemon) selbst holt sich die Zeit ja auch aus dem Netz - wozu also +dieses Paket? + +Das OpenNTPD Paket stellt nicht nur einen Client, sondern auch einen +Server zur Verfügung. Somit kann sich die FritzBox die Zeit aus dem +Internet "downloaden" - und stellt sie dann im lokalen Netz bereit. + +.. _Vorteile:: + +Vorteile: +--------- + +- Nur die FritzBox muss die Zeit "Remote" abgleichen +- Da die FritzBox sicher rund um die Uhr läuft, kann dies jederzeit + passieren - und dennoch steht die aktuelle Zeit zur Verfügung, sollte + das Internet mal "kaputt" sein (Probleme beim Provider o.ä.). +- Alle Rechner im lokalen Netz synchronisieren mit der FritzBox, und + haben somit identische Zeitstempel - sehr von Vorteil, wenn man z.B. + Logfiles abgleichen will. +- Auch Rechner, die nicht ins Internet dürfen, haben die Chance auf + einen Zeitabgleich. + +.. _Ubuntuclientsetup: + +Ubuntu client setup +------------------- + +- Install: *sudo apt-get install ntp* +- Configure: *add server fritz.box* as first server to */etc/ntp.conf* +- Apply configuration: *sudo service ntp restart* +- Check if it works: *sudo ntpq -np* +- More info: `​here <https://help.ubuntu.com/community/UbuntuTime>`__ + +.. _MultidNTPclientdeaktivieren: + +Multid NTP client deaktivieren +------------------------------ + +Durch diese Option wird AVM's multid durch einen zusätzlichen Parameter +angewiesen die Zeit nicht zu synchronisieren (erfordert Restarts von +multid). + +Wenn chronyd in der Firmware vorhanden ist wird multid in rc.net ohne +SNTP-Funktion gestartet. Zusätzlich deaktiviert multid diese Funktion +auch automatisch wenn /var/run/chronyd.pid existiert +(`​source <http://www.wehavemorefun.de/fritzbox/index.php/Multid#Aufruf>`__). + +SNTP = Simple Network Time Protocol + +| openntpd automatically selects Remove chronyd. + +.. _Fehlerbehebung: + +Fehlerbehebung +-------------- + +- ``dispatch_imsg in main: pipe closed``: In der ``openntpd.conf`` wird + ``listen on`` falsch benutzt. + +.. _Alternative: + +Alternative +----------- + +Man kann auch den in `inetd <inetd.html#user>`__ integrierten `​"time" +Service <http://en.wikipedia.org/wiki/Time_Protocol>`__ aktivieren. +Diese kann z.B. mit "rdate" genutzt werden, welches bereits in Freetz +enthalten ist oder auch auf der Dbox2 + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​http://www.openntpd.org/ <http://www.openntpd.org/>`__ +- `​Artikel zu + OpenNtpd <http://www.zdnet.de/builder/program/0,39023551,39191851,00.htm>`__ + +- Tags +- `daemons </tags/daemons>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `server </tags/server>`__ diff --git a/wiki/packages/openvpn.rst b/wiki/packages/openvpn.rst new file mode 100644 index 0000000..6b26d07 --- /dev/null +++ b/wiki/packages/openvpn.rst @@ -0,0 +1,667 @@ +.. _OpenVPNfreetzPackage: + +OpenVPN freetz Package +====================== + +OpenVPN ist ein Programm zur Herstellung eines Virtuellen Privaten +Netzwerkes (VPN) über eine verschlüsselte TLS-Verbindung. + +.. _Version: + +Version +------- + +In der aktuellen Version von Freetz ist OpenVPN 2.3.2 enthalten (aktuell +kann auch noch die alte Version 2.2.1 gewählt werden). Es kann im +menuconfig wahlweise mit und ohne LZO2 Komprimierung ausgewählt werden. + +.. _HäufigeFragenHowto: + +Häufige Fragen / Howto +---------------------- + +Die Dokumentation auf der OpenVPN Webseite ist sehr gut und ausführlich. +Dort findet man wohl auf die meisten Fragen die passende Antwort. + +`​http://openvpn.net/faq.html <http://openvpn.net/faq.html>`__ oder +`​http://openvpn.net/howto.html <http://openvpn.net/howto.html>`__ + +Viele hilfreiche Informationen zu OpenVPN findet man auch `​hier im +ippf-Wiki <http://wiki.ip-phone-forum.de/gateways:avm:howtos:mods:openvpn>`__. + +.. _Konfigurationsanleitung: + +Konfigurationsanleitung +----------------------- + +Dies ist eine (sicher nicht ganz vollständige) Anleitung zur +Konfiguration des OpenVPN Pakets. Sie soll aufzeigen, wie man eine +OpenVPN Konfiguration mit der zugehörigen GUI erstellt. \*Was\* ein VPN +ist und welche Parameter man grundsätzlich braucht, kann hier \*nicht\* +gefunden werden. + +.. _Portweiterleitung: + +Portweiterleitung +~~~~~~~~~~~~~~~~~ + +Soll (was wohl meistens der Fall ist), die Verbindung auf die Box über +das Internet aufgebaut werden, so muss dafür eine "Portweiterleitung" +eingerichet werden, damit die Box die VPN-Pakete annimmt. Standardmäßig +nutzt OpenVPN den IP-Port 1194 mit UDP oder TCP, und die Pakete dafür +müssen von der Box angenommen werden. Die naheliegende Idee, dieses in +der Fritzbox GUI einzurichten wird von AVM unterbunden, indem keine +Weiterleitungen "auf die Box selbst" erlaubt werden. Prinzipiell gibt es +drei Möglichkeiten, das zu "umgehen": + +#. Indem die Box eine zusätzliche IP-Adresse bekommt, von der die GUI + "nichts weiss" und damit die Einrichtung über die GUI vornehmen. + Dafür kann das Paket `Virtual IP <virtualip.html>`__ genutzt werden + und dann in der GUI eine Weiterleitung auf diese IP eingerichtet + werden. Mittlerweile gibt es einige User, die damit Probleme gemeldet + haben (vermutlich wegen der "Startreihenfolge" der Pakete). Als + Alternative dazu bietet es sich an, in der + `​debug.cfg <http://wiki.ip-phone-forum.de/gateways:avm:howtos:mods:shell_scripte#erzeugen_der_dateien_aus_der_debug.cfg>`__ + eine weitere IP anzulegen (zum Beispiel mittels des Eintrags + "ifconfig lan:1 192.168.178.253" in dieser Datei). +#. Man verwendet das Freetz-Paket `avm-firewall <avm-firewall.html>`__. + Hierdurch kann man einfach im Freetz-GUI eine Portweiterleitung auf + die IP-Adresse 0.0.0.0 eintragen. Anschließend ist der Port vom + Internet aus offen (Achtung: UDP als Protokoll auswählen!). +#. Oder man editiert die Datei "/var/flash/ar7.cfg", wozu der Zugriff + auf die Box mit Telnet/SSH nötig ist, was jedoch mit freetz kein + Problem darstellt. Obwohl diese Methode etwas "risikoreicher" ist ( + weil eine "falsch editierte Datei" den Start der Box verhindern kann) + würde ich sie empfehlen. + +Ich würde vorschlagen, die Datei im RAM zu editieren und dann, wenn +alles "zufriedenstellend" erfolgt ist, die Datei zurück zu kopieren. Zum +"Kopieren" nutzt man hier das "Auslesen und Umleiten", da diese Datei +keine normale Datei ist. Die Stelle, an der man ändern muß, findet man +am einfachsten, indem man zuvor in der AVM-GUI unter Einstellungen → +Erweitertet Einstellungen → Internet → Portfreigabe → Neue Portfreigabe +eine aussagekräftige Portfreigabe erstellt, z.B. "MeineFreigabe". Diese +kann in der im vi geöffneten /var/tmp/ar7.cfg gesucht werden mit +/MeineFreigabe. + +.. code:: bash + + cat /var/flash/ar7.cfg > /var/tmp/ar7.cfg + vi /var/tmp/ar7.cfg + + # Mini-Anleitung zu vi: + # i Insert - an dieser Stelle etwas eingeben + # a append - nach dieser Stelle etwas eingeben + # o - Zeile nach der aktuellen Zeile einfügen + # O - Zeile vor der aktuellen Zeile einfügen + # /<Ausdruck>- Suche vorwärts nach Ausdruck + # A Append - am Ende der Zeile etwas eingeben + # r replace - den Buchstaben unter dem Cursor ersetzen + # x delete - den Buchstaben unter dem Cursor löschen + # <Zahl> - den nächsten Befehl so oft ausführen (z.B. 10x -> 10 Zeichen löschen) + # dd - Zeile Löschen + # D - Rest der Zeile ab aktuellem Zeichen löschen + # <ESC> - Editier- / Eingabe-Modus verlassen + # :w write - Änderungen Speichern + # :q quit - vi verlassen + # :q! - vi verlassen, auch wenn ungesicherte Änderungen waren + # + # + # Hier nun im vi die Freigabe eintragen und die Datei mit ":wq" abgespeichert + + # Wenn alles richtig war, kann diese neue Datei zurückgeschrieben werden: + cat /var/tmp/ar7.cfg > /var/flash/ar7.cfg + +.. + + Im Ergebnis muss zu den "forwardrules" eine der folgenden Art + hinzugefügt werden, natürlich mit dem richtigen Protokoll (TCP/UDP) + und der richtigen Port-Nummer. Zu beachten ist, dass die Zeilen mit + "," abzuschließen sind, die letzte Zeile mit ";": + +.. code:: bash + + ## falls es **nicht** die letzte Zeile ist so, + ## wenn es **die letzte** ist, bitte ein ";" statt des "," + "udp 0.0.0.0:1194 0.0.0.0:1194" , + +Das Format dafür ist: <Protokoll> <In IP>:<In IP-Port> <Out IP >:<Out +IP-Port> Hier ist das erste "0.0.0.0" jeweils alles eingehende das +zweite "0.0.0.0" steht für "die Box selbst". Der "ausgehende" Port ist +hier wie der eingehende der Standardport von OpenVPN: 1194. + +Nach dem Editieren der ar7.cfg muss die Änderung übernommen werden, z.B. +mittels *ar7cfgchanged* oder einem Reboot. + +**Relativ neu:** Mittels `​dieses +Patches <http://www.ip-phone-forum.de/showthread.php?t=159266>`__ ist +auch eine Freigabe über die "normale" Portfreigabe in der AVM-GUI auf +die Box selbst mit 0.0.0.0 möglich. + +.. _StaticKey: + +Static Key +~~~~~~~~~~ + +Die einfachste Variante ist der Betrieb mit statischem Schlüssel: + +- es kann sich immer ein Client gleichzeitig mit dem Server verbinden +- beide Seiten verwenden den selben statischen Schlüssel zur + Authentifizierung +- beim ersten Start des Dienstes wird ein Schlüssel automatisch erzeugt +- Der Schlüssel kann unter "Einstellungen → Static Key" ausgelesen und + eingestellt werden + (eventuell vorher die `​Sicherheitsstufe + einstellen <http://wiki.ip-phone-forum.de/software:ds-mod:faq#konfiguration_in_der_aktuellen_sicherheitsstufe_nicht_verfuegbar>`__) +- die IP-Zuweisung erfolgt manuell auf Client und Server + +Hier mal ein Beispiel mit folgenden Daten: + +.. code:: bash + + Server-IP 192.168.200.1 + Client-IP 192.168.200.2 + Netzwerk hinter Fritzbox 192.168.178.0/255.255.255.0 + +In der GUI wäre der Server dann so zu konfigurieren: + +.. figure:: /screenshots/27.png + :alt: OpenVPN Webinterface: static server + + OpenVPN Webinterface: static server + +Eine passende Windows-Client-Konfiguration dazu, die sich auf die Box +verbinden kann: + +.. code:: bash + + remote meinserver.dyndns.org + proto udp + dev tun + ifconfig 192.168.200.2 192.168.200.1 + route 192.168.178.0 255.255.255.0 + secret "D:\\Eigene Dateien\\OpenVPN\\fritzbox.key" + tun-mtu 1500 + float + mssfix + nobind + verb 3 + keepalive 10 120 + +.. _Zertifikate: + +Zertifikate +~~~~~~~~~~~ + +Wenn man mehrere gleichzeitige Verbindungen ermöglichen will, muss man +mit Zertifikaten arbeiten. + +- es können sich mehrere Clients gleichzeitig mit dem Server verbinden +- Zertifikate müssen erstellt und auf Server und Client hinterlegt + werden +- Die Zertifikate werden über "Einstellungen" eingetragen (Zuordnung + siehe weiter unten) +- die IP-Zuweisung erfolgt dynamisch durch den Server +- einfache Konfiguration der Clients durch Push/Pull + +| Wie man ganz einfach Zertifikate erstellen und auf die Box laden kann, + erklären u.a. dieser + `​Wiki-Eintrag <http://wiki.ip-phone-forum.de/gateways:avm:howtos:mods:openvpn#2._zertifikate_erstellen>`__ + sowie die offizielle OpenVPN Hilfe zum Thema `​Public Key + Infrastructure <http://openvpn.net/howto.html#pki>`__. Die Zertifikate + werden auch mit Hilfe der GUI auf die Box geladen werden. Dafür öffnet + man im Freetz das Menu Einstellungen und wählt den entsprechenden + Eintrag aus (z.B. OpenVPN: Box Cert). Mit einem Editor öffnet man nun + die entsprechende Datei (z.B. Server.crt) und kopiert den Inhalt in + das Freetz Fenster. Mit Übernehmen überträgt nun die GUI das + Zertifikat auf die Box. +| **Hinweis:** Bevor man unter "Einstellungen" Dinge eintragen kann, + muss man ggf vorher die Sicherheitsstufe entsprechend ändern, das geht + z.B. mit + + *echo 0 > /var/tmp/flash/security && modsave* + +Zuordnung der Schlüssel und Zertifikate auf der Box: + ++-------------+----------------+----------------------------------------+ +| GUI-Name | Datei-Name | Beispiel / Bemerkung | ++-------------+----------------+----------------------------------------+ +| Box Cert | <Name>.crt | server.crt od. client01.crt | ++-------------+----------------+----------------------------------------+ +| Private Key | <Name>.key | server.key oder client01.key | ++-------------+----------------+----------------------------------------+ +| CA Cert | ca.crt | Zertifikat der CA | ++-------------+----------------+----------------------------------------+ +| DH Param | dh<Länge>.pem | dh1024.pem od. dh2048.pem | ++-------------+----------------+----------------------------------------+ +| Static Key | wird generiert | muss auf Server und Client gleich sein | ++-------------+----------------+----------------------------------------+ +| CRL | leer lassen | Liste zurückgezogener Zertifikate | ++-------------+----------------+----------------------------------------+ + +| In der folgenden Beispiel-Konfiguration soll der Server auf der Box + mit mehreren Clients genutzt werden können und im TAP-Modus laufen. + Die meiste Konfiguration der Clients (IP- und Netzwerkeinstellungen, + Routing, usw.) erfolgt ebenfalls durch den Server. +| Der Server vergibt an die Clients IP-Adressen ab der 192.168.200.100 + bis 192.168.200.150. Er übergibt dem Client auch eine Route zu seinem + LAN, dem Netz 192.168.178.0. Für das "Abholen" dieser Parameter sorgt + das **pull** in der Client-Konfiguration. + +.. figure:: /screenshots/28.png + :alt: OpenVPN Webinterface: certificate server + + OpenVPN Webinterface: certificate server + +Ebenfalls wieder eine Client-Konfiguration dazu, die sich mit diesem +Server verbinden könnte: + +.. code:: bash + + remote meinserver.dyndns.org + proto udp + dev tap + tls-client + ns-cert-type server + ca "D:\\Eigene Dateien\\OpenVPN\\ca.crt" + cert "D:\\Eigene Dateien\\OpenVPN\\client.crt" + key "D:\\Eigene Dateien\\OpenVPN\\client.key" + tls-auth "D:\\Eigene Dateien\\OpenVPN\\static.key" 1 + tun-mtu 1500 + mssfix + nobind + pull + cipher AES-128-CBC + verb 3 + +Dass der Name des Servers (hinter **"remote"**) und die Pfade zu den +Zertifikaten ggf. anzupassen sind, versteht sich hoffentlich von selbst +|;-)|. Man sieht, dass der Client keine eigene IP Konfiguration oder +Routing Einträge hat, diese Parameter bekommt er mit dem *pull* vom +Server. Wichtig ist hierbei auch die **"Schlüsselrichtung"** bei der +TLS-Authentifizierung. Da freetz hierfür augenscheinlich den Wert "0" +nutzt, muss im Client entsprechend der Wert "1" gesetzt werden. + +.. _Routingvs.Bridging: + +Routing vs. Bridging +-------------------- + +Für die meisten Anwendungsfälle ist Routing (TUN) die beste Wahl, doch +in einigen Fällen kann es auch sinnvoll sein, das VPN Netzwerk mit einer +Brücke (TAP) zu realisieren. Eine ausführliche Beschreibung der +Unterschiede findet man auf der `​OpenVPN +Webseite <http://openvpn.net/faq.html#bridge2>`__ + +Hier ein paar Vorteile von Bridging: + +- Der Client befindet sich nach Aufbau der Verbindung im gleichen Netz + wie der Server +- Broadcasts werden durch den VPN-Tunnel geleitet, das hat den Vorteil, + dass z.B. NetBIOS Namen aufgelöst werden können (sinnvoll für PING, + Netzwerkfreigaben etc) +- Bridging leitet alle Ethernet-Protokolle über den Tunnel (IPv4, IPv6, + IPX, AppleTalk etc.) + +Hier ein paar Nachteile von Bridging: + +- weniger effizient als Routing (langsamer) +- alle Broadcasts gehen durch das Netz + +Um mit der Fritz Box ein echtes Bridging zu realisieren, ist es +notwendig, den tap0-Adapter in die Liste der gebrückten Adapter der +Fritz Box einzutragen. Dies geschieht wiederum in der ar7.cfg, die im +oben beschriebenen Verfahren geändert werden muß. Unter dem Punkt +"brinterfaces" → interfaces muß der tap0-Adapter ergänzt werden: + +Also wieder: + +.. code:: bash + + cat /var/flash/ar7.cfg > /var/tmp/ar7.cfg + vi /var/tmp/ar7.cfg + +Dann suchen nach /brinterfaces und den Eintrag "tap0" vor dem Semikolon +einfügen. + +.. code:: bash + + brinterfaces { + name = "lan"; + dhcp = no; + ipaddr = 192.168.178.1; + netmask = 255.255.255.0; + dstipaddr = 0.0.0.0; + interfaces = "eth0", "usbrndis", "tiwlan0", "wdsup0", + "wdsdw0", "wdsdw1", "wdsdw2", "wdsdw3", "tap0"; + dhcpenabled = yes; + dhcpstart = 192.168.178.20; + dhcpend = 192.168.178.100; + +Zum Abschluß noch mal + +.. code:: bash + + cat /var/tmp/ar7.cfg > /var/flash/ar7.cfg + reboot + +Die Konfiguration in der OpenVPN-Gui könnte für den FritzBox Standard +dann folgendermaßen aussehen: + +.. figure:: /screenshots/29.png + :alt: OpenVPN Webinterface: bridged server + + OpenVPN Webinterface: bridged server + +Die Windows-Client-Konfiguration dazu sieht so aus: + +.. code:: bash + + client + dev tap + #udp/tcp je nachdem, was ausgewählt wurde + proto tcp + #Port entsprechend der Konfiguration + remote meinserver.dyndns.org 443 + nobind + persist-key + persist-tun + #hier die Zertifikate/Schlüssel, wie beim Erstellen benannt + ca ca.crt + cert client01.crt + key client01.key + # für TLS-Remote "ServerBox1" wie beim Erstellen benannt + tls-remote ServerBox1 + tls-auth static.key 1 + auth SHA1 + cipher AES-256-CBC + comp-lzo + verb 3 + +.. _CRL: + +CRL +--- + +CRL steht für "certificate revocation list" und bietet eine Möglichkeit, +ausgestellte Zertifikate zurückzuziehen und damit ungültig zu machen. +Aktuell gibt es einen BUG in Freetz (`/ticket/1578 </ticket/1578>`__) so +dass eine CRL nur mit etwas Handarbeit über die Telnet Konsole bzw. +Rudishell zum Laufen gebracht werden kann. Wer sich das manuelle +Erstellen einer CRL nicht zutraut findet mit Kleopatra (Windows / +`​http://www.gpg4win.de/ <http://www.gpg4win.de/>`__) oder TinyCA (Linux +/ `​http://tinyca.sm-zone.net/ <http://tinyca.sm-zone.net/>`__) +GUI-basierte Zertifikatmanager, die das Erstellen einer CRL +unterstützen. + +.. _Fehlersuche:EinpaarTipswennesnichtgleichsoklappt: + +Fehlersuche: Ein paar Tips wenn es nicht gleich so klappt +--------------------------------------------------------- + +Meist versucht man gleich den schwierigsten Fall, über das Internet mit +Zertifikaten und TLS-Authentifizierung zwei Netze zu verbinden und +testet, indem man versucht eine Freigabe auf dem Fileserver im anderen +Netz anzubinden |;-)|. + +Schön, wenn es sofort klappt, dafür gibt es "unendlich" viele +Fehlermöglichkeiten falls nicht… + +Daher der Apell, tastet euch langsam an das ganze heran! + +- Erster "Fehlerkandidat" ist der Zugang über das Internet, der über + eine "virtuelle IP" oder in der Datei "/var/flash/ar7.cfg" + freigeschaltet werden muss (siehe oben, ich bevorzuge persönlich die + zweite Methode). Diesen Faktor kann man prüfen, indem man die + Verbindung zunächst mal "intern" testet, also über die + LAN-Schnittstelle. Klappt es so, aber nicht über das Internet, habt + ihr den Fehler eingegrenzt. +- Wenn es was anderes ist, hilt nur noch der Vergleich der + Konfigurationen Punkt für Punkt. Eigentlich gibt es nur zwei Arten + von Parametern: + Solche, die identisch sein müssen und solche, die "spiegelverkehrt" + auftreten müssen. + + - Die "identischen" sind z.B. Cipher, "comp-lzo", tls-auth, das + benutzte Protokoll (UDP/TCP) und der Port, + - "Spiegelbildlich" sind die IPs beim TUN, die Routing-Einträge, die + Server- / Client-Parameter wie "tls-server/tls-client", push und + pull. + +- Die Config auf der Box kann man am einfachsten in der + `Rudi-Shell <rudi-shell.html>`__ ausgeben lasssen, indem man dort + *cat /mod/etc/openvpn*.conf* + ausführt. Diese Config kann man dann gut mit der Config der + "Gegenseite" vergleichen. +- | Erste Hilfe für mehr Infos, z.B. wenn die Ausgabe nur lautet + | *Starting OpenVPN …failed.* + | In der `Rudi-Shell <rudi-shell.html>`__ (wenn openvpn nicht mehr + läuft) sollten so (spätestens nach zehn Sekunden) die + Startmeldungen Hinweise auf den Fehler bringen.: + + .. code:: bash + + # die .../openvpn*.conf wird erst beim Starten des Dienstes erstellt und beim Stoppen gelöscht! + + .. code:: bash + + cat /mod/etc/openvpn*.conf | grep -v daemon > /var/tmp/ovpn.conf + openvpn /var/tmp/ovpn.conf & + sleep 10 + killall openvpn + +- Ein typisches Fehlerbild (ich tippe mal auf mindestens 20% aller + Probleme |;-)|): Die Verbindung wird aufgebaut, aber der Client und + Server können sich nicht per Ping erreichen, es "geht nichts durch + das VPN". Häufigste Ursache ist ein nur auf einer Seite aktiviertes + "comp-lzo" + +- Und noch ein Hinweis für die "Windows-Nutzer": Wenn der Rechner, der + eine Freigabe hat, nicht im gleichen Netz ist (also zum Beispiel über + VPN verbunden ist), muss zum einen die Firewall Zugriffe aus einem + anderen Netz zulassen zum anderen funktioniert die Windows + Namensauflösung nicht. Kann man im LAN die Freigabe in der Art * + Der_PC_mit-Freigabe\meine_Daten* + nutzen, so ist das über das VPN nicht möglich. Es gibt dann zwei + Möglichkeiten: + + #. Nutzung der IP-Adresse, also * + 192.168.178.12\meine_Daten* + #. Nutzung der Datei + *<Windowsverzeichnis>\system32\drivers\etc\lmhosts*, in die man + Rechnername und IP einträgt. Dann kann die Freigabe weiterhin über + den Namen genutzt werden + +.. _Verschlüsselung:WelcherCipher: + +Verschlüsselung: Welcher "Cipher" ? +----------------------------------- + +Der Verkehr zwischen Client und Server wird normalerweise verschlüsselt +übertragen, um die Inhalte vor dem Ausspähen zu schützen. Die Wahl des +Verschlüsselungsalgorithmus erfolg über die "Cipher" Auswahlbox. +Momentan sind dort diese Cipher wählbar, in Klammern jeweils die OpenVPN +Bezeichnung, wie sie aus dem OpenSSL übernommen wurde: + +.. code:: bash + + Blowfish (BF-CBC) + AES 128 (AES-128-CBC) + AES 256 (AES-256-CBC) + Triple-DES (DES-EDE3-CBC) + +Um die Frage der durch die Verschüsselung erzeugte Last auf der Box +nachzugehen, habe ich mal mit ``openssl speed des aes blowfish`` einen +"Leistungsvergleich" der Verfahren auf einem Speedport 701 gemacht (nur +für die wählbaren Optionen): + +.. code:: bash + + The 'numbers' are in 1000s of bytes per second processed. + type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes + des cbc 1827.26k 1909.78k 1931.44k 1935.13k 1888.51k + blowfish cbc 2940.90k 3187.67k 3257.75k 3245.84k 3108.06k + aes-128 cbc 1936.58k 1984.45k 2019.82k 2004.45k 1940.50k + aes-256 cbc 1500.48k 1532.26k 1541.70k 1510.14k 1494.16k + +Man sieht, dass von den verfügbaren Algorithmen "Blowfish" den größten +Durchsatz hat. Bei intensiver Nutzung könnte das von Interesse sein. Für +tiefergehende Vergleiche der Algorithmen sei z.B. auf +`​Wikipedia <http://en.wikipedia.org/wiki/Block_cipher>`__ verwiesen. + +Zum Vergleich die Zahlen von einer 7320: + +.. code:: bash + + The 'numbers' are in 1000s of bytes per second processed. + type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes + des cbc 2256.44k 2403.96k 2394.38k 2398.15k 2416.23k + des ede3 838.01k 863.05k 852.47k 864.63k 860.43k + blowfish cbc 5949.83k 6772.94k 6777.60k 6852.09k 6858.03k + aes-128 cbc 4218.86k 4641.06k 4719.34k 4722.43k 4723.41k + aes-192 cbc 3731.79k 4053.84k 4106.21k 4079.90k 4176.53k + aes-256 cbc 3312.71k 3596.58k 3627.24k 3628.52k 3678.10k + +… und von einer 7390: + +.. code:: bash + + The 'numbers' are in 1000s of bytes per second processed. + type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes + des cbc 3020.13k 3136.60k 3153.10k 3178.21k 3166.10k + des ede3 1104.84k 1119.55k 1127.09k 1129.19k 1126.40k + blowfish cbc 8043.34k 8744.39k 8965.62k 8973.62k 8947.55k + aes-128 cbc 5597.86k 6122.27k 6304.22k 6262.31k 6254.70k + aes-192 cbc 4932.01k 5308.92k 5450.89k 5446.16k 5429.97k + aes-256 cbc 4388.37k 4711.52k 4812.80k 4817.99k 4798.96k + +.. _DNSRedirectallclientstraffic: + +DNS & Redirect all clients' traffic +----------------------------------- + +I wanted to monitor all traffic coming from my Android device, so I +route all my traffic through openVPN and am using tcpdump to see the +traffic. I discovered that DNS going to my mobile provider is blocked +via by my DSL provider (of course). To circumvent that problem I tried +to specific a DNS server using openVPN, but that didn' work. Eventually +I fixed this problem by using iptables to re-route DNS to the local DNS +server (dnsmasq) like this: + +.. code:: bash + + iptables -A PREROUTING -i tun0 -p tcp -m tcp --dport 53 -j DNAT --to-destination 192.168.178.1 + iptables -A PREROUTING -i tun0 -p udp -m udp --dport 53 -j DNAT --to-destination 192.168.178.1 + +It is interesting to see what Android is doing … + +.. _Diskussion: + +Diskussion +---------- + +Fragen und Anmerkungen zu diesem Paket werden in `​diesem +Thread <http://www.ip-phone-forum.de/showthread.php?t=101980>`__ +diskutiert. + +.. _NeuesimpleGUIGUI2: + +Neue, simple GUI (GUI2) +----------------------- + +.. figure:: /screenshots/273.png + :alt: neue OpenVPN GUI + + neue OpenVPN GUI + +Aktuell ist im "trunk" (der Freetz Entwicklerversion) eine weitere GUI +zum Paket hinzugekommen, die deutlich "schlanker" ist als die bisherige. +Sie ist als "simple GUI" für Experten gedacht, die direkt eine +Konfigurationsdatei eingeben können. + +Wichtig: + +- Um diese GUI wählen zu können, muss der "Level of user competence" + mindestens "Advanced" sein. + +Als Option sind zusätzlich Skript-Dateien hinzugekommen, die z.B. als +"up"- oder "client-connect"-Skript genutzt werden können. + +Ein Beispiel sei hier genannt für einen Server mit Zertifikaten, zu dem +sich Clients verbinden, zu denen Netze geroutet werden sollen. Damit das +funktioniert muss neben dem "normalen" Routing auch das interne Routing +des Servers konfiguriert werden, der dazu "iroute" Einträge benötigt. + +.. code:: bash + + mode server + tls-server + port 1194 + proto udp + ca /tmp/flash/openvpn/ca.crt + cert /tmp/flash/openvpn/box.crt + key /tmp/flash/openvpn/box.key + dh /tmp/flash/openvpn/dh.pem + dev tun + topology subnet + push "topology subnet" + ifconfig 10.10.10.1 255.255.255.0 + cipher AES-128-CBC + verb 3 + + script-security 2 + client-connect "/bin/sh /tmp/flash/openvpn/script1" + + daemon + +Um für die Clients IPs zu vergeben wird hier "script1" als +client-connect Skript genutzt (ähnlich wie die "erweiterte Clientconfig" +der "alten GUI"). Die Idee/Anwendung sollte selbsterklärend sein (hoffe +ich): + +.. code:: bash + + #!/bin/sh + CLIENTS='name:ip maske:netz1 maske1; netz2 maske2 + Client1:10.10.10.1 255.255.255.0:192.168.100.0 255.255.255.0 + Client2:10.10.10.2 255.255.255.0:192.168.200.0 255.255.255.0 + Client3:10.10.10.3 255.255.255.0: + Client4:10.10.10.4 255.255.255.0:192.168.104.0 255.255.255.0;192.168.105.0 255.255.255.0 + client3:10.10.10.12 255.255.255.0:192.168.104.0 255.255.255.0;192.168.105.0 255.255.255.0 + Client5:10.10.10.5 255.255.255.0' + + # env will give name of connected client in variable "common_name" + X=$(echo "$CLIENTS" | sed -n "/^${common_name}:/ s/^${common_name}:// p") + CLIENTCONFIG=$1 + + # if found info on common name, generate client-config + if [ -n "$X" -a -n "$CLIENTCONFIG" ]; then + IP=${X%%:*} + NETS=${X##*:} + [ -n "$IP" ] && echo "ifconfig-push $IP" > $CLIENTCONFIG + [ -n "$NETS" -a "$NETS" != "$IP" ] && echo -e "iroute $NETS" | \ + sed "s/[[:space:]]*;[[:space:]]*/\niroute /g" >> $CLIENTCONFIG + fi + +.. _WeitereKonfigsanlegen: + +Weitere Konfigs anlegen +~~~~~~~~~~~~~~~~~~~~~~~ + +Um weitere Konfigs anzulegen, muss man momentan noch von Hand einmal +einen Aufruf machen. Um Beispielsweise eine Config Namens +``OpenVPN_TCP`` anzulegen: + +``http://fritz.box:81/cgi-bin/conf/openvpn?genconfigname=OpenVPN_TCP`` + +ACHTUNG: Nicht den Config-Namen "OpenVPN" oder "openvpn" verwenden! + +- Tags +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `routing </tags/routing>`__ +- `security </tags/security>`__ +- `vpn </tags/vpn>`__ + +.. |;-)| image:: ../../chrome/wikiextras-icons-16/smiley-wink.png + diff --git a/wiki/packages/owfs.rst b/wiki/packages/owfs.rst new file mode 100644 index 0000000..440e358 --- /dev/null +++ b/wiki/packages/owfs.rst @@ -0,0 +1,46 @@ +owfs +==== + +Dieses Paket bietet ähnliche Funktionen wie das digitemp Paket, mit dem +Vorteil, dass eine größere Auswahl an Chips unterstützt wird. Eine +Integration in die Freetz Oberfläche ist jedoch noch nicht vorhanden. + +| Der 1-Wire-Bus sollte für längere Distanzen (x00m) mindestens mit + Shielded/TwistedPair Kabeln aufgebaut werden. Wie bei jedem Bus dürfen + die Zweige nicht zu lang werden, dh. < 1m, damit die Reflexionen das + Datensignal nicht überlagern. +| Als Busmaster wurde derzeit der USB-1.1 Adapter DS9490R an einer + Fritzbox getestet. + +| Das Paket wird ohne Fuse-Support gebaut, die Shelltools erlauben + jedoch gleichwertige Funktionen. Grundsätzlich muss ein owserver + gestartet werden, er serialisiert/managed die Anfragen an den Bus. +| Verbindungen laufen standardmäßig über Port 4304. +| ``owserver --usb=ALL`` + +| owhttpd ist ein mini Webserver und erlaubt komfortables BUS-Debugging + per Webbrowser (`​http://fritz.box:99 <http://fritz.box:99>`__) +| ``owhttpd -s 127.0.0.1:4304 -p 99`` +| Dieser muss natürlich nicht zwingend auf der fritzbox laufen, denn die + option -s bestimmt die tcp/ip Verbindungsparameter zu irgendeinem + ``owserver``. + +owdir owread owwrite: erlaubt das einfache Auslesen und Beschreiben von +1-Wire Devices in der Shell bzw. in Shell-Skripten. + +Mehr Infos gibts in den manpages unter "weiterführende Links". + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​http://owfs.org/ <http://owfs.org/>`__ +- `​A Guide to the 1WRJ45 + Standard <http://1wire.org/index.html?target=p_2.html&lang=en-us>`__ + +-------------- + +- Tags +- `homeautomation </tags/homeautomation>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/pciutils.rst b/wiki/packages/pciutils.rst new file mode 100644 index 0000000..cd9cb64 --- /dev/null +++ b/wiki/packages/pciutils.rst @@ -0,0 +1,25 @@ +pciutils +======== + +Die **PCI Utilities** sind eine Tool-Sammlung zur Untersuchung und +Manipulation von +`​PCI <http://de.wikipedia.org/wiki/Peripheral_Component_Interconnect>`__ +Geräten. Die Tools basieren auf einer gemeinsamen, portablen Bibliothek +namens *libpci*. + +Enthalten sind folgende Programme: + +- **lspci** zeigt detaillierte Informationen über alle vorhandenen PCI + Busse des Systems sowie daran angeschlossene Geräte an +- **setpci** erlaubt das Lesen von und auch Schreiben in + Konfigurations-Register von PCI Geräten. Zum Beispiel lassen sich + damit "Latency Timer" justieren. + +Für weitere Informationen siehe auch +`​http://mj.ucw.cz/pciutils.shtml <http://mj.ucw.cz/pciutils.shtml>`__ + +-------------- + +- Tags +- `hardware </tags/hardware>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/php.rst b/wiki/packages/php.rst new file mode 100644 index 0000000..423d39e --- /dev/null +++ b/wiki/packages/php.rst @@ -0,0 +1,49 @@ +.. _PHP: + +PHP +=== + +"*PHP is a widely-used general-purpose scripting language that is +especially suited for Web development and can be embedded into HTML.*" + +.. _Memoryusage: + +Memory usage +------------ + +It works, but it needs a lot of memory, so a swap file is advisable +(about 32 MB will do in most cases). + +.. code:: bash + + -rwxr-xr-x 1 root root 5036004 Apr 25 18:41 php-cgi + +.. code:: bash + + VmPeak: 10740 kB + VmSize: 10740 kB The size of the virtual memory allocated to the process + VmRSS: 3068 kB The amount of memory mapped in RAM ( instead of swapped out ) + +This is why `​fast-CGI <http://www.fastcgi.com/>`__ is better too: +instead of loading the PHP binary over and over again it stays in +memory, also giving the system the opportunity to swap out unused parts +of it. + +Another thing is that *php.ini* will use valuable flash space and is +quite big. A solution is to make a symbolic link to an USB storage +device: + +.. code:: bash + + cp /tmp/flash/php.ini /var/media/ftp/uFlash/hiawatha/php.ini + rm /tmp/flash/php.ini + ln -s /var/media/ftp/uFlash/hiawatha/php.ini /tmp/flash/php.ini + modsave + +.. _Links: + +Links +----- + +- `​Home page <http://www.php.net/>`__ +- `​PHP Tutorial <http://www.w3schools.com/php/>`__ diff --git a/wiki/packages/phpxmail.en.rst b/wiki/packages/phpxmail.en.rst new file mode 100644 index 0000000..b6db5dc --- /dev/null +++ b/wiki/packages/phpxmail.en.rst @@ -0,0 +1,164 @@ +.. _Introduction: + +Introduction +============ + +The mail to/from my hosting provider got interrupted now and then and +the support wasn't that good. Setting up a mail server using Freetz and +PHPXMail was very simple. Now I can select my own blocklists and see in +the logs what is (not) happening. + +.. _Basicsetupguide: + +Basic setup guide +================= + +#. To prevent disappointment: check if your internet provider allows + SMTP (port 25) traffic +#. Build and install Freetz with PHPXMail and + `AVM-firewall-cgi <avm-firewall.html>`__ + + #. PHPXMail selects XMail and PHP + #. Be prepared for the space requirements … + +#. Setup Firewall (Freetz menu Packages > AVM-Firewall) + + #. Select port forwarding + #. Forward TCP port 25 to Fritz!Box port 10025 (SMTP) + #. Forward TCP port 110 to Fritz!Box port 10110 (POP3) + #. Apply settings + #. Reboot + +#. Setup XMail (Freetz menu Packages > XMail) + + #. Set start type to automatic + #. Fill in a **existing** directory for settings & storage, for + example + + .. code:: bash + + /var/media/ftp/uStor01/XMail + +#. Activate SMTP & POP3 +#. Activate unencrypted admin access +#. Activate all logging for the time being +#. Apply +#. Start XMail (freetz menu Services > XMail > Start) +#. Change the user name of the web interface to set XMail password + (Freetz menu Settings > webcfg > change password) +#. Open PHPXMail configuration site (Freetz menu Packages > PHPXMail > + here) + + #. Login with user *admin* and the set web interface password + #. Goto server config + + #. Enable *DefaultSMTPGateways* + #. Fill in your provider's smtp server address + #. Save values + #. Read + `​this <http://www.xmailserver.org/Readme.html#smtp_client_authentication>`__ + if you need to authenticate + + #. Goto server domains > new domain + #. Enter your domain name, for example *your-domain.com* + #. Submit + #. Goto server config + + #. Enable and set *CustMapsList* to (see + `​here <http://xmailforum.homelinux.net/index.php?showtopic=4620>`__): + + .. code:: bash + + zen.spamhaus.org.:0 + +#. Create an MX record that points to the external IP of your FritzBox + + #. See for example + `​here <http://www.dyndns.com/support/kb/email_mail_exchangers_and_dns.html>`__ + for information + #. Use `​DynDNS <http://www.dyndns.com/>`__ or similar if you have a + dynamic IP address + #. I created an MX record with a higher priority than the existing + records, so in case of problems mail will be handled by my hosting + provider as usual + +#. Setup your preferred e-mail client + + #. Server: external IP of your FritzBox + #. User name: *postmaster @ your-domain.com* + +#. Test your configuration + + #. Send a test mail to *postmaster @ your-domain.com* (check server + logs > smtp) + #. Receive the test mail with your e-mail client (check server logs > + pop3) + #. Check for open mail relaying for example + `​here <http://www.abuse.net/relay.html>`__ + +#. Setup as many other domains and accounts as you like … + +If you want to forward e-mail: + +#. Goto the domain user you want to forward mail for +#. Select the link user mail proc +#. Enter redirect|<forwarding e-mail address> +#. Submit + +It is not a bad idea to backup your XMail settings and storage +directory! + +.. _SetupSSL: + +Setup SSL +========= + +#. Build XMail with SSL support +#. Login using telnet (or better SSH) +#. Goto the XMail settings directory +#. Create the file *openssl.cnf* with the example contents from + `​here <http://www.iona.com/support/docs/orbix2000/2.0/tls/html/OpenSslUtils3.html>`__ +#. Enter the following commands: + + .. code:: bash + + openssl_genrsa 2048 > server.key + openssl_req -new -x509 -key server.key -out server.cert -days 365 -config openssl.cnf + +#. Answer the questions with anything you like, but use your domain name + as common name (CN) +#. Forward TCP port 465 to Fritz!Box port 10465 (SSMTP) +#. Forward TCP port 995 to Fritz!Box port 10995 (POP3S) +#. Activate the XMail options SSMTP and POP3S (note that the checkboxes + don't show up checked again before changeset + `r4760 </changeset/4760>`__) +#. Test by checking your e-mail with SSL (port 995) enabled + +.. _Usefullinks: + +Useful links +============ + +- `​XMail Home Page <http://www.xmailserver.org/>`__ +- `​PHPXmail source + forge <http://sourceforge.net/projects/phpxmail/>`__ +- `​PhpXMail + Configuration <http://wiki.qnap.com/wiki/PhpXMail_Configuration>`__ +- `​IPPF: Mailserver für die + Fritzbox? <http://www.ip-phone-forum.de/showthread.php?t=103699&highlight=PHPXMail>`__ +- `​IPPF: [PATCH]: XMail + funktioniert <http://www.ip-phone-forum.de/showthread.php?t=205071&highlight=PHPXMail>`__ + \* +- `​OpenSSL Self-signed Test + Certificates <http://sial.org/howto/openssl/self-signed/>`__ +- `​HOWTO: Creating SSL certificates with CAcert.org and + OpenSSL <http://www.lwithers.me.uk/articles/cacert.html>`__ +- `​Welche Webmail-Oberflächen in PHP gibt + es? <http://www.php-faq.de/q-scripte-webmailer.html>`__ +- `​AfterLogic WebMail + Pro <http://www.afterlogic.com/products/webmail-pro>`__ + +- Tags +- `mail </tags/mail>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/phpxmail.rst b/wiki/packages/phpxmail.rst new file mode 100644 index 0000000..bf05208 --- /dev/null +++ b/wiki/packages/phpxmail.rst @@ -0,0 +1,8 @@ +- `Basic setup guide <phpxmail.en.html>`__ +- `​XMail <http://www.xmailserver.org/>`__ +- `​PHPXMail <http://phpxmail.sourceforge.net/>`__ + +- Tags +- `mail </tags/mail>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/pingtunnel.rst b/wiki/packages/pingtunnel.rst new file mode 100644 index 0000000..a1c4079 --- /dev/null +++ b/wiki/packages/pingtunnel.rst @@ -0,0 +1,98 @@ +pingtunnel +========== + +**PTunnel** erlaubt das verlässliche Tunneln von TCP Verbindungen über +`​ICMP <http://de.wikipedia.org/wiki/Internet_Control_Message_Protocol>`__ +Echo-Requests, was auch als `​ICMP +Tunnel <http://en.wikipedia.org/wiki/Pingtunnel>`__ bekannt ist. Das mag +zwar auf den ersten Blick recht nutzlos aussehen - dafür erweist es sich +in manchen Situationen als recht hilfreich. Wenn nämlich nichts anderes +weiterhilft, weil eine restriktive Firewall im Wege steht… + +.. _Setup: + +Setup +----- + +Folgendes bei ``forwardrules`` der ar7.cfg eintragen um Pings aus dem +Internet zuzulassen: + +.. code:: bash + + "icmp 0.0.0.0 0.0.0.0 0 # PTunnel" + +Or use `AVM-Firewall <avm-firewall.html>`__ from revision 6794 to do the +same from a web interface. + +Capturing packets (`​libpcap <http://www.tcpdump.org/pcap3_man.html>`__) +from interface *dsl* doesn't work (packets are fragmented), but from +interface *lan* does: + +.. code:: bash + + ptunnel -c lan + +(Error message if using dsl: "*Received fragmented packet - unable to +reconstruct! This error usually occurs because pcap is used on devices +that are not wlan or ethernet.*") + +The web interface of pingtunnel (from revision 6792) uses the following +options if you don't specify extra options: + +.. code:: bash + + -c lan -syslog -x <password> + +For maximum flexibility ``-c lan -syslog`` is omitted if you specify +extra options. + +Be sure to specify enough tunnels when tunneling ``http`` traffic with +the ``-m`` option. + +.. _Security: + +Security +-------- + +Pingtunnel is not very secure, because it possible to choose random +tunnel endpoints from the client. The best thing that can be done, is +using a strong password. + +Be sure to use client version 0.71 or higher and the patched 0.71 server +version when using passwords! + +Also realize that ICMP traffic makes it to the internal net of the box +if you configure ICMP forwarding. + +It is easily overlooked, but you can tighten security with these option: + +.. code:: bash + + -da: Set remote proxy destination address if client + Restrict to only this destination address if server + -dp: Set remote proxy destionation port if client + Restrict to only this destination port if server + +You can restrict access to for example Polipo? like this: + +.. code:: bash + + -da localhost -dp 8123 + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​Homepage <http://www.cs.uit.no/~daniels/PingTunnel/>`__ (Englisch) +- `​Freshmeat Projektseite <http://freshmeat.net/projects/ptunnel/>`__ +- `​Breaking through firewalls with a ping + tunnel <http://psung.blogspot.com/2008/05/breaking-through-firewalls-with-ping.html>`__ + (Blog Artikel) + +-------------- + +- Tags +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `tunnel </tags/tunnel>`__ diff --git a/wiki/packages/polipo.en.rst b/wiki/packages/polipo.en.rst new file mode 100644 index 0000000..88bea4e --- /dev/null +++ b/wiki/packages/polipo.en.rst @@ -0,0 +1,114 @@ +.. _UsingwithTor: + +Using with Tor +-------------- + +#. Add *socksParentProxy=localhost:9050* to *Additional options* +#. Point your browser http proxy to 192.168.178.1:8123 +#. Set *No proxy for* to *localhost, 127.0.0.1, 192.168.178.0/24* + +(assuming default configuration) + +If you use Firefox, use `​Tor +Button <https://addons.mozilla.org/nl/firefox/addon/2275/>`__ to prevent +DNS leakage (and other privacy problems with cookies, plugins, etc). + +.. _Usingatyouroffice: + +Using at your office +-------------------- + +Maybe your internet access at your office (school, internet café, etc) +is restricted, filtered and/or monitored and you don't want that. In my +case Trend Micro OfficeScan blocks a lot of web-sites as false positives +(including `​www.ip-phone-forum.de <http://www.ip-phone-forum.de/>`__). +A solution is this: + +#. Install Polipo and `dropbear <dropbear.html>`__ (or another tunnel + package) +#. Forward port 22 (and/or 80 if port 22 is blocked) to localhost:22 + using `AVM-firewall <avm-firewall.html>`__ +#. Create an `​SSH + tunnel <http://oldsite.precedence.co.uk/nc/putty.html>`__ from your + office to your FritzBox, for example using + `​putty <http://www.chiark.greenend.org.uk/~sgtatham/putty/>`__ +#. Configure your browser at your office to use the http proxy + localhost:8123 (assuming default Polipo configuration) + +It is not an bad idea to restrict the memory Polipo will use with the +following additional option: + +.. code:: bash + + chunkHighMark=1048576 + +.. _Security: + +Security +-------- + +Unless you restrict the IP addresses that can access dropbear, my advice +is to disable password login and to use `host-based +authentication <dropbear.html#ZugangmitPutty1>`__. + +It is also possible to encapsulate SSH traffic using +`STunnel <stunnel.html>`__, for cases where only http/https traffic is +allowed. + +Beware that DNS requests could still be monitored, see the section about +Tor about how to prevent this. (it is possible to use Tor Button without +Tor) + +It is possible to tighten security by using these options: + +.. code:: bash + + tunnelAllowedPorts=443;allowedPorts=80,443 + +This prevent tunneling through the proxy and access to the freetz web +interface. + +.. _Blockingdomains: + +Blocking domains +---------------- + +Using the extra options it is possible to specify a file with forbidden +domains, like this: + +.. code:: bash + + forbiddenFile=/var/media/ftp/uFlash/polipo/forbidden + +Add the domains you want to block on separate lines, like this: + +.. code:: bash + + doubleclick.net + googleadservices.com + google-analytics.com + googlesyndication.com + facebook.com/plugins + +.. _Issues: + +Issues +------ + +- Download of large files is broken and wont be fixed: + `​ticket <https://trac.torproject.org/projects/tor/ticket/1149>`__ + +.. _Links: + +Links +----- + +- `​Polipo home <http://www.pps.jussieu.fr/~jch/software/polipo/>`__ +- `​Polipo status <http://192.168.178.1:8123/polipo/status?>`__ +- `​Polipo configuration <http://192.168.178.1:8123/polipo/config?>`__ +- `Package Tor <tor.html>`__ + +- Tags +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `proxy </tags/proxy>`__ diff --git a/wiki/packages/portmap.rst b/wiki/packages/portmap.rst new file mode 100644 index 0000000..915e5e5 --- /dev/null +++ b/wiki/packages/portmap.rst @@ -0,0 +1,30 @@ +portmap +======= + +Der **portmap**-Dienst ist ein dynamischer Port-Zuweisungs-Daemon für +`​RPC <http://de.wikipedia.org/wiki/Remote_Procedure_Call>`__-Dienste +wie `​NIS <http://de.wikipedia.org/wiki/Network_Information_Service>`__ +und `​NFS <http://de.wikipedia.org/wiki/Network_File_System>`__. Es +besitzt schwache Authentifizierungsmechanismen und hat die Fähigkeit, +eine große Bandbreite an Ports für die von ihm kontrollierten Dienste +zuzuweisen. + +*Portmap* wird u.a. vom `NFS <nfs.html>`__ Paket benötigt. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​Portmap Man page <http://www.manpagez.com/man/8/portmap/>`__ +- `​Portmap + absichern <http://www.linuxtopia.org/online_books/deutsch/redhat_linux_security_guide/s1-server-port.html>`__ + (Redhat Security Guide) +- `​Wikipedia Artikel <http://en.wikipedia.org/wiki/Portmap>`__ + (Englisch) + +-------------- + +- Tags +- `network </tags/network>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/ppp.rst b/wiki/packages/ppp.rst new file mode 100644 index 0000000..e54a010 --- /dev/null +++ b/wiki/packages/ppp.rst @@ -0,0 +1,195 @@ +.. figure:: /screenshots/121.jpg + :alt: ppp-cgi + + ppp-cgi + +ppp-cgi +======= + +| Entstanden aus diesem Thread im IPPF: + `​http://www.ip-phone-forum.de/showthread.php?t=201519 <http://www.ip-phone-forum.de/showthread.php?t=201519>`__ +| Mit dem "ppp-cgi" kann man eine dialup-network Verbindung über eine + serielle Schnittstelle aufbauen. USB-Modems für UMTS stellen eine + solche zur Verfügung. + +| + +.. _AllgemeineKonfiguration: + +Allgemeine Konfiguration +------------------------ + +| zu finden im Webinterface unter "Pakete" > "PPP" + +.. _Starttyp: + +Starttyp +~~~~~~~~ + +Wenn man "automatisch" wählt wird die Verbindung gleich beim starten der +Box aufgebaut, bzw bei Fallback nach Ausfall der +DSL/ATA-Internetverbindung. + +.. _Logdatei: + +Logdatei +~~~~~~~~ + +Hier kann der Pfad zu Logdatei angegeben werden. Sie kann im +Freetz-Webinterface unter "Status" eingesehen werden. Es ist zu +empfehlen den Pfad auf einen persistenten Ort zu ändern damit die Datei +durch einen Reboot der Fritzbox nicht verloren geht! + +| + +.. _KonfigurationfürUMTS: + +Konfiguration für UMTS +--------------------- + +.. _PEERS:chat: + +PEERS: chat +~~~~~~~~~~~ + +Hier muss der benötigte Access-Pount-Name (APN) anstelle des +"your.personal.apn" eingetragen werden. + +.. _PEERS:options: + +PEERS: options +~~~~~~~~~~~~~~ + +Hier kann der Port (Vorgabe: /dev/ttyUSB0) geändert und falls benötigt +der Benutzername und das Passwort angegeben werden. + +.. _Befehls-TTY: + +Befehls-TTY +~~~~~~~~~~~ + +Optional kann hier der 2. Port des Modem eingetragen werden (meist +/dev/ttyUSB1). Über diesen werden Statusinformationen wie verfügbare +Netze abgerufen und auf der Statusseite angezeigt. Wenn das Feld leer +bleibt wird wie komplette Statusbox nicht angezeigt. + +.. _Modus: + +Modus +~~~~~ + +Optional kann hier der gewünschte Verbindungsmodus ausgewählt werden. + +| + +.. _Namensauflösung: + +Namensauflösung +--------------- + +Für eine dynamisch wechselnde Namensauflösung zwischen Mobilfunk und +herkömmlicher Verbindung empfiehlt sich folgendes: + +- Bei dnsmasq im Feld "Zusätzliche Kommandozeilen-Optionen (für + Experten)" dies eintragen: + + .. code:: bash + + -r /var/tmp/avm-resolv.conf -r /etc/ppp/resolv.conf + +- alternativ falls OpenDNS bevorzugt wird + + .. code:: bash + + -r /etc/ppp/resolv.conf -S 208.67.220.220 -S 208.67.222.222 + +| + +.. _FirewallRoutingNAT: + +Firewall, Routing & NAT +----------------------- + +Um Masquerading zu aktivieren sind folgende Befehle nötig: + +.. code:: bash + + modprobe ipt_state + modprobe ipt_MASQUERADE + iptables -A INPUT -m state --state ESTABLISHED,RELATED -i ppp0 -j ACCEPT + iptables -A INPUT -i ppp0 -j DROP + iptables -A FORWARD -m state --state ESTABLISHED,RELATED -i ppp0 -j ACCEPT + iptables -A FORWARD -i ppp0 -j DROP + iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE + +Hierzu werden die iptables-Module *state* und *MASQUERADE* benötigt. + +|Warning| Diese lassen (ließen?) Boxen mit altem Kernel 2.6.13.1 wie zB die +7170 nach einer gewissen Zeit rebooten, siehe Ticket +`#260 </ticket/260>`__. + +Die Befehle können in der debug.cfg oder rc.custum eingetragen werden. +Von Vorteil ist es aber sie von den Skripten des ppp-cgi ausfgühren zu +lassen und nach Verbindungsabbau wieder aufzuheben und vor allem die +Module wieder zu entladen. + +| + +.. _Fallback: + +Fallback +-------- + +|Warning| Dieses Feature ist noch exprimentell. Fehlfunktionen und hohe +Kosten können nicht ausgeschlossen werden! + +Bei Aktivierung von Fallback wird die DSL/ATA-Internetverbindung alle X +Sekunden mit den durch Leerzeichen angegebenen Hosts geprüft und nach Y +Sekunden ohne Antwort die ppp-Verbindung aufgebaut. Zu dem Host "prüfen +auf Wiederherstellung" wird eine Route eingerichtet um zu erkennen wann +die DSL/ATA-Internetverbindung wieder besteht. Durch anlegen dieser +Route kann die entsprechende IP nicht per ppp-Verbindung erreicht +werden! + +| + +.. _Treiberprobleme: + +Treiberprobleme +--------------- + +Das Treibermodul *option* wird beim Start automatisch geladen. Es kann +aber nötig sein es mit eigenen Parameter zu laden, zB durch +``usbserial vendor=0xYYYY product=0xZZZZ`` in der *Freetz: modules*. + +| + +.. _Wasistnochzubeachten2do-Liste: + +Was ist noch zu beachten? (2do-Liste) +------------------------------------ + +|Warning| Es können momentan nur SIMs mit deaktivierter PIN-Abfrage genutzt +werden. (dies ist allerdings mit dem Package *gcom* möglich) + +| + +.. _Weiteres: + +Weiteres +-------- + +Deaktivierung des integrierten CD-Roms bei Huawei-Sticks mittels +einmaligem ``at^u2diag=0`` an das 2. virtuelle, serielle Interface +(meist /dev/ttyUSB1 unter Linux) des Sticks, bzw ``at^u2diag=1`` um es +wieder einzuschalten. + +| + +- Tags +- `cgi </tags/cgi>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ + +.. |Warning| image:: ../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/packages/pptp.rst b/wiki/packages/pptp.rst new file mode 100644 index 0000000..466d6b6 --- /dev/null +++ b/wiki/packages/pptp.rst @@ -0,0 +1,56 @@ +.. _PPTPClient: + +PPTP Client +=========== + +``"PPTP Client is a Linux, FreeBSD, NetBSD and OpenBSD client for the proprietary Microsoft Point-to-Point Tunneling Protocol, PPTP. Allows connection to a PPTP based Virtual Private Network (VPN)."`` + +Viele Firmen setzen den PPTP-Server von Microsoft ein. Mit dem Client +kann man ein Verbindung zu diesem VPN über das **Point-to-Point +Tunneling Protocol** (**PPTP**) aufbauen + +|Warning| Das PPTP-Package benötigt "replace kernel". + +.. _PPTPKonfiguration: + +PPTP Konfiguration +------------------ + +| +| **Hostname**: ``VPN-Server``\ (Beispiel vpn.tolledomain.de) +| **Benutzername**: ``VPN-Benutzername``\ (Bei Windows bitte Domäne so + schreiben → DOMÄNE/user oder DOMÄNE\\user, nicht DOMÄNE\user) +| **Servername**: ``PPTP`` + +.. _IPRouting: + +IP Routing +---------- + +| +| Aktivieren und in das Textfeld das Firmennetz samt Subnetzmaske + reinschreiben (z.B. 10.0.0.0 255.255.255.0) + +| Die Änderungen übernehmen und nochmal auf die Seite. Jetzt auf + ``PPPD: chap-secrets bearbeiten`` klicken und dort folgendes + eintragen: ``VPN-Username PPTP VPN-Password *`` +| *Wichtig*: VPN-Username und VPN-Password sind durch eure Sachen zu + ersetzen! + +Danach unter Dienste das PPTP-Package starten und per SSH von der +Fritzbox einen Rechner im Firmennetz anpingen. + +Routing/NAT infos folgen + +Screenshot? + +- Tags +- `daemons </tags/daemons>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `security </tags/security>`__ +- `server </tags/server>`__ +- `tunnel </tags/tunnel>`__ + +.. |Warning| image:: ../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/packages/pptpd.rst b/wiki/packages/pptpd.rst new file mode 100644 index 0000000..bbbefdb --- /dev/null +++ b/wiki/packages/pptpd.rst @@ -0,0 +1,46 @@ +.. _PoPTop-PPTP-VPN-Server: + +PoPTop - PPTP-VPN-Server +======================== + +Paket aus dem Thread: `​PPTP Server auf der Fritzbox und Speedport W701 +V/W 900 V +funktioniert <http://www.ip-phone-forum.de/showthread.php?p=714224>`__ + +Als erstes ein großer Dank an +`​gamf <http://www.ip-phone-forum.de/member.php?u=93421>`__ und +`​hehol <http://www.ip-phone-forum.de/member.php?u=63500>`__ für die +Bereitstellung der Patches und des Pakets. + +.. _WhatisPPTP: + +What is PPTP? +------------- + +PPTP stands for Point to Point Tunneling Protocol. It was developed by a +consortium including Microsoft and is used for establishing VPN (Virtual +Private Network) tunnels across the Internet. This allows remote users +to securely and inexpensively access their corporate network from +anywhere on the Internet. + +PPTP uses a client-server model for establishing VPN connections. Most +Microsoft operating systems ship with a PPTP client, so there is no need +to purchase third-party client software. PPTP has the additional +advantage over other VPN technologies of being easy to setup. + +.. _WhatisPoptop: + +What is Poptop? +--------------- + +Before Poptop, no solution existed if you wish to connect PPTP clients +to Linux servers. Using Poptop, Linux servers can now function +seamlessly in a PPTP VPN environment. This enables administrators to +leverage the considerable benefits of both Microsoft and Linux operating +systems. + +The current release version supports Windows 95/98/Me/NT/2000/XP PPTP +clients and Linux PPTP clients. + +Quelle und weitere Infos: +`​http://www.poptop.org/ <http://www.poptop.org/>`__ diff --git a/wiki/packages/pptpd/config.rst b/wiki/packages/pptpd/config.rst new file mode 100644 index 0000000..6660bbe --- /dev/null +++ b/wiki/packages/pptpd/config.rst @@ -0,0 +1,131 @@ +.. _Konfiguration: + +Konfiguration +============= + +Die drei für Poptop relevanten Dateien können entweder über das +`Webinterface <webif.html>`__ oder auf der Shell per vi editiert werden. +Sie liegen im Verzeichnis ``/tmp/flash/ppp``. + +pptpd.conf +---------- + +In der mitgelieferten Konfiguration ist logwtmp standardmäßig aktiviert +(bezieht sich auf Version 1.1.2-stable. Ist im 'trunk' schon gefixed.). +Dies sollte deaktiviert werden, da wtmp auf der fritzbox nicht läuft und +somit eine vpn-Verbindung nicht zustande kommt. + +.. code:: bash + + # TAG: logwtmp + # Use wtmp(5) to record client connections and disconnections. + # + #logwtmp + +Falls die Datenrate vom Wlan ins Internet mit pptpd sehr langsam ist, +sollte die Zeile ``bcrelay`` auskommentiert werden (siehe +`​IPPF <http://www.ip-phone-forum.de/showthread.php?t=201539>`__) + +options.pptpd +------------- + +In der Datei options.pptpd ist gegebenenfalls ``require-mppe-128`` +eingetragen (bezieht sich auf Version 1.1.2-stable. Ist im 'trunk' schon +gefixed.). Der pppd kennt diese Option aber nicht. Beim Aushandeln der +Verschlüsselung per 'Auto' Einstellung im Client kann es unter Umständen +zu Verbindungsproblemen kommen, wenn der Client erstmal verhandeln will +(negotiation), der pppd aber direkt verschlüsselt sprechen will. Man +kann die Verschlüsselung direkt auf 128 Bit fest einstellen. Mit dieser +Einstellung hat eine PPTP Verbindung mit dem iPhone VPN-Client geklappt: + +.. code:: bash + + # Require the peer to authenticate itself using MS-CHAPv2 [Microsoft + # Challenge Handshake Authentication Protocol, Version 2] authentication. + require-mschap-v2 + # Require MPPE 128-bit encryption + # (note that MPPE requires the use of MSCHAP-V2 during authentication) + #require-mppe-128 + + mppe required,no40,no56,stateless + +chap-secrets +------------ + +In der ``options.pptpd`` ist der Name auf ``fritzbox`` eingestellt. Dies +sollte sich dann in einem Benutzereintrag in der ``chap-secrets`` +widerspiegeln: + +.. code:: bash + + # client server secret IP addresses + username fritzbox password 192.168.x.y + EOF + +In vielen Beispielen im Netz steht in der zweiten Spalte ``pptpd``. +Möchte man das so haben, dann sollte man einfach den ``name`` Eintrag in +``options.pptpd`` entsprechend anpassen. + +.. _Troubleshooting: + +Troubleshooting +--------------- + +Um die pptpd Meldungen zu sehen, muss man zunächst einen syslogd +starten: + +.. code:: bash + + /var/tmp/flash/ppp # syslogd -L -C256 -l 7 + +Und kann sich danach die Meldungen des daemons im syslog per ``logread`` +anschauen: + +.. code:: bash + + /var/tmp/flash/ppp # logread + +Um mehr Meldungen zu bekommen, kann man in ``options.pptpd`` und/oder +``pptpd.conf`` den Debug-Modus aktivieren: + +options.pptpd: + +.. code:: bash + + # Enable connection debugging facilities. + # (see your syslog configuration for where pppd sends to) + debug + +pptpd.conf: + +.. code:: bash + + # TAG: debug + # Turns on (more) debugging to syslog + # + debug + +.. _TroubleshootingkeineFehlermeldung: + +Troubleshooting keine Fehlermeldung +----------------------------------- + +Bei mir tauchte im log keine Fehlermeldung auf. Da hilft debuggen auf +der Box mit: + +.. code:: bash + + ./strace pptpd -d -f -c /etc/ppp/pptpd.conf + +Dabei kam heraus, dass es folgende Fehlermeldung gibt: + +.. code:: bash + + can't resolve symbol 'bzero' + +Dazu gibt es einen Thread im Forum, der letzte Post erklärt wie man die +Toolchain zum fixen neu bauen muss: +`​http://www.ip-phone-forum.de/showpost.php?p=1407147&postcount=25 <http://www.ip-phone-forum.de/showpost.php?p=1407147&postcount=25>`__ + +Update[18.07.11]: Das Problem sollte mit Freetz-1.2 bzw. einem aktuellen +Trunk nicht mehr auftreten. diff --git a/wiki/packages/pptpd/install.rst b/wiki/packages/pptpd/install.rst new file mode 100644 index 0000000..0db4605 --- /dev/null +++ b/wiki/packages/pptpd/install.rst @@ -0,0 +1,178 @@ +.. _Installation: + +Installation +============ + +.. _Kernel2.6Freetz: + +Kernel 2.6 (Freetz) +------------------- + +pptpd ist mittlerweile als Paket in `Freetz <../../index.html>`__ +integriert, sodass es hier nur noch bei ``make menuconfig`` entsprechend +ausgewählt werden muss. Nach speichern der Konfiguration sowie +erfolgreichem ``make`` ist pptp dann im erstellten Image enthalten. + +|Warning| Wichtig ist hier: Aufgrund der Crypt-Module wird ein "replaced +kernel" benötigt (kann entsprechend in ``make menuconfig`` ausgewählt +werden). Nur dann ist pptpd sichtbar und selektierbar! + +.. _Kernel2.4ds-mod: + +Kernel 2.4 (ds-mod) +------------------- + +Wer pptpd in einem Image mit Kernel 2.4 (also mit dem "alten" DS-Mod) +verbauen will, hat ein wenig mehr Hand anzulegen: + +.. _Vorbereitungen: + +Vorbereitungen +^^^^^^^^^^^^^^ + +Man braucht einen Crosscompiler? um den Kernel kompilieren zu können. +Falls noch nicht vorhanden: + +.. code:: bash + + make toolchain + +Anschließend: + +.. code:: bash + + make menuconfig + +Die entsprechende Box auswählen, für die nachfolgend der PPTP-Server +kompiliert werden soll. (Es wird nach der entsprechenden Kernel-Größe +4MB oder 8MB unterschieden.) + +*menuconfig* beenden und die Einstellungen abspeichern. + +Folgende Dateien herunterladen: + +- `​pptp-patch.zip <http://www.ip-phone-forum.de/attachment.php?attachmentid=9892&d=1157118571>`__ +- `​pptpd-1.3.0_fixed.tar.gz <http://www.ip-phone-forum.de/attachment.php?attachmentid=10966&d=1161809653>`__ + +Die Verzeichnisse für spätere Anpassungen vorbereiten: + +.. code:: bash + + make kernel-dirclean + make kernel-menuconfig + +Hier noch keine Einstellungen vornehmen, einfach Beenden und +Abspeichern. + +.. _Patcheinspielen: + +Patch einspielen +~~~~~~~~~~~~~~~~ + +``pptp-patch.zip`` entpacken und Patch einspielen + +- für 8MB-Kernel + + :: + + unzip pptp-patch.zip -d DS-MOD-VERZEICHNIS/source/ref-ohio-8mb-04.06/kernel/kernel_ohio-8mb_build/kernel + cd DS-MOD-VERZEICHNIS/source/ref-ohio-8mb-04.06/kernel/kernel_ohio-8mb_build/kernel + patch -p0 < pptp-patch.patch + +- für 4MB-Kernel + + :: + + unzip pptp-patch.zip -d DS-MOD-VERZEICHNIS/source/ref-4mb-04.06/kernel/kernel_ohio-8mb_build/kernel + cd DS-MOD-VERZEICHNIS/source/ref-4mb-04.06/kernel/kernel_ohio-8mb_build/kernel + patch -p0 < pptp-patch.patch + +Beim Patchen werden euch noch ein paar Hinweise erwarten: + +.. code:: bash + + The next patch would create the file linux-2.4.17_mvl21/include/asm-mips/kmap_types.h, + which already exists! Assume -R? [n] + Apply anyway? [n] + +Dort einfach alles mit *ENTER* betätigen. + +.. _Kernelkonfigurierenundkompilieren: + +Kernel konfigurieren und kompilieren +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. code:: bash + + make kernel-menuconfig + +Folgende Pakete zusätzlich auswählen: + +.. code:: bash + + Network device support ---> + <*> PPP (point-to-point protocol) support + [*] PPP multilink support + [*] PPP support for async serial ports + <*> PPP Deflate compression + <*> Microsoft PPP compression/encyptions + + Cryptographic options ---> + [*] Cryptographic API + <*> SHA1 digest algorithms + <*> ARC4 cipher algorithms + +Beenden und Abspeichern + +.. code:: bash + + make kernel-precompiled + +Sollte der Kompiliervorgang mit einem Segmentation-Fault abbrechen, den +Vorgang mit ``make kernel-precompiled`` noch einmal starten. Weshalb der +Fehler auftritt ist mir noch nicht klar, aber es entsteht schließlich +ein lauffähiges Kernel-Image. + +.. _KompilierendesImagesvorbereitenunddurchführen: + +Kompilieren des Images vorbereiten und durchführen +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Das Addon-Paket? ``pptpd-1.3.0_fixed.tar.gz`` nach +``DS-MOD-VERZEICHNIS/addon`` entpacken und anschließen in die Datei +``static.pkg`` eintragen. + +.. code:: bash + + tar -C DS-MOD-VERZEICHNIS/addon -xvzf pptpd-1.3.0_fixed.tar.gz + echo pptpd-1.3.0 >> DS-MOD-VERZEICHINS/addon/static.pkg + +Um die Erstellung des fertigen Firmware-Images vorzubereiten: + +.. code:: bash + + make menuconfig + +Dort die gewünschten Einstellungen vornehmen sowie sonstige Paktete +auswählen. + +Für das PPTP-Server-Image ist zusätzlich die Einbindung folgender +Libraries nötig: + +.. code:: bash + + Advanced options --> + Shared libraries--> + [*] libcc_s.so.1 + uClibc ---> + [*] libutil-0.9.28.so + </code> + +Zuguterletzt erstellen wird das endgültige Image mit: + +.. code:: bash + + make + +.. |Warning| image:: ../../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/packages/pptpd/webif.rst b/wiki/packages/pptpd/webif.rst new file mode 100644 index 0000000..b7cd5f3 --- /dev/null +++ b/wiki/packages/pptpd/webif.rst @@ -0,0 +1,62 @@ +.. _DasWeb-FrontendzumPaket: + +Das Web-Frontend zum Paket +========================== + +Das Interface an sich ist leicht überschaubar |;-)|. + +Unter **Einstellungen** sind die Links zu den einzelnen +Konfigurationsdateien zu finden. + +Ein Übersicht über die Einstellmöglichkeiten gibt die Dokumantation von +Poptop auf deren `​Homepage <http://poptop.sourceforge.net/dox/>`__. + +- **"pptpd Einstellungen bearbeiten"** editiert die Datei + `​pptpd.conf <http://poptop.sourceforge.net/dox/pptpd.conf.txt>`__ + + - Pfadangaben zum Binary sowie zur Konfigurations-Datei + - mögliche Debug-Infos einschalten + - Server-IP festlegen (Standard: localip 192.168.178.1) + - IP-Bereich angemeldeter Rechner festlegen (Standard: remoteip + 192.168.178.210-229 ) + - Sonstiges + +- **"PPPD Einstellungen bearbeiten"** editiert die Datei + `​options.pptpd <http://poptop.sourceforge.net/dox/options.pptpd.txt>`__ + + - Name des PPTP-Server (Standard: fritzbox) + - Angabe, welche Protokolle zugelassen sind + - DNS-Server für Clients festlegen (Standard: ms-dns 192.168.178.1) + - Sonstiges + +- **"Password bearbeiten"** editiert die Datei + `​chap-secrets <http://poptop.sourceforge.net/dox/chap-secrets.txt>`__ + + - verwaltet berechtigte Benutzer sowie deren Passwörter + +.. figure:: /screenshots/38.png + :alt: pptpd Einstellungen + + pptpd Einstellungen + +.. _Portweiterleitung: + +Portweiterleitung +----------------- + +Um sich schließlich von außen auf den PPTP-Server verbinden zu können, +muss natürlich eine Portweiterleitung auf die IP der FRITZBox +eingerichtet werden. + +.. code:: bash + + Protokoll: TCP Port: 1723 + Protokoll: GRE (keine Portangabe nötig) + +Siehe dazu auch folgende Paketen: + +- `Virtual IP <../virtualip.html>`__ +- `AVM Firewall CGI <../avm-firewall.html>`__ + +.. |;-)| image:: ../../../chrome/wikiextras-icons-16/smiley-wink.png + diff --git a/wiki/packages/privoxy.rst b/wiki/packages/privoxy.rst new file mode 100644 index 0000000..798c7f8 --- /dev/null +++ b/wiki/packages/privoxy.rst @@ -0,0 +1,167 @@ +.. _Privoxy: + +Privoxy +======= + +`​Privoxy <http://www.privoxy.org>`__ ist ein HTTP Proxy mit +umfangreichen Filtermöglichkeiten zum **Schutz der Privatsphäre** und +zum Filtern von Webseiten-Inhalten: Privoxy **entfernt Werbung und +Popups**, bietet eine vollständig konfigurierbare **Zugriffskontrolle** +auf das Internet ("Kindersicherung") sowie die Verwaltung und Kontrolle +von Cookies. + +Das Privoxy Paket enthält neben einem vorkompilierten Privoxy mitsamt +Standardkonfiguration vordefinierte Standard-Filter sowie ein +Webfrontend zur Konfiguration. Das nachstehende Bild zeigt die Version +ab Revision 2938 (neu hinzugekommen sind die Optionen +enable-remote-toggle und enforce-blocks) + +.. figure:: /screenshots/11.png + :alt: Privoxy Configuration since Rev. 2938 + + Privoxy Configuration since Rev. 2938 + +.. _FilterundAktionen: + +Filter und Aktionen +------------------- + +Eine detailierte Beschreibung der mächtigen und umfangreichen +Filter-Funktionen liefert das `​Privoxy +Benutzerhandbuch <http://www.privoxy.org/user-manual/>`__ in den +Kapiteln `​Filter +Files <http://www.privoxy.org/user-manual/filter-file.html>`__ und +`​Actions +Files <http://www.privoxy.org/user-manual/actions-file.html>`__ +(englisch). + +.. _Zugriffskontrolle: + +Zugriffskontrolle +----------------- + +Die Privoxy Zugriffskontrolle ist über das Freetz Webinterface +steuerbar. Eine detailierte Beschreibung dazu findet man ebenfalls im +`​Privoxy Benutzerhandbuch <http://www.privoxy.org/user-manual/>`__ im +Kapitel +`​Zugriffskontrolle <http://www.privoxy.org/user-manual/config.html#ACCESS-CONTROL>`__ +(englisch). + +.. _PrivoxyundTor: + +Privoxy und Tor +--------------- + +Privoxy ist auch ideal für die Verwendung zusammen mit +`Tor <tor.html>`__, um anonym und sicher im Internet surfen zu können. + +Dazu muss in der Privoxy Konfiguration der Port und der IP-Adresse des +Tor Proxy Servers angeben werden. Wenn der Tor Proxy auf der selben +Fritzbox läuft, so kann man z.B. *127.0.0.1:9050* eintragen. + +.. _TransparenterProxy: + +Transparenter Proxy +------------------- + +| In manchen Fällen ist es gewünscht, dass jeglicher Webtraffic durch + den Proxy geleitet wird und so ohne Konfiguration auf dem Client-PC zu + filtern. Dazu wird zusätzlich `Iptables <iptables.html>`__ mit den + Modulen **ip_tables**, **iptable_filter**, **x_tables**, + **xt_tcpudp**, **ipt_REDIRECT**, **ip_nat** und **iptable_nat** + benötigt. + +Um die Umleitung zu aktivieren folgendes ausführen (Konsole oder +rc.custom): + +.. code:: bash + + modprobe ip_tables + modprobe iptable_filter + modprobe x_tables + modprobe xt_tcpudp + modprobe ipt_REDIRECT + modprobe ip_nat + modprobe iptable_nat + iptables -t nat -A PREROUTING -p tcp -i lan --dport 80 -j REDIRECT --to 8118 + [ -z "$(grep accept-intercepted-requests /var/mod/etc/privoxy/config)" ] && echo "accept-intercepted-requests 1" >> /var/mod/etc/privoxy/config + +.. _Werbefilter: + +Werbefilter +----------- + +| Um den Privoxy als Werbefilter zu nutzen ist es notwendig eine + aktuelle und gute Filterliste zu haben. Um die Daten nicht selbst + pflegen zu müssen ist es hilfreich beispielsweise auf die Filterlisten + des Firefox-Plugins AdBlockPlus zuzugreifen. +| Da diese Listen ziemlich groß sind, wird es im Flashspeicher der + Fritz.Box etwas eng. Deswegen ist es nützliche die Listen beim Start + der Fritz.Box neu zu laden. + +.. code:: bash + + URL="http://adblockplus.mozdev.org/easylist/easylist.txt" + ACTION=/var/tmp/flash/privoxy/user.action + FILTER=/var/tmp/flash/privoxy/user.filter + FILE=$(basename ${URL}) + LIST=${FILE%\.*} + wget -qO ${FILE} ${URL} + echo -e "{ +block{${LIST}} }" > ${ACTION} + sed '/^!.*/d;1,1 d;/^@@.*/d;/\$.*/d;/#/d;s/\./\\./g;s/\?/\\?/g;s/\*/.*/g;s/(/\\(/g;s/)/\\)/g;s/\[/\\[/g;s/\]/\\]/g;s/\^/[\/\&:\?=_]/g;s/^||/\./g;s/^|/^/g;s/|$/\$/g;/|/d' ${FILE} >> ${ACTION} + echo "FILTER: ${LIST} Tag filter of ${LIST}" > ${FILTER} + sed '/^#/!d;s/^##//g;s/^#\(.*\)\[.*\]\[.*\]*/s|<([a-zA-Z0-9]+)\\s+.*id=.?\1.*>.*<\/\\1>||g/g;s/^#\(.*\)/s|<([a-zA-Z0-9]+)\\s+.*id=.?\1.*>.*<\/\\1>||g/g;s/^\.\(.*\)/s|<([a-zA-Z0-9]+)\\s+.*class=.?\1.*>.*<\/\\1>||g/g;s/^a\[\(.*\)\]/s|<a.*\1.*>.*<\/a>||g/g;s/^\([a-zA-Z0-9]*\)\.\(.*\)\[.*\]\[.*\]*/s|<\1.*class=.?\2.*>.*<\/\1>||g/g;s/^\([a-zA-Z0-9]*\)#\(.*\):.*[:[^:]]*[^:]*/s|<\1.*id=.?\2.*>.*<\/\1>||g/g;s/^\([a-zA-Z0-9]*\)#\(.*\)/s|<\1.*id=.?\2.*>.*<\/\1>||g/g;s/^\[\([a-zA-Z]*\).=\(.*\)\]/s|\1^=\2>||g/g;s/\^/[\/\&:\?=_]/g;s/\.\([a-zA-Z0-9]\)/\\.\1/g' ${FILE} >> ${FILTER} + echo "{ +filter{${LIST}} }" >> ${ACTION} + echo "*" >> ${ACTION} + echo "{ -block }" >> ${ACTION} + sed '/^@@.*/!d;s/^@@//g;/\$.*/d;/#/d;s/\./\\./g;s/\?/\\?/g;s/\*/.*/g;s/(/\\(/g;s/)/\\)/g;s/\[/\\[/g;s/\]/\\]/g;s/\^/[\/\&:\?=_]/g;s/^||/\./g;s/^|/^/g;s/|$/\$/g;/|/d' ${FILE} >> ${ACTION} + echo "{ -block +handle-as-image }" >> ${ACTION} + sed '/^@@.*/!d;s/^@@//g;/\$.*image.*/!d;s/\$.*image.*//g;/#/d;s/\./\\./g;s/\?/\\?/g;s/\*/.*/g;s/(/\\(/g;s/)/\\)/g;s/\[/\\[/g;s/\]/\\]/g;s/\^/[\/\&:\?=_]/g;s/^||/\./g;s/^|/^/g;s/|$/\$/g;/|/d' ${FILE} >> ${ACTION} + +Nähere Infos unter: +`​http://andrwe.org/doku.php/scripting/bash/privoxy-blocklist <http://andrwe.org/doku.php/scripting/bash/privoxy-blocklist>`__ + +If you want to store the action and filter file external in stead of +flash: + +.. code:: bash + + ACTION=/var/media/ftp/uFlash/privoxy/user.action + FILTER=/var/media/ftp/uFlash/privoxy/user.filter + +.. code:: bash + + rm /tmp/flash/privoxy/user.filter + rm /tmp/flash/privoxy/user.action + ln -s /var/media/ftp/uFlash/privoxy/user.filter /tmp/flash/privoxy/user.filter + ln -s /var/media/ftp/uFlash/privoxy/user.action /tmp/flash/privoxy/user.action + modsave + +.. _Installation: + +Installation +------------ + +Das Paket kann während der +`Freetz-Installation <../help/howtos/common/install.html>`__ einfach mit +ausgewählt werden, und wird somit Bestandteil der selbstgebauten +Firmware. + +.. _Diskussion: + +Diskussion +---------- + +Fragen und Anmerkungen zu diesem Paket werden in `​diesem +Thread <http://www.ip-phone-forum.de/showthread.php?t=115778>`__ +diskutiert. + +- Tags +- `daemons </tags/daemons>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `privacy </tags/privacy>`__ +- `proxy </tags/proxy>`__ +- `server </tags/server>`__ +- `transparent </tags/transparent>`__ +- `werbung </tags/werbung>`__ diff --git a/wiki/packages/prosody.en.rst b/wiki/packages/prosody.en.rst new file mode 100644 index 0000000..75017ac --- /dev/null +++ b/wiki/packages/prosody.en.rst @@ -0,0 +1,45 @@ +.. _ProsodyIM: + +Prosody IM +========== + +"*Prosody is a flexible communications server for Jabber/XMPP written in +Lua. It aims to be easy to use, and light on resources. For developers +it aims to be easy to extend and give a flexible system on which to +rapidly develop added functionality, or prototype new protocols.*" + +**This package is a work in progress!** + +.. _Configuration: + +Configuration +------------- + +- Forward TCP ports 5222 (client-to-server) and 5269 (server-to-server) + using the `AVM-Firewall <avm-firewall.html>`__ package +- Define a virtual host for your (sub)domain + + - The (sub)domain should point to your FritzBox + +- Creating users: + + - Check *Allow registration* (temporarily) to create your account(s) + from a XMPP client + - Or use *prosodyctl adduser [user]@[domain]* + +- Generate and configure a private key and belonging server certificate + (free at `​cacert.org <http://www.cacert.org/>`__) + +.. _Links: + +Links +----- + +- `​Prosody IM homepage <http://prosody.im/>`__ +- `​Ticket with patches <http://trac.freetz.org/ticket/858>`__ +- `​Lua homepage <http://www.lua.org/>`__ +- `Lua package <lua.html>`__ +- `​Wikipedia: + XMPP <http://en.wikipedia.org/wiki/Extensible_Messaging_and_Presence_Protocol>`__ + (Jabber) +- `​OpenWrt thread <http://open-wrt.ru/forum/viewtopic.php?id=21643>`__ diff --git a/wiki/packages/prosody.rst b/wiki/packages/prosody.rst new file mode 100644 index 0000000..0c489e1 --- /dev/null +++ b/wiki/packages/prosody.rst @@ -0,0 +1,257 @@ +.. _ProsodyIM: + +Prosody IM +========== + +"*Prosody ist ein flexibler Jabber/XMPP-Server, geschrieben in der +Skriptsprache Lua. Die Ziele von Prosody sind einfache Bedienbarkeit und +geringe Systemauslastung.*" + +**Dieses Paket ist in Arbeit!** + +.. _Konfiguration: + +Konfiguration +------------- + +Zunächst kopieren wir uns die Beispielkonfiguration aus /var/mod/etc/: + +.. code:: bash + + cp /var/mod/etc/prosody.cfg.lua /var/tmp/flash/mod/prosody.cfg.lua + +Diese können wir dann mit vi bearbeiten: + +.. code:: bash + + vi /var/tmp/flash/mod/prosody.cfg.lua + +.. _VirtualHosthinzufügen: + +VirtualHost hinzufügen +~~~~~~~~~~~~~~~~~~~~~~ + +Zunächst sollte man einen VirtualHost konfigurieren, dazu verändert man +man die "example.com" in die gewünschte Domain und entfernt das enabled += false + +.. code:: bash + + VirtualHost "example.com" + enabled = false -- Remove this line to enable this host + +.. _SSLverwenden: + +SSL verwenden +~~~~~~~~~~~~~ + +Wenn man SSL verwenden möchte, benötigt man eine Zertifikat und einen +Schlüssel, diese kann man mit OpenSSL erstellen und auf ein externes +Speichermedium (z.B. USB-Stick) auf die FritzBox übertragen. + +Die Pfade dazu müssen in der prosody.cfg.lua entsprechend verändert +werden: + +.. code:: bash + + ssl = { + key = "/var/media/ftp/uStor01/certs/localhost.key"; + certificate = "/var/media/ftp/uStor01/certs/localhost.crt"; + } + +.. _InsInternetfreigeben: + +Ins Internet freigeben +~~~~~~~~~~~~~~~~~~~~~~ + +Damit der Prosodyserver auch im Internet verfügbar ist, muss man nun +noch die entsprechenden Ports auf die FritzBox weiterleiten. Dazu fügt +man in der `AVM-Firewall <avm-firewall.html>`__ die Einträge für den +TCP-Port 5222 (für client-zu-server) und 5269 (server-zu-server) auf die +IP der entsprechenden FritzBox (meist 0.0.0.0) hinzu. + +.. _Benutzerhinzufügen: + +Benutzer hinzufügen +~~~~~~~~~~~~~~~~~~~ + +Das Hinzufügen von Benutzern ist standardmäßig aus Sicherheitsgründen +deaktiviert. Dies kann man in der prosody.lua.cfg temporär ändern, indem +man false bei Allow registration auf true setzt. Danach kann man sich +mit einem XMPP-Client registrieren. + +Alternativ kann man mit der Shell Benutzer erstellen: + +.. code:: bash + + prosodyctl adduser [Benutzer]@[Domain] + +.. _POSIXaktivieren: + +POSIX aktivieren +~~~~~~~~~~~~~~~~ + +Damit man prosody als Hintergrundprozess ausführen kann und damit man +logging aktivieren kann, muss POSIX aktiviert werden. + +Zunächst aktiviert man das Modul in der prosody.cfg.lua: + +.. code:: bash + + modules_enabled = { + -- andere Module + "posix"; -- mod_posix aktivieren + } + +Zusätzlich wird noch ein pid-File benötigt, dazu fügen wir in der +prosody.cfg.lua an: + +.. code:: bash + + pidfile = "/var/tmp/flash/mod/prosody.pid" + +.. _Datenexternspeichern: + +Daten extern speichern +~~~~~~~~~~~~~~~~~~~~~~ + +Damit die Benutzerdateien nicht auf der FritzBox sondern auf einem +externen Medium gespeichert werden, erstellt man eine symbolische +Verlinkung: + +.. code:: bash + + ln -s /var/media/ftp/uStor01/prosody/data /var/tmp/flash/mod/prosody/ + +.. _Benutzerhinzufügen1: + +Benutzer hinzufügen +~~~~~~~~~~~~~~~~~~~ + +Damit prosody nicht mit root-Rechten geöffnet werden muss, wird ein +anderer Benutzer benötigt. Diesen kann man mithilfe der Shell erstellen: + +.. code:: bash + + addgroup prosody + adduser -G prosody prosody + chown -R prosody:prosody /var/mod/home/prosody + +.. _BeiSystemstartausführen: + +Bei Systemstart ausführen +~~~~~~~~~~~~~~~~~~~~~~~~~ + +Wenn man die Daten nicht extern speichert, reicht es, wenn mit vi +/tmp/flash/mod/rc.custom folgendes hinzufügt: + +.. code:: bash + + prosodyctl start + +Wenn man die Daten extern speichert, sollte man in das Verzeichnis +/var/tmp/flash/mod wechseln und dort die folgenden Dateien anlegen: + +.. code:: bash + + root@fritz:/var/tmp/flash/mod# vi rc.prosody + #!/bin/sh + + start() { + /usr/bin/prosodyctl start + } + + stop() { + /usr/bin/prosodyctl stop + } + + case $1 in + ""|start) + start + ;; + stop) + stop + ;; + *) + echo "Usage: $0 [start|stop]" 1>&2 + exit 1 + ;; + esac + + exit 0 + +.. code:: bash + + root@fritz:/var/tmp/flash/mod# vi rc.external + #!/bin/sh + case $1 in + load) + ;; + unload) + sh /etc/init.d/rc.ngircd stop + sh /etc/init.d/rc.prosody stop + ;; + esac + + eventadd 1 "Running custom rc.external done." + +.. code:: bash + + root@fritz:/var/tmp/flash/mod# vi /var/tmp/flash/onlinechanged-cgi + case "$1" in + start) + # Kommandos beim Start des Routers + # ggf. sollten hier die Entraege von online) stehen + ;; + online) + # Kommandos wenn der Router online geht (zB Zwangstrennung) + # + sleep 2; + /var/tmp/flash/mod/rc.prosody start; + ;; + offline) + # Kommandos wenn der Router offline geht (zB Zwangstrennung) + /var/tmp/flash/mod/rc.prosody stop; + sleep 2; + ;; + esac + +.. _Änderungenspeichern: + +Änderungen speichern +~~~~~~~~~~~~~~~~~~~~ + +|Warning| Damit diese Änderung beim Neustart erhalten bleibt müssen diese +gespeichert werden: + +.. code:: bash + + modsave all + +.. _Prosodyausführen: + +Prosody ausführen +----------------- + +Prosody kann auch manuell gestartet werden mit: + +.. code:: bash + + prosodyctl start + +.. _Links: + +Links +----- + +- `​Prosody IM homepage <http://prosody.im/>`__ +- `​Ticket with patches <http://trac.freetz.org/ticket/858>`__ +- `​Lua homepage <http://www.lua.org/>`__ +- `Lua package <lua.html>`__ +- `​Wikipedia: + XMPP <http://en.wikipedia.org/wiki/Extensible_Messaging_and_Presence_Protocol>`__ + (Jabber) +- `​OpenWrt thread <http://open-wrt.ru/forum/viewtopic.php?id=21643>`__ + +.. |Warning| image:: ../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/packages/quagga.rst b/wiki/packages/quagga.rst new file mode 100644 index 0000000..4369607 --- /dev/null +++ b/wiki/packages/quagga.rst @@ -0,0 +1,47 @@ +.. _Quagga: + +Quagga +====== + +`​Quagga <http://www.quagga.net/>`__ ist eine Routing-Software Suite, +die Implementierungen für +`​OSPF <http://de.wikipedia.org/wiki/OSPF>`__\ v2, OSPFv3, +`​RIP <http://de.wikipedia.org/wiki/Routing_Information_Protocol>`__ v1 +und v2, RIPng and `​BGP <http://de.wikipedia.org/wiki/BGP>`__-4 für +Unix-Plattformen bietet. *Quagga* ist ein Fork von `​GNU +Zebra <http://www.zebra.org/>`__, und basiert auf dem Server-Client +Modell. + +Dieses Paket enthält derzeit noch keine Konfigurationshilfe; die +Konfigurationsdateien lassen sich jedoch über das Web-Interface +bearbeiten. + +|Warning| **Wer nicht weiß, wie die Routing-Daemons zu konfigurieren sind, +sollte dieses Paket NICHT installieren''' Warning** + +Ein sicheres Konfigurations-Interface ist allerdings in Arbeit… + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​Quagga Homepage <http://www.quagga.net/>`__ +- `​Quagga Dokumentation <http://www.quagga.net/docs.php>`__ +- `​Quagga Wiki <http://wiki.quagga.net/>`__ +- Quagga IRC channel: irc:irc.freenode.net#quagga +- `​Wikipedia + Artikel <http://de.wikipedia.org/wiki/Quagga_(Software)>`__ +- `​Quagga auf + OpenWRT <http://martybugs.net/wireless/openwrt/quagga.cgi>`__ + +-------------- + +- Tags +- `daemons </tags/daemons>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `routing </tags/routing>`__ + +.. |Warning| image:: ../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/packages/radvd.en.rst b/wiki/packages/radvd.en.rst new file mode 100644 index 0000000..0bce7ce --- /dev/null +++ b/wiki/packages/radvd.en.rst @@ -0,0 +1,157 @@ +.. _RADVD: + +RADVD +----- + +| The router advertisement daemon (RADVD) allows to both Linux and + Windonws clients to obtain an IPv6 IP address, without any changes on + the clients. +| More info about RADVD can be found via: + `​http://www.litech.org/radvd/ <http://www.litech.org/radvd/>`__ + +.. _RequestasubnetfromSixXS: + +Request a subnet from SixXS +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +| I hope you have enough points left to request a subnet from SixSX. +| If not, make sure you have Aiccu up for a few weeks, see the + `​creadits FAQ <http://www.sixxs.net/faq/account/?faq=credits>`__. + +| You can request a subnet from your SixXS `​home + page <https://www.sixxs.net/home/>`__ +| At the left on your home page you should find a list of options from + which you should select `​Request + subnet <https://www.sixxs.net/home/requestsubnet/>`__. + +.. _CreatingaFeetzImagewithRadvd: + +Creating a Feetz Image with Radvd +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +| Follow the directions from the `/wiki/WikiStart.en# + Wiki <../index.en.html#%20Wiki>`__ +| After the following step you can configure the packages you want to + have included in your image. + +.. code:: bash + + make menuconfig + +Make sure the following is selected: + +.. code:: bash + + [*] Show advanced options + [*] Enable IPv6 support + +.. code:: bash + + Package selection ---> Standard packages ---> [*] radvd (router advertisement daemon) + +I also advice to add the following for easier troubleshooting: + +.. code:: bash + + Advanced options ---> BusyBox options ---> IPv6 Options ---> [*] ping6 command + Advanced options ---> BusyBox options ---> IPv6 Options ---> [*] traceroute6 command + +.. _PatchingFreetz-1.2withClientconfigoption: + +'Patching' Freetz-1.2 with Client config option +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +| Due to an application that is not supported on later versions, I + prever to stay on Freetz-1.2. +| But due to issues with other IPv6 enabled devices, I would like to + include enhancement `1921 </ticket/1921>`__ also in Freetz-1.2. + +With the following commands executed before make you can have this +enhancement included also: + +.. code:: bash + + cd ~/freetz-1.2/make/radvd/files/root/etc/default.radvd/ + wget "/browser/trunk/make/radvd/files/root/etc/default.radvd/radvd.cfg?rev=9419&format=txt" -O radvd.cfg + cd ~/freetz-1.2/make/radvd/files/root/etc/default.radvd/ + wget "/browser/trunk/make/radvd/files/root/etc/default.radvd/radvd_conf?rev=9453&format=txt" -O radvd_conf + cd ~/freetz-1.2/make/radvd/files/root/usr/lib/cgi-bin/ + wget "/browser/trunk/make/radvd/files/root/usr/lib/cgi-bin/radvd.cgi?rev=9444&format=txt" -O radvd.cgi + +.. _SetupinFreetzweb-interface: + +Setup in Freetz web-interface +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In the setup it is 'sufficient' to just configure a /64 from your /48 +you received from SixXS. E.g. you can pick the first possilbe /64 range +2001:aaaa:bbbb:0000::/64 + +Network range - 2001:aaaa:bbbb:0000:0000:0000:0000:0000 - +2001:aaaa:bbbb:0000:ffff:ffff:ffff:ffff + +**Note** In below screenshot enhancement `1921 </ticket/1921>`__ is +included. + +.. figure:: /screenshots/236.jpg + :alt: Howto setup radvd + + Howto setup radvd + +| To prevent unexpected reboots I had to unselect the 'Activate on start + resp. deactivate on stop the IPv6 forwarding' on my FB-7270v3. + +.. _LinuxClients: + +Linux Clients +~~~~~~~~~~~~~ + +Not much to tell here. The output of ifconfig should show that it +recieved an IPv6 address, starting with your configured subnet and +ending with part of your MAC address in there. + +There should also be a default IPv6 route pointing to the IPv6 gateway +(the router). + +.. _WinXPClients: + +WinXP Clients +~~~~~~~~~~~~~ + +| With my WinXP system I had no problems to obtain an IPv6. All I had to + do was to was to enable IPv6 with: + +.. code:: bash + + netsh interface ipv6 install + +| Then you should see that you get two IPv6 addresses. One public and a + temporary one. +| You can also see them with: + +.. code:: bash + + netsh interface ipv6 show address + +.. _Win7Clients: + +Win7 Clients +~~~~~~~~~~~~ + +| I have two Win7 systems. One that was not mutch used with IPv6, and + one where I used AICCU locally as a service at startup. +| The one that was not mutch used with IPv6 obtained an IPv6 address + immediately. With the other one it took more effort. +| After modifying the service to only startup manually I didn't obtain + an IPv6 address from RADVD, even after a reboot. + +| If you have a similar problem you can try the following: + +- firt make sure you create a restore point. +- | next use the following commands (note I used both commands without + verifying correctly which one was needed): + + .. code:: bash + + netsh int ipv6 reset c:\ipv6_reset.log + netsh interface isatap set state enabled diff --git a/wiki/packages/radvd.rst b/wiki/packages/radvd.rst new file mode 100644 index 0000000..9475b06 --- /dev/null +++ b/wiki/packages/radvd.rst @@ -0,0 +1,20 @@ +.. _Radvd: + +Radvd +===== + +Router advertisement daemon for IPv6. + +Mostly used together with package `aiccu <aiccu.html>`__. + +Note that the subnet address prefix for sixxs should be /64, see +`​here <http://www.sixxs.net/faq/connectivity/?faq=usingsubnet&os=linux.router>`__. + +.. _Links: + +Links +----- + +- `​Sixxs.net <http://www.sixxs.net/>`__ +- `​Man page <http://linux.die.net/man/8/radvd>`__ +- `​Man page <http://linux.die.net/man/5/radvd.conf>`__ radvd.conf diff --git a/wiki/packages/rrdstats.rst b/wiki/packages/rrdstats.rst new file mode 100644 index 0000000..6742866 --- /dev/null +++ b/wiki/packages/rrdstats.rst @@ -0,0 +1,289 @@ +.. _RRDstats: + +RRDstats +======== + +.. figure:: /screenshots/229.jpg + :alt: RRDstats screenshot + + RRDstats screenshot + +.. _Einleitung: + +Einleitung +---------- + +RRD steht für Round Robin Database und wurde für Linux und Windows unter +der GNU-Lizenz von Tobias Oetiker entwickelt. Es ist ein sehr +leistungsfähiges Werkzeug, um zeitbezogene Messdaten wie Temperatur, +Festplattenauslastung, Netzwerkverkehr auf kompakte Art und Weise in +einer Datenbank zu speichern und ansprechend zu visualisieren. Weitere +Details sind hier im Wiki beim Paket `RRDtool <rrdtool.html>`__ +nachzulesen. Um die Daten nachher graphisch darzustellen, wird rrdstats +verwendet, worum es hier im Detail geht. Das Package +`DigiTemp <digitemp.html>`__ wird zum Aufzeichen von Temperaturwerten +benötigt. + +.. _VoraussetzungenundEinbauvonRRDstatsbeimFirmware-Bau: + +Voraussetzungen und Einbau von RRDstats beim Firmware-Bau +--------------------------------------------------------- + +Im ``menuconfig``: + +- Package selection / Web interface / RRDstats for RRDtool [selektiert + automatisch auch RRDtool 1.2.30 unter "Package selection / Testing"] +- *nur für DigiTemp:* Package selection / Testing / digitemp 3.0.6 / + digitemp for ds9097 [mit den beiden anderen Optionen ging es (bei ao) + nicht] Ich (cuma) nutze "ds2490" mit dem "DS9490R". Hierbei sind + keine zusätzlichen Module nötig. +- *nur für DigiTemp:* Advanced options / Kernel modules / drivers / + pl2303.ko [habe für einen anderen Adapter zusätzlich auch noch + ftdi_sio.ko ausgewählt] +- *nur für Kabelmodem:* Optional das Package "wget" installieren. + Dadurch werden Ausfälle bei Nichterreichbarkeit des Kabelmodem + vermieden, es ist aber ca 350 kB gross. + +Auf der Box: + +- *nur für DigiTemp:* im Freetz-WebGUI unter "Einstellungen / + Freetz:modules das bzw. die Kernel-Modul(e) untereinander eintragen + (aber ohne "modprobe" o.ä.!) + +.. code:: bash + + pl2303 + ftdi_sio + +- im Freetz-Webif unter "RRDstats" weitere Einstellungen vornehmen + +.. _Backup: + +Backup +------ + +Sinnvoll ist die Anpassung der Pfade, falls man regelmäßige Backups der +Messdaten machen möchte, z.B.: + +.. code:: bash + + Backup Verzeichnis: /var/media/ftp/uStor01/rrdstats/backup + +… und im Freetz-WebGUI bei den RRDstats-Einstellungen das automatisch +Wiederherstellen von Backups beim Starten aktivieren + +Wenn man die Backups nun regelmäßig mittels eines cronjobs durchführt, +z.B. alle 20-30 Minuten, sind die Lücken in den Graphen bei entsprechend +kurzen Box-Ausfallzeiten auch nicht zu groß. Im Freetz-WebGUI gibt man +dazu unter "Einstellungen / Freetz: crontab" z.B. folgendes ein: + +.. code:: bash + + 00 * * * * /etc/init.d/rc.rrdstats backup + 20 * * * * /etc/init.d/rc.rrdstats backup + 40 * * * * /etc/init.d/rc.rrdstats backup + +Näheres zu crontab bitte im Internet nachlesen. + +.. _EinstellungenWebGUI: + +Einstellungen WebGUI +-------------------- + +"Not lazy" bedeutet, dass die Graphen immer neu generiert werden, +hingegen bedeutet "lazy", dass sie nur neu generiert werden, wenn sie +veraltet sind. Die Einstellung "lazy" (bzw. das Abschalten von "not +lazy") verringert die CPU-Last. + +Vefügbare Netzwerkintrafaces auf der Box kann man so ermitteln: +``ifconfig |grep -v "^ "`` + +|Warning| Das Unterdrücken der 85°C Fehlerwerte wirkt sich nur auf die .rrd +Dateien aus, nicht auf die .cvs. + +*Die anderen Einstellungen dürften selbsterklärend sein. Falls nicht, +bitte im Forum nachfragen und bei neuen Erkenntnissen hier ergänzen.* + +.. _DigiTemp: + +DigiTemp +-------- + +| Die Initialisierung ist nur 1x pro Messfühler nötig. +| Danach muss der Dienst "RRDstats" manuell wieder im Freetz-Webif unter + "Dienste" gestartet werden + +.. _Kabelmodem: + +Kabelmodem +---------- + +.. figure:: /screenshots/253.jpg + :alt: RRDstats Cisco EPC (S-N Ratio) + + RRDstats Cisco EPC (S-N Ratio) + +.. figure:: /screenshots/252.jpg + :alt: RRDstats Cisco EPC (Signal) + + RRDstats Cisco EPC (Signal) + +Es werden die Kabelmodems Thomson THG 520 und 540, Cisco EPC 3212 und +Arris Touchstone TM sowie baugleiche unterstützt. + +.. _LoggenderKanäle: + +Loggen der Kanäle +~~~~~~~~~~~~~~~~~ + +| Sollen mehr Kanäle geloggt werden als beim Erstellen der Datenbank + eingestellt waren, ist es an einfachsten die epc_*.rrd zu löschen. +| Bereits aufgezeichneten Daten weiterzuverwenden ist aufwändiger, da + rrdtool keine Möglichkeit bietet nachträglich einen DS hinzuzufügen. + Dazu: + +- Datensicherung! +- Die Daten exportieren: ``rrdtool dump epc_60.rrd dump.xml`` +- | DS Spalten hinzufügen. Hier am Beispiel 1 Upstreamkanal auf 2 + erweitern: + | 1) Am Anfang der dump.xml vor den Zeilen + + .. code:: bash + + <ds> + <name> up </name> + + dies hinzufügen + + .. code:: bash + + <name> txfq2 </name> + <type> GAUGE </type> + <minimal_heartbeat> 600 </minimal_heartbeat> + <min> 9.0000000000e+00 </min> + <max> 9.9000000000e+01 </max> + + <!-- PDP Status --> + <last_ds> UNKN </last_ds> + <value> NaN </value> + <unknown_sec> 25 </unknown_sec> + </ds> + + <ds> + <name> txdb2 </name> + <type> GAUGE </type> + <minimal_heartbeat> 600 </minimal_heartbeat> + <min> 0.0000000000e+00 </min> + <max> 9.9000000000e+01 </max> + + <!-- PDP Status --> + <last_ds> UNKN </last_ds> + <value> NaN </value> + <unknown_sec> 25 </unknown_sec> + </ds> + + 2) 12 Zeilen vor allen ``</cdp_prep>`` Zeilen dies hinzufügen + + .. code:: bash + + <ds> + <primary_value> 0.0000000000e+00 </primary_value> + <secondary_value> 0.0000000000e+00 </secondary_value> + <value> NaN </value> + <unknown_datapoints> 0 </unknown_datapoints> + </ds> + <ds> + <primary_value> 0.0000000000e+00 </primary_value> + <secondary_value> 0.0000000000e+00 </secondary_value> + <value> NaN </value> + <unknown_datapoints> 0 </unknown_datapoints> + </ds> + + 3) Nun noch alle Zeilen die mit ``</row>`` enden zwischen das + drittletzte und vorletzte ``<v> ... </v>`` dies einfügen: + ``<v> NaN </v> <v> NaN </v>``. + +- Geänderte Datenbank erstellen: + ``rrdtool restore dump.xml epc_60.rrd -f`` + +Viel Spass und Erfolg beim nachmachen |:)| + +.. _Kabelsegment: + +Kabelsegment +------------ + +.. figure:: /screenshots/257.jpg + :alt: RRDstats Kabelsegment + + RRDstats Kabelsegment + +Hiermit kann die Auslastung des Segmentes von Kabelinternet aufzeichnet +werden. Es wird zusätzlich noch ein Treiber benötigt. Momentan gibt es +nur ein Package für DVB-Sticks von `Sundtek <sundtek.html>`__. Vorteil +dieser ist, dass man kein v4l im Kernel benötigt. + +.. _Datenbanken: + +Datenbanken +~~~~~~~~~~~ + +Bis zu `r11010 </changeset/11010>`__ konnte mit einem Intervall von 60 +Sekunden 146 Tage aufgezeichnet werden, mit 150 Sekunden 1 Jahr. Ab +dieser Revision werden die Datenbanken von DigiTemp und +RRDstats-Kabelsegment mit 2 Jahren bei 60 Sekunden \*erstellt*. Damit +wachsen die einzelnen Dateien von ~85kB auf ~150kB. Existierende +rrd-Datenbanken kann man so neue RRAs hinzufügen: +`DigiTemp#Datenbank <digitemp.html#Datenbank>`__ + +.. _Dateiübersichtunvollständig: + +Dateiübersicht (unvollständig) +------------------------------ + +Folgende Dateien/Pfade sind an der Erstellung der Graphischen Auswertung +beteiligt: + +- ``/usr/lib/cgi-bin/rrdstats/stats.cgi``: Diverses Feintuning kann man + in der Datei vornehmen. Erstellt die png Graphen, aus den rrd + Dateien. Es lassen sich z.B. slopes u.ä. hinzufügen. Ein paar + Hinweise dazu gibt es in `​diesem + IPPF-Thread <http://www.ip-phone-forum.de/showpost.php?p=1250750&postcount=44>`__. + Zum manuellen generieren der Graphen (z.B. durch cron) kann der neue + Parameter "graph" von rc.rrdstats genutzt werden + +- ``/usr/bin/rrdstats``: Dieses Shellskript dient dem einsammeln der + anzuzeigenden Werte, erstellt csv Dateien und pflegt die neuen Werte + in die Round Robin Database über `RRDtool <rrdtool.html>`__ ein. + +.. _BUGS: + +BUGS +---- + +Manchmal kann es vorkommen, dass die Zähler / Graphiken für CPU, Memory +etc. nicht mehr verfügbar sind. Im Persistenten Verzeichnis (Dienste - +RRDStats) sind dann leere Dateien für den jeweiligen counter zu finden. +Abhilfe schafft ein stoppen des Dienstes, löschen der leeren Dateien und +erneutes starten des Dienstes. Dabei werden die fehlenden Dateien erneut +korrekt angelegt und der Fehler ist weg. Verursacht wahrscheinlich durch +eine fehlerhaftes Datum auf der Fritzbox (Jahr 2017-Problem). + +Die Dateien können auf ihre Konsistenz mit +``rrdtool dump dateiname.rrd`` überprüft werden. + +.. _Links: + +Links +----- + +Entstanden aus diesem Thread im IPPF: +`​http://www.ip-phone-forum.de/showthread.php?t=183491 <http://www.ip-phone-forum.de/showthread.php?t=183491>`__ + +- Tags +- `monitoring </tags/monitoring>`__ +- `packages <../packages.html>`__ + +.. |Warning| image:: ../../chrome/wikiextras-icons-16/exclamation.png +.. |:)| image:: ../../chrome/wikiextras-icons-16/smiley.png + diff --git a/wiki/packages/rrdtool.rst b/wiki/packages/rrdtool.rst new file mode 100644 index 0000000..fc19ac0 --- /dev/null +++ b/wiki/packages/rrdtool.rst @@ -0,0 +1,46 @@ +.. _RRDTool: + +RRDTool +======= + +.. _Einleitung: + +Einleitung +---------- + +RRD steht für Round Robin Database und wurde für Linux und Windows unter +der GNU-Lizenz von Tobias Oetiker entwickelt. Es ist ein sehr +leistungsfähiges Werkzeug, um zeitbezogene Messdaten wie Temperatur, +Festplattenauslastung, Netzwerkverkehr auf kompakte Art und Weise in +einer Datenbank zu speichern und ansprechend zu visualisieren. Die +Messdaten können beispielsweise über einfache Skriptsprachen wie +`Bash <bash.html>`__ oder auch mit Hilfe komplexer Webanwendungen wie +`​Cacti <http://de.wikipedia.org/wiki/Cacti>`__ aufbereitet und dem +`​RRDtool <http://www.rrdtool.org/>`__ übergeben werden." (Wikipedia) + +.. _RRDstats: + +RRDstats +-------- + +Mit `RRDstats <rrdstats.html>`__ lassen sich die Statistiken auch auf +der FritzBox grafisch anzeigen. Details dazu bitte dort nachlesen. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​RRDTool Homepage <http://www.rrdtool.org/>`__ +- `​RRDTool IrcNet Channel <http://www.krogloth.de/rrd/channel/>`__ +- `​Wikipedia Artikel <http://de.wikipedia.org/wiki/RRDtool>`__ +- `​RRDTool <http://oss.oetiker.ch/rrdtool/>`__ +- `​RRDTool - Warum und + Wie? <http://www.msexchangefaq.de/tools/rrdtool.htm>`__ (und viele + weiterführende Informationen zum Thema) +- `​Linux Magazin: Messdaten mit RRDtool und Perl + verwalten <http://www.linux-magazin.de/heft_abo/ausgaben/2004/06/daten_ausgesiebt>`__ + +- Tags +- `monitoring </tags/monitoring>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/ruby.rst b/wiki/packages/ruby.rst new file mode 100644 index 0000000..2f5e863 --- /dev/null +++ b/wiki/packages/ruby.rst @@ -0,0 +1,57 @@ +.. _Ruby: + +Ruby +==== + +`​Ruby <http://www.ruby-lang.org/de/>`__ ist eine dynamische +Programmiersprache mit dem Fokus auf Produktivität und Einfachheit. Es +verfügt über eine elegante Syntax, die sich natürlich liest und einfach +zu schreiben ist. Und dann ist das Ganze natürlich auch noch Open +Source… + +Das *Ruby* Paket enthält: + +- den *Ruby* Interpreter (ca. 800kb "stripped size") +- die interaktive *Ruby* Konsole (``irb``) +- das komplette *Ruby* + `​API <http://de.wikipedia.org/wiki/Programmierschnittstelle>`__ - + also alle ``*.rb`` Module (ca. 4.7MB) +- alle zugehörigen ``*.so`` Erweiterungs-Bibliotheken (ca. 1MB) + *Diese können auch statisch gelinkt oder weggelassen werden, aber + dafür gibt es (noch?) keinen Eintrag + in*\ `menuconfig <../help/howtos/common/install/menuconfig.html>`__\ *. + Wer dies also machen möchte, muss es "zu Fuß" nach den Angaben in der + ``README`` Datei tun.* + +Das summiert sich auf ca. 5.5MB für alle installierten Dateien, wobei +man ungewünschte noch manuell entfernen kann (dies muss nach +``make precompiled``, jedoch vor ``make`` passieren). Klingt jetzt echt +fett, aber: *Ruby* Module lassen sich wunderbar packen, so dass die +"volle Ladung" im gepackten Squash nur noch ca. 1.3MB Platz benötigt. +Wer also eine Box mit "mehr Speicher" (ab 8MB aufwärts) benutzt, kann +*Ruby* also durchaus auch in der Firmware selbst unterbringen. Naja, +u.U. muss dafür so einiges anderes weggelassen werden |:-)| + +|Warning| **Achtung:** Auf dem "Build-Host" muss die gleiche *Ruby* Version +installiert sein, die man für die Box bauen möchte! + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​Ruby Homepage <http://www.ruby-lang.org/de/>`__ +- `​Wikipedia + Artikel <http://de.wikipedia.org/wiki/Ruby_(Programmiersprache)>`__ +- `​WikiBooks: Ruby + Programmierung <http://de.wikibooks.org/wiki/Ruby-Programmierung>`__ + +-------------- + +- Tags +- `packages <../packages.html>`__ +- `programming </tags/programming>`__ + +.. |:-)| image:: ../../chrome/wikiextras-icons-16/smiley.png +.. |Warning| image:: ../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/packages/rudi-shell.rst b/wiki/packages/rudi-shell.rst new file mode 100644 index 0000000..2abf331 --- /dev/null +++ b/wiki/packages/rudi-shell.rst @@ -0,0 +1,127 @@ +.. _Rudi-Shell: + +Rudi-Shell +========== + +"Rudi" steht für rudimentär, denn wir haben es mit einem rudimentären +Shell-Ersatz via CGI-Interface zu tun. Ich hatte angefangen, ihn recht +komplex zu gestalten und mich dann eines Besseren besonnen: Small is +beautiful. Rudi kann inzwischen nicht weniger als ursprünglich geplant, +aber die Oberfläche ist puristischer als noch während der ersten +Entwicklungsphase. Nicht zuletzt sind auch die CGI-Quelldateien +inzwischen viel kleiner und einfacher geworden. Puristischere +Oberflächen erfordern andererseits etwas mehr Dokumentation, also +beschreibe ich im Folgenden, teils bebildert, was man mit Rudi so +anstellen kann - kurz: **alles!** + +.. _Feature-Übersicht: + +Feature-Übersicht +----------------- + +Mit Rudi kann man direkt über eine Weboberfläche Folgendes tun: + +- Beliebige (eingetippte oder per Copy & Paste ins Befehlsfenster + eingefügte) **Shell-Skripte** auf der FritzBox ausführen. Root-Rechte + sind selbstverständlich. +- In einer beliebig langen **Historie** der zuletzt eingegebenen + Befehle und Ausgaben(!) blättern, alte Befehle (bzw. Skripten) + editieren und/oder erneut ausführen +- Wählen, ob die **Befehls-Ausgabe in Textform** inline im Browser + angezeigt **oder als Datei-Download** gespeichert werden soll. Dieses + Konzept ist sehr mächtig, denn man kann z.B. die Ausgabe eines + *Tar*-Befehls so umleiten, daß man auf einfache Weise Backups + beliebiger Dateien oder Verzeichnisse anfertigen kann. +- Lokale **Dateien** (auch Archive) **hochladen** an einen beliebigen + Zielort auf der Box, um sie dort anschließend ggf. mit weiteren + Befehlen zu bearbeiten: Archiv auspacken, Patch für ``debug.cfg`` + einspielen, mittels `mini_fo <mini_fo.html>`__ (falls installiert) + nur lesbare Dateien zum Test mit einer Schattenkopie überschreiben + usw. + +.. _Systemvoraussetzungen: + +Systemvoraussetzungen +--------------------- + +Ich habe die Rudi-Shell entwickelt für den Danisahne-Mod, genauer gesagt +für Olivers (olistudent) Version mit Kernel 2.6. Getestet habe ich +konkret auf meiner FritzBox Fon WLAN 7170 mit Firmware 29.04.29, +ds-0.2.9_26-13, Kernel 2.6.13.1, Busybox 1.4.1, Haserl 0.9.16 +CGI-Handler. Grundsätzlich sollte meiner Meinung nach aber Folgendes +ausreichen (*ohne* DS-Mod/Freetz): + +.. _Server: + +Server +~~~~~~ + +- beliebige Box (genug Platz zum Speichern und Ausführen von Rudi + vorausgesetzt) +- beliebiger Kernel (2.4.x oder 2.6.x) +- beliebige `​Busybox <http://www.busybox.net/>`__-Version mit *httpd* + und *sed* +- beliebige `​Haserl <http://haserl.sourceforge.net/>`__-Version (z.B. + die aktuelle *stable* 0.8.0) + +.. _Client: + +Client +~~~~~~ + +- Web-Browser mit eingeschaltetem + `​Javascript <http://de.wikipedia.org/wiki/JavaScript>`__; getestetet + mit IE7, Opera 9.10, Firefox 2.0.0.2. Es wird ein wenig Javascript + benutzt, um im + `​DOM <http://de.wikipedia.org/wiki/Document_Object_Model>`__ zu + navigieren, die Historie zu steuern und + `​CGI <http://de.wikipedia.org/wiki/Common_Gateway_Interface>`__-Unterprozesse + in einem unsichtbaren + `​IFrame <http://de.wikipedia.org/wiki/Iframe>`__ auszuführen und mit + deren Ergebnisse die Hauptseite zu aktualisieren (Konsolenausgabe). + +.. _WasNICHTgebrauchtwird: + +Was NICHT gebraucht wird +~~~~~~~~~~~~~~~~~~~~~~~~ + +- Auf dem Server sind grundsätzlich weder Telnet noch + `SSH <dropbear.html>`__ noch `OpenVPN <openvpn.html>`__ notwendig, + d.h. Rudi sollte auch (und gerade) für "schwachbrüstige" Boxen mit + wenig Speicher interessant sein. +- Eine Dateisystem-Verbindung, gleich in welche Richtung, ist auch + nicht notwendig. D.h., wir brauchen weder `Samba <samba.html>`__ noch + smbmount noch `NFS <nfs.html>`__. +- Es ist keine Filetransfer-Verbindung via FTP notwendig, alles läuft + mittels HTTP, auch Up- und `Downloads <../Download.html>`__. +- Zum Datenaustausch wird auch kein externes Speichermedium (USB-Stick, + Festplatte) und somit kein USB-Anschluß an der Box benötigt. + +.. _PlatzbedarfderRudi-Shell: + +Platzbedarf der Rudi-Shell +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- Der Patch besteht aus drei CGI-Skripten im horrenden |;-)| + Gesamtumfang von 3,5 KB sowie ggf. einer Textzeile für das Menü von + Freetz. +- Hinzu kommt Haserl. Das Binary meiner Version 0.9.16 für Kernel 2.6 + ist knapp 24 KB groß. Im Vergleich dazu ist bereits + `bftpd <bftpd.html>`__ 67 KB groß (und man kann weniger damit tun!) + und `Dropbear <dropbear.html>`__ mit 179 KB riesig. Ein + `Samba-Server <samba.html>`__ schlägt gar mit knapp 900 KB zu Buche. +- Rudi verwendet von sich aus keine temporären Dateien für die + auszuführenden Skripten oder die Befehlsausgaben. Alles läuft direkt + durch anonyme + `​UNIX-Pipes <http://de.wikipedia.org/wiki/Pipe_%28Informatik%29#Unix>`__, + von der Eingabe über die Verarbeitung bis zur Ausgabe. Lediglich, + wenn der Benutzer selbst Dateien durch Ausgabeumleitung oder + Datei-Uploads erstellt, wird Platz im Dateisystem benötigt. + +- Tags +- `cgi </tags/cgi>`__ +- `packages <../packages.html>`__ +- `tools </tags/tools>`__ + +.. |;-)| image:: ../../chrome/wikiextras-icons-16/smiley-wink.png + diff --git a/wiki/packages/rudi-shell/functions.rst b/wiki/packages/rudi-shell/functions.rst new file mode 100644 index 0000000..4bbbf3e --- /dev/null +++ b/wiki/packages/rudi-shell/functions.rst @@ -0,0 +1,71 @@ +.. _Funktionsweise: + +Funktionsweise +============== + +.. figure:: /screenshots/39.gif + :alt: Freetz Menü + + Freetz Menü + +Der Einstieg in die Rudi-Shell erfolgt in Freetz übers Hauptmenü (siehe +Bild). Direkt kann sie ebenfalls erreicht werden, und zwar über +`​http://fritz.box:81/cgi-bin/rudi_shell.cgi <http://fritz.box:81/cgi-bin/rudi_shell.cgi>`__. + +Die Oberfläche präsentiert sich spartanisch, aber funktionell und +besteht aus folgenden Elementen: + +- Mehrzeiliges **Eingabefenster** für + `​UNIX-Shell <http://de.wikipedia.org/wiki/Unix-Shell>`__-Skripte. + Verwendet wird die auch von der Original-Firmware bekannte + Standard-Shell ``/bin/sh`` der Busybox, die + `​ash <http://en.wikipedia.org/wiki/Almquist_shell>`__ (eine + `​Bourne-Shell <http://de.wikipedia.org/wiki/Bourne_Shell#Die_Bourne-Shell>`__-Variante). +- **Ausführen-Knopf**, um die Skripten zur FritzBox zu schicken und + dort auszuführen. +- **Ergebnis-Ausgabe** (scrollbar) im unteren Fensterbereich. Dorthin + werden Standard- und Fehlerausgabe der Shell umgelenkt, sofern nichts + anderes angegeben ist. +- **Befehls-Historie**, bestehend aus einer numerierten Auswahlliste. + #0 ist immer die zuletzt eigegebene Befehlsfolge, die höheren Nummern + sind entsprechend ältere Skripten. Die Anzahl der Einträge ist + grundsätzlich unbegrenzt. Sollte der Browser irgendwann langsamer + werden, weil er zu viele Informationen puffert, einfach auf den + **Löschen-Knopf** drücken. +- `Download <../../Download.html>`__\ **-Schalter**, um die + Befehls-Ausgabe anstatt auf der Konsole als Datei zu empfangen. + Normalerweise hat der `Download <../../Download.html>`__ den (im + Speichern-Dialog des Browsers änderbaren) Namen *rudi_download*. +- Kreuzt man zusätzlich einen der **Dateiendung-Schalter (.tar, .gz)** + an, wird die entsprechende Endung (oder beide zusammen, also .tar.gz) + an den Namensvorschlag angehängt. Das dient nur zur Bequemlichkeit, + man kann es auch selbst beim Speichern machen. Für Benutzer mit + `Download <../../Download.html>`__-Manager und ausgeschaltetem + Speichern-Dialog ist es so ein bißchen einfacher. |Warning| Achtung: Die + Schalter ändern *nicht* das Dateiformat, nur die Dateiendung. +- **Datei-Uploads** werden über die beiden Textfelder "Quelldatei" und + "Zieldatei" abgewickelt. Die Quelldatei kann mit "Durchsuchen" direkt + über einen Datei-Browser ausgewählt werden, die Zieldatei hat den + änderbaren Vorschlagsnamen ``/var/tmp/rudi_upload``. Es sollte + natürlich ein existierendes, beschreibbares Verzeichnis gewählt + werden. Ein nicht existierendes kann ja vorher über die + Befehlseingabe erzeugt werden. |Warning| **Achtung:** Bitte nicht + versuchen, Dateien nach ``/var/flash`` hochzuladen. Immer erst + temporär woanders speichern und mittels ``cat`` ins *tffs* schreiben! + |Warning| + +|Warning| **Achtung, besonders wichtig: Die Rudi-Shell, insbesondere die +Historie, funktioniert ohne Navigation auf der Hauptseite. D.h., Sie +brauchen weder die Schaltflächen "Vor/Zurück" noch "Neu laden" des +Browsers. Im Gegenteil, wenn Sie sie benutzen, werden erstens die +Historie gelöscht und zweitens alle Schalter und Textfelder auf ihre +Standardwerte zurückgesetzt.** |Warning| *Für die Techniker unter uns: +Alles, was an Rudi-Shell dynamisch ist, passiert in einem unsichtbaren +IFrame bzw. auf der Hauptseite durch javascript-basierte Änderungen am +DOM der Seite.* + +- Tags +- `rudi-shell </tags/rudi-shell>`__ + +.. |Warning| image:: ../../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/packages/rudi-shell/install.rst b/wiki/packages/rudi-shell/install.rst new file mode 100644 index 0000000..3adb2a2 --- /dev/null +++ b/wiki/packages/rudi-shell/install.rst @@ -0,0 +1,51 @@ +*Die Rudi-Shell ist fester Bestandteil von allen Freetz-Versionen. Diese +Anleitung bezieht sich auf den Vorgänger DS-Mod.* + +.. _Installation: + +Installation +============ + +Das Archiv ``rudi_shell.zip`` kann man als Dateianhang des ersten +Postings aus dem `​Forums-Thread zur +Rudi-Shell <http://www.ip-phone-forum.de/showthread.php?p=810641>`__ +herunter laden und entpacken. + +Nehmen wir an, wir setzen den DS-Mod ein (falls nicht, entfällt dieser +erste Schritt). Dann müssen wir das Menü anpassen. Schauen wir uns im +Mod-Verzeichnis die Datei ``root/usr/lib/libmodcgi.sh`` an und suchen +nach dem Menüeintrag "Extras". Dort fügen wir die Zeile für Rudi ein (im +Beispiel sieht man noch die bei Ihnen evtl. nicht vorhandene Zeile für +meinen Backup/Restore-Mod): + +.. code:: bash + + cat << EOF + <div id="extras"><a href="/cgi-bin/extras.cgi">Extras</a></div> + <div id="backup_restore"><a href="/cgi-bin/backup_restore.cgi">Sichern/Wiederherstellen</a></div> + <div id="rudi_shell"><a href="/cgi-bin/rudi_shell.cgi" target="_blank">Rudi-Shell</a></div> + </div> + EOF + +Der zweite einfache Schritt ist das Kopieren der drei CGI-Dateien + +- ``rudi_shell.cgi`` (Hauptseite) +- ``rudi_shellcmd.cgi`` (Befehlsausführung, Download) +- ``rudi_upload.cgi`` (Upload) + +nach ``root/usr/mww/cgi-bin``. Bitte anschließend nicht vergessen, die +Dateien mit ``chmod +x rudi*`` ausführbar zu machen! + +Schritt drei fällt nur an, falls Sie *Haserl* nicht sowieso schon in den +Mod integriert haben: Kopieren Sie eine der im Archiv enthaltenen +Dateien *haserl-0.9.16_26* (für Kernel 2.6) oder *haserl-0.8.0_24* +(Kernel 2.4) nach ``root/usr/bin/haserl`` und machen Sie sie ebenfalls +mit ``chmod`` ausführbar. Der Grund für die ältere Version für Kernel +2.4 ist einfach, daß ich für die dortige *uClibc-0.9.26* nicht selbst +kompiliere und mir eine vorhandene Version aus dem Forum, gebaut von +Oliver (olistudent), geschnappt habe. Ansonsten würde die 0.9.16 sicher +auch unter dem alten Kernel laufen, nur müßte man sie dafür mal +kompilieren. + +- Tags +- `rudi-shell </tags/rudi-shell>`__ diff --git a/wiki/packages/rudi-shell/limits.rst b/wiki/packages/rudi-shell/limits.rst new file mode 100644 index 0000000..888aef2 --- /dev/null +++ b/wiki/packages/rudi-shell/limits.rst @@ -0,0 +1,45 @@ +.. _GrenzenEinschränkungen: + +Grenzen & Einschränkungen +========================= + +Wie erwähnt, gibt es kaum Grenzen bei dem, was man mit der Rudi-Shell +auf und mit der Box anstellen kann. Was man noch verbessern könnte, +wäre, dem Benutzer eine **interaktive Shell-Session** zu geben, welche +den Aufruf eines Skripts überdauert. Das würde z.B. bedeuten, daß ein +Verzeichniswechsel in Skript A noch Wirkung hätte für das anschließend +ausgeführte Skript B und nicht nur innerhalb von A. auch würden in A +geänderte oder gesetzte Umgebungsvariablen noch in B gelten etc. Das zu +erreichen, wäre nicht besonders schwierig. Alles, was man dazu bräuchte, +wäre ein virtuelles Terminal. Ich habe beispielsweise +`Screen <../screen.html>`__ installiert. Das Schöne an diesem Werkzeug +ist, daß man es nicht nur interaktiv an der Konsole benutzen kann, +sondern auch einer *Detached Session*, also einer vom Terminal +abgetrennten Benutzersitzung, per Fernsteuerung Befehle schicken kann, +die innerhalb der Sitzung ausgeführt werden. In Verbindung mit einer +Log-Datei oder einer `​Named +Pipe <http://de.wikipedia.org/wiki/Named_Pipe>`__ könnte man dann von +außen die Ausgaben lesen und an den Web-Client weiterreichen. Genau +dieses Feature hatte ich ursprünglich implementieren wollen, aber das +war auch noch, als ich an einzeilige Kommandos anstatt an ein +mehrzeiliges Skript-Fenster dachte. Inzwischen finde ich es so +einfacher, eleganter und vor allem schlanker. Benutzer kleiner Boxen +brauchen nicht extra *Screen* in die Firmware einzubauen, nur um ein +klein wenig mehr Komfort in der Benutzersitzung zu haben. Potentielle +Probleme mit Mehrfach-Logins in dieselbe *Screen*-Sitzung etc. müßten +auch behandelt werden. Ich brauche das nicht. Wer es haben will - die +Idee habe ich ja formuliert, der Weg ist gewiesen. Ausprobiert habe ich +die *Screen*-Fernsteuerung via Kommandozeile bereits, sie funktioniert +gut. + +Was geht noch alles nicht? Na ja, es macht kaum Sinn, Programme +aufzurufen, die ohne Benutzerinteraktion keinen Sinn ergeben, also z.B. +den `Midnight Commander (mc) <../mc.html>`__, ``tail -f``, seitenweise +Ausgaben mit ``more`` oder ``top`` in der nicht automatisch +terminierenden Variante. Von interaktiven Editoren wie ``vi`` rede ich +jetzt mal gar nicht - es gibt ja ``sed`` und ``awk`` für +kommandozeilenbasiertes Editieren. Für interaktives gibt es Down- und +Uploads (dazwischen offline am Client editieren, klar). + +- Tags +- `rudi-shell </tags/rudi-shell>`__ diff --git a/wiki/packages/rudi-shell/tips.rst b/wiki/packages/rudi-shell/tips.rst new file mode 100644 index 0000000..559cd6e --- /dev/null +++ b/wiki/packages/rudi-shell/tips.rst @@ -0,0 +1,329 @@ +.. _TipsTricks: + +Tips & Tricks +============= + +.. _SichererZugriffviaHTTPS: + +Sicherer Zugriff via HTTPS +-------------------------- + +|Warning| Achtung: Diese Anleitung wurde geschrieben bevor AVM eine eigene +Fernzugrifffunktion integriert hat, weshalb die hier auch nicht erwähnt +wird. + +Jetzt haben wir endlich eine Shell, die über ein reines Web-Interface +läuft, sind also unabhängig von *Telnet,*\ `SSH <../dropbear.html>`__ & +Co. Was jetzt noch schön wäre: sicherer Zugriff auf die Rudi-Shell oder +am besten gleich die ganze Freetz-Konfiguration von außen über eine +`​SSL <http://de.wikipedia.org/wiki/Transport_Layer_Security>`__-gesicherte +Verbindung. Wir könnten dann aus dem Büro oder von jedem Internet-Café +der Welt aus unseren Router konfigurieren, ohne auf Proxies oder +Portbeschränkungen Rücksicht nehmen zu müssen. Port 443 für +`​HTTPS <http://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol_Secure>`__ +ist bei 99% aller Proxies freigeschaltet. Wir bräuchten keinen +SSH-Client und hätten trotzdem eine sicher verschlüsselte Verbindung vom +Browser zum Router. + +Genau das konfigurieren wir uns jetzt! Zunächst brauchen wir eine +Firmware mit dem Paket `stunnel <../stunnel.html>`__. Das Paket +aktiviert übrigens automatisch die beiden Shared Libraries für +`​OpenSSL <http://de.wikipedia.org/wiki/OpenSSL>`__, nämlich +``libcrypto.so`` und ``libssl.so``. Außerdem wird die +`​zlib <http://de.wikipedia.org/wiki/Zlib>`__ (``libz.so``) benötigt. +Weitere Tips und Infos hierzu: + +- Der Platzbedarf dieser Pakete ist nicht zu unterschätzen, somit + nichts für kleine Boxen: 90 KB für `stunnel <../stunnel.html>`__, 70 + KB für die *zlib* und sage und schreibe 1.150 KB für *OpenSSL*. Das + sind fast 1,3 MB und somit eine Menge. Aber wenn die Box es + verkraftet (meine 7170 tut es), werden wir gleich noch viel Spaß + haben. +- Wer eine Firmware mit OpenSSL-Bibliotheken von AVM einsetzt, z.B. die + aktuelle 29.04.59 für die 7170, muß aufpassen, daß er in + ``/var/flash/tr069.cfg`` - so vorhanden - die Option *enabled = no* + setzt, bevor die Firmware mit den eigenen Bibliotheken installiert + wird (oder aber beim Erstellen des Images gleich den ganzen `TR-069 + Kram rauspatchen <../../patches/remove_tr069.html>`__ lassen). + Ansonsten würde es mit Boxen von 1&1 Probleme beim Aufrufen der durch + Freetz ersetzten *OpenSSL*-Bibliotheken geben. *Einige Provider wie + z.B. 1&1 verlangen bei Support-Anfragen, dass TR-069 in der Box + aktiviert ist!* + +Als nächstes brauchen wir für den HTTPS-Server ein Serverzertifikat und +ein Schlüsselpaar. Das bauen wir uns selbst mit *OpenSSL*. Das geht +unter Linux prinzipiell genauso wie unter Windows, man sollte nur +vorsichtshalber darauf achten, daß die Schlüsseldatei, welche am Ende +auf der Box landet, UNIX-Zeilenenden hat. Ich erkläre im Folgenden, wie +die Generierung eines `​Self-Signed +Key <http://en.wikipedia.org/wiki/Self-signed_certificate>`__ unter +Linux abläuft. Es genügt, folgendes Skript auszuführen: + +:: + + #!/bin/bash + + # Paßwortgeschützten Server Key erzeugen + openssl genrsa -des3 -out server.key 1024 + + # Ungeschützte Version extrahieren (der SSL-Server kann ja nicht + # vor der Benutzung selbst ein Paßwort eingeben) + openssl rsa -in server.key -out server.key.unsecure + + # Certificate Signing Request (CSR) mit persönlichen Daten erzeugen + openssl req -new -key server.key -out server.csr + + # Ein Jahr gültiges, selbst signiertes Zertifikat anfordern + openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt + + # CSR wird nicht mehr benötigt + rm server.csr + + # Schlüssel + Zertifikat (in dieser Reihenfolge!) + + + # in einer Datei zusammenführen + cat server.key.unsecure server.crt > stunnel-key.pem + + # Nachschauen, ob auch alles da ist + ls -l + +Der gesamte Vorgang erfordert zwischendurch die Eingabe einer Passphrase +für den Serverschlüssel sowie von persönlichen Daten für das Zertifikat. +Das sieht dann inkl. Ein- und Ausgaben beispielsweise so aus: + +.. code:: bash + + $ openssl genrsa -des3 -out server.key 1024 + Generating RSA private key, 1024 bit long modulus + ..................++++++ + .......++++++ + e is 65537 (0x10001) + Enter pass phrase for server.key: + Verifying - Enter pass phrase for server.key: + + $ openssl rsa -in server.key -out server.key.unsecure + Enter pass phrase for server.key: + writing RSA key + + $ openssl req -new -key server.key -out server.csr + Enter pass phrase for server.key: + You are about to be asked to enter information that will be incorporated + into your certificate request. + What you are about to enter is what is called a Distinguished Name or a DN. + There are quite a few fields but you can leave some blank + For some fields there will be a default value, + If you enter '.', the field will be left blank. + ----- + Country Name (2 letter code) [AU]:DE + State or Province Name (full name) [Some-State]:Bavaria + Locality Name (eg, city) []:Munich + Organization Name (eg, company) [Internet Widgits Pty Ltd]:ACME Ltd. + Organizational Unit Name (eg, section) []: + Common Name (eg, YOUR name) []:Manni Muster + Email Address []:manni@acme.de + + Please enter the following 'extra' attributes + to be sent with your certificate request + A challenge password []: + An optional company name []: + + $ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt + Signature ok + subject=/C=DE/ST=Bavaria/L=Munich/O=ACME Ltd./CN=Manni Muster/emailAddress=manni@acme.de + Getting Private key + Enter pass phrase for server.key: + + $ rm server.csr + + $ cat server.key.unsecure server.crt > stunnel-key.pem + + $ ls -l + insgesamt 16 + -rw-r--r-- 1 ubuntu ubuntu 895 2007-02-26 21:50 server.crt + -rw-r--r-- 1 ubuntu ubuntu 963 2007-02-26 21:41 server.key + -rw-r--r-- 1 ubuntu ubuntu 887 2007-02-26 21:42 server.key.unsecure + -rw-r--r-- 1 ubuntu ubuntu 1782 2007-02-26 22:00 stunnel-key.pem + +Anschließend haben wir in Form der Datei ``stunnel-key.pem``, was wir +wollten: ein selbst signiertes Schlüsselpaar für unseren HTTPS-Server. +Das muß jetzt nur noch irgendwie auf die Box. Dafür gibt es zwei Wege: + +- Einbau in die Firmware: Einfach an den gewünschten Ort unter + ``<Mod-Verzeichnis>/root`` kopieren, z.B. nach + ``/usr/share/stunnel-key.pem``. +- Einbau in ``/var/flash/debug.cfg`` oder ``/tmp/flash/rc.custom`` in + der üblichen Form eines Hier-Dokuments, welchen beim Booten der Box + entpackt wird, z.B. nach ``/tmp/stunnel-key.pem`` oder nach + ``/mod/usr/share/stunnel-key.pem``. Das + `​Here-Dokument <http://en.wikipedia.org/wiki/Here-document>`__ kann + so aussehen: + + :: + + cat << EOF_CERT > /tmp/stunnel-key.pem + -----BEGIN RSA PRIVATE KEY----- + # Server-Schlüssel ... + -----END RSA PRIVATE KEY----- + -----BEGIN CERTIFICATE----- + # Zertifikat ... + -----END CERTIFICATE----- + EOF_CERT + +Wo auch immer die Schlüsseldatei liegt, wir müssen uns in der +*stunnel*-Konfiguration lediglich auf den richtigen Ablageort beziehen. +Weiter geht's: + +Über die Freetz-Oberfläche sorgen wir dafür, daß *stunnel* als Dienst +automatisch gestartet wird und geben unter *Einstellungen → stunnel +services* folgende Konfiguration ein, um eben diese Web-Oberfläche, in +der wir uns gerade aufhalten, zukünftig HTTPS-gesichert verfügbar zu +machen: + +.. code:: bash + + [freetz_web] + cert = /tmp/stunnel-key.pem + client = no + accept = 443 + connect = 81 + +D.h. nichts anderes, als daß wir einen von uns +`Freetz <../../index.html>`__ getauften Service verfügbar machen, +welcher eingehende SSL-Verbindungen auf dem HTTPS-Port 443 akzeptiert +und diese nach dem Entschlüsseln an den Port 81 des Freetz-Webservers +weiterleitet. Wichtig: Das Ganze läuft nicht im Client-, sondern im +Server-Modus. + +Das war's schon! Jetzt können wir ausprobieren, was passiert, wenn wir +`​https://fritz.box <https://fritz.box>`__ aufrufen. Es sollten zunächst +der Passwort-Dialog von Freetz und anschließend die Web-Oberfläche +erscheinen. + +Wenn wir jetzt noch Services für Port 80 (AVM-Oberfläche) und/oder Port +82 (WoL?-Oberfläche) haben wollen, fügen wir einfach entsprechende +Abschnitte in die Konfiguration ein nach obigem Muster. + +|Warning| **Achtung:** Um den oder die HTTPS-Ports nach außen verfügbar zu +machen, müssen entweder die üblichen Einstellungen in +``/var/flash/ar7.cfg`` vorgenommen werden, also z.B. folgender Abschnitt +unter *forwardrules* + +.. code:: bash + + "tcp 0.0.0.0:443 0.0.0.0:443", + +oder aber über die AVM-Oberfläche ein entsprechendes `​Port +Forwarding <http://de.wikipedia.org/wiki/Portweiterleitung>`__ auf ein +virtuelles Interface konfiguriert werden. Das Ganze benötigen wir pro +Service, d.h. wir müssen uns entscheiden, welcher Service den "Premium +Port" 443 bekommt, der von überall her erreichbar sein sollte. Ich +schlage vor, der Freetz-Oberfläche diesen Port zu geben, denn dadurch +gelangen wir an die Rudi-Shell und können somit alles mit der Box +anstellen, was wir wollen. + +|Warning| **Wichtig:** Es muß wohl nicht weiter erklärt werden, weshalb bei +diesem Szenario einem sicheren Passwort für die Web-Oberfläche besondere +Bedeutung zukommt… + +.. _HTTPS-Zugriffreloadedimproved: + +HTTPS-Zugriff reloaded & improved +--------------------------------- + +Die Aussicht auf ein Paket von (bei mir) 1.310 KB für die oben +beschriebene Lösung ist natürlich ein K.O.-Kriterium für kleine Boxen, +die sowieso schon mit dem Speicherplatz für einen Firmware-Mod +haushalten müssen. Wer sowieso OpenSSL auf der Box für etwas anderes +braucht, dem werden die 160 KB für **stunnel + zlib** zusätzlich nicht +mehr viel ausmachen. Aber wer SSL nur für den HTTPS-Server benötigt, +würde sich sicher über eine schlankere Variante freuen. Das Schöne ist: +es gibt eine. + +Es gibt eine für Embedded-Systeme optimierte Open-Source-SSL-Bibliothek +Namens `​matrixssl <http://www.matrixssl.org>`__. Außerdem hat jemand +für `​OpenWRT <http://openwrt.org>`__ den kleinen Wrapper +`​matrixtunnel <http://znerol.ch/svn/matrixtunnel/trunk>`__ geschrieben, +welcher unsere Alternative zu `stunnel <../stunnel.html>`__ sein wird. +Und es gibt das Ganze auch bereits als `Paket für +Freetz <../matrixtunnel.html>`__. Es handelt sich um ein Paket und eine +Bibliothek mit der Gesamtgröße von 110 KB(!). Das entspricht einer +Platzersparnis von ca. 92% gegenüber der ersten Lösung und funktioniert +genauso gut nach meinen bisherigen Erfahrungen. So schnell wie ohne +Verschlüsselung ist das Browsen subjektiv mit beiden HTTPS-Varianten +nicht, aber absolut in Ordnung zum Arbeiten. + +*Inzwischen wurde auch*\ `xrelayd <../xrelayd.html>`__\ *der Nachfolger +von*\ `matrixtunnel <../matrixtunnel.html>`__\ *in Freetz aufgenommen. +Hier wird*\ `xyssl <../xyssl.html>`__\ *(inzwischen polarssl) als +Crypt-Lib eingesetzt.* + +Der Aufruf, den man am besten in einer der beim Start ausgeführten +Dateien (siehe Beschreibung der **stunnel**-Variante) unterbringt, sieht +beispielhaft so aus: + +:: + + matrixtunnel -A cert.pem -p server_key.pem -d 443 -r 81 -P /tmp/matrixssl.pid + +Ich verwende übrigens für ``-A`` und ``-p`` denselben Dateinamen und +dieselbe kombinierte Datei mit Serverschlüssel und Zertifikat wie für +*stunnel* (Bauanleitung s.o.). Gibt man zusätzlich ``-f`` an, startet +der Server im Vordergrund und man kann die Ausgaben beobachten. Einen +Debug-Schalter gibt es auch - einfach mal mit ``-?`` aufrufen und +schauen. + +Übrigens: `matrixtunnel <../matrixtunnel.html>`__ kann auch für jede +Schnitstelle (IP-Adresse) eine andere Regel nutzen. Einfach die +IP-Addresse vor dem Port (ip:port) angeben wie z.B. + +:: + + # ds_mod web über SSL auf LAN + matrixtunnel -A mycert.pem -p mycert.pem -d 192.168.1.1:443 -r 192.168.1.1:81 -P /tmp/matrixssl.pid + # eigene Internetseite über SSL auf Virtual IP für externen Zugang + matrixtunnel -A mycert.pem -p mycert.pem -d 192.168.1.253:443 -r 192.168.1.253:82 -P /tmp/matrixssl.pid + +.. _Firmwareremoteflashen: + +Firmware remote flashen +----------------------- + +Auch das geht mit Rudi wunderbar, wie ich seit längerer Zeit in einem +`​Beitrag im +Forum <http://www.ip-phone-forum.de/showthread.php?p=846233>`__ +beschrieben habe. Hier nochmals der Code, den man in der Rudi-Shell auf +einmal ausführen kann. Vorher stoppen wir am besten noch einige +Freetz-Dienste, welche dem im Code aufgerufenen AVM-Skript nicht bekannt +sind und die deshalb weiter laufen und Speicher verbrauchen würden. + +:: + + # Bevor wir anfangen, ein Hintergrundbefehl: notfalls in 10 min die Box + # zwangsweise neu starten, das müßte für Download + FW-Update reichen. + { sleep 600 ; reboot -f; } & + + { + # Unnötige Dienste stoppen, aber websrv und dsld weiter laufen lassen + prepare_fwupgrade start_from_internet + # FW-Image herunterladen und direkt nach "/" entpacken + wget -q -O - http://mein.server.xy/mein.image 2> /dev/null | tar -C / -x + # Restliche Dienste stoppen + prepare_fwupgrade end + # Installation vorbereiten + /var/install + # Installation initialisieren + /var/post_install + # Box neu starten + reboot + } + +Dieser Code funktioniert übrigens nicht nur in der Rudi-Shell, sondern +grundsätzlich auch innerhalb einer Telnet- oder SSH-Sitzung. + +- Tags +- `https </tags/https>`__ +- `remote </tags/remote>`__ + +.. |Warning| image:: ../../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/packages/rudi-shell/usage.rst b/wiki/packages/rudi-shell/usage.rst new file mode 100644 index 0000000..6eddffc --- /dev/null +++ b/wiki/packages/rudi-shell/usage.rst @@ -0,0 +1,150 @@ +.. _IllustrierteAnwendungsfälle: + +Illustrierte Anwendungsfälle +============================ + +.. _Shell-Skriptausführen: + +Shell-Skript ausführen +---------------------- + +Befehl eingeben, ausführen, Ergebnis anschauen - fertig. + +.. figure:: /screenshots/40.gif + :alt: Rudi-Shell: Shell-Skript ausführen + + Rudi-Shell: Shell-Skript ausführen + +.. _Historieverwenden: + +Historie verwenden +------------------ + +Historien-Liste öffnen, per Maus oder Tastatur durchblättern. Beim +Blättern aktualisieren sich schon Befehlsfenster und Ergebniskonsole. +Durch Drücken des Knopfes "Hist. löschen" wird die Historie bereinigt +und ist wieder jungfräulich. + +.. figure:: /screenshots/41.gif + :alt: Rudi-Shell: History + + Rudi-Shell: History + +.. _DownloadTar-Archiv: + +Download Tar-Archiv +------------------- + +Man kann mittels eines Befehls wie ``tar c *`` ein Archiv erzeugen, im +Beispiel von allen Dateien und Unterverzeichnissen im aktuellen +Verzeichnis - übrigens bei Shellskript-Start immer ``/usr/mww/cgi-bin``, +weil von dort aus die CGI-Skripten ausgeführt werden. Wenn man +zusätzlich den Download-Schalter vor dem Ausführen aktiviert und evtl. +zur Bequemlichkeit noch den Dateiendung-Schalter *.tar*, erhält man das +Archiv direkt als Download, den man speichern kann, wohin man will. Was +hier technisch passiert, ist, daß die Standardausgabe der Shell - wir +haben ja keine Zieldatei für *Tar* angegeben, also gilt die +Standardausgabe - umgeleitet wird, und zwar in den Rückgabekanal des +CGI-Skripts hin zum Browser des Benutzers. + +**Trouble-Shooting:** Manchmal kommt es vor, daß *Tar* (oder auch andere +Shell-Befehle) zusätzlich zur eigentlichen Ausgabe noch Meldungen +(Fehler, Informationen, Warnungen) in einen anderen Ausgabekanal, die +sog. Fehlerausgabe, schreiben. Da ohne weitere Vorkehrungen bei der +Rudi-Shell - wie bei anderen interaktiven Shells auch - Standard- und +Fehlerausgabe gebündelt werden, landen evtl. Informationen im Download, +die wir dort gar nicht haben wollen. Im Falle unseres *Tar*-Archivs wird +dadurch die Datei "verunreinigt" und ist nicht mehr entpackbar. Um das +zu diagnostizieren, lassen wir uns das Tar-Archiv einfach kurzerhand auf +die Konsole ausgeben (Download-Schalter deaktivieren). Das sieht dann so +aus: + +.. figure:: /screenshots/42.gif + :alt: Rudi-Shell: Tar Diagnose + + Rudi-Shell: Tar Diagnose + +Es gibt im Prinzip zwei Möglichkeiten, solche Verunreinigungen zu +umgehen: Erstens kann man die Shell explizit anweisen, die Fehlerausgabe +umzuleiten in eine Datei, auf eine andere Konsole oder ins Nirgendwo +(``/dev/null``, das beliebte Faß ohne Boden), wie im folgenden Beispiel: + +.. figure:: /screenshots/43.gif + :alt: Rudi-Shell: Fehlerausgabe ins Nirvana umleiten + + Rudi-Shell: Fehlerausgabe ins Nirvana umleiten + +Die zweite (etwas unsicherere, da nicht immer vorhersehbare) Möglichkeit +besteht schlicht in der Vermeidung von Fehlerausgaben, indem man vorher +die Syntax von Befehlen, notwendige Berechtigungen etc. prüft. In +unserem Fall kann man die Meldung vermeiden, indem man vorher in das +passende Basisverzeichnis wechselt, aus dem heraus *Tar* operieren soll: + +.. figure:: /screenshots/44.gif + :alt: Rudi-Shell: Fehlerausgabe durch vorbereitende Schritte + vermeiden + + Rudi-Shell: Fehlerausgabe durch vorbereitende Schritte vermeiden + +.. _DownloadlangerKonsolenausgabe: + +Download langer Konsolenausgabe +------------------------------- + +Lange Konsolenausgaben eines Skripts werden von Rudi auf knapp 64 KB +gekürzt, weil je nach Browser das Umkopieren mehrerer hundert KB langer +Ausgaben aus dem unsichtbaren IFrame, worin die Original-Ausgabe +zunächst landet, den Browser extrem ausbremst. Außerdem ist solch ein +langer Text im Browser nur schlecht zu analysieren, das sollte man +lieber offline in einem leistungsfähigen Editor mit guten Suchfunktionen +machen. Ein Beispiel für eine lange Ausgabe ist z.B. ``ls -leAR /``, +also die detaillierte Anzeige sämtlicher Dateien mit vollem Datum usw, +rekursiv beginnend im Wurzelverzeichnis. + +Es gibt browserbedingte Unterschiede, die beeinflussen, wieviel von +diesen 64 KB tatsächlich beim Umkopieren im Hauptfenster ankommen. Der +*Internet Explorer* schneidet gar nichts ab (er würde auch 1 MB +umkopieren und daraufhin, warum auch immer, für eine Weile blockieren). +Opera kappt den Text bei 32 KB, Firefox bereits bei 8 KB. Nun sind 8 KB +nicht sehr viel, aber in den meisten Fällen ausreichend für normale +Befehle. Im Hinblick auf die Historie, welche ja u.U. sehr viele Befehle +mit zugehörigen Ausgaben speichern muß, ist die Begrenzung auch gesund. + +Wer nun also eine lange Konsolenausgabe in voller Länge genießen will, +aktiviert einfach den Download-Schalter und lädt sich das Ganze als +Textdatei herunter: + +.. figure:: /screenshots/45.gif + :alt: Rudi-Shell: Lange Konsolenausgabe als Datei-Download + + Rudi-Shell: Lange Konsolenausgabe als Datei-Download + +.. _Datei-Upload: + +Datei-Upload +------------ + +Das Ausführen von Befehlen und das Herunterladen von Dateien und +Konsolen-Ausgaben sind bereits mächtige Werkzeuge, aber richtig Spaß +macht die Arbeit mit der Rudi-Shell erst durch die Möglichkeit, +beliebige Dateien hochzuladen. Das geht ganz einfach: + +.. figure:: /screenshots/46.gif + :alt: Rudi-Shell: Erfolgreicher Datei-Upload + + Rudi-Shell: Erfolgreicher Datei-Upload + +*Für die Techniker: Es handelt sich um einen normalen Form-based Upload +gemäß*\ `​RFC 1867 <http://www.ietf.org/rfc/rfc1867.txt>`__\ *.* + +Nun kann beim Upload auch mal etwas schief gehen. Dann benötigt man eine +entsprechende, einigermaßen informative Rückmeldung des Systems. Auch +hierfür ist gesorgt - das sieht dann so aus: + +.. figure:: /screenshots/47.gif + :alt: Rudi-Shell: Fehler beim Datei-Upload + + Rudi-Shell: Fehler beim Datei-Upload + +- Tags +- `rudi-shell </tags/rudi-shell>`__ diff --git a/wiki/packages/s3fslite.rst b/wiki/packages/s3fslite.rst new file mode 100644 index 0000000..6bc49f4 --- /dev/null +++ b/wiki/packages/s3fslite.rst @@ -0,0 +1,62 @@ +s3fslite +======== + +"*s3fslite is a fork of s3fs, originally written by Randy Rizun. It is a +file system that stores all data in an Amazon S3 bucket. It allows +access to a bucket as though it were a local file system. It is useful +for publishing static web data that can be read easily by a browser, or +for backing up private or shared data.*" + +.. _Usage: + +Usage +----- + +See the home page for detailed usage instructions. Be sure to specify +the following options: + +.. code:: bash + + -o attr_cache= + -o writeback_cache= + +to a non-memory location to prevent running out of memory when storing +larger files (your box could crash and reboot). + +For example: + +.. code:: bash + + s3fs <bucket> <mount point> \ + -o attr_cache=/var/media/ftp/uStor01/... \ + -o writeback_cache=/var/media/ftp/uStor01/... + +| You can store your credentials in */tmp/flash/passwd-s3fs*, if you + don't want to specify them on the command line. + +It is possible to use a *mime.types* file, if you want to access your +objects from internet: (for example for a static web site)  + +- Copy */etc/mime.types* to your box, for example to + */var/media/ftp/uStor01/mime.types* +- Create a symbolic link like this: *ln -s + /var/media/ftp/uStor01/mime.types /tmp/flash/mime.types* + +Using *rsync* to make backups: + +.. code:: bash + + rsync -avW --delete /source-folder/ /mount-point/ + +Advice: read the man page of rsync, before using it. + +.. _Links: + +Links +----- + +- `​Home page <http://github.com/russross/s3fslite>`__ +- `​Ticket <http://trac.freetz.org/ticket/796>`__ (with patch) +- `​Amazon S3 <http://aws.amazon.com/s3/>`__ +- `​Man page + rsync <http://optics.ph.unimelb.edu.au/help/rsync/rsync.html>`__ diff --git a/wiki/packages/samba.rst b/wiki/packages/samba.rst new file mode 100644 index 0000000..2fe4f03 --- /dev/null +++ b/wiki/packages/samba.rst @@ -0,0 +1,254 @@ +.. _Samba: + +Samba +===== + +.. figure:: /screenshots/204.png + :alt: Samba Webinterface + + Samba Webinterface + +Dieses Paket macht angeschlossen USB-Speicher oder das Dateisystem der +FritzBox für Windows als Dateifreigabe verfügbar (die Beschreibung +basiert auf freetz-1.2 mit Samba 3.0.37). Unter Linux kann dieser +Speicher mittels *smbmount*, *cifsmount*, etc. verfügbar gemacht werden. +Natürlich ergibt ein Samba-Server auf der FritzBox nur dann Sinn, wenn +man einen USB-Datenträger angeschlossen hat oder wenn man einen +`WebDav <davfs2.html>`__ im LAN bereitstellen möchte - ein Samba-Client +kann jedoch durchaus auch genutzt werden, um der FritzBox externen +Speicher zur Verfügung zu stellen - etwa von einem +`​NAS <http://de.wikipedia.org/wiki/Network_Attached_Storage>`__ Device. + +Die Dateifreigabe ist zwar auch Bestandteil neuerer AVM Firmware, aber +das Freetz-Paket erweitert die Möglichkeiten: + ++-----------------+-----------------+-----------------+-----------------+ +| | AVM\ :sup:`1` | freetz\ :sup:`2 | Samba\ :sup:`3` | +| | | ` | | ++-----------------+-----------------+-----------------+-----------------+ +| Automatische | |(./)| | |(./)| | |(./)| | +| Freigabe von | | | | +| USB-Speicher | | | | ++-----------------+-----------------+-----------------+-----------------+ +| \* mit / ohne | |(./)| | |(./)| | |(./)| | +| Passwort | | | | ++-----------------+-----------------+-----------------+-----------------+ +| \* nur lesen / | |(./)| | |(./)| | |(./)| | +| lesen und | | | | +| schreiben | | | | ++-----------------+-----------------+-----------------+-----------------+ +| \* für FAT, | |(./)| | |(./)| | |(./)| | +| FAT32 | | | | ++-----------------+-----------------+-----------------+-----------------+ +| \* für EXT2, | -:sup:`4` | |(./)| | |(./)| | +| EXT3, NTFS | | | | ++-----------------+-----------------+-----------------+-----------------+ +| Arbeitsgruppe | - | - | |(./)| | +| und Servername | | | | +| konfigurierbar | | | | ++-----------------+-----------------+-----------------+-----------------+ +| Dateigröße über | - | - | |(./)| | +| 2GB | | | | ++-----------------+-----------------+-----------------+-----------------+ +| In der | - | - | |(./)| | +| Netzwerkumgebun | | | | +| g | | | | +| sichtbar | | | | ++-----------------+-----------------+-----------------+-----------------+ +| Manuell | - | - | |(./)| | +| konfigurierte | | | | +| Freigaben | | | | ++-----------------+-----------------+-----------------+-----------------+ +| Master Browser | - | - | |(./)| | ++-----------------+-----------------+-----------------+-----------------+ +| Detailierte | - | - | |(./)| | +| Konfiguration | | | | +| des Servers | | | | ++-----------------+-----------------+-----------------+-----------------+ + +| :sup:`1` wenn Dateifreigabe für das Modell vorgesehen ist +| :sup:`2` Freetz mit AVM-Samba +| :sup:`3` Freetz mit "eigenem" Samba +| :sup:`4` NTFS/EXT2 bei Modellen ab Generation x2xx (EXT2 nicht bei + 7270v1), EXT3/4 bei Modellen ab Firmware 5.x + +.. _PackageinsImageeinbinden: + +Package ins Image einbinden +--------------------------- + +Im menuconfig unter ``Package selection -> Standard packages`` befindet +sich + +- *Samba 3.0.37 smbd (Filesharing)* + Damit wird Dateifreigabe möglich. +- *Samba 3.0.37 nmbd (Nameservices)* + Dies macht die FritzBox in der Netzwerkumgebung sichtbar. ``nmbd`` + kann nur gewählt werden, wenn ``smbd`` ausgewählt ist. + +.. _VerwandteThemen: + +Verwandte Themen +---------------- + +Unter ``Patches`` befindet sich + +- *Patch USB storage names* … mit zusätzlichen Unterpunkten. + Diese beeinflussen ebenfalls Details der Dateifreigabe. +- *Remove smbd* |Warning| Diese Option sollte deselektiert sein und wird + bei der Auswahl des Samba-Packages aus menuconfig entfernt. + +.. _KonfigurierendesPakets: + +Konfigurieren des Pakets +------------------------ + +.. _AVMKonfiguration: + +AVM Konfiguration +~~~~~~~~~~~~~~~~~ + +Die Optionen der original AVM Firmware sind unverändert verfügbar (unter +*Erweiterte Einstellungen → USB-Geräte → USB-Speicher*) . Dies sind: + +- aktivieren / deaktivieren des Dateiservers (Samba) +- Zugriffsberechtigung für die automatischen Freigaben: nur lesen / + lesen und schreiben +- Kennwort + +.. _FreetzKonfiguration: + +Freetz Konfiguration +~~~~~~~~~~~~~~~~~~~~ + +Im Freetz Webinterface werden die zusätzlichen Möglichkeiten des Pakets +konfiguriert. + +.. _PaketeSamba: + +Pakete → Samba +^^^^^^^^^^^^^^ + +- **Arbeitsgruppe** + unter dieser Arbeitsgruppe wird der Server in der Netzwerkumgebung + von Windows sichtbar +- **Name des Servers** + der Name des Server in seiner Arbeitsgruppe +- **Beschreibung des Servers** + und seine zusätzliche Beschreibung +- Optionen für den **Master Browser** + Wenn mehrere Windows Systeme im gleichen Netzwerksegment vorhanden + sind, übernimmt eines die Aufgabe, eine Liste mit verfügbaren + Systemen zu verwalten. Die folgenden Parameter bestimmen, ob die + FritzBox diese Aufgabe übernimmt und *Master Browser* wird. Details + unter + `​http://us3.samba.org/samba/docs/using_samba/ch07.html#samba2-CHP-7-TABLE-2 <http://us3.samba.org/samba/docs/using_samba/ch07.html#samba2-CHP-7-TABLE-2>`__ + + - OS Level für Election + Mit dem Standardwert von 20 wird die FritzBox fast immer *Master + Browser*. + - Bevorzugter Master + Wenn dies gewählt ist, versucht die FritzBox nach dem Booten einen + eventuell schon vorhanden Master Browser abzulösen. + +- Auswahl der **Netzwerkschnittstelle** + Hier wird das Netzwerksegment angegeben, für das die Box die + Dateifreigabe bereit stellt. Es kann leer gelassen werden. Dann gilt + die Dateifreigabe für alle Netzwerksegment, in der sich die Box + befindet. + |Warning| **Achtung:** Wenn die Box direkt mit dem Internet verbunden + ist, sollte man sicher sein der der interne Firewall in Ordnung ist. + Sonst könnte das eine Angriffsmöglichkeit aus dem gesamten Internet + eröffnen. +- Startmodus + Hier kann entweder **automatisch** oder **manuell** ausgewählt + werden. (*TODO: Wird smbd auch von den Hotplug-Skripten gestartet*?) + +.. _EinstellungenSambaFreigaben: + +Einstellungen → Samba Freigaben +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +| Zusätzlich zum USB-Speicher, der beim Anschließen automatisch eine + Freigabe erzeugt, können hier statische Freigaben definiert werden. Z. + B. das Dateisystem der FritzBox oder ausgewählte Verzeichnisse des + USB-Speichers als selbständige Freigabe. +| Konfiguriert werden kann: + +- **Path**: Der FritzBox-interne Pfad des Verzeichnisses, das + freigegeben wird. +- **Name**: Unter diesem Namen ist die Freigabe für Windows sichtbar +- **guest ok**: *1*: Legt fest, dass auf diese Freigabe auch ohne + Kennwort zugegriffen werden kann. Das Kennwort wird in der + Konfiguration der FritzBox festgelegt. +- **read only**: *1*: Auf diese Freigabe kann nur lesend zugegriffen + werden. *0*: Lese- und Schreibzugriff +- **comment 1**: *-*: Beschreibung folgt +- **comment 2**: Beschreibung / Kommentar, den Windows mit dieser + Freigabe anzeigt. + +**Beispiel:** + +.. code:: bash + + /var/media/ftp/uStor01/Videos hdd1 1 0 - Videos + /var/media/ftp/uStor01/Bilder hdd1 1 0 - Bilder + /var/media/ftp/uStor01/Musik hdd1 1 0 - Musik + +Bei Nutzung eines USB-Speichers ist zu beachten, dass die Zugriffsrechte +entsprechend gesetzt sein müssen. Wurde der Speicher an einem +Fremdrechner z. B. mit ext2 oder ext3 formatiert, sind oft keine +Schreibrechte und auch nicht ``ftpuser`` als Eigentümer gesetzt. In der +FRITZBox kann das mit folgenden Kommandos korrigiert werden: + +.. code:: bash + + chmod -R 777 uStor01 + +.. code:: bash + + chown ftpuser -R uStor01 + +.. _EinstellungenSambaErweitert: + +Einstellungen → Samba Erweitert +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +| Hier können sich die Experten austoben und beliebige globale Optionen + für Samba definieren: Der eingegebene Text wird verbatim ans Ende der + ``[global]`` - Sektion in der Samba-Konfiguration eingefügt. +| Details unter + `​http://samba.org/samba/docs/using_samba/ch06.html <http://samba.org/samba/docs/using_samba/ch06.html>`__ + +Weitere Tuningmöglichkeiten gibt es hier: +`​http://lug.krems.cc/docu/samba/appb_02.html <http://lug.krems.cc/docu/samba/appb_02.html>`__ + +| Für Performanceverbesserungen kann folgendes unter 'Erweitert' + eingetragen werden: + +.. code:: bash + + socket options = TCP_NODELAY IPTOS_LOWDELAY + read raw = yes + write raw = yes + oplocks = yes + max xmit = 65535 + dead time = 15 + getwd cache = yes + +| Nichtexperten können diese Einstellung einfach leer lassen. +| Falls bei Windows 7 64-bit ein BSOD auftritt "oplocks = no" setzen, + siehe + `​IPPF <http://www.ip-phone-forum.de/showpost.php?p=1538911&postcount=1>`__. + +- Tags +- `daemons </tags/daemons>`__ +- `filesystem </tags/filesystem>`__ +- `packages <../packages.html>`__ +- `samba </tags/samba>`__ +- `server </tags/server>`__ +- `überarbeiten </tags/%C3%BCberarbeiten>`__ + +.. |(./)| image:: ../../chrome/wikiextras-icons-16/tick.png +.. |Warning| image:: ../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/packages/sane-backends.rst b/wiki/packages/sane-backends.rst new file mode 100644 index 0000000..0e023b3 --- /dev/null +++ b/wiki/packages/sane-backends.rst @@ -0,0 +1,266 @@ +.. _SANE: + +SANE +==== + +.. _Beschreibung: + +Beschreibung +------------ + +Dieses Paket ermöglicht den Betrieb von Scannern an der Fritz!Box. Diese +können dann wie Drucker von allen Rechnern im lokalen Netzwerk genutzt +werden. Ebenso ist es damit möglich, Scanner direkt von der Fritz!Box +aus zu nutzen (z.B. in Scripts). + +.. _Schnellstart: + +Schnellstart +------------ + +.. _Vorbemerkung: + +Vorbemerkung +~~~~~~~~~~~~ + +Die aktuellsten Treiber sind nur im Trunk verfügbar: +`​http://trac.freetz.org/#Entwicklerversion <http://trac.freetz.org/#Entwicklerversion>`__ + +.. _InstallationundKonfiguration: + +Installation und Konfiguration +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- make menuconfig +- Sicherstellen, daß im Hauptmenü ``Show advanced options`` und unter + ``Package selection`` ``Unstable`` ausgewählt sind +- Im Hauptmenü zu ``Package selection`` → ``Unstable`` → ``SANE`` + wechseln und ``SANE`` auswählen +- Empfehlung: ``sane-find-scanner`` und ``scanimage`` auswählen. (Diese + sind nicht notwendig für den Betrieb, aber hilfreich, falls das + Scannen im nächsten Schritt nicht funktioniert. Wenn einmal alles + klappt, kann man die beiden Punkte wieder abwählen um Speicherplatz + zu sparen (~150kB) und ein neues Image erstellen) +- Backend auswählen: + + - Geräte von Hewlett-Packard (HP): Eine Ebene höher wechseln, HPLIP + auswählen (HPLIP ist momentan nur im Trunk verfügbar) und dann + ``Printer Class`` und ``Printer Type`` entsprechend auswählen + (Hilfefunktion steht zur Verfügung) + - Für alle anderen Geräte (und sehr alte HPs): Über die `​Liste + unterstützter + Geräte <http://www.sane-project.org/sane-mfgs.html>`__ den Namen + des Backends feststellen und auswählen. + +- Unter ``Package selection`` → ``Standard packages`` ``Inetd`` + auswählen (wird in kommenden Versionen automatisch ausgewählt) +- Image erstellen, flashen, neu starten + +.. _NutzungvomPCunterLinuxWindows: + +Nutzung vom PC unter Linux/Windows +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. _Linux: + +Linux +^^^^^ + +- `​XSane <http://www.xsane.org/>`__ installieren (inkl. net-Backend) +- ``SANE_NET_HOSTS=fritz.box xsane`` starten + + - Tip: ``/etc/sane.d/net.conf`` um eine neue Zeile ``fritz.box`` + erweitern, dann reicht es, nur ``xsane`` einzutippen. + +.. _Windows: + +Windows +^^^^^^^ + +- Mit `​SaneTwain <http://sanetwain.ozuzo.net/>`__ kann man den Scanner + aus allen Windows-Anwendungen heraus verwenden, die Scanner über die + TWAIN-Schnittstelle unterstützen. +- `​XSane für Windows <http://www.xsane.org/xsane-win32.html>`__ + + - Die Sprache läßt sich so auf Deutsch ändern, indem man die + Umgebungsvariable ``LANG`` auf ``de`` setzt. Z.B. Folgendes in + xsane.bat: + + .. code:: bash + + @echo off + set LANG=de + c:\sane\bin\xsane.exe + +.. _Scannenfunktioniertnicht: + +Scannen funktioniert nicht +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Falls das Scannen wie in dieser Anleitung beschrieben nicht +funktioniert: + +- Auf der Box einloggen und dort schauen, ob ``sane-find-scanner`` das + Gerät findet + + - Falls man sich nicht an die Empfehlung gehalten hat, + sane-find-scanner und scanimage ins Image aufzunehmen: Neues Image + mit den beiden Tools erstellen und flashen + +- Falls kein Scanner gefunden wird, hat man schlechte Karten +- Falls das geht, mit ``scanimage -L`` schauen, ob der Scanner + aufgelistet wird. Falls es hier scheitert, stimmt mit dem Backend was + nicht + + - Manche Backends brauchen zusätzliche Anpassungen/Einstellungen, + z.B. einen Firmware-Upload ⇒ man page zum Backend durchlesen (sind + auch hier verlinkt: + `​http://www.sane-project.org/sane-mfgs.html <http://www.sane-project.org/sane-mfgs.html>`__) + - Evtl. wird der Scanner unterstützt, aber die Version von SANE bzw. + HPLIP in Freetz ist zu alt: + `​http://www.sane-project.org/sane-backends-1.0.19.html <http://www.sane-project.org/sane-backends-1.0.19.html>`__ + für Freetz 1.1.3, sonst unter + `​http://www.sane-project.org/sane-supported-devices.html <http://www.sane-project.org/sane-supported-devices.html>`__ + bzw. + `​http://hplipopensource.com/hplip-web/supported_devices/index.html <http://hplipopensource.com/hplip-web/supported_devices/index.html>`__ + schauen und **Versionen vergleichen**. + +- Falls der Scanner nicht aufgelistet worden ist, hat es gar keinen + Sinn, es mit Programmen wie ``xsane`` weiter zu versuchen. Ansonsten + bei `Probleme und + Lösungen <sane-backends.html#ProblemeundLösungen>`__ weiterlesen + +.. _ProblemeundLösungen: + +Probleme und Lösungen +--------------------- + +- *Problem*: Es wird kein Scanner gefunden + *Lösung*: Netzwerkeinstellungen prüfen (ping fritz.box + funktioniert?); im Web-Interface unter Dienste schauen, ob saned + läuft und unter Pakete die Einstellungen von SANE prüfen (mal auf + Standard zurücksetzen und sicherstellen, daß man im richigen Subnetz + ist); Scanner aus- und wieder einschalten +- *Problem*: Nach einmaligem Scannen ist der Scanner nicht mehr + erreichbar. + *Lösung*: Sicherstellen, daß ``Inetd`` installiert worden ist, und im + Webinterface prüfen, ob als Starttyp für saned ``inetd`` ausgewählt + ist (in kommenden Versionen ist kein anderer Starttyp mehr auswählbar + und dieses Problem tritt nicht mehr auf). + +.. _EinschränkungenundHinweise: + +Einschränkungen und Hinweise +---------------------------- + +- Dieses Paket erlaubt standardmäßig den Zugriff für alle Rechner im + LAN (192.168.178.0/24) +- Man sollte einen Scanvorgang nicht abbrechen, da das zum Einfrieren + des Scanners führen kann +- Neben reinen Scannern werden auch Multifunktionsgeräte mit Scanner + sowie ein paar Kameras unterstützt +- Es sollte möglich sein, auch mehrere Scanner gleichzeitig + anzuschließen (nicht getestet) +- Es sind nicht alle Backends von SANE enthalten (wen's interessiert: + [`source:trunk/make/sane-backends/config-update.pl#L134 </browser/trunk/make/sane-backends/config-update.pl#L134>`__\ `​ </export/HEAD/trunk/make/sane-backends/config-update.pl#L134>`__) +- saned ist trotz des Namens kein Dämon +- saned ist zum Scannen mit scanimage auf der Box nicht nötig +- scanimage ist zum Scannen über saned nicht nötig + +.. _HinweisezuspeziellenGeräten: + +Hinweise zu speziellen Geräten +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. _AGFASnapScane20: + +AGFA SnapScan e20 +^^^^^^^^^^^^^^^^^ + +- Firmwaredatei besorgen (z.B. aus einer Windowsinstallation) - + snape20.bin +- diese in den Ordner "``root/usr/share``" kopieren +- die Dateien "``snapscan.conf``" und "``snapscan.conf.in``" aus dem + Ordner "``source/sane-backends-1.0.19/backend``" anpassen: + +.. code:: bash + + #------------------------------ General ----------------------------------- + + # Change to the fully qualified filename of your firmware file, if + # firmware upload is needed by the scanner + firmware /usr/share/snape20.bin + + # If not automatically found you may manually specify a device name. + +- freetz-image erstellen +- und der Scanner kann z.B. per xsane genutzt werden + +.. _MustekBearPaw1200TA: + +Mustek BearPaw 1200 TA +^^^^^^^^^^^^^^^^^^^^^^ + +- Firmwaredatei besorgen - A1fw.usb - + `​http://www.meier-geinitz.de/sane/gt68xx-backend/ <http://www.meier-geinitz.de/sane/gt68xx-backend/>`__ +- In freetz Verzeichnis eingeben: + + .. code:: bash + + mkdir -p make/sane-backends/files/root/usr/share/sane/gt68xx + cp <Pfad zu A1fw.usb> make/sane-backends/files/root/usr/share/sane/gt68xx + +- freetz-image erstellen + +.. _HP-GerätedieeinPluginbenötigen: + +HP-Geräte, die ein Plugin benötigen +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Folgende HP-Geräte benötigen zum Scannen ein Plugin, das nur für x86 und +x86_64 verfügbar ist, und können nach derzeitigem Wissensstand nicht als +Scanner an der Fritz!Box betrieben werden (s.a. +`​Forum <http://www.ip-phone-forum.de/showthread.php?t=108479&page=19#379>`__): + +- HP Color LaserJet CM1015 Multifunction Printer +- HP Color LaserJet CM1017 Multifunction Printer +- HP Color LaserJet CM1312 Multifunction Printer +- HP Color LaserJet CM1312nfi Multifunction Printer +- HP Color LaserJet CM2320 Multifuntion Printer +- HP Color LaserJet CM2320fxi Multifunction Printer +- HP Color LaserJet CM2320n Multifunction Printer +- HP Color LaserJet CM2320nf Multifunction Printer +- HP LaserJet M1005 Multifunction Printer +- HP LaserJet M1120 Multifunction Printer +- HP LaserJet M1120n Multifunction Printer +- HP LaserJet M1319f Multifunction Printer +- HP LaserJet M1522 Multifunction Printer +- HP LaserJet M1522n Multifunction Printer +- HP LaserJet M1522nf Multifunction Printer +- HP LaserJet M2727 Multifunction Printer +- HP LaserJet M2727nf Multifunction Printer +- HP LaserJet M2727nfs Multifunction Printer + +Generell betroffen sind alle Geräte, bei denen in der models.dat aus +HPLIP als scan-type 3, 4 oder 5 steht. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​IPPF-Thread <http://www.ip-phone-forum.de/showthread.php?t=108479>`__ + zur Entstehung dieses Freetz-Paketes, mit entsprechenden Hinweisen +- `​SANE-Homepage <http://www.sane-project.org/>`__ +- `​Von SANE unterstützte + Geräte <http://www.sane-project.org/sane-mfgs.html>`__ +- `​XSane <http://www.xsane.org/>`__ +- `​HPLIP <http://hplipopensource.com/>`__ +- `​Von HPLIP unterstützte + Geräte <http://hplipopensource.com/hplip-web/supported_devices/index.html>`__ + +- Tags +- `hardware </tags/hardware>`__ +- `packages <../packages.html>`__ +- `scanner </tags/scanner>`__ +- `usb </tags/usb>`__ diff --git a/wiki/packages/screen.rst b/wiki/packages/screen.rst new file mode 100644 index 0000000..362f4f5 --- /dev/null +++ b/wiki/packages/screen.rst @@ -0,0 +1,71 @@ +screen +====== + +*"Screen is a full-screen window manager that multiplexes a physical +terminal between several processes, typically interactive shells."* +`​http://www.gnu.org/software/screen/ <http://www.gnu.org/software/screen/>`__ + +*screen* erzeugt eine Shell welche auch nach einem Ausloggen bestehen +bleibt und die man aushängen (detach) und sich auch beliebig wieder +einhängen (attach) kann, jedesmal wird dabei der Bildschirm +wiederhergestellt, auch wenn er sich verändert haben sollte. + +.. _Bedienung: + +Bedienung +--------- + +*screen* kann ohne alles aufgerufen werden und bietet dann eine ganz +normale Shell an. *screen* kann aber auch mit einem Befehl als Argument +aufgerufen werden, woraufhin dieser ausgeführt wird bis er sich selbst +beendet oder der Prozess beendet wird. Oder auch: die Daemon-Version für +Arme (den jeder Prozess ist so im Hintergrund ausführbar ohne als Daemon +programmiert worden zu sein). + +aushängen/detach +~~~~~~~~~~~~~~~~ + +Mit *CTRl+A* und dann *D* kann man sich aus einer Shell aushängen die +auch dann im Hintergrund weiterläuft. + +einhängen/attach +~~~~~~~~~~~~~~~~ + +Ausserhalb der ausgehängten Shell kann man mit ``screen -x`` sich in die +Shell einhängen aus der man sich ausgehangen hat (wenn es nur eine gibt) +Mit ``screen -list`` kann man sich eine Liste der Shells anzeigen die im +Hintergrund laufen. Die Namen (die man mit ``screen -t <neuerName>`` +ändern kann) werden dazu benutzt mit ``screen -r <Name>`` ausgewählt zu +werden. + +.. _PuTTY-Tip:ÄnderungderFensterbreitebeimScreen-Startverhindern: + +PuTTY-Tip: Änderung der Fensterbreite beim Screen-Start verhindern +------------------------------------------------------------------ + +Kleiner Tip für *PuTTY*-Benutzer: Beim Starten von *screen* verändert +das Programm gern mal eigenmächtig die Fensterbreite auf 80 Zeichen. Man +kann das entweder durch eine entsprechende Einstellung in *screen* +verhindern (Kommando +`​termcapinfo <http://lists.gnu.org/archive/html/screen-users/2005-10/msg00006.html>`__), +wovon ich aber nicht genug verstehe, oder man kann durch eine +*PuTTY*-Einstellung serverseitige Größenänderungen am Terminal verbieten +- siehe Bild. Trotzdem kann man noch clientseitig die Fenstergröße +verändern. + +.. figure:: /screenshots/35.gif + :alt: PuTTY Terminal Konfiguration + + PuTTY Terminal Konfiguration + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​Screen <http://de.wikipedia.org/wiki/Screen>`__ bei Wikipedia + +- Tags +- `console </tags/console>`__ +- `packages <../packages.html>`__ +- `tools </tags/tools>`__ diff --git a/wiki/packages/ser2net.rst b/wiki/packages/ser2net.rst new file mode 100644 index 0000000..666e393 --- /dev/null +++ b/wiki/packages/ser2net.rst @@ -0,0 +1,13 @@ +Homepage: +`​http://ser2net.sourceforge.net/ <http://ser2net.sourceforge.net/>`__ + +Anwendungsbeispiele: +`​http://www.nwlab.net/tutorials/ser2net/konsolenserver-linux.html <http://www.nwlab.net/tutorials/ser2net/konsolenserver-linux.html>`__ +`​http://www.aufpreis.de/aufpreis/php/ser2netttyredirect.php <http://www.aufpreis.de/aufpreis/php/ser2netttyredirect.php>`__ + +Als Windows-Client eignet sich `​HW Virtual Serial +Port <http://www.hw-group.com/products/hw_vsp/index_de.html>`__ Auch ein +direkter Zugriff über Telnet auf den Netzport von ser2net ist möglich. + +Thread im IPPF: +`​http://www.ip-phone-forum.de/showthread.php?p=1329692 <http://www.ip-phone-forum.de/showthread.php?p=1329692>`__ diff --git a/wiki/packages/siproxd.rst b/wiki/packages/siproxd.rst new file mode 100644 index 0000000..0fdc526 --- /dev/null +++ b/wiki/packages/siproxd.rst @@ -0,0 +1,7 @@ +`​Siproxd <http://siproxd.sourceforge.net/>`__ is a proxy/masquerading +daemon for the SIP protocol. + +- Tags +- `daemon </tags/daemon>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/sispmctl.rst b/wiki/packages/sispmctl.rst new file mode 100644 index 0000000..bf5b23b --- /dev/null +++ b/wiki/packages/sispmctl.rst @@ -0,0 +1,221 @@ +sispmctl +======== + +`​sispmctl <http://sispmctl.sourceforge.net/>`__ ermöglicht das Schalten +von 230V-Steckdosen über den USB-Anschluss der Fritzbox (nur für +Fritzboxen mit USB-Host-Anschluss). Es unterstützt die USB-Steckdosen +GEMBIRD Silvershield SIS-PM, SIS-PMS und mSIS-PM. Diese USB-Steckdosen +sind deutlich günstiger zu bekommen als Steckdosen, die übers Netzwerk +geschaltet werden. Dank der Fähigkeiten von Freetz können diese +Steckdosen auch per Internet und per Telefon geschaltet werden. + +.. _Einschränkung: + +Einschränkung +------------- + +sispmctl läuft leider nicht auf Boxen, die den USB-Low-Speed-Modus nicht +unterstützen. Zu diesen Boxen gehört z.B. die alt bekannte 7170. Der +Grund dafür liegt darin, dass der USB-Controller solcher Boxen in einem +FPGA realisiert ist und von AVM nur sehr spärlich programmiert wurde. Da +dieser Teil der Firmware zum Closed-Source-Bereich gehört, sehen wir +leider keine große Chancen, dass sich die Situation in der nächsten Zeit +verbessern wird. Wenn sich jemand damit auskennt, ist er dennoch +herzlich eingeladen den USB-Controller einer 7170 dazu zu ertüchtigen, +mit den Steckdosenleisten von GEMBIRD zu reden. + +| Liste der Boxen, mit denen sispmctl **nicht** funktioniert: alle x1xx + Modelle z.B. **3131**, **7141**, **7170** +| Liste der Boxen, mit denen sispmctl funktioniert: **3370**, **7270**, + **W920V** + (`​Speedport2Fritz <http://www.ip-phone-forum.de/showthread.php?t=172137>`__) + +.. _Benutzung: + +Benutzung +--------- + +**sispmctl** kann einerseits per Kommandozeile benutzt werden +(telnet/ssh), andererseits enthält es einen kleinen Webserver, der das +Schalten der Steckdosen ermöglicht. Der eingebaute Webserver enthält +leider keine Möglichkeit zur Authentifizierung, so dass auch bei +Benutzung von https (xrelayd, matrixtunnel) von der Verwendung übers +Internet abzuraten ist. Es ist leider ohne Weiteres nicht möglich den +integrierten Webserver über inetd laufen zu lassen, da sispmctl nur +rudimentär Listener-Mode unterstützt. Selbst im Listener-Mode +unterstützt sispmctl-Binary nicht die echte Daemon-Funktionalität. Aus +diesem Grund muss der integrierte Webserver mit einem & am Ende in den +Hintergrund geschickt werden, um eine Daemon-ähnliche Funktionsweise +abzubilden. + +Die Steckdosenleiste kann, wenn sie direkt an einem Windows-Rechner +angeschlossen ist, über die mitgelieferte Software auch so eingestellt +werden, dass sie unabhängig vom Rechner zu bestimmten Zeitpunkten +Schaltvorgänge ausführt. Diese Fähigkeit unterstützt **sispmctl** seit +Version 3.0 (30.03.2011). Da diese Funktionalität noch ziemlich neu ist, +wird sie oft auch durch andere Pakete in Freetz realisiert: + +- **cron**: zeitgesteuertes Schalten +- **callmonitor**: Schalten per Telefon (ohne Annahme des Gesprächs). +- **dtmfbox**: Schalten per Telefon (mit Annahme des Gesprächs; per + DTMF). +- **dropbear (ssh)**: Schalten übers Internet. +- **apache/lighthttpd/busybox-httpd, haserl/php und + xrelayd/matrixtunnel**: Schalten per Web-Interface. + +.. _FreetzWebinterface: + +Freetz Webinterface +------------------- + +.. figure:: /screenshots/207.jpg + :alt: CGI zur Einrichtung von sispmctl + + CGI zur Einrichtung von sispmctl + +Seit Mitte März 2011 wurden die ersten Versuche unternommen, eine +Konfigurationsseite für FREETZ und einen rc-Startskript zu entwickeln. +Näheres s. unter weiterführenden Links. + +Die Version 1.0 von sispmctl-cgi erlaubt das Wählen zwei zusätzlicher +Skins über menuconfig. Insbesonders "smartphone"-Skin ist minimalistisch +gestaltet und bestens für Kleingeräte zugeschnitten. Auf der +Einstellungsseite kann man "on-the-box" zwischen den Skins umschalten. + +Seit Version 1.1 von sispmctl-cgi besteht die Möglichkeit mehrere +Steckdosenleisten (bis 9) zu konfigurieren und einzelnen Steckdosen +Namen zu vergeben. Diese benutzerdefinierten Bezeichnungen werden in +FREETZ-Einstellungen abgespeichert und vom integrierten Webserver dank +einer Parser-Funktion im rc-Skript dargestellt. Um mehrere +Steckdosenleisten per integriertes Webinterface bedienen zu können, +werden mehrere Instanzen von sispmctl als Listener auf unterschiedlichen +Ports gestartet. Diese Ports können über die Einstellungsseite separat +für jede Steckdosenleiste konfiguriert werden. + +Seit Trunkversion `r6789 </changeset/6789>`__ ist sispmctl 3.0 samt +cgi-Version 1.1 ein Bestandteil von FREETZ und kann über menuconfig +unter "Testing" ausgewählt werden. CGI-Version und rc-Skript kann in +menuconfig separat abgewählt oder ins Image "mitgenommen" werden. Werden +cgi- und rc-Skript abgewählt, so steht dem Benutzer die alt bekannte +binary-Version zur Verfügung, die er allerdings selbst händisch starten +und verwalten muss. Für das in sispmctl integrierte Webinterface stehen +jetzt zusätzliche Skins zur Verfügung, die ebenfalls über menuconfig +ausgewählt werden können. + +.. figure:: /screenshots/210.jpg + :alt: sispmctl in menuconfig + + sispmctl in menuconfig + +.. _Platzbedarf: + +Platzbedarf +----------- + +Cgi und rc-Skript beanspruchen im Flash circa 4kB. Der Unterschied im +Binary mit und ohne Webserver ist 6kB. Die Skins beinhalten jeweils ein +Bildchen und einige html-Dateien, was pro Skin etwa 10…16kB an +Zusatzplatz kostet. + +manpage +------- + +Auf der Kommandozeile gibt ``sispmctl -h`` eine kurze Übersicht über die +Optionen. Die +`​man-page <http://sispmctl.sourceforge.net/#mozTocId756141>`__ findet +sich aber auch auf der Homepage des Projekts. + +.. code:: bash + + root@fritz:/var/mod/root# sispmctl -h + + SiS PM Control for Linux 3.0 + + (C) 2004-2011 by Mondrian Nuessle, (C) 2005, 2006 by Andreas Neuper. + (C) 2010 by Olivier Matheret for the plannification part + This program is free software. + sispmctl comes with ABSOLUTELY NO WARRANTY; for details + see the file INSTALL. This is free software, and you are welcome + to redistribute it under certain conditions; see the file INSTALL + for details. + + sispmctl -s + sispmctl [-q] [-n] [-d 0...] [-D ...] -b <on|off> + sispmctl [-q] [-n] [-d 0...] [-D ...] -[o|f|t|g|m] 1..4|all + sispmctl [-q] [-n] [-d 0...] [-D ...] -[a|A] 1..4|all [--Aat '...'] [--Aafter ...] [--Ado <on|off>] ... [--Aloop ...] + 'v' - print version & copyright + 'h' - print this usage information + 's' - scan for supported GEMBIRD devices + 'b' - switch buzzer on or off + 'o' - switch outlet(s) on + 'f' - switch outlet(s) off + 't' - toggle outlet(s) on/off + 'g' - get status of outlet(s) + 'm' - get power supply status outlet(s) on/off + 'd' - apply to device 'n' + 'D' - apply to device with given serial number + 'n' - show result numerically + 'q' - quiet mode, no explanations - but errors + 'a' - get plannification for outlet + 'A' - set plannification for outlet + '-A<num>' - select outlet + '--Aat "date"' - sets an event time as a date '%Y-%m-%d %H:%M' + '--Aafter N' - sets an event time as N minutes after the previous one + '--Ado <on|off>' - sets the current event's action + '--Aloop N' - loops to 1st event's action after N minutes + + Webinterface features: + sispmctl [-q] [-i <ip>] [-p <#port>] [-u <path>] -l + 'l' - start port listener + 'i' - bind socket on interface with given IP (dotted decimal, i.e. 192.168.1.1) + 'p' - port number for listener (2638) + 'u' - repository for web pages (default=/usr/share/sispmctl) + +.. _BekannteBugs: + +Bekannte Bugs +------------- + +Das integrierte Web-Interface ist sehr empfindlich gegenüber Störungen +auf dem USB-Bus bzw. gegenüber falscher Byte-Sequenzen auf dem +lauschenden Port. Beides führt zu einem sicheren Absturz vom Webserver. +Zu erkennen sind solche Abstürze dadurch, dass der Web-Browser auf dem +besagten Port eine Zeitüberschreitung meldet bzw. sispmctl-Dienst in +FREETZ als "stopped" vermeldet wird. Ein manueller Wiederstart des +intgrierten Web-Interfaces ist nach einem solchen Absturz möglich. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​Homepage von sispmctl <http://sispmctl.sourceforge.net/>`__ + (Englisch) +- `​Version 1.0 von sispmctl-cgi auf + IPPF <http://www.ip-phone-forum.de/showthread.php?t=232493&p=1690967&viewfull=1#post1690967>`__ +- `​Version 1.1 von sispmctl-cgi auf + IPPF <http://www.ip-phone-forum.de/showthread.php?t=232493&p=1695596&viewfull=1#post1695596>`__ +- `Ticket #1264 im trac </ticket/1264>`__ +- `Ticket #1677 im trac </ticket/1677>`__ + +.. _WeitereScreenshots: + +Weitere Screenshots +------------------- + +.. figure:: /screenshots/208.jpg + :alt: Hauptskin von sispmctl + + Hauptskin von sispmctl + +.. figure:: /screenshots/211.jpg + :alt: Smartphone-Skin von sispmctl + + Smartphone-Skin von sispmctl + +| + +- Tags +- `homeautomation </tags/homeautomation>`__ +- `packages <../packages.html>`__ +- `usb </tags/usb>`__ diff --git a/wiki/packages/smartmontools.rst b/wiki/packages/smartmontools.rst new file mode 100644 index 0000000..1068917 --- /dev/null +++ b/wiki/packages/smartmontools.rst @@ -0,0 +1,35 @@ +.. _Smartmontoolssmartctl: + +Smartmontools (smartctl) +======================== + +| Mit den Smartmontools (bzw. mit smartctl) können die + "Gesundheitswerte" von Festplatten (auch + `​SMART <http://smartmontools.sourceforge.net/man/smartctl.8.html>`__ + genannt) ausgelesen, und im Freetz-Webinterface unter Status angezeigt + werden. Dies funktioniert allerdings nur dann, wenn die Festplatte und + dessen USB-Festplattengehäuse das Auslesen dieser Werte auch zuläßt. + +.. figure:: /screenshots/244.png + :alt: Statusseite von SMART im WebIf + + Statusseite von SMART im WebIf + +| **Folgende Werte werden im Webinterface angezeigt:** + +- Modellbezeichnung der Festplatte und dessen Speicherkapazität. +- Der allgemeine, von SMART bewertete Zustand (Health) der Festplatte. +- Aktuelle Temperatur der Festplatte in °C. +- Bisherige Laufzeit der Festplatte. +- Anzahl der Einschaltvorgänge. +- Und anschließend alle verfügbaren Werte, wie man sie auch auf der + Konsole sehen würde. + +| +| **Hinweis:** +| Durch das Öffnen der Statusseite im Webinterface wird eine eventuell + geparkte Festplatte hochgefahren! Daher kann es auch ein wenig dauern, + bis die Statusseite komplett angezeigt wird. + +- Tags +- `SMART </tags/SMART>`__ diff --git a/wiki/packages/smstools3.rst b/wiki/packages/smstools3.rst new file mode 100644 index 0000000..05dd9e8 --- /dev/null +++ b/wiki/packages/smstools3.rst @@ -0,0 +1,57 @@ +.. _SMStools3: + +SMStools3 +========= + +.. figure:: /screenshots/251.jpg + :alt: SMStools3 + + SMStools3 + +Package um SMS mit einem UMTS-Stick zu versenden und zu empfangen. + +|Warning| Falls die FritzBox UMTS-Unterstützung hat, am besten den umtsd +herauspatchen. + +| SMStools3 kann komplett per Webif bedient werden oder alternativ per + Terminal. + +.. _Datenverzeichnis: + +Datenverzeichnis +---------------- + +Das "Datenverzeichnis" legt man am besten auf einen USB-Stick, damit +keine SMS verloren gehen. Dennoch wird ein ``modsave`` beim Beenden des +Packages ausgeführt, falls der Pfad mit ``/tmp/flash`` beginnt. + +.. _SendenundEmpfangenmitdemTerminal: + +Senden und Empfangen mit dem Terminal +------------------------------------- + +Eine SMS kann man diesem Befehl versendet werden, der Parameter +``flash`` ist optional: + +.. code:: bash + + rc.smstools3 sendsms flash +497771234567 Text der Nachricht + +Empfangene SMS können so aufgelistet angezeigt: + +.. code:: bash + + rc.smstools3 listsms + +.. _Weiteres: + +Weiteres +======== + +- Komplette Dokumentation: + `​http://smstools3.kekekasvi.com/ <http://smstools3.kekekasvi.com/>`__ +- Falls der Stick nicht richtig erkannt wird, sondern nur als + Datenträger: `wiki:/packages/ppp#Weiteres <ppp.html#Weiteres>`__ + +.. |Warning| image:: ../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/packages/socat.rst b/wiki/packages/socat.rst new file mode 100644 index 0000000..0c62188 --- /dev/null +++ b/wiki/packages/socat.rst @@ -0,0 +1,17 @@ +socat +===== + +`​socat <http://www.dest-unreach.org/socat/>`__ ist eine Alternative zum +`netcat Paket <netcat.html>`__, welches mit erweiterter Funktionalität +aufwartet. Dies hat natürlich auch seinen Preis: *socat* benötigt +*lib_ssl*, *lib_util* sowie *libz*, welche bei der Installation über +`menuconfig <../help/howtos/common/install/menuconfig.html>`__ +automatisch mit ausgewählt werden. + +-------------- + +- Tags +- `console </tags/console>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `tools </tags/tools>`__ diff --git a/wiki/packages/spindown.rst b/wiki/packages/spindown.rst new file mode 100644 index 0000000..374e6a1 --- /dev/null +++ b/wiki/packages/spindown.rst @@ -0,0 +1,26 @@ +.. _Spindown: + +Spindown +-------- + +| Mit **Spindown** können kompatible *"mechanische"* Festplatten in den + Schlafmodus versetzt werden. + +.. figure:: /screenshots/69.png + :alt: spindown-cgi + + spindown-cgi + +| **Starttyp**: Automatisch (mit dem Starten der Box), oder Manuell + (starten des Dienstes von Hand) +| **Gerätenamen**: Hier wird der Gerätenamen der Festplatte angegeben, + welche schlafen gelegt werden soll (sda, sdb, sdc, usw.) +| **Leerlaufzeit**: Nach der hier eingestellten Zeit des Nichtstuns wird + die Festplatte schlafen gelegt. +| **Modus**: Standby oder Sleep: Einfach probieren, mit welchem Modus + die Festplatte sich in den Ruhezustand versetzen lässt, und auch + wieder geweckt werden kann. + +- Tags +- `cgi </tags/cgi>`__ +- `hardware </tags/hardware>`__ diff --git a/wiki/packages/strace.rst b/wiki/packages/strace.rst new file mode 100644 index 0000000..6b808f8 --- /dev/null +++ b/wiki/packages/strace.rst @@ -0,0 +1,94 @@ +strace +====== + +`​strace <http://sourceforge.net/projects/strace/>`__ verfolgt +System-Calls und Signale eines Prozesses. Dabei schaltet es sich +zwischen einen Benutzerprozeß und den Kernel und protokolliert alle +Aktivitäten an dieser Schnittstelle. Wenn der verfolgte Prozess einen +Systemaufruf macht, gibt *strace* den Namen, die Argumente des Aufrufs +und den Rückgabewert dieses Systemaufrufs aus. Wenn der verfolgte +Prozess ein Signal erhält, gibt *strace* den Namen des Signals aus. +Falls ein Systemaufruf mit einem Fehler zurückkehrt, wird, wenn +vorhanden, die dem Fehlerstatus zugeordnete Fehlermeldung angezeigt. + +Kurzum: *strace* kommt meist dann zum Einsatz, wenn "etwas nicht +funktioniert, und keiner weiß warum". Sprich: Ein Programm stürzt ab, +ein Prozess hängt - und man möchte herausfinden, bei welcher Aktion dies +passiert. + +Das "Geschwisterchen" `ltrace <ltrace.html>`__ kann dabei auch hilfreich +zur Seite stehen: Anstelle der System-Calls protokolliert *ltrace* +Bibliotheks-Aufrufe (aka "Library Calls"). + +.. _Tip:Vermeidenvonunfinishedundresumedinstrace-Logs: + +Tip: Vermeiden von "unfinished" und "resumed" in strace-Logs +------------------------------------------------------------ + +Wenn man strace mit "-f" aufruft, um Unterprozesse bzw. Threads +mitzuverfolgen, sieht man oft unterbrochene Systemaufrufe im Log, weil +strace im Fall einer Unterbrechung den Start- und Rückkehrzeitpunkt der +Aufrufe separat notiert. Darunter leidet aber die Lesbarkeit, weil man +weiter unten oft nicht mehr weiß, zum welchem "unfinished" welches +"resume" gehört (hier im Beispiel ist es noch einfach): + +.. code:: bash + + 719 14:55:13.562840 clock_gettime(CLOCK_MONOTONIC, <unfinished ...> + 1010 14:55:13.563457 getppid( <unfinished ...> + 719 14:55:13.563818 <... clock_gettime resumed> {337216, 716098754}) = 0 + 1010 14:55:13.564329 <... getppid resumed> ) = 719 + 719 14:55:13.564701 clock_gettime(CLOCK_MONOTONIC, <unfinished ...> + 1010 14:55:13.565066 poll([{fd=21, events=POLLIN}], 1, 2000 <unfinished ...> + 719 14:55:13.565543 <... clock_gettime resumed> {337216, 717736704}) = 0 + +Mittels "-ff" schreibt man eine separate Log-Datei pro PID, aber dann +kann mit die Zeitlinie nicht mehr anschaulich verfolgen. Möchte man +beides zusammen haben, hilft folgendes Skript (der *sed*-Befehl ist +deshalb so kompliziert, weil bei Aufrufen des Skripts mit mehreren "-p" +die in diesem Modus als erste Spalte auftauchenden PIDs in den +Einzeldateien zuerst entfernt werden müssen, weil sonst keine Sortierung +nach Zeitstempel möglich wäre): + +:: + + #!/bin/sh + + # Logfile as first parameter is required + logfile="$1" + shift + + # Ctrl-C should only kill strace, not the rest of the script + trap '' INT + + # Create one logfile per pid, then consolidate them into one, + # sorted by timestamp and containing the pid as 2nd column + strace -tt -ff -o "$logfile" "$@" + { + for file in "$logfile".*; do + pid=$(printf "%-5u" "${file##$logfile.}") + cat "$file" | sed -r "s/^([0-9]+ +)?([^ ]+)(.*)/\2 $pid\3/" + done + } | sort > "$logfile" + + # Clean up temporary logfiles + rm "$logfile".* + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​strace Projektseite <http://sourceforge.net/projects/strace/>`__ + (Sourceforge) +- `​Artikel: Mit ''strace'' Systemaufrufe + verfolgen <http://www.pronix.de/pronix-585.html>`__ +- `​strace Man page <http://linux.die.net/man/1/strace>`__ + +-------------- + +- Tags +- `console </tags/console>`__ +- `packages <../packages.html>`__ +- `programming </tags/programming>`__ +- `tools </tags/tools>`__ diff --git a/wiki/packages/streamripper.rst b/wiki/packages/streamripper.rst new file mode 100644 index 0000000..1664e75 --- /dev/null +++ b/wiki/packages/streamripper.rst @@ -0,0 +1,52 @@ +.. _Streamripper: + +Streamripper +============ + +`​Streamripper <http://streamripper.sourceforge.net/>`__ ist eine freie, +plattformunabhängige Software zum +"`​Rippen <http://de.wikipedia.org/wiki/Rippen>`__" (Abspeichern) von +"Streams" (z.B. +`​SHOUTcast <http://de.wikipedia.org/wiki/SHOUTcast>`__-, +`​Icecast <http://de.wikipedia.org/wiki/Icecast>`__- und andere +`​Internetradio <http://de.wikipedia.org/wiki/Internetradio>`__\ sendungen. + +*Streamripper* selbst verfügt über keine grafische Oberfläche, sondern +wird von der Kommandozeile aus bedient. Das minimiert den +Ressourcenverbrauch - und "schön bunt zugucken" muss man bei der +Aufnahme ja nicht. Wer dennoch ein wenig "Klicki-Bunti" bevorzugt, +findet aber auch das eine oder andere grafische +`​FrontEnd <http://de.wikipedia.org/wiki/Frontend_und_Backend>`__ (z.B. +auf der `​Homepage <http://streamripper.sourceforge.net/>`__ des +Projekts) - wenn auch nicht gerade für die FritzBox. + +*Streamripper* nimmt die Formate +`​MP3 <http://de.wikipedia.org/wiki/MPEG-1_Audio_Layer_3>`__ sowie `​OGG +Vorbis <http://de.wikipedia.org/wiki/Vorbis>`__ auf, wobei auch +Metadaten (ID3 Tags etc.) gespeichert werden. Es kann den Stream nicht +selbst wiedergeben, ihn aber durchaus direkt zu einem Streaming-fähigen +"Player" weiterleiten. + +.. _VerwendeteBibliotheken: + +Verwendete Bibliotheken +----------------------- + +- libmad +- libglib2 + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​Streamripper Homepage <http://streamripper.sourceforge.net/>`__ +- `​Wikipedia Artikel <http://de.wikipedia.org/wiki/Streamripper>`__ + +-------------- + +- Tags +- `audio </tags/audio>`__ +- `console </tags/console>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/stunnel.rst b/wiki/packages/stunnel.rst new file mode 100644 index 0000000..7260e4d --- /dev/null +++ b/wiki/packages/stunnel.rst @@ -0,0 +1,78 @@ +.. _Stunnel: + +Stunnel +======= + +.. figure:: /screenshots/202.png + :alt: Stunnel Webinterface + + Stunnel Webinterface + +*"Stunnel is a program that allows you to encrypt arbitrary TCP +connections inside SSL (Secure Sockets Layer) available on both Unix and +Windows. Stunnel can allow you to secure non-SSL aware daemons and +protocols (like POP, IMAP, LDAP, etc) by having Stunnel provide the +encryption, requiring no changes to the daemon's code. "* +`​http://www.stunnel.org/ <http://www.stunnel.org/>`__ + +**Stunnel** könnte man auf Deutsch mit "Sicherer Tunnel" wiedergeben. +Hinter dem Begriff verbirgt sich die Möglichkeit, beliebige TCP +Verbindungen per SSL zu verschlüsseln - auch bzw. gerade wenn die +Anwendung selbst dies nicht unterstützt, und somit dem +"Man-in-the-Middle" das Schnüffeln zu verderben. Zahlreiche gute +Anwendungsbeispiele finden sich auf der `​Stunnel +Homepage <http://www.stunnel.org/examples/>`__. + +.. _Konfiguration: + +Konfiguration +------------- + +#. Erzeugen der Keys auf dem PC (unter Linux): + + .. code:: bash + + openssl genrsa 1024 > host.key + openssl req -new -x509 -nodes -sha1 -days 365 -key host.key > host.cert + +#. Das Zertifikat und den Schlüssel im Webinterface unter Einstellungen + → Stunnel: "Certificate Chain" (host.cert) und "Private Key" + (host.key) einfügen. + +3. Die gewünschten Services hinzufügen. Zum Beispiel: + + .. code:: bash + + [freetz https Web-Interface] + client = no + cert = /tmp/flash/stunnel/certs.pem + key = /tmp/flash/stunnel/key.pem + accept = 4433 + connect = 81 + + Die Angabe des Pfads zum Zertifikat und zum Schlüssel sind optional. + Ohne ausdrückliche Angabe wird das Zertifikat + */tmp/flash/stunnel/certs.pem* und der Schlüssel + */tmp/flash/stunnel/key.pem* verwendet, welche vom Webinterface aus + verwaltet werden (Punkt 2). + +4. Zugriff (intern) über + `​https://fritz.box:4433 <https://fritz.box:4433>`__. Für den + externen Zugriff muss noch eine Port-Freigabe eingetragen werden. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​Wikipedia <http://en.wikipedia.org/wiki/Stunnel>`__ (EN) Article +- `​Stunnel.ORG <http://www.stunnel.org/>`__ — Stunnel Homepage +- `matrixtunnel <matrixtunnel.html>`__ — kleiner Stunnel Ersatz +- `xrelayd <xrelayd.html>`__ — Nachfolger von Matrixtunnel +- `​Artikel im + Forum <http://www.ip-phone-forum.de/showthread.php?t=123174>`__ + +- Tags +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `tunnel </tags/tunnel>`__ diff --git a/wiki/packages/subversion.rst b/wiki/packages/subversion.rst new file mode 100644 index 0000000..af20d64 --- /dev/null +++ b/wiki/packages/subversion.rst @@ -0,0 +1,111 @@ +.. _Subversion: + +Subversion +========== + +`​Subversion <http://subversion.tigris.org/>`__ (SVN) ist eine Freie +Software zur Versionsverwaltung von Dateien und Verzeichnissen. + +Die Versionierung erfolgt in einem zentralen Projektarchiv (engl. +repository) in Form einer einfachen Revisionszählung. Wenn Änderungen an +Inhalten verteilt auf den Computern der Bearbeiter ausgeführt werden, +werden zwischen dem Projektarchiv und einem Arbeitsplatz jeweils nur die +Unterschiede zu bereits vorhandenen Ständen übertragen. + +.. _EnthalteneProgrammteile: + +Enthaltene Programmteile +------------------------ + ++-----------------------------------+-----------------------------------+ +| svn | Das Kommandozeilenprogramm | ++-----------------------------------+-----------------------------------+ +| svnadmin | Ein Werkzeug zum Erstellen, | +| | Verändern oder Reparieren eines | +| | Repositorys | ++-----------------------------------+-----------------------------------+ +| svndumpfilter | Ein Programm zum Filtern von | +| | Subversion-Repository-Dump-Stream | +| | s | ++-----------------------------------+-----------------------------------+ +| svnlook | Ein Werkzeug zur direkten | +| | Untersuchung eines | +| | Subversion-Repositorys | ++-----------------------------------+-----------------------------------+ +| svnserve | Ein spezielles Server-Programm, | +| | dass als Hintergrundprozess | +| | laufen oder von SSH aufgerufen | +| | werden kann; eine weitere | +| | Möglichkeit, das Repository über | +| | ein Netzwerk verfügbar zu machen | ++-----------------------------------+-----------------------------------+ +| svnsync | Ein Programm zum inkrementellen | +| | Spiegeln eines Repositorys über | +| | ein Netzwerk | ++-----------------------------------+-----------------------------------+ +| svnversion | Ein Programm, das den Zustand | +| | einer Arbeitskopie (durch | +| | Revisionen der vorliegenden | +| | Objekte) berichtet | ++-----------------------------------+-----------------------------------+ + +.. _WebIF: + +WebIF +----- + +.. figure:: /screenshots/117.png + :alt: Subversion + + Subversion + +| + +.. _Konfiguration: + +Konfiguration +------------- + +Ein Repository wird mit folgendem Befehl angelegt + +.. code:: bash + + svnadmin create --fs-type fsfs /PFAD_ZU_DEM_EXT2_TRAEGER/REPOSITORY_NAME + +REPOSITORY_NAME ist ein Platzhalter und darf beliebig gewählt werden. +Der Datenträger muss mit ext2 bzw. ext3 formatiert werden, Repositories +auf FAT- bzw. NTFS-Trägern werden von Freetz (derzeit noch) nicht +unterstützt. + +Nachdem das Repository angelegt ist, sind in dem Verzeichnis +REPOSITORY_NAME/\ **conf** folgende Dateien zu finden bzw. neu +anzulegen. Welche Einträge in diesen gemacht werden können und was sie +bedeuten, kann +`​hier <http://svnbook.red-bean.com/nightly/en/svn.serverconfig.svnserve.html>`__ +nachgelesen werden. Die allereinfachte Konfiguration könnte z.B. so +aussehen: + +**authz** einfach leer + +**passwd** + +.. code:: bash + + [users] + DeinName = DeinPasswort + +**svnserve.conf** + +.. code:: bash + + [general] + anon-access = none + auth-access = write + password-db = passwd + +- Tags +- `inetd </tags/inetd>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `programming </tags/programming>`__ +- `server </tags/server>`__ diff --git a/wiki/packages/sundtek.rst b/wiki/packages/sundtek.rst new file mode 100644 index 0000000..c42aab0 --- /dev/null +++ b/wiki/packages/sundtek.rst @@ -0,0 +1,67 @@ +.. _SundtekDVBTreiber: + +Sundtek DVB Treiber +=================== + +.. figure:: /screenshots/256.jpg + :alt: Sundtek DVB driver + + Sundtek DVB driver + +Dieses Package stellt den Treiber für USB-Sticks von Sundtek bereit, mit +denen DVB (c/s/t) empfangen werden kann. + +| |Warning| Die Fritzbox sollte mindestens USB 2.0 haben, 11 MBit/s reichen + nicht aus. +| |Warning| Mit Kernel 2.6.19.2 (Fritzbox 7270v1 und 7570) gibt es momentan + ein Memoryleak, siehe `#472 </ticket/472>`__. + +.. _Parameterfürmediaclient: + +Parameter für 'mediaclient' +--------------------------- + +In dieses Textfeld können Parameter zum initialisieren für den +``mediaclient`` eingetragen werden. Wenn dies genutzt wird, wird die +Hardwareerkennung vom ``mediasrv`` abgewartet was etwa 10 Sekunden +benötigt + +.. _Treiberverwenden: + +Treiber verwenden +----------------- + +Um den Treiber benutzen zu können muss vorher dieser Befehl ausgeführt +werden: + +.. code:: bash + + export LD_PRELOAD=/usr/lib/libmediaclient.so + +.. _USB-Stickinitialisieren: + +USB-Stick initialisieren +------------------------ + +Der USB-Stick muss für die Fritzbox in den Übertrangungsmodus "bulk" +versetzt werden: + +.. code:: bash + + mediaclient --dtvtransfermode=bulk + +Dies ist nur einmalig nötig und der Stick muss danach neu angesteckt +werden. + +.. _Weiteres: + +Weiteres +-------- + +Nutzbar z.B. zur Aufzeichnung der Auslastung des Segmentes von +Kabelinternet mit `RRDstats <rrdstats.html#segment>`__. Es soll damit +auch Streaming zu einem Windows PC mit einer aktuellen Betaversion des +DVB-Viewer via SAT>IP möglich sein. + +.. |Warning| image:: ../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/packages/syslogd.en.rst b/wiki/packages/syslogd.en.rst new file mode 100644 index 0000000..a680d57 --- /dev/null +++ b/wiki/packages/syslogd.en.rst @@ -0,0 +1,49 @@ +.. _Syslog: + +Syslog +------ + +| The syslog package enables to log messages local to memory, to a local + disk (e.g. USB), or remote to another server. +| For the local memory a FIFO buffer is used, with a default size of + 200KB. + +.. _SetupinFreetzweb-interface: + +Setup in Freetz web-interface +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. figure:: /screenshots/239.jpg + :alt: Howto Syslog Setup + + Howto Syslog Setup + +.. _Usageofsyslog: + +Usage of syslog +~~~~~~~~~~~~~~~ + +The syslog messages can be displayed via the web-interface via: + +.. code:: bash + + Status > Syslog + +You can filter on some items depending on your configuration and used +packages (e.g. hostapd, login, INADYN). + +Another option is to view the messages via a telnet or ssh connection +using the following commands: + +.. code:: bash + + logread + +You can monitor the syslog messages where all new messages are displayed +using the command: + +.. code:: bash + + logread -f + +(With CTRL-C you can stop the monitoring.) diff --git a/wiki/packages/syslogd.rst b/wiki/packages/syslogd.rst new file mode 100644 index 0000000..13d3983 --- /dev/null +++ b/wiki/packages/syslogd.rst @@ -0,0 +1,76 @@ +.. _Syslogd: + +Syslogd +======= + +.. figure:: /screenshots/199.png + :alt: Bild der Oberfläche von Syslogd + + Bild der Oberfläche von Syslogd + +Das Syslogd-CGI Package stellt die Konfiguration des syslog über das +Webinterface bereit. Es kann lokal in eine Datei oder einen Ringpuffer +oder über Netzwerk geloggt werden. + +Der Inhalt des Logs lässt sich über das Webinterface (Status→Syslog) +anzeigen. + +Es kann entweder über **Netzwerk** oder **lokal** geloggt werden. + +- Lokal gibt es die Möglichkeit in ein **Ringpuffer** zu schreiben oder + in eine **Datei**. Beim Ringpuffer wird, sobald der Puffer voll ist, + der älteste Eintrag gelöscht. Wenn lokal in eine Datei geloggt wird, + dann sollte sich diese auf einem USB-Medium befinden, sonst kann es + passieren, dass das RAM der Box voll läuft und die Box neu startet. +- Um mit Windows Meldungen von Syslog über das Netzwerk zu empfangen + kann zB die Freeware + `​Tftpd32 <http://tftpd32.jounin.net/tftpd32.html>`__ genutzt werden. + +| Wer zusätzlich die Kernelmessages im Syslog haben will kann die Option + **Kernel-Log-Dämon aktivieren** auswählen (funktioniert auf den Boxen + 3270, 7240, 7270, 7320 und 7390 womöglich aufgrund von AVM-Änderungen + nicht). + +.. _Optionen: + +Optionen +-------- + +.. code:: bash + + Usage: syslogd [OPTIONS] + + System logging utility. + This version of syslogd ignores /etc/syslog.conf + + Options: + -n Run in foreground + -O FILE Log to given file (default:/var/log/messages) + -l N Set local log level + -S Smaller logging output + -s SIZE Max size (KB) before rotate (default:200KB, 0=off) + -b N N rotated logs to keep (default:1, max=99, 0=purge) + -R HOST[:PORT] Log to IP or hostname on PORT (default PORT=514/UDP) + -L Log locally and via network (default is network only if -R) + -C[size(KiB)] Log to shared mem buffer (read it using logread) + + Usage: klogd [-c N] [-n] + + Kernel logger + + Options: + -c N Only messages with level < N are printed to console + -n Run in foreground + +.. _Sieheauch: + +Siehe auch +---------- + +- `costumscript_dublesyslog <../costumscript_dublesyslog.html>`__ + +- Tags +- `cgi </tags/cgi>`__ +- `debug </tags/debug>`__ +- `packages <../packages.html>`__ +- `system </tags/system>`__ diff --git a/wiki/packages/tcp_wrappers.rst b/wiki/packages/tcp_wrappers.rst new file mode 100644 index 0000000..61f2248 --- /dev/null +++ b/wiki/packages/tcp_wrappers.rst @@ -0,0 +1,41 @@ +.. _TCPWrapper: + +TCP Wrapper +=========== + +TCP-Wrapper stellen eine Sicherheitsmaßnahme für +Service-\ `​Daemons <http://de.wikipedia.org/wiki/Daemon>`__ wie +``ftpd`` dar, indem sie zwischen dem Daemon und den eingehenden +Serviceanforderungen stehen. TCP-Wrapper protokollieren erfolgreiche und +nicht erfolgreiche Verbindungsversuche. Darüber hinaus stellen +TCP-Wrapper eine +`​Zugriffskontrolle <http://de.wikipedia.org/wiki/Access_Control_List>`__ +bereit, indem sie eine Verbindung abhängig vom Ursprung der Anforderung +zulassen oder verweigern. Sie verwenden TCP-Wrapper zum Schutz von +Daemons wie z. B. SSH, Telnet und FTP. + +In Freetz wir dieses Paket zur Zeit vom NFS-Server benötigt. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​Freshmeat + Projektseite <http://freshmeat.net/projects/tcp_wrappers/>`__ +- `​Wikipedia Artikel <http://en.wikipedia.org/wiki/TCP_Wrapper>`__ + (Englisch) +- `​Redhat Security + Artikel <http://www.faqs.org/docs/securing/chap5sec37.html>`__ zu TCP + Wrappers (Englisch) +- `​Linux-Tips: ssh Server vor Angriffen + sichern <http://www.linux-tips-and-tricks.de/index.php/ssh/ssh-Server-vor-Angriffen-sichern.html>`__ +- `​Sun Dokumentation: Überwachen und Modifizieren der + Transportschichtservices <http://docs.sun.com/app/docs/doc/820-2980/ipconfig-111?l=de&a=view>`__ + +-------------- + +- Tags +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `security </tags/security>`__ diff --git a/wiki/packages/tcpdump.rst b/wiki/packages/tcpdump.rst new file mode 100644 index 0000000..731c0ca --- /dev/null +++ b/wiki/packages/tcpdump.rst @@ -0,0 +1,48 @@ +tcpdump +======= + +`​tcpdump <http://www.tcpdump.org/>`__ ist ein +Netzwerk-\ `​Sniffer <http://de.wikipedia.org/wiki/Sniffer>`__ (zu +Deutsch: Netzwerk-Schnüffler) - oder, etwas eleganter ausgedrückt: ein +Netzwerk- Diagnoseprogramm. Es ist standardmäßig bei allen +Linux-Distributionen dabei und existiert auch für andere UNIX-Derivate. +Es ist zwar relativ schwer zu bedienen, und die Ausgabe auch recht +schwer zu lesen - weswegen *tcpdump* gegenüber Sniffern wie +`​Wireshark <http://de.wikipedia.org/wiki/Wireshark>`__, die über eine +grafische Oberfläche verfügen, gewisse Nachteile hat. Der Vorteil +insbesondere für die FritzBox liegt aber genau in diesem Nachteil, da +auf der Box kein X installiert ist (oder war etwa jemand so wahnsinnig, +und hat das gemacht?). |:o| + +.. _Warning: + +Warning +------- + +A lot of traffic will use a lot of CPU, even if that traffic isn't +monitored. However, filtering by network adapter helps. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​tcpdump Homepage <http://www.tcpdump.org/>`__ +- `​tcpdump Man page <http://www.tcpdump.org/tcpdump_man.html>`__ +- `​Wikipedia Artikel <http://de.wikipedia.org/wiki/Tcpdump>`__ +- `​Linux-Wiki Artikel <http://www.linuxwiki.de/TcpDump>`__ +- `​kurzer tcpdump + Workshop <http://linuxseiten.kg-it.de/index.php?index=security_tcpdump>`__ +- `​noch ein kleiner + Workshop <http://www.tippscout.de/tcpdump-unter-linux-netzwerk-verkehr-aufzeichnen-mit-tcpdump_tipp_2180.html>`__ + +-------------- + +- Tags +- `console </tags/console>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `tools </tags/tools>`__ + +.. |:o| image:: ../../chrome/wikiextras-icons-16/smiley-surprise.png + diff --git a/wiki/packages/tinc.rst b/wiki/packages/tinc.rst new file mode 100644 index 0000000..ee1765c --- /dev/null +++ b/wiki/packages/tinc.rst @@ -0,0 +1,53 @@ +.. _Tinc: + +Tinc +==== + +`​tinc <http://www.tinc-vpn.org/>`__ ist ein Virtual Privat Network +(`​VPN <http://de.wikipedia.org/wiki/Virtual_Private_Network>`__) Dienst +der Tunnels und Verschlüsselung verwendet, um sichere Verbindungen +zwischen zwei Hosts herzustellen. + +.. _Features: + +Features +-------- + +- Verschlüsselung, Authentifizierung und Daten-Kompression +- Automatisches mesh-routing +- Einfaches Erweitern des VPNs +- Möglichkeit Ethernet Segmente zu brücken (Bridging) +- Unterstützung für viele Betriebssysteme (Linux, FreeBSD, OpenBSD, + NetBSD, MacOS/X, Solaris, Windows 2000 und XP) +- Unterstützung von IPv6 + +.. _VerwendeteBibliotheken: + +Verwendete Bibliotheken +----------------------- + +- liblzo2 +- libssl +- libz + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​tinc Homepage <http://www.tinc-vpn.org/>`__ +- `​Linux.COM Artikel: Creating a VPN with + tinc <http://www.linux.com/feature/131343>`__ +- `​Linux-Magazin.DE Artikel: VPN-Daemon im Userspace: + Tinc <http://www.linux-magazin.de/heft_abo/ausgaben/2003/10/einfache_verbindung>`__ +- `​Heise.DE Netze: Dezentrales VPN mit + Tinc <http://www.heise.de/netze/artikel/Dezentrales-VPN-mit-Tinc-785436.html>`__ + +-------------- + +- Tags +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `routing </tags/routing>`__ +- `security </tags/security>`__ +- `vpn </tags/vpn>`__ diff --git a/wiki/packages/tinyproxy.rst b/wiki/packages/tinyproxy.rst new file mode 100644 index 0000000..897d616 --- /dev/null +++ b/wiki/packages/tinyproxy.rst @@ -0,0 +1,67 @@ +.. _Tinyproxy: + +Tinyproxy +========= + +Das `​tinyproxy <http://tinyproxy.sourceforge.net/>`__ Paket stellt +einen kleinen HTTP Proxy mit Filterfunktionen bereit. + +.. _Proxyauto-configpac: + +Proxy auto-config (pac) +----------------------- + +The complete URL for the default settings is: +`​http://fritz.box:88/cgi-bin/proxy.cgi <http://fritz.box:88/cgi-bin/proxy.cgi>`__ + +See also +`​wikipedia <http://en.wikipedia.org/wiki/Proxy_auto-config>`__. + +.. _URLblocking: + +URL blocking +------------ + +.. figure:: /screenshots/217.png + :alt: tinyproxy filtered + + tinyproxy filtered + +- Clear option *ConnectPort* +- Check option *FilterURLs* +- Add URL's to text box *content of filter file* + +.. code:: bash + + doubleclick\.net + googleadservices\.com + google-analytics\.com + googlesyndication\.com + facebook\.com\/plugins + +Setup Firefox: + +- *Edit > Preferences > Advanced > Settings* +- Check *Manual proxy configuration* +- *HTTP Proxy:* fritz.box +- *Port:* 3128 (assuming tinyproxy default) +- Check *Use this proxy for all protocols* +- *No proxy for:* localhost, 127.0.0.1, fritz.box, 192.168.178.0/24 + +.. _Memoryusage: + +Memory usage +------------ + +After some use: + +- VmSize: 1068 kB +- VmRSS: 508 kB + +Privoxy will use twice as much. + +- Tags +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `proxy </tags/proxy>`__ +- `web </tags/web>`__ diff --git a/wiki/packages/tor.rst b/wiki/packages/tor.rst new file mode 100644 index 0000000..fd15996 --- /dev/null +++ b/wiki/packages/tor.rst @@ -0,0 +1,226 @@ +.. _TorProxy: + +Tor Proxy +========= + +Tor ist ein **anonymes Kommunikationssystem** für das Internet, mit dem +man **verschlüsselt** und **sicher surfen** kann. Die Installation eines +Tor Proxy auf der Fritzbox ermöglicht den Schutz der eigenen +Privatsphäre. Auf der Tor Webseite bekommt man einen guten `​Überblick +über die Funktionsweise von +Tor <http://tor.eff.org/overview.html.de>`__. + +Das Tor Proxy Paket enthält neben einem vorkompilierten Tor Proxy +außerdem eine einfache Clientkonfiguration sowie ein kleines Webfrontend +zur Konfiguration der wichtigsten Parameter und zur Einrichtung eines +Tor-Servers. + +.. figure:: /screenshots/59.png + :alt: Tor: Einstellungen + + Tor: Einstellungen + +.. _ToralsProxybenutzen: + +Tor als Proxy benutzen +---------------------- + +Tor ist ein `​SOCKS Proxy <http://de.wikipedia.org/wiki/SOCKS>`__. Jede +Anwendung, die das SOCKS Protokoll beherrscht, kann so konfiguriert +werden, dass die Internetverbindungen über Tor aufgebaut werden. Die Tor +Dokumentation gibt zahlreiche Beispiele, wie man `​Anwendungen +torifiziert <https://trac.torproject.org/projects/tor/wiki/doc/TorifyHOWTO>`__. + +Für Anwender von Firefox stehen nützlichen Add-Ons wie +`​Torbutton <https://addons.mozilla.org/firefox/2275/>`__ und +`​FoxyProxy <http://foxyproxy.mozdev.org>`__ zur Auswahl, mit denen man +die Verbindung über den Tor Proxy mit wenigen Klicks konfigurieren kann. + +Zum Surfen mit einem Web Browser kann man auch Tor zusammen mit +`Privoxy <privoxy.html>`__ zu betreiben, damit eine vollständige +Anonymität beim Surfen gewährleistet ist. Privoxy ist ebenfalls als +Freetz Paket verfügbar. Alternativ zu Privoxy kann man auch +`​Switchproxy <http://tor.eff.org/docs/tor-switchproxy.html>`__ für +Windows und Mac OS verwenden. + +Ob die Verbindung tatsächlich über das Tor Netzwerk läuft, kann man am +einfachsten mit dem `​Tor Detector <http://torcheck.xenobite.eu/>`__ +überprüfen. + +.. _TorundPrivoxy: + +Tor und Privoxy +--------------- + +Für die Verwendung mit Privoxy muss sicher gestellt sein, dass der Tor +Proxy entweder auf der lokalen Adresse (Einstellung *127.0.0.1*) oder +auf allen Adressen (Einstellung *0.0.0.0*) gebunden ist. Außerdem muss +der Zugriff von der lokalen Adresse *127.0.0.1* auf jeden Fall erlaubt +sein. + +.. _Installation: + +Installation +------------ + +Einfach beim Erstellen in +`menuconfig <../help/howtos/common/install/menuconfig.html>`__ Tor mit +auswählen. + +.. _Geschwindigkeitoptimieren: + +Geschwindigkeit optimieren +-------------------------- + +Ab der Version 0.5 ist die "Optimierung der Tor-Geschwindigkeit" +möglich, so wie es ursprünglich +`​hier <http://web.archive.org/web/20070427080156/http://www.barbarakaemper.de/krypto/anonym-surfen_onion_router_tor3.htm>`__ +beschrieben wurde. Wer sich die Server lieber selbst aussuchen möchte, +findet außerdem `​hier <http://torstatus.kgprog.com/>`__ oder +`​hier <https://torstat.xenobite.eu/>`__ Listen mit aktiven Tor Servern +und deren Standorten. + +.. figure:: /screenshots/60.png + :alt: Tor: Server + + Tor: Server + +Die Entry- und Exit-Nodes müssen hierbei mit deren TOR-Alias angegeben +werden also z.B. "blutmagie" und "chaoscomputerclub23". Andere Versuche +wie IP oder DNS-Namen fruchten hier nicht. + +.. _ToralsServereinrichten: + +Tor als Server einrichten +------------------------- + +Wenn Tor als Server betrieben wird, beteiligt sich die FritzBox am +Routing des Datenverkehrs im Tor-Netzwerk und trägt dazu bei, dass das +Netzwerk leistungsfähiger wird. Über die Grundlagen kann und sollte man +sich auf der +`​Dokumentationsseite <http://www.torproject.org/docs/tor-doc-relay.html.de>`__ +des Tor-Projekts informieren. Da über das Web-Interface derzeit die +Parameter für die Begrenzung der täglichen, wöchentlichen oder +monatlichen Gesamtdatenmenge (noch) nicht konfigurierbar sind, sollten +nur Flatrate-Nutzer einen Tor-Server einrichten. + +Damit der Tor-Server stabil läuft, muss für die FritzBox ein +Swap-Speicher eingerichtet werden (siehe `Howto Swap-File +einrichten <../help/howtos/common/create_swap.html>`__). Die wichtigsten +Optionen für den Server-Betrieb sind über das Web-Interface +konfigurierbar: + +.. figure:: /screenshots/3.png + :alt: + +Die Optionen entsprechen denjenigen in der Konfigurationsdatei torrc. +Der Nickname des eigenen Servers ist frei wählbar. Wenn keine IP oder +FQDN angegeben wird, versucht Tor, die eigene IP-Adresse selbst +herauszufinden. Zuverlässiger ist aber die Angabe eines FQDN der +FritzBox, der z.B. über DynDNS eingerichtet und per +`inadyn <inadyn-mt.html>`__ automatisch aktualisiert werden kann. + +Wichtig für den Betrieb des Tor-Servers sind die Optionen BandwidthRate +und BandwidthBurst, über man die Bandbreite einstellt, die dem +Tor-Netzwerk zur Verfügung gestellt wird. Da Tor im Server-Betrieb +relativ ressourcenhungrig ist, sollte hier nicht übertrieben werden, +selbst wenn mehr Bandbreite vorhanden ist (entscheidend ist der Upload). +Gleiches gilt für die Option MaxOnionsPending. Wird hier ein zu hoher +Wert eingestellt, kann es zu Reboots der FritzBox kommen. Ein Wert unter +10 hat sich auf einer FritzBox 7170 bewährt. + +Der ORPort ist der Port, über den der Tor-Server von außen erreichbar +sein muss. Daher muss für den ORPort eine lokale Portfreigabe auf +0.0.0.0 eingerichtet werden. Das geht am einfachsten über das +Freetz-Paket `avm-firewall <avm-firewall.html>`__. Ein DirPort muss +nicht angegeben werden (dann wird kein DirectoryService bereitgestellt, +was für den Betrieb des Tor-Servers auch nicht erforderlich ist und +Ressourcen spart). + +**Achtung:** In der Standard-Konfiguration läuft Tor nur als Entry- oder +MiddleNode, aber nicht als ExitNode. Dies bedeutet, dass kein anderer +Tor-Nutzer mit der externen IP-Adresse der FritzBox im Internet surft +und daher die eigene IP-Adresse auch nicht in irgendwelchen Server-Logs +auftaucht. Wer das ändern möchte und genau weiß, was er macht, kann die +ExitPolicy ändern. + +Der Secret ID-Key des Tor-Servers muss normalerweise nicht bearbeitet +werden. Der Secret ID-Key wird beim ersten Start des Tor-Servers +automatisch generiert und beim Beenden im Flash-Speicher der Box +abgespeichert. Über die Optionen "DataDirectory" / persistent kann das +Verzeichnis angegeben werden, in dem Tor die zum Server-Betrieb +erforderlichen Daten speichert. Auch die Daten, die für den Client-Modus +benötigt werden (insbes. das aktuelle Verzeichnis der erreichbaren +Tor-Knoten), werden hier abgespeichert. Man kann z.B. ein Verzeichnis +auf einem USB-Speicher angegeben (sofern das Verzeichnis nicht vorhanden +ist, wird es erstellt). + +.. _RemoteControl: + +Remote Control +-------------- + +For remote controlling Tor you can use +`​Vidalia <http://www.torproject.org/projects/vidalia.html.en>`__. + +Configuration for the Tor server on your box: + +- Control Port: 9051 (the default port, you can use any port you like) +- Control Interface: 192.168.178.1 +- Control Password Hash: + + - generate on your box with *tor —hash-password your_password* + - copy the whole last line + +Vidalia configuration: + +- Address/ Port of Tor Instance: 192.168.178.1/9051 (should match that + of the server) +- Tor Password: plain, un-hashed password + +obfsproxy +--------- + +- `​Information <https://www.torproject.org/projects/obfsproxy>`__ +- Patch in ticket `#1712 </ticket/1712>`__ + +.. _MemoryUsage: + +Memory Usage +------------ + +Huge. + +After ten minutes: + ++----------+---------+ +| VmSize | VmRSS | ++----------+---------+ +| 17284 kB | 8660 kB | ++----------+---------+ + +.. _Abhängigkeiten: + +Abhängigkeiten +-------------- + +Tor benötigt die Bibliotheken zlib, openssl und libevent. Diese sind +ebenfalls in den aktuellen Freetz-Versionen enthalten und werden +automatisch mit installiert, sobald man im menuconfig das TOR Package +auswählt. + +.. _Diskussion: + +Diskussion +---------- + +Fragen und Anmerkungen zu diesem Package werden vorzugsweise in diesem +`​Thread <http://www.ip-phone-forum.de/showthread.php?p=693909#post693909>`__ +diskutiert. + +- Tags +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `privacy </tags/privacy>`__ +- `proxy </tags/proxy>`__ +- `routing </tags/routing>`__ diff --git a/wiki/packages/transmission.en.rst b/wiki/packages/transmission.en.rst new file mode 100644 index 0000000..c84146f --- /dev/null +++ b/wiki/packages/transmission.en.rst @@ -0,0 +1,118 @@ +.. _Blocklist: + +Blocklist +--------- + +If you want to use a peer-blocklist (you can enable this in the web +interface if you are using the trunk version of Freetz), you have to +know that you have to provide a blocklist yourself. The simplest is to +make a 'update-blocklist.sh' with the content below and to invoke it +daily or so using cron (don't forget to make the file executable). + +.. code:: bash + + #!/var/tmp/sh + + cd /path-to/bittorrent/config/blocklists/ + if wget -q http://www.bluetack.co.uk/config/level1.gz ; then + rm -f level1 && gunzip level1.gz + killall -HUP transmission-daemon + logger -s -t transmission "blocklist updated" + else + logger -s -t transmission "blocklist not updated" + fi + +This can be done from the transmission web interface too now. + +.. _Numberofpeers: + +Number of peers +--------------- + +It is probably a good idea to reduce the number of peers by editing the +*…/bittorrent/config/settings.json* file: + +.. code:: bash + + "peer-limit-global": 150, + "peer-limit-per-torrent": 50, + +You have to stop transmission before changing this! Or you could use +this command to reload the config file: + +.. code:: bash + + killall -HUP transmission-daemon + +This can be done from the transmission web interface too now. + +.. _Memoryusage: + +Memory usage +------------ + +Huge, relatively. + +You will probably need a swap file and you may want to increase +`​swappiness <http://lwn.net/Articles/83588/>`__ to 80 or something (in +Freetz WebIF since `[6886] </changeset/6886>`__). + ++-------------------------+------------+-----------+ +| | **VmSize** | **VmRSS** | ++-------------------------+------------+-----------+ +| No blocklist | ~8,5 mB | ~6 mB | ++-------------------------+------------+-----------+ +| level1 blocklist | ~17 mB | ~8 mB | ++-------------------------+------------+-----------+ +| One torrent + blocklist | ~19 mB | ~12 mB | ++-------------------------+------------+-----------+ + +You can monitor these values easily with the patch from ticket +`#1308 </ticket/1308>`__. + +.. _Limitmemoryusage: + +Limit memory usage +------------------ + +To prevent memory shortage (could cause reboots and crashing processes): + +.. code:: bash + + "cache-size-mb": 1, + "open-file-limit": 32, + +The cache size is by default 2 MiB and the open file limit is by default +32. + +To minimize the number of connections you could decide to forward TCP +traffic only and not UDP traffic. + +.. _Watchdog: + +Watchdog +-------- + +It may be necessary to disable the watchdog by adding this line to for +example *rc.custom*: + +.. code:: bash + + echo "disable">/dev/watchdog + +.. _Links: + +Links +----- + +- `​Transmission <http://transmissionbt.com/>`__ (external) +- `​Editing Configuration + Files <https://trac.transmissionbt.com/wiki/EditConfigFiles>`__ + (external) +- `​Block List Updater + Script <http://trac.transmissionbt.com/wiki/Scripts/BlockListUpdater>`__ + (external) +- `​Wikipedia about + µTP <http://en.wikipedia.org/wiki/Micro_Transport_Protocol>`__ +- `​Transmission Remote + GUI <http://code.google.com/p/transmisson-remote-gui/>`__ diff --git a/wiki/packages/transmission.rst b/wiki/packages/transmission.rst new file mode 100644 index 0000000..0d085d7 --- /dev/null +++ b/wiki/packages/transmission.rst @@ -0,0 +1,33 @@ +.. _Transmission: + +Transmission +============ + + "**Transmission** ist ein freier, ressourcenschonender + BitTorrent-Client. Ihn zeichnen eine einfache, intuitiv zu bedienende + Benutzeroberfläche und eine effiziente, plattformunabhängige + Implementierung des BitTorrent-Protokolls aus. [… …] Zudem benötigt + Transmission weniger Systemressourcen als andere Clients." (Quelle: + `​Wikipedia <http://de.wikipedia.org/wiki/Transmission_(BitTorrent)>`__) + +|Warning| Das Transmission Paket ist derzeit nur im Trunk über das Freetz +Webinterface konfigurierbar. In allen anderen Freetz Versionen muss das +Paket von Hand gestartet werden. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​Transmission Homepage <http://www.transmissionbt.com/>`__ +- `​Wikipedia + Artikel <http://de.wikipedia.org/wiki/Transmission_(BitTorrent)>`__ +- `Block List Updater Script <transmission.en.html>`__ + +- Tags +- `filetransfer </tags/filetransfer>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ + +.. |Warning| image:: ../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/packages/trickle.rst b/wiki/packages/trickle.rst new file mode 100644 index 0000000..d32f644 --- /dev/null +++ b/wiki/packages/trickle.rst @@ -0,0 +1,137 @@ +trickle +======= + +**trickle** (Tröpfeln) ist ein leichtgewichtiger bandwidth shaper, der +mit trickled oder im stand alone mode verwendet werden kann. Mit trickle +kann man festlegen, welche Bandbreite eine Anwendung benutzen darf. +Somit kann die Internetverbindung auch während großer +`Downloads <../Download.html>`__, noch für andere Programme (z. B. +Telefonie) benutzbar bleiben. Der Datenverkehr wird über eine eigene +dynamische Bibliothek (trickle-overload.so), die von trickle beim Start +geladen wird, geregelt. trickle kann nur TCP-Verbindungen drosseln. +trickle benötigt keine root-Rechte. trickle kann nur mit dynamisch +gelinkten Anwendungen verwendet werden. Will man die Bandbreite von +statisch gelinkten Anwendungen drosseln, so sollte man trickle mit einem +Proxy (z. B. Privoxy oder ffproxy) verwenden und die statisch gelinkten +Anwendungen zwingen (z. B. mit iptables), diesen Proxy zu verwenden. Bei +Mehrbenutzerbetrieb an der Box, sollte trickle auch mit einem proxy +verwendet werden. Mit trickle hat man auch die Belastung der Box unter +Kontrolle, da eine geringere Bandbreite auch weniger Speicher und +weniger CPU-Leitung beansprucht. D. h. man kann das Neustarten +(rebooten) der Box verhindern. Mit trickle kann der ein- und ausgehende +Netzwerkverkehr so gesteuert werden, dass sowohl die Leitung als auch +die Box optimal genutzt werden. + +.. _Syntax: + +Syntax +------ + +.. code:: bash + + Usage: trickle [-hvVs] [-d <rate>] [-u <rate>] [-w <length>] [-t <seconds>] + [-l <length>] [-n <path>] command ... + -h Help (this) + -v Increase verbosity level + -V Print trickle version + -s Run trickle in standalone mode independent of trickled + -d <rate> Set maximum cumulative download rate to <rate> KB/s + -u <rate> Set maximum cumulative upload rate to <rate> KB/s + -w <length> Set window length to <length> KB + -t <seconds> Set default smoothing time to <seconds> s + -l <length> Set default smoothing length to <length> KB + -n <path> Use trickled socket name <path> + -L <ms> Set latency to <ms> milliseconds + -P <path> Preload the specified .so instead of the default one + +.. code:: bash + + Usage: trickled [-hvVfs] [-d <rate>] [-u <rate>] [-t <seconds>] [-l <length>] + [-p <priority>] [-c <file>] [-n <path>] [-N <seconds>] + [-w <length>] + -h Help (this) + -v Increase verbosity level + -V Print trickled version + -f Run trickled in the foreground + -s Use syslog instead of stderr to print messages + -d <rate> Set maximum cumulative download rate to <rate> KB/s + -u <rate> Set maximum cumulative upload rate to <rate> KB/s + -t <seconds> Set default smoothing time to <seconds> s + -l <length> Set default smoothing length to <length> KB + -p <priority> Set default priority to <priority> + -c <file> Use configuration file <file> + -n <path> Set socket name to <path> + -N <seconds> Notify of bandwidth usage every <seconds> s + -w <length> Set window size to <length> s + +.. _BeispielefürdieBenutzungvontrickle: + +Beispiele für die Benutzung von trickle +--------------------------------------- + +**1. Über einen Proxy:** + +.. code:: bash + + trickle -s -u 20 -d 100 /var/mod/etc/init.d/rc.privoxy start + +.. code:: bash + + wget -e "http_proxy = http://192.168.127.253:8118" http://speedtest.netcologne.de/test_10mb.bin + --2010-02-21 10:07:58-- http://speedtest.netcologne.de/test_10mb.bin + Verbindungsaufbau zu 192.168.127.253:8118... verbunden. + Proxy Anforderung gesendet, warte auf Antwort... 200 OK + Länge: 10485760 (10M) [application/octet-stream] + In »test_10mb.bin« speichern. + 100%[==========================================================================================================================================>] 10.485.760 20,2K/s in 8m 53s + 2010-02-21 10:16:51 (19,2 KB/s) - »test_10mb.bin« gespeichert [10485760/10485760] + +**2. Direkt auf die Anwendung:** + +.. code:: bash + + trickle -s -u 50 -d 70 wget http://speedtest.netcologne.de/test_10mb.bin + --2010-03-06 22:54:02-- http://speedtest.netcologne.de/test_10mb.bin + Resolving speedtest.netcologne.de... 87.79.12.103, 87.79.12.102 + Connecting to speedtest.netcologne.de|87.79.12.103|:80... connected. + HTTP request sent, awaiting response... 200 OK + Length: 10485760 (10M) [application/octet-stream] + Saving to: `test_10mb.bin.1' + + 100%[==========================================================================================================================================>] 10,485,760 52.6K/s in 2m 59s + + 2010-03-06 22:57:00 (57.4 KB/s) - `test_10mb.bin.1' saved [10485760/10485760] + +**Auslastung der Box (aus top):** + +.. code:: bash + + 2660 1901 root S 3028 10% 2% wget http://speedtest.netcologne.de/test_10mb.bin + +**Stichworte für die Suche:** traffic, bandwidth, shaping, shaper, +limiter, throttling, bandbreitenbegrenzung, bandbreite, drosseln, +begrenzen + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +`​trickle <http://monkey.org/~marius/pages/?page=trickle>`__ + +`​Artikel in +linuxuser <http://www.linux-user.de/ausgabe/2005/11/056-trickle/index.html>`__ + +`​manpage trickle <http://monkey.org/~marius/trickle/trickle.1.txt>`__ + +`​manpage trickled <http://monkey.org/~marius/trickle/trickled.8.txt>`__ + +`​manpage +trickled.conf <http://monkey.org/~marius/trickle/trickled.conf.5.txt>`__ + +`​trickle bei +Debian <http://patch-tracker.debian.org/package/trickle/1.07-9>`__ + +- Tags +- `network </tags/network>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/unbound.rst b/wiki/packages/unbound.rst new file mode 100644 index 0000000..4fe2c75 --- /dev/null +++ b/wiki/packages/unbound.rst @@ -0,0 +1,23 @@ +.. _Unbound: + +Unbound +======= + +*Unbound is a validating, recursive and caching DNS resolver.* + +It is an alternative to `bind <bind.html>`__. + +.. _Links: + +Links +----- + +- `​Home page <http://unbound.net/index.html>`__ +- `​Unbound DNS Tutorial <https://calomel.org/unbound_dns.html>`__ +- `Ticket with patches </ticket/869>`__ +- `​Forum + thread <http://www.ip-phone-forum.de/showthread.php?t=225095>`__ + +- Tags +- `network </tags/network>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/usbip.rst b/wiki/packages/usbip.rst new file mode 100644 index 0000000..d4bfb84 --- /dev/null +++ b/wiki/packages/usbip.rst @@ -0,0 +1,60 @@ +.. _USBIP: + +USB/IP +====== + +Das Ziel von `​USB/IP <http://usbip.sourceforge.net/>`__ ist es, die an +einem Rechner angeschlossenen USB-Geräte von anderen Rechnern benutzbar +zu machen - und zwar im vollen Funktionsumfang. Dazu werden "USB I/O +messages" in IP-Pakete gepackt, um über das Netzwerk übertragen zu +werden. Jeder einzelne Rechner kann die betreffenden USB-Geräte nun so +benutzen, als seien sie direkt bei ihm angeschlossen. Damit lassen sich +folgende Dinge tun: + +- **USB Storage Devices**: ``fdisk``, ``mkfs``, ``mount``/``umount``, + diverse Dateioperationen, Filme von einer DVD abspielen, eine DVD + brennen… +- **USB Tastaturen und USB Mäuse**: Benutzung selbiger sowohl von der + Konsole als auch aus dem X Window System. +- **USB Webcams und USB Lautsprecher**: Durch die Webcam schauen, + Bilddaten "capturen" (aufzeichnen), Musik abspielen. +- **USB Drucker**: Wie die AVM-Druckerfreigabe, zusätzlich kann zB der + Füllstand ermittelt werden. +- **USB Scanner, USB Serial Converter und USB Netzwerk Interfaces**: + Naja - halt benutzen eben. + +In Hardware gegossen, findet man über Google auch schon etliche +sogenannte "USB Extender" (und zwar stellen diese bei weitem die größte +Treffermenge dar) - mit diesem Paket bringen wir das jedoch einfach +vorhandener Hardware, nämlich unserer Freetz-Box, bei. + +Im IPPF ist beschrieben wie man es nutzt: `​Teil +1 <http://www.ip-phone-forum.de/showpost.php?p=1392146&postcount=45>`__ +`​Teil +2 <http://www.ip-phone-forum.de/showpost.php?p=1609255&postcount=50>`__ + +.. _VerwendeteBibliotheken: + +Verwendete Bibliotheken +----------------------- + +- libglib2 +- libsysfs + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​USB/IP Projektseite <http://usbip.sourceforge.net/>`__ +- `​IPPF Thread: Wie kam USB/IP auf die + Freetz-Box <http://www.ip-phone-forum.de/showthread.php?t=131278>`__ +- Windows-Client: + `​usbip_windows_v0.1.0.0_signed.zip <https://sourceforge.net/projects/usbip/files/usbip_windows/>`__ + +-------------- + +- Tags +- `hardware </tags/hardware>`__ +- `packages <../packages.html>`__ +- `usb </tags/usb>`__ diff --git a/wiki/packages/usbroot.rst b/wiki/packages/usbroot.rst new file mode 100644 index 0000000..d4793a0 --- /dev/null +++ b/wiki/packages/usbroot.rst @@ -0,0 +1,178 @@ +.. _USB-Root: + +USB-Root +======== + +Mit **USB-Root** lässt sich das Root-Verzeichnis (``/``) auf ein an die +Fritz!Box angeschlossenes USB-Gerät auslagern - was zusätzlichen Platz +nicht nur für weitere Software schafft. + +.. _Vorteile: + +Vorteile +-------- + +- Immer noch ein lauffähiges System im Flash-Speicher der Fritz!Box als + Notfall-System vorhanden +- Nahezu unbegrenzter Platz +- Mehrere Systeme parallel zur Auswahl auf dem USB-Stick → einfaches + Testen neuer Versionen und Konfigurationen. Dabei sollte allerdings + die jeweils genutzte Firmwarebasis von AVM ein zueinander kompatibles + Konfigurationsformat aufweisen! + +**Ein Beispiel aus der Praxis:** + +Annex A Box in Frankreich mit DAU als Besitzer |;-)| Bei einem nicht +funktionierenden System im Flash würde da gar nichts mehr gehen. Strom +aus, USB-Stick ab und Strom wieder an, bekommt er aber hin um damit das +Notfallsystem im Flash nutzen zu können. + +.. _KonfigurationundKompilierung: + +Konfiguration und Kompilierung +------------------------------ + +USB-Root muss einfach bei Erstellung des Images mit ``make menuconfig`` +(siehe Freetz Installation?) mit ausgewählt werden. Um später eine Shell +auf der Fritz!Box zu haben und scp nutzen zu können, sollte auch +dropbear mit ins Image. Zuerst wird dann ein Image mit USB-Root erzeugt, +das in den Flashspeicher der Fritz!Box passt und dann auch wie jedes +Image auf die Fritz!Box geflasht wird. + +Dann kann man sich sein System für den USB-Root zusammen stellen und +braucht nicht mehr auf den Platz zu achten. Das USB-Root Paket muss +jedoch ausgewählt bleiben! Die Fehlermeldung am Ende, dass das Image zu +groß ist, stört hier nicht weiter. Wir benötigen ja nur das erstellte +Systeme, das wir in [Freetz-Ordner]/build/modified/filesystem finden. + +Es kann eine beliebige Freetz-Version für den USB-Stick verwendet +werden. Es muss nicht die gleiche Version verwendet werden, wie sie im +Flashspeicher der Fritz!Box abgelegt ist. Es muss ausschließlich der +Kernel im Flashspeicher zum Kernel des USB-Sticks passen. + +Als Dateisystem ist eine Partition mit ext2 oder ext3 zu verwenden. Das +passende Kernel-Modul muss bei der Imageerstellung ausgewählt werden! + +.. _PackenkopierenaufdieFritzBoxundentpacken: + +Packen, kopieren auf die Fritz!Box und entpacken +------------------------------------------------ + +:: + + # 1. Dateisystem packen, dabei Besitzer auf root:root ändern + tar --group=0 --owner=0 -czf rootfs.tar.gz -C build/modified/filesystem . + + # 2. USB-Root im Freetz-Web deaktivieren, falls bereits aktiv + + # 3. Box mit Firmware aus dem Flash neu starten + + # 4. Archiv direkt auf an der Box angeschlossenes USB-Medium kopieren (Zielpfad anpassen!) + + # Variante A: vom PC aus die Datei auf die Box schieben (benötigt SSH-Server auf der Box) + scp rootfs.tar.gz root@fritz.box:/var/media/ftp/uStor01/rootfs + + # Variante B: von der Box aus die Datei vom PC holen (benötigt SSH-Server auf dem PC) + scp user@my_pc:/home/user/freetz-trunk/rootfs.tar.gz /var/media/ftp/uStor01/rootfs + + # 5. Archiv auf der Box entpacken + cd /var/media/ftp/uStor01/rootfs + tar -xzf rootfs.tar.gz + + # 6. Falls USB-Root noch nicht genutzt wurde muss es erst im Freetz-Web konfiguriert werden (Partition auswählen und Verzeichnis eintragen (z.B. /rootfs) + + # 7. USB-Root in Freetz-Web aktivieren, Box vom USB-Root neu starten + +**Neu in der Entwicklerversion +seit**\ `r8566 </changeset/8566>`__\ **:** Man kann direkt in +*Menuconfig* einstellen, daß beim Build zusätzlich zum oder anstelle des +Firmware-Images das Dateisystem direkt in ein Archiv gepackt wird ("USB +Root Mode", ersetzt Schritt 1 oben). Alternativ ist es über den "NFS +Root Mode" auch möglich, das Dateisystem direkt (fix und fertig +entpackt, Schritte 1, 3, 4) auf den USB-Stick zu kopieren, sofern dieser +am PC angeschlossen oder über NFS erreichbar ist. Erstere Variante ist +vermutlich die häufigere und sieht so aus: + +.. code:: bash + + Freetz Configuration + ==================== + + [*] Show advanced options + --> Advanced options + --> Build system options + --> Firmware packaging (fwmod) special options + [*] Skip packing modified firmware + [*] Pack file system into archive (USB root mode) + +.. _EinbindenvonPartitionen: + +Einbinden von Partitionen +------------------------- + +Das Einbinden von weiteren Partitionen funktionierte in frühen +Freetz-Versionen nicht, somit mussten diese Partitionen manuell +eingebunden werden. In aktuellen Freetz-Versionen funktioniert dies nun, +so dass die AVM-Features, welche auf USB-Partitionen speichern, +verwendet werden können. + +Allerdings gibt es beim Mounten der Partitionen eine Fehlermeldung für +die verwendete Root-Partition: da diese bereits gemountet ist, schlägt +ein weiterer Mount-Versuch (der "normale" von AVM) natürlich fehl. Dies +kann mit ruhigem Gewissen ignoriert werden. + +.. _MöglicheNebenwirkungen: + +Mögliche Nebenwirkungen +----------------------- + +Das Freetz usbroot Paket verändert die Environment-Variable kernel_args +und startet dort einen alternativen init Prozess +(init=/etc/init.d/rc.usbroot). Die Variable kernel_args1 wird auch +gesetzt. Beim Upgrade / Recover der Firmware kann dies zu Problemen +führen, daher **MUSS vor dem Firmware-Update bzw Recover die +usbroot-Funktion wieder deaktiviert werden''', wahlweise über das Freetz +Webinterface oder aus der Shell mit:** + +.. code:: bash + + echo kernel_args > /proc/sys/urlader/environment + echo kernel_args1 > /proc/sys/urlader/environment + +Bemerkt man dies zu spät (Die Box startet als Beispiel gleich nach 5 +Sekunden neu) helfen die ADAM2 Befehle: + +.. code:: bash + + quote SETENV kernel_args + quote SETENV kernel_args1 + +Sollte es nach den beiden Befehlen immernoch nicht helfen, so führt man +ein Recover aus und flasht danach ein Freetz **ohne jediglichen Umfang** +(ohne Packages sowie **ohne** usbroot) über das AVM-WebInterface auf die +Box und setzt die beiden Variablen (mittels Telnet) wieder auf ihren +normalwert, danach kann man wieder problemlos seine gewünschte +modifizierte Firmware auf die Box bringen! + +.. _Verbesserungsmöglichkeiten: + +Verbesserungsmöglichkeiten +-------------------------- + +#. Direkt per SCP oder rsync aus der Stinky-VM auf die Fritz!Box + kopieren. + Wenn man aus Buildsystem (z.B. VM mit STinky) direkt über Netzwerk + die Fritz!Box per ssh/scp erreichen kann ist der Umweg über einen + weiteren PC unnötig. Hier wäre es dann eine direkte Verbindung + zwischen Fritz!Box und Buildsystem eleganter. Die Variante oben ist + aber für entfernte Systeme, ohne von außen erreichbaren SSH-Zugang + weiterhin brauchbar. +#. Die sich wiederholenden Befehle in ein bash-script packen + +- Tags +- `filesystem </tags/filesystem>`__ +- `packages <../packages.html>`__ +- `usb </tags/usb>`__ + +.. |;-)| image:: ../../chrome/wikiextras-icons-16/smiley-wink.png + diff --git a/wiki/packages/usbutils.rst b/wiki/packages/usbutils.rst new file mode 100644 index 0000000..aaf0bd9 --- /dev/null +++ b/wiki/packages/usbutils.rst @@ -0,0 +1,28 @@ +usbutils +======== + +Das Paket **usbutils** enthält, was man zur Anzeige von USB +Geräteinformationen benötigt: ``lsusb-freetz`` listet diese +Informationen auf. + +Zur Vermeidung einer Namenskollision, mit einem gleichnamigen Tool von +AVM, wurde das Binary in ``lsusb-freetz`` umbenannt. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​Linux USB Homepage <http://www.linux-usb.org/>`__ +- `​lsusb Man Page <http://man-wiki.net/index.php/8:lsusb>`__ +- `​Feste Devices für + USB-Geräte <http://wiki.marcelwinkel.de/index.php/Main/FesteDevicesF%FCrUsb-Ger%E4te>`__ + bei Linux-Wiki + +-------------- + +- Tags +- `hardware </tags/hardware>`__ +- `packages <../packages.html>`__ +- `tools </tags/tools>`__ +- `usb </tags/usb>`__ diff --git a/wiki/packages/vim.rst b/wiki/packages/vim.rst new file mode 100644 index 0000000..f9d3168 --- /dev/null +++ b/wiki/packages/vim.rst @@ -0,0 +1,46 @@ +vim +=== + +`​vim <http://www.vim.org/>`__ (**vi i**\ mproved) ist eine Variante des +bekannten Unix-Editors *vi*. Wie sein "Parent", läuft er in der Konsole, +und wird ausschließlich über die Tastatur bedient, weshalb er sich auch +hervorragend für die Benutzung auf der FritzBox eignet. + +Für Anfänger stellt seine Syntax oft eine große Hürde zu seiner +Benutzung dar - weshalb böse Zungen behaupten, der wichtigste +*vi*-Befehl sei ":q!" ("Nix tun und schnell wieder raus"). Hat man diese +Hürde allerdings genommen, so ist ein machtvolles Werkzeug gewonnen: +Kenntnis der `​entsprechenden +Syntax <http://de.wikibooks.org/wiki/Vi_Befehlsreferenz:_%C3%9Cbersicht>`__ +vorausgesetzt, sind Dinge wie "Suchen und Ersetzen", Textblöcke +löschen/verschieben/kopieren, und was sonst noch häufig beim Bearbeiten +reiner `​ASCII <http://de.wikipedia.org/wiki/Ascii>`__ Textdateien +anfällt, mit keinem anderen Werkzeug so schnell erledigt. Auch +`​reguläre +Ausdrücke <http://de.wikipedia.org/wiki/Reguläre_Ausdrücke>`__ sind für +*vim* eine Selbstverständlichkeit. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​vim Homepage <http://www.vim.org/>`__ +- `​Wikipedia Artikel <http://de.wikipedia.org/wiki/Vim>`__ +- `​vi + Befehlsreferenz <http://de.wikibooks.org/wiki/Vi_Befehlsreferenz:_%C3%9Cbersicht>`__ + bei Wiki-Books +- `​vim + Schnellübersicht <http://tnerual.eriogerg.free.fr/vimqrc-ge.pdf>`__ +- `​vim + Kurzanleitung <http://lug.fh-swf.de/vim/vim-kurzanleitung.pdf>`__ +- `​Sieben Angewohnheiten für das effektive + Editieren <http://www.moolenaar.net/habits_de.pdf>`__ +- `​vim Videotutorials <http://www.learn2use.de/tag/Vim>`__ + +-------------- + +- Tags +- `console </tags/console>`__ +- `packages <../packages.html>`__ +- `tools </tags/tools>`__ diff --git a/wiki/packages/virtualip.rst b/wiki/packages/virtualip.rst new file mode 100644 index 0000000..8f2693a --- /dev/null +++ b/wiki/packages/virtualip.rst @@ -0,0 +1,117 @@ +.. _VirtualIP: + +Virtual IP +========== + +.. figure:: /screenshots/61.png + :alt: VirtualIP: Einstellungen + + VirtualIP: Einstellungen + +**Virtual IP** ist eine Erweiterung für Freetz, die es ermöglicht, eine +virtuelle IP auf der Box anzulegen. Das Paket ist über das Freetz +Webinterface konfigurierbar. Anfangs wurde diese virtuelle IP genutzt um +Portfreigaben auf die Box im AVM Webinterface anlegen zu können. + +.. _VORSICHT: + +|Warning| VORSICHT |Warning| +---------------------- + +Dieses Package wird nicht mehr supported und es sollte stattdessen +"`AVM-Firewall <avm-firewall.html>`__" verwendet werden. + +Portfreigaben auf virtuelle IPs mit Firmwares (> 04.57) funktinieren +nicht mehr zuverlässig. Bei manchen Firmwares (> 04.80) ist die Box +teilweise nicht mehr per Netzwerk erreichbar sobald eine virtuelle IP +eingerichtet wurde. Der ATA-Modus macht weniger Probleme wie der +DSL-Modus. + +Weitereführende Links dazu: + +- `​IPPF: Bei welchen Boxen funktioniert Virtual IP (nicht + mehr)? <http://www.ip-phone-forum.de/showthread.php?t=174245>`__ +- `​IPPF: Port-Freigabe auf die Box ist so möglich! Virtual-IP + überflüssig?!? <http://www.ip-phone-forum.de/showthread.php?t=159266>`__ + +.. _Einrichtung: + +Einrichtung +----------- + +- **Starttyp**: "Automatisch", wenn *VirtualIP* nach einem Reboot auch + automatisch aktiv werden soll. +- **Virtuelle IP-Adresse**: Die zusätzliche IP, unter der die Box + erreichbar sein soll. +- **Subnetzmaske**: Die dazu passende + `​Subnetz <http://de.wikipedia.org/wiki/Subnetz>`__-Maske (ggf. auch + den `​englischen <http://en.wikipedia.org/wiki/Subnet_mask>`__ bzw. + `​deutschen <http://de.wikipedia.org/wiki/Subnetz>`__ + Wikipedia-Artikel konsultieren) +- **Interface**: Normalerweise "eth0:1" wenn die Box auch die + DSL-Einwahl vornimmt, bzw. "dsl:0" im ATA-Modus. Im Zweifelsfall ein + wenig probieren. + +Fragen und Diskussionen zu diesem Package kann man auch +`​hier <http://www.ip-phone-forum.de/showthread.php?t=111623>`__ +stellen/führen. + +.. _BekannteProblemeundBugs: + +Bekannte Probleme und Bugs +-------------------------- + +.. _dsld-Syslogmeldung: + +dsld-Syslogmeldung +~~~~~~~~~~~~~~~~~~ + +Fehlermeldung im Syslog: + +.. code:: bash + + user.err dsld[1243]: internet: 192.168.178.253 not an intern host, forwardrule "tcp 0.0.0.0:85 192.168.178.253:85 0 # Test" ignored + +AVM hat im **dsld**, der sich um DSL und die Portweiterleitungen +kümmert, einen Schutz eingebaut, der eine Weiterleitung auf die FritzBox +eigenen IPs verhindert. + +.. _ProblememitOpenVPNUDP: + +Probleme mit OpenVPN / UDP +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Eine Weiterleitung für OpenVPN bzw. für einen UDP-Port scheint Probleme +zu machen. Bei einigen funktioniert es jedenfalls nicht. + +.. _ProblememitIPTV: + +Probleme mit IPTV +~~~~~~~~~~~~~~~~~ + +Bei aktiver Virtual IP wird das TV Signal nicht mehr an den +Mediareceiver weitergeleitet. + +.. _ProblememitdemSIP-RegistrarModus: + +Probleme mit dem SIP-Registrar Modus +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Nutzt man eine Fritzbox auf der virtual-ip läuft als Registrar scheitern +VoIP Telefonate am SIP Client. Ausgehende Pakete werden korrekt an den +Registrar übertragen, jedoch wartet der Client auf Pakete von der +virtuellen IP - vergebens. Deaktiviert man virtual-ip und ruft +'voipcfgchanged' auf funktioniert alles korrekt. Getestet mit Firmware +4.80 und Freetz 1.1.3. + +-------------- + +- Tags +- `cgi </tags/cgi>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `routing </tags/routing>`__ +- `überarbeiten </tags/%C3%BCberarbeiten>`__ + +.. |Warning| image:: ../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/packages/vpnc.rst b/wiki/packages/vpnc.rst new file mode 100644 index 0000000..0ef67eb --- /dev/null +++ b/wiki/packages/vpnc.rst @@ -0,0 +1,22 @@ +vpnc +==== + +Der `​VPNC-Client <http://www.vpnc.org/>`__ ist eine quelloffene +Alternative zum Cisco-VPN-Client und dient zum Erstellen von Virtual +Privat Network +(`​VPN <http://de.wikipedia.org/wiki/Virtual_Private_Network>`__) +Verbindungen. Damit werden sämtliche ausgehenden Netzwerkverbindungen +über das Internet verschlüsselt zu einem anderen Rechner übertragen. Von +diesem Rechner werden sie dann weitergeleitet, als ob die von dort +kämen. So können Daten, die im Firmennetzwerk nur aus dem lokalen +Netzwerk zugänglich sind, abgerufen werden, als ob man direkt mit +selbigem verbunden wäre. + +-------------- + +- Tags +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `routing </tags/routing>`__ +- `security </tags/security>`__ +- `vpn </tags/vpn>`__ diff --git a/wiki/packages/vsftpd.rst b/wiki/packages/vsftpd.rst new file mode 100644 index 0000000..783a0a1 --- /dev/null +++ b/wiki/packages/vsftpd.rst @@ -0,0 +1,380 @@ +*TODO: Paket überarbeiten, so dass die Optionen vom AVM ftpd übernommen +werden, falls gewünscht. Dann kann hier auch was dokumentiert werden.* + +.. _VSFTPd: + +VSFTPd +====== + +**vsFTP** steht für **v**\ ery **s**\ ecure **F**\ ile **T**\ ransfer +**P**\ rotocol. Der `​vsftpd <http://vsftpd.beasts.org/>`__ bietet z.B. +folgende Features: + +- virtuelle IPs +- virtuelle User +- Konfiguration pro User, pro Source-IP +- Limits pro Source-IP +- Bandweitenbeschränkung (`​Bandwidth + throttling <http://en.wikipedia.org/wiki/Bandwidth_throttling>`__) +- IPv6 +- SSL Verschlüsselung + +.. _PackageinsImageeinbinden: + +Package ins Image einbinden +--------------------------- + +Im menuconfig unter ``Package selection ---> Standard packages --->`` +findet sich + +- *Vsftpd 2.x.y* + Damit wird der FTP-Zugriff über vsFTP möglich. + +.. _VerwandteThemen: + +Verwandte Themen +---------------- + +Unter ``Patches --->`` findet sich + +- *Patch USB storage names* … mit zusätzlichen Unterpunkten. + Hierdurch wird dem USB-Speicher ein einheitlicher Name gegeben. +- *Execute autorun.sh/autoend.sh script on (un)mount* + Führt die entsprechenden Skripte beim An- und Abstecken des + USB-Speichers aus. + +.. _FreigabenundBenutzerfürvsFTPinFreetzeinrichten: + +Freigaben und Benutzer für vsFTP in Freetz einrichten +----------------------------------------------------- + +Es folgt eine ausführliche Anleitung für das Erstellen von FTP-Freigaben +und Nutzern mit verschiedenen Lese/Schreib-Rechten, die unabhängig von +Linux-Zugriffsrechten funktioniert und somit auch für FAT- und +NTFS-Platten eingesetzt werden kann. Hierbei können mit dem aktuellen +Linux Kernel jedoch nur Lese/Schreib-Rechte auf Benutzer- und nicht auf +Ordnerebene gesetzt werden. + +Hier eine Übersicht über die in dieser Anleitung erstellten Ordner mit +Zugangsbeschränkungen für zwei reguläre Nutzer (user1, user2) und einen +Gast-Account (gast). + +- **Ordner → Zugangsberechtigte Benutzer** +- user1 → user1 +- user2 → user2 +- shared → user1, user2 +- public → user1, user2, gast + +Diese können leicht an den eigenen Bedarf angepasst werden. + +.. _Order-StrukturaufderUSB-Plattewirdvorbereitet.: + +Order-Struktur auf der USB-Platte wird vorbereitet. +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Dazu die folgenden Ordner im Hauptverzeichnis der Platte erstellen: + +.. code:: bash + + user1 #Heimverzeichnis user1 + user1/shared + user1/public + user2 #Heimverzeichnis user2 + user2/shared + user2/public + shared #gemeinsamer Ornder user1, user2 + public #Heimverzeichnis gast + +.. _DieAVM-LösungenvonFTPwirdabgeschaltet.: + +Die AVM-Lösungen von FTP wird abgeschaltet. +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +| *fritz.box* → *Einstellungen* → *Erweiterte Einstellungen* → + *USB-Geräte* → *USB-Speicher* *USB-Speicher FTP-Zugriff aktivieren* → + Häkchen weg. +| Dies ist nicht zwingend notwendig, sofern der vsftpd auf einem anderen + als Port 21 läuft. + +.. _DiensteinstellungenwerdenimFreetz-Menüeingestellt.: + +Diensteinstellungen werden im Freetz-Menü eingestellt. +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +*Pakete* → *vsftpd* + +*Starttyp* → automatisch + +→ *Zugriff* + +.. code:: bash + + [ ]Anonymes FTP + [X]Lokale Benutzer + [X]chroot jail + [ ]Erlaube root login + [ ]Erlaube ftpuser login + +| So ist sichergestellt, dass nur die genannten Nutzer und diese nur auf + ihr Verzeichnis zugreifen können. +| Wenn der AVM FTP-Server parallel genutzt wird, **muss** hier auch der + Haken bei **Erlaube ftpuser login** gesetzt werden. + +→ *Zusätzliche Konfigurationsoptionen (für Experten)* + +.. code:: bash + + user_config_dir=/var/media/ftp/uStor01/vsftp_user_conf + +Später werden wir die Schreibrechte für die Benutzer getrennt festlegen. + +→\ *Übernehmen*\ ← + +.. code:: bash + + Saving settings...done. + Saving vsftpd.cfg...done. + + Writing /var/flash/freetz...done. + 10752 bytes written. + +.. _TelNet-Zugangwirdgestartet.: + +TelNet-Zugang wird gestartet. +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +*Dienste* → *telnetd* → *start* + +Nun geht es auf der Kommandozeile weiter. + +.. _DielokalenBenutzerwerdeneingerichtet.: + +Die lokalen Benutzer werden eingerichtet. +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Jeder Benutzer erhält dabei ein explizites Heim-Verzeichnis welches von +vsFTP automatisch übernommen wird. + +.. code:: bash + + adduser -h /var/media/ftp/uStor01/user1 user1 + adduser -h /var/media/ftp/uStor01/user2 user2 + adduser -h /var/media/ftp/uStor01/public gast + +.. code:: bash + + /var/media/ftp/uStor01/ # adduser -h /var/media/ftp/uStor01/user1/ user1 + adduser: /var/media/ftp/uStor01/user1/: File exists + Changing password for user1 + New password: + Retype password: + Password for user1 changed by root + /var/media/ftp/uStor01/ # adduser -h /var/media/ftp/uStor01/user2/ user2 + adduser: /var/media/ftp/uStor01/user2/: File exists + Changing password for user2 + New password: + Retype password: + Password for user2 changed by root + /var/media/ftp/uStor01/ # adduser -h /var/media/ftp/uStor01/public/ gast + adduser: /var/media/ftp/uStor01/public/: File exists + Changing password for gast + New password: + Retype password: + Password for gast changed by root + +Die neuen Zugangsdaten werden erstmal gespeichert. + +.. code:: bash + + modsave all + +.. code:: bash + + /var/media/ftp/uStor01/technik # modsave all + Saving users, groups and passwords...done. + Saving config...done. + Writing /var/flash/freetz...done. + 10752 bytes written. + +.. _DieVerzeichnissesharedundpublicwerdenindiejeweiligenHeim-VerzeichnissederBenutzereingebunden.: + +Die Verzeichnisse *shared* und *public* werden in die jeweiligen Heim-Verzeichnisse der Benutzer eingebunden. +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Dies soll immer sichergestellt werden, wenn die USB-Platte an die +FritzBox angeschlossen wird. Dazu wird die Datei *autorun.sh* im +Hauptverzeichnis der USB-Platte erstellt. Dass nach ordnungsgemäßem +Abhängen der Platte die mounts auch wieder entfernt werden schreiben wir +unmount-Befehle in die *autoend.sh*. + +*/var/media/ftp/uStor01/autorun.sh* + +.. code:: bash + + mount -o bind /var/media/ftp/uStor01/shared /var/media/ftp/uStor01/user1/shared + mount -o bind /var/media/ftp/uStor01/shared /var/media/ftp/uStor01/user2/shared + + mount -o bind /var/media/ftp/uStor01/public /var/media/ftp/uStor01/user1/public + mount -o bind /var/media/ftp/uStor01/public /var/media/ftp/uStor01/user2/public + +*/var/media/ftp/uStor01/autoend.sh* + +.. code:: bash + + umount /var/media/ftp/uStor01/user1/shared + umount /var/media/ftp/uStor01/user2/shared + + umount /var/media/ftp/uStor01/user1/public + umount /var/media/ftp/uStor01/user2/public + +.. _FTP-SchreibrechtefürdieBenutzerwerdengesetzt.: + +FTP-Schreibrechte für die Benutzer werden gesetzt. +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Dazu erhält jeder Benutzer eine Datei mit seinem Dateinamen im Ordner +*/var/media/ftp/uStor01/vsftp_user_conf/*, die festlegt, ob er +Schreibrechte hat oder nicht. + +*/var/media/ftp/uStor01/vsftp_user_conf/user1* + +.. code:: bash + + write_enable=yes + +*/var/media/ftp/uStor01/vsftp_user_conf/user2* + +.. code:: bash + + write_enable=yes + +*/var/media/ftp/uStor01/vsftp_user_conf/gast* + +.. code:: bash + + write_enable=no + +Über diese Benutzerdateien ist es auch möglich einzelne FTP-Befehle +(`​Liste <http://en.wikipedia.org/wiki/List_of_FTP_commands>`__) für +Benutzer zu verbieten. Hierzu fügt man folgende Zeile in die Datei ein +und entfernt die nicht gewünschten Befehle: + +.. code:: bash + + cmds_allowed=ABOR,ACCT,ALLO,APPE,AUTH,CDUP,CWD,DELE,EPRT,EPSV,FEAT,HELP,LIST,MDTM,MKD,MODE,NLST,NOOP,OPTS,PASS,PASV,PBSZ,PORT,PROT,PWD,QUIT,REIN,REST,RETR,RMD,RNFR,RNTO,SITE,SMNT,STAT,STOR,STOU,STRU,SYST,TYPE,USER + +Alternativ kann man auch einzelne FTP-Befehle verbieten (ab vsftpd +Version 2.1.0): + +.. code:: bash + + cmds_denied=DELE,RMD + +**Hinweiß:** Wenn wie Oben beschrieben das verbieten von Befehlen über +**cmds_denied=** nicht Funktioniert hat, gibt es noch einen zweiten Weg +das Ausführen von Befehle für einige User zu verbieten. + +Gelöst wird das ganze ebenfalls über die Benutzerdateien. Hierzu fügt +man folgende Zeile in die Datei ein und **entfernt** die Befehle die der +User nicht ausführen darf: + +.. code:: bash + + cmds_allowed=ABOR,ACCT,ALLO,APPE,AUTH,CDUP,CWD,DELE,EPRT,EPSV,FEAT,HELP,LIST,MDTM,MKD,MODE,NLST,NOOP,OPTS,PASS,PASV,PBSZ,PORT,PROT,PWD,QUIT,REIN,REST,RETR,RMD,RNFR,RNTO,SITE,SMNT,STAT,STOR,STOU,STRU,SYST,TYPE,USER + +**Beispiel:** user1 darf Dateien auf den FTP kopieren und Verzeichnisse +anlegen, jedoch diese nicht wieder löschen. Also muß folgendes in der +Datei stehen: + +.. code:: bash + + cmds_allowed=ABOR,ACCT,ALLO,APPE,AUTH,CDUP,CWD,EPRT,EPSV,FEAT,HELP,LIST,MDTM,MKD,MODE,NLST,NOOP,OPTS,PASS,PASV,PBSZ,PORT,PROT,PWD,QUIT,REIN,REST,RETR,RNFR,RNTO,SITE,SMNT,STAT,STOR,STOU,STRU,SYST,TYPE,USER + +.. + + | **DELE** (Delete file), **RMD** (Remove a directory) wurden aus dem + oben angegebenen String gelöscht. + | Sollte etwas immer noch nicht gehen, dann einfach mal den Router + neu starten.( Reboot der FritzBox ) + +| +| Eine Liste aller FTP-Befehle und ihre Bedeutung findet ihr hier: + `​Liste <http://en.wikipedia.org/wiki/List_of_FTP_commands>`__ + +.. _Daswars: + +Das wars! +^^^^^^^^^ + +Die Ordner sind nun per FTP (`​ftp://fritz.box <ftp://fritz.box>`__) mit +den gegebenen Zugangsdaten erreichbar. + +.. _Anmeldebildschirmbeivsftpdändern: + +Anmeldebildschirm bei vsftpd ändern +----------------------------------- + +| +| Hier wird nun kurz beschrieben wie ihr den Anmeldebildschirm von VSFTP + ändern bzw. anpassen könnt. +| 1.) Folgende Datei erzeugen: +| Name: **ftp-startbild** +| Inhalt: + +.. code:: bash + + Herzlich Willkommen bei + _ _ _ _ _ _ _ _ _ + / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ + ( M ) u ) s ) t ) e ) r ) m ) a ) n ) n ) + \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ + +| Sehr hilfreich bei der Erzeugung des Schriftzuges ist diese Seite: + `​AsciiArt Generator <http://www.ihr-freelancer.de/asciiart>`__ + (Schriftart:Bubble) +| 2.) Diese Datei wird dann einfach auf Eurer Festplatte abgelegt. +| Ort: **/var/media/ftp/uStor01/** +| 3.) Nun muß diese Datei nur noch über das WebIF ins Freetz eingebunden + werden. +| hierzu wird nun im Freetz-WebIF das VSFTP-Menue aufgerufen und + folgender Eintrag unter **Zusätzliche Konfigurationsoptionen (für + Experten)** eingetragen. + +.. code:: bash + + banner_file=/var/media/ftp/uStor01/ftp-startbild + +.. figure:: /screenshots/126.jpg + :alt: + +4.) Nun nur noch Übernehmen und schon sollte sich Eure Box / der FTP mit +dem neuen Anmeldebildschirm melden. + +.. figure:: /screenshots/127.jpg + :alt: + +.. figure:: /screenshots/128.jpg + :alt: + +| + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​Project Homepage <http://vsftpd.beasts.org/>`__ +- `​IPPF + Thread <http://www.ip-phone-forum.de/showthread.php?t=176105>`__: + Aktives/passives FTP auf die Box von außen mit *vsftpd* auf der Box +- `​IPPF + Thread <http://www.ip-phone-forum.de/showthread.php?t=187488>`__: + vsFTP und Samba mit Benutzerrechten für FAT32-USB-Platte + +- Tags +- `filetransfer </tags/filetransfer>`__ +- `ftp </tags/ftp>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `server </tags/server>`__ +- `überarbeiten </tags/%C3%BCberarbeiten>`__ diff --git a/wiki/packages/vtund.rst b/wiki/packages/vtund.rst new file mode 100644 index 0000000..3ddd53b --- /dev/null +++ b/wiki/packages/vtund.rst @@ -0,0 +1,58 @@ +.. _VTUNfreetzPackage: + +VTUN freetz Package +=================== + +| `​VTUN <http://vtun.sourceforge.net/>`__ ist eine einfache + Möglichkeit, einen Tunnel von der oder auf die Fritzbox aufzubauen. + Mit maximal 75k ist es zudem auch nicht allzu groß. + +.. _Version: + +Version +------- + +.. figure:: /screenshots/125.png + :alt: vtun configuration GUI + + vtun configuration GUI + +Momentan ist die Version 3.0.2 enthalten. Es kann im menuconfig +(momentan im Bereich "Testing") mit folgenden Optionen gebaut werden: + +- Komprimierung per LZO2 oder Deflate (zlib) +- Verschlüsselung per SSL (Achtung, `Hinweise zur SSL Bibliothek + beachten <../FAQ.html#NachdemFlashenistdieBoxnichtmehrerreichbarundoderrebootetständig>`__) + :sup:`Es besteht die Möglichkeit, VTUN statisch zu bauen, um mögliche + Probleme damit zu vermeiden` +- Flusssteuerung ("Traffic-Shaping") + +.. _Konfigurationsanleitung: + +Konfigurationsanleitung +----------------------- + +| Die GUI für das Programm ist momentan sehr einfach aufgebaut: + +- In einer Zeile wird der Aufrufstring für das Programm festgelegt +- In der Feld darunter wird die Konfigurationsdatei eingegeben werden + +Auf der Seite von VTUN findet man auch ein paar +`​Konfigurationsbeispiele <http://vtun.sourceforge.net/setup.html>`__ + +.. _Portweiterleitung: + +Portweiterleitung +~~~~~~~~~~~~~~~~~ + +Soll die Box als Server dienen und die Verbindung auf die Box über das +Internet aufgebaut werden, so muss dafür eine "Portweiterleitung" +eingerichet werden. Ausführlich wird das Thema z.B. beim Paket +`OpenVPN <openvpn.html#Portweiterleitung>`__ behandelt, als Freetz +Nutzer bietet sich dafür das Paket `AVM Firewall <avm-firewall.html>`__ +an + +- Tags +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `tunnel </tags/tunnel>`__ diff --git a/wiki/packages/wget.rst b/wiki/packages/wget.rst new file mode 100644 index 0000000..cedb11d --- /dev/null +++ b/wiki/packages/wget.rst @@ -0,0 +1,32 @@ +wget +==== + +GNU `​Wget <http://www.gnu.org/software/wget/>`__ ist ein freies +Kommandozeilen-Programm zum Herunterladen von Ressourcen (Dateien, +Webseiten, etc) über ein Netzwerk. Zu den unterstützten Protokollen +gehören `​ftp <http://de.wikipedia.org/wiki/File_Transfer_Protocol>`__, +`​http <http://de.wikipedia.org/wiki/Http>`__ und +`​https <http://de.wikipedia.org/wiki/Https>`__. Wget kann einen +abgebrochenen `Download <../Download.html>`__ wieder aufnehmen, +komplette Webseiten mit Bildern sowie vollständige Websites +herunterladen, z. B. zum Offline-Lesen oder zur Archivierung. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​wget Homepage <http://www.gnu.org/software/wget/>`__ +- `​Wikipedia Artikel <http://de.wikipedia.org/wiki/Wget>`__ +- `​Hel for wget <http://www.ccp14.ac.uk//mirror/wget.htm>`__ + (Englisch) +- `​Herunterladen von Webseiten mit + Wget <http://www.pro-linux.de/berichte/wget-doku.html>`__ + +-------------- + +- Tags +- `console </tags/console>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `web </tags/web>`__ diff --git a/wiki/packages/wol.rst b/wiki/packages/wol.rst new file mode 100644 index 0000000..233bc49 --- /dev/null +++ b/wiki/packages/wol.rst @@ -0,0 +1,71 @@ +.. _WakeonLANWoL: + +Wake on LAN (WoL) +================= + +| Es gibt zwei Programme, die WoL unterstützen: +| 1. *ether-wake*, das in der busybox integriert ist und +| 2. *wol*, das genutzt werden kann, wenn es mit *ether-wake* Probleme + gibt. + +Das ``wol`` Paket ist "binary only", kann aber seit einiger Zeit auch +über wol-cgi bedient werden. + +.. _WakeonLANWebInterfacewol-cgi: + +Wake on LAN WebInterface(wol-cgi) +--------------------------------- + +Mit Hilfe des wol-cgi Paketes lässt sich das Busybox Applet +``ether-wake`` steuern. Hiermit lassen sich PCs über das lokale Netzwerk +(LAN) oder über das Internet (WAN) aufwecken. + +.. _KonfigurationaufderFritzbox: + +Konfiguration auf der Fritzbox +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Ein PC, der aufgeweckt werden soll, muss in die Hostliste aufgenommen +werden. Die Hostliste lässt sich auf folgende Weisen bearbeiten: + +- *Pakete → Wake on LAN → Hosts bearbeiten* +- *Einstellungen → Hosts* + +Um Wake on LAN zu nutzen, muss wenigstens die Mac-Adresse und der +Hostname eingegeben werden, am Besten einfach gleich noch die IP-Adresse +und das Interface (meist eth0). Beispiele: + +.. code:: bash + + #<ip> <mac> <interface> <host> [<description>] (*... nicht definiert) + * 0A:B1:2C:D3:4E:F5 * server + 192.168.178.2 0A:B1:2C:D3:4E:F5 eth0 server Das ist mein Server + +Im Menü *Pakete → Wake on LAN* können noch weitere Einstellungen +vorgenommen werden: + +.. figure:: /screenshots/16.png + :alt: Wake on LAN Configuration + + Wake on LAN Configuration + +Anschließen ist das WoL-WebInterface über ``fritz.box:82`` oder den +Menüpunkt "*Freetz WOL*" des AVM-WebInterfaces zu erreichen. Darin dann +den PC in der Liste "Bekannte Hosts" auswählen. Die Einträge MAC und +Interface werden automatisch eingetragen und ein Klick auf "WakeUp" +startet den gewählten PC. + +.. figure:: /screenshots/14.png + :alt: Wake on LAN WebInterface + + Wake on LAN WebInterface + +Bei Problemen bitte zuerst versuchen, ob der PC sich anderweitig (von +anderen PCs) aufwecken lässt. Hierdurch ist sichergestellt, dass der PC +richtig konfiguriert ist. Weiterhin kann man statt dem Busybox +``ether-wake`` Applet das `wol <wol.html>`__ Binary probieren. + +- Tags +- `cgi </tags/cgi>`__ +- `network </tags/network>`__ +- `wol </tags/wol>`__ diff --git a/wiki/packages/wput.rst b/wiki/packages/wput.rst new file mode 100644 index 0000000..5bb4270 --- /dev/null +++ b/wiki/packages/wput.rst @@ -0,0 +1,20 @@ +**wput** ist ein command-line ftp client, der Dateien oder auch ganze +Verzeichnisse auf einen remote Server hochlädt. Dabei unterstützt er +auch das wiederaufnehmen von abgebrochenen uploads. + +Features + +- wget ähnliches inteface +- TLS-encryption +- resuming +- speed-limit +- time-stamping (compares local and remote dates) +- proxy-support (socks5, http) +- i18n +- windows-compatibility + +- Tags +- `console </tags/console>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `web </tags/web>`__ diff --git a/wiki/packages/xmail.rst b/wiki/packages/xmail.rst new file mode 100644 index 0000000..3ce640e --- /dev/null +++ b/wiki/packages/xmail.rst @@ -0,0 +1,13 @@ +.. _Links: + +Links +===== + +- Package `PHPXMail <phpxmail.html>`__ +- `​Setting up a virtual Mail server with + XMail <http://smartpost.sourceforge.net/virtual_mail_server_with_xmail.htm>`__ + +- Tags +- `mail </tags/mail>`__ +- `network </tags/network>`__ +- `packages <../packages.html>`__ diff --git a/wiki/packages/xrelayd.rst b/wiki/packages/xrelayd.rst new file mode 100644 index 0000000..c7cd87f --- /dev/null +++ b/wiki/packages/xrelayd.rst @@ -0,0 +1,74 @@ +xrelayd +======= + +.. figure:: /screenshots/203.png + :alt: Xrelayd Webinterface + + Xrelayd Webinterface + +*"xrelayd is the successor to matrixtunnel, a lightweight stunnel +replacement. Xrelayd is a basic tcp proxy server which enables you to +encrypt arbitrary protocols without changing ssl unaware deamons and +client software."* `​xrelayd Thread im +OpenWRT-Forum <http://forum.openwrt.org/viewtopic.php?id=12338>`__ + +Obwohl es als Nachfolger von matrixtunnel betrachtet wird, ist auch +dieses Projekt ähnlich wie *matrixtunnel* seit Ende 2007 etwas +eingeschlafen. *xrelayd* benutzt eine andere SSL-Bibliothek als +*matrixtunnel* und ist auch nicht so kompakt wie dieses. Die Handhabung +und Syntax von *xrelayd* ist ähnlich dem *matrixtunnel*. *xrelayd* kann +im Unterschied zu *matrixtunnel* auch noch `​selbstsignierte +Zertifikate <http://en.wikipedia.org/wiki/Self-signed_certificate>`__ +erstellen, sodass dies auf der Box selbst geschehen kann. Solche +Zertifikate werden allerdings von den Browsern wie Firefox 3 als korrupt +angesehen, weil sie "nicht vertrauenswürdig" sind (bei +"vertrauenswürdigen Zertifikaten" bürgt dafür eine "`​Certificate +Authority <http://de.wikipedia.org/wiki/Zertifizierungsstelle>`__" wie +z.B. Thawte oder VeriSign). AVM scheint für ihren HTTPS-Server eine +xrelayd-ähnliche-Lösung zu benutzen. Dafür sprechen bei jedem Reboot neu +erstellte selbst signierte Zertifikate des HTTPS-Servers von AVM. + +Seit Freetz-trunk-\ `r3571 </changeset/3571>`__ gibt es dazu auch ein +WebGUI. + +.. _Konfiguration: + +Konfiguration +------------- + +#. Erzeugen der Keys auf dem PC (unter Linux): + + .. code:: bash + + openssl genrsa 1024 > host.key + openssl req -new -x509 -nodes -sha1 -days 365 -key host.key > host.cert + +#. Die Keys im Webinterface unter Einstellungen→XRelayd: + Certificate/Private Key einfügen. + +3. Die gewünschten Services hinzufügen. Zum Beispiel: + + .. code:: bash + + 0.0.0.0:4433 127.0.0.1:81 Freetz-Webinterface + +4. Zugriff (intern) über + `​https://fritz.box:4433 <https://fritz.box:4433>`__. Für den + externen Zugriff muss noch eine Port-Freigabe eingetragen werden. + +.. _ZertifikateaufderBoxerzeugen: + +Zertifikate auf der Box erzeugen +-------------------------------- + +.. code:: bash + + xrelayd -f -K 1024 -p host.key -U "CN=localhost" -p host.key -A host.cert + cat host.key > /tmp/flash/.xrelayd/key.pem + cat host.cert > /tmp/flash/.xrelayd/certs.pem + modsave flash + +- Tags +- `network </tags/network>`__ +- `packages <../packages.html>`__ +- `tunnel </tags/tunnel>`__ diff --git a/wiki/packages/xyssl.rst b/wiki/packages/xyssl.rst new file mode 100644 index 0000000..12fc169 --- /dev/null +++ b/wiki/packages/xyssl.rst @@ -0,0 +1,12 @@ +`​XySSL <http://www.ohloh.net/p/xyssl>`__\ *is an open-source +cryptographic library for embedded systems. It provides standard crypto +block: AES, SHA-1, X.509, etc. as well as higher lever protocols: SSL v3 +and TLS v1. XySSL has been ported on a number of architectures, +including ARM, PowerPC, MIPS, and Motorola 68000. Its already small +memory footprint can be easily reduced to 50k for a basic SSL client or +server, by modifying a single .h configuration file. XySSL is currently +used in several open-source (GPL) and closed-source projects, such as +Adobe's flash player.* + +Inzwischen wird XySSL nicht mehr weiter entwickelt. Der Nachfolger heißt +`​PolarSSL <http://www.polarssl.org/>`__. diff --git a/wiki/packages/ziproxy.rst b/wiki/packages/ziproxy.rst new file mode 100644 index 0000000..8d22aa2 --- /dev/null +++ b/wiki/packages/ziproxy.rst @@ -0,0 +1,97 @@ +ziproxy +======= + +"*Ziproxy is a forwarding (non-caching) compressing HTTP proxy server. +Basically, it squeezes images by converting them to lower quality JPEGs +or JPEG 2000 and compresses (gzip) HTML and other text-like data. It +also provides other features such as: HTML/JS/CSS optimization, +preemptive hostname resolution, transparent proxying, IP ToS marking +(QoS), Ad-Blocker, detailed logging and more.*" + +Useful when bandwidth is limited, for example on slow GPRS connections +or on slow or heavily shared internet connections in developing +countries (typical in internet cafes). + +It is possible to use ziproxy as normal proxy by disabling the options +*GZip compression* and *Compress images*. + +Ziproxy supports inet. + +.. _CPUusage: + +CPU usage +--------- + +Relatively heavy. + +It may be necessary to disable the watchdog by adding this line to for +example *rc.custom*: + +.. code:: bash + + echo "disable">/dev/watchdog + +.. _Memoryusage: + +Memory usage +------------ + +After a fresh start: + +| *VmSize*: ~1800 kB +| *VmRSS*: ~375 kB + +.. _URLnoprocessinglist: + +URL no processing list +---------------------- + +You want probably at least: + +.. code:: bash + + http://mt*.google.com/* + http://khm*.google.com/* + http://maps.gstatic.com/* + +.. _URLdenylist: + +URL deny list +------------- + +.. figure:: /screenshots/218.png + :alt: + +Something like: + +.. code:: bash + + http://*.doubleclick.net/* + http://*.googleadservices.com/* + http://*.google-analytics.com/* + http://*.googlesyndication.com/* + http://adserver.*/* + http://ads.*/* + http://ad.*/* + http://*.facebook.com/plugins* + http://*.facebook.com/widgets* + http://*.fbcdn.net/ads*/* + +and maybe: + +.. code:: bash + + http://*/*.swf + +.. _Links: + +Links +----- + +- `​Homepage <http://ziproxy.sourceforge.net/>`__ +- `​Readme <http://ziproxy.cvs.sourceforge.net/viewvc/ziproxy/ziproxy-default/README?view=markup>`__ +- `Ticket with patch </ticket/1356>`__ +- `​Using ziproxy <http://blog.mudy.info/2010/06/using-ziproxy/>`__ + (includes statistics) +- `​Security note <https://www.kb.cert.org/vuls/id/MAPG-7N9GN8>`__ +- `​Linux.com <http://www.linux.com/archive/feature/148438>`__ diff --git a/wiki/packages_tagged.rst b/wiki/packages_tagged.rst new file mode 100644 index 0000000..ded36ae --- /dev/null +++ b/wiki/packages_tagged.rst @@ -0,0 +1,387 @@ +.. _PaketenachAnwendungsgebieten: + +Pakete nach Anwendungsgebieten +============================== + +Diese Seite versucht, die `verfügbaren Pakete <packages.html>`__ nach +Anwendungsgebieten aufzulisten. Die Listen werden automatisch über +`Tags </tags>`__ generiert - woraus dreierlei resultiert: + +#. *Die Liste ist nie vollständig.* + Existiert für ein Paket noch kein Artikel, sind meist auch noch keine + Tags dafür vergeben - und das Paket kann daher hier nicht auftauchen. + Gleiches gilt natürlich, wenn ein vorhandener Artikel nicht + "getagged" wurde. +#. *Die Liste ist nie 100% korrekt.* + Dazu reicht schon ein falsches Tag auf einem Artikel… +#. *Es gibt hier u.U. Duplikate.* + Während manche Artikel vielleicht gar kein Tag haben, wurden anderen + vielleicht gleich mehrere Tags vergeben. So könnte z.B. ein + FTP-Server sowohl unter "Web", als auch unter "Netzwerk" oder + "Daemons" einsortiert werden. + +Will man wirklich auf "Nummer Sicher" gehen, bleibt also nur der Weg +über die (hoffentlich vollständige) `Paketliste <packages.html>`__. + +.. _Audio: + +Audio +----- + +- `packages/espeak <packages/espeak.html>`__ eSpeak +- `packages/madplay <packages/madplay.html>`__ madplay +- `packages/mediaserver <packages/mediaserver.html>`__ Mediaserver +- `packages/streamripper <packages/streamripper.html>`__ Streamripper + +.. _HomeAutomation: + +Home Automation +--------------- + +- `packages/digitemp <packages/digitemp.html>`__ '''Was ist + digitemp?''' +- `packages/fhem <packages/fhem.html>`__ FHEM +- `packages/fhzctrl <packages/fhzctrl.html>`__ fhzctrl +- `packages/owfs <packages/owfs.html>`__ owfs +- `packages/sispmctl <packages/sispmctl.html>`__ sispmctl + +.. _Konsole: + +Konsole +------- + +- `packages/bash <packages/bash.html>`__ Bash +- `packages/deco <packages/deco.html>`__ Demos Commander +- `packages/dtach <packages/dtach.html>`__ dtach +- `packages/empty <packages/empty.html>`__ Empty +- `packages/irssi <packages/irssi.html>`__ irssi +- `packages/ldd <packages/ldd.html>`__ ldd +- `packages/ltrace <packages/ltrace.html>`__ ltrace +- `packages/lynx <packages/lynx.html>`__ Lynx +- `packages/m-i-t <packages/m-i-t.html>`__ module-init-tools +- `packages/mc <packages/mc.html>`__ Midnight Commander +- `packages/mcabber <packages/mcabber.html>`__ mcabber +- `packages/mtr <packages/mtr.html>`__ mtr +- `packages/netcat <packages/netcat.html>`__ netcat +- `packages/screen <packages/screen.html>`__ screen +- `packages/socat <packages/socat.html>`__ socat +- `packages/strace <packages/strace.html>`__ strace +- `packages/streamripper <packages/streamripper.html>`__ Streamripper +- `packages/tcpdump <packages/tcpdump.html>`__ tcpdump +- `packages/vim <packages/vim.html>`__ vim +- `packages/wget <packages/wget.html>`__ wget +- `packages/wput <packages/wput.html>`__ + +.. _Monitoring: + +Monitoring +---------- + +- `packages/collectd </wiki/packages/collectd>`__ +- `packages/inotify-tools <packages/inotify-tools.html>`__ + Inotify-Tools +- `packages/nagios <packages/nagios.html>`__ Nagios +- `packages/rrdstats <packages/rrdstats.html>`__ RRDstats +- `packages/rrdtool <packages/rrdtool.html>`__ RRDTool + +.. _Netzwerk: + +Netzwerk +-------- + +.. _DynDNS: + +DynDNS +~~~~~~ + +- `packages/inadyn-mt <packages/inadyn-mt.html>`__ Inadyn-MT +- `packages/opendd <packages/opendd.html>`__ OpenDD + +.. _FileTransfer: + +File Transfer +~~~~~~~~~~~~~ + +- `packages/bftpd <packages/bftpd.html>`__ Bftpd +- `packages/ctorrent <packages/ctorrent.html>`__ CTorrent +- `packages/ncftp <packages/ncftp.html>`__ ncftp +- `packages/obexftp <packages/obexftp.html>`__ ObexFTP +- `packages/transmission <packages/transmission.html>`__ Transmission +- `packages/vsftpd <packages/vsftpd.html>`__ VSFTPd + +.. _InternetMessenging: + +Internet Messenging +~~~~~~~~~~~~~~~~~~~ + +- `packages/bip <packages/bip.html>`__ BIP +- `packages/checkmaild <packages/checkmaild.html>`__ checkmaild 0.4.7 +- `packages/imapproxy.en <packages/imapproxy.en.html>`__ !ImapProxy +- `packages/irssi <packages/irssi.html>`__ irssi +- `packages/mcabber <packages/mcabber.html>`__ mcabber +- `packages/phpxmail <packages/phpxmail.html>`__ +- `packages/phpxmail.en <packages/phpxmail.en.html>`__ Introduction +- `packages/xmail <packages/xmail.html>`__ Links + +.. _Konsole1: + +Konsole +~~~~~~~ + +- `packages/bash <packages/bash.html>`__ Bash +- `packages/deco <packages/deco.html>`__ Demos Commander +- `packages/dtach <packages/dtach.html>`__ dtach +- `packages/empty <packages/empty.html>`__ Empty +- `packages/irssi <packages/irssi.html>`__ irssi +- `packages/ldd <packages/ldd.html>`__ ldd +- `packages/ltrace <packages/ltrace.html>`__ ltrace +- `packages/lynx <packages/lynx.html>`__ Lynx +- `packages/m-i-t <packages/m-i-t.html>`__ module-init-tools +- `packages/mc <packages/mc.html>`__ Midnight Commander +- `packages/mcabber <packages/mcabber.html>`__ mcabber +- `packages/mtr <packages/mtr.html>`__ mtr +- `packages/netcat <packages/netcat.html>`__ netcat +- `packages/screen <packages/screen.html>`__ screen +- `packages/socat <packages/socat.html>`__ socat +- `packages/strace <packages/strace.html>`__ strace +- `packages/streamripper <packages/streamripper.html>`__ Streamripper +- `packages/tcpdump <packages/tcpdump.html>`__ tcpdump +- `packages/vim <packages/vim.html>`__ vim +- `packages/wget <packages/wget.html>`__ wget +- `packages/wput <packages/wput.html>`__ + +.. _Proxies: + +Proxies +~~~~~~~ + +- `packages/bip <packages/bip.html>`__ BIP +- `packages/imapproxy.en <packages/imapproxy.en.html>`__ !ImapProxy +- `packages/polipo.en <packages/polipo.en.html>`__ Using with Tor +- `packages/privoxy <packages/privoxy.html>`__ Privoxy +- `packages/tinyproxy <packages/tinyproxy.html>`__ Tinyproxy +- `packages/tor <packages/tor.html>`__ Tor Proxy + +.. _Routing: + +Routing +~~~~~~~ + +- `packages/bird <packages/bird.html>`__ Bird +- `packages/igmpproxy <packages/igmpproxy.html>`__ igmpproxy +- `packages/iptables <packages/iptables.html>`__ iptables +- `packages/iptables-cgi <packages/iptables-cgi.html>`__ iptables-cgi +- `packages/nhipt <packages/nhipt.html>`__ NHIPT - iptables firewall + GUI +- `packages/openvpn <packages/openvpn.html>`__ OpenVPN freetz Package +- `packages/quagga <packages/quagga.html>`__ Quagga +- `packages/tinc <packages/tinc.html>`__ Tinc +- `packages/tor <packages/tor.html>`__ Tor Proxy +- `packages/virtualip <packages/virtualip.html>`__ Virtual IP +- `packages/vpnc <packages/vpnc.html>`__ vpnc + +.. _Security: + +Security +~~~~~~~~ + +- `packages/authorized-keys <packages/authorized-keys.html>`__ + authorized_keys +- `packages/avm-firewall <packages/avm-firewall.html>`__ + AVM-firewall-cgi +- `packages/iptables <packages/iptables.html>`__ iptables +- `packages/iptables-cgi <packages/iptables-cgi.html>`__ iptables-cgi +- `packages/knock <packages/knock.html>`__ knockd +- `packages/nhipt <packages/nhipt.html>`__ NHIPT - iptables firewall + GUI +- `packages/openvpn <packages/openvpn.html>`__ OpenVPN freetz Package +- `packages/pptp <packages/pptp.html>`__ PPTP Client +- `packages/tcp_wrappers <packages/tcp_wrappers.html>`__ TCP Wrapper +- `packages/tinc <packages/tinc.html>`__ Tinc +- `packages/vpnc <packages/vpnc.html>`__ vpnc + +.. _Tunneling: + +Tunneling +~~~~~~~~~ + +- `packages/dns2tcp <packages/dns2tcp.html>`__ Dns2Tcp +- `packages/httptunnel <packages/httptunnel.html>`__ httptunnel +- `packages/iodine <packages/iodine.html>`__ iodine +- `packages/matrixtunnel <packages/matrixtunnel.html>`__ matrixtunnel +- `packages/pingtunnel <packages/pingtunnel.html>`__ pingtunnel +- `packages/pptp <packages/pptp.html>`__ PPTP Client +- `packages/stunnel <packages/stunnel.html>`__ Stunnel +- `packages/vtund <packages/vtund.html>`__ VTUN freetz Package +- `packages/xrelayd <packages/xrelayd.html>`__ xrelayd + +.. _VPN: + +VPN +~~~ + +- `packages/openvpn <packages/openvpn.html>`__ OpenVPN freetz Package +- `packages/tinc <packages/tinc.html>`__ Tinc +- `packages/vpnc <packages/vpnc.html>`__ vpnc + +.. _Web-Anwendungen: + +Web-Anwendungen +~~~~~~~~~~~~~~~ + +- `packages/apache <packages/apache.html>`__ Apache Webserver mit PHP + CGI +- `packages/curl <packages/curl.html>`__ cURL +- `packages/haserl <packages/haserl.html>`__ Haserl +- `packages/lighttpd <packages/lighttpd.html>`__ lighttpd Webserver +- `packages/lynx <packages/lynx.html>`__ Lynx +- `packages/tinyproxy <packages/tinyproxy.html>`__ Tinyproxy +- `packages/wget <packages/wget.html>`__ wget +- `packages/wput <packages/wput.html>`__ + +.. _Sonstiges: + +Sonstiges +~~~~~~~~~ + +- `packages/aiccu <packages/aiccu.html>`__ Aiccu +- `packages/bluez-utils <packages/bluez-utils.html>`__ Bluez-Utils +- `packages/br2684ctl <packages/br2684ctl.html>`__ br2684ctl +- `packages/bridge-utils <packages/bridge-utils.html>`__ bridge-utils +- `packages/cpmaccfg <packages/cpmaccfg.html>`__ cpmaccfg +- `packages/dnsd <packages/dnsd.html>`__ dnsd +- `packages/dnsd.en <packages/dnsd.en.html>`__ dnsd +- `packages/dnsmasq <packages/dnsmasq.html>`__ dnsmasq +- `packages/downloader <packages/downloader.html>`__ Downloader-CGI +- `packages/dropbear <packages/dropbear.html>`__ Dropbear +- `packages/gw6 <packages/gw6.html>`__ gw6 +- `packages/hol <packages/hol.html>`__ +- `packages/mediaserver <packages/mediaserver.html>`__ Mediaserver +- `packages/nagios <packages/nagios.html>`__ Nagios +- `packages/netsnmp <packages/netsnmp.html>`__ Net-SNMP +- `packages/openntpd <packages/openntpd.html>`__ OpenNTPD +- `packages/portmap <packages/portmap.html>`__ portmap +- `packages/ppp <packages/ppp.html>`__ ppp-cgi +- `packages/rcapid </wiki/packages/rcapid>`__ +- `packages/siproxd <packages/siproxd.html>`__ +- `packages/subversion <packages/subversion.html>`__ Subversion +- `packages/trickle <packages/trickle.html>`__ trickle +- `packages/unbound <packages/unbound.html>`__ Unbound + +.. _Privacy: + +Privacy +------- + +- `packages/cryptsetup </wiki/packages/cryptsetup>`__ +- `packages/privoxy <packages/privoxy.html>`__ Privoxy +- `packages/tor <packages/tor.html>`__ Tor Proxy + +.. _Programmiersprachenund-hilfen: + +Programmiersprachen und -hilfen +------------------------------- + +- `packages/empty <packages/empty.html>`__ Empty +- `packages/ldd <packages/ldd.html>`__ ldd +- `packages/ltrace <packages/ltrace.html>`__ ltrace +- `packages/lua <packages/lua.html>`__ Lua +- `packages/microperl <packages/microperl.html>`__ microperl +- `packages/ruby <packages/ruby.html>`__ Ruby +- `packages/strace <packages/strace.html>`__ strace +- `packages/subversion <packages/subversion.html>`__ Subversion + +.. _Security1: + +Security +-------- + +- `packages/authorized-keys <packages/authorized-keys.html>`__ + authorized_keys +- `packages/avm-firewall <packages/avm-firewall.html>`__ + AVM-firewall-cgi +- `packages/cryptsetup </wiki/packages/cryptsetup>`__ +- `packages/iptables <packages/iptables.html>`__ iptables +- `packages/iptables-cgi <packages/iptables-cgi.html>`__ iptables-cgi +- `packages/knock <packages/knock.html>`__ knockd +- `packages/nhipt <packages/nhipt.html>`__ NHIPT - iptables firewall + GUI +- `packages/openvpn <packages/openvpn.html>`__ OpenVPN freetz Package +- `packages/pptp <packages/pptp.html>`__ PPTP Client +- `packages/tcp_wrappers <packages/tcp_wrappers.html>`__ TCP Wrapper +- `packages/tinc <packages/tinc.html>`__ Tinc +- `packages/vpnc <packages/vpnc.html>`__ vpnc + +.. _System: + +System +------ + +.. _Dateisystem: + +Dateisystem +~~~~~~~~~~~ + +- `packages/cifsmount <packages/cifsmount.html>`__ cifsmount +- `packages/cryptsetup </wiki/packages/cryptsetup>`__ +- `packages/davfs2 <packages/davfs2.html>`__ WebDAV mit davfs2 +- `packages/e2fsprogs <packages/e2fsprogs.html>`__ e2fsprogs +- `packages/fstyp <packages/fstyp.html>`__ fstyp +- `packages/fuse <packages/fuse.html>`__ FUSE +- `packages/hd-idle <packages/hd-idle.html>`__ hd-idle +- `packages/lsof <packages/lsof.html>`__ lsof +- `packages/mini_fo <packages/mini_fo.html>`__ mini_fo +- `packages/nfs <packages/nfs.html>`__ NFS +- `packages/nfs-utils <packages/nfs-utils.html>`__ NFS-Utils / + NFS-Server +- `packages/nfsd <packages/nfsd.html>`__ NFSD_CGI +- `packages/ntfs-3g <packages/ntfs-3g.html>`__ NTFS-3G +- `packages/samba <packages/samba.html>`__ Samba +- `packages/usbroot <packages/usbroot.html>`__ USB-Root + +.. _HardwareanderBox: + +Hardware an der Box +~~~~~~~~~~~~~~~~~~~ + +- `packages/bfusb </wiki/packages/bfusb>`__ +- `packages/bluez-utils <packages/bluez-utils.html>`__ Bluez-Utils +- `packages/hd-idle <packages/hd-idle.html>`__ hd-idle +- `packages/pciutils <packages/pciutils.html>`__ pciutils +- `packages/sane-backends <packages/sane-backends.html>`__ SANE +- `packages/usbip <packages/usbip.html>`__ USB/IP +- `packages/usbutils <packages/usbutils.html>`__ usbutils + +.. _Verschiedenes: + +Verschiedenes +~~~~~~~~~~~~~ + +- `packages/syslogd <packages/syslogd.html>`__ Syslogd + +.. _Telefonie: + +Telefonie +--------- + +- `packages/callmonitor <packages/callmonitor.html>`__ Callmonitor +- `packages/dtmfbox <packages/dtmfbox.html>`__ DTMFBox +- `packages/espeak <packages/espeak.html>`__ eSpeak + +.. _verschiedeneTools: + +verschiedene Tools +------------------ + +- `packages/debootstrap <packages/debootstrap.html>`__ Debootstrap +- `packages/downloader <packages/downloader.html>`__ Downloader-CGI +- `packages/hol <packages/hol.html>`__ +- `packages/inetd <packages/inetd.html>`__ inetd +- `packages/nano-shell <packages/nano-shell.html>`__ Nano-Shell +- `packages/rudi-shell <packages/rudi-shell.html>`__ Rudi-Shell +- `packages/usbutils <packages/usbutils.html>`__ usbutils + +-------------- + +- Tags +- `packages <packages.html>`__ diff --git a/wiki/patch.rst b/wiki/patch.rst new file mode 100644 index 0000000..1d63b27 --- /dev/null +++ b/wiki/patch.rst @@ -0,0 +1,225 @@ +.. _AufbaueinesPatches: + +Patches +======= + +Aufbau eines Patches +-------------------- + +Ein Patch ist eine Datei im Textformat, die für gewöhnlich die Endung +.patch (manchmal auf .diff) hat und eine Liste von Unterschieden +zwischen zwei Version einer Datei enthält. Patches enthalten nur +Unterschiede in Textdateien. Unterschiede in Binärdateien können nicht +gepatched werden. + +Zu Beginn eines Patch kann ein Kommentar stehen, der beschreibt wo der +Patch herkommt, wer daran mitgewirkt hat, welches Problem er löst usw. +Der eigentliche Beginn der Unterschiede wird durch ``---`` +gekennzeichnet. Für gewöhnlich enthält ein Patch 3 Zeilen Kontext vor +und nach jeder geänderten Zeile. Diese dienen als Referenz, so dass der +Patch auch noch angewendet werden kann falls an der zu patchenden Datei +eine Änderung vorgenommen wurde und die Zeilennummern nicht mehr korrekt +sind. + +.. code:: bash + + Dieser Patch ist ein Beispiel und fügt menuconfig einen neuen Eintrag hinzu. + + Index: make/Config.in + =================================================================== + --- make/Config.in (Revision 7307) + +++ make/Config.in (Arbeitskopie) + @@ -51,6 +51,7 @@ + source make/netcat/Config.in + source make/nc6/Config.in + source make/netsnmp/Config.in + +source make/newpackage/Config.in + source make/nfs-utils/Config.in + source make/ntfs/Config.in + source make/openntpd/Config.in + +In den meisten Fällen lauten die 2 Dateinamen (hier make/Config.in) +gleich, manchmal Unterscheiden sie sich in der Endung (.orig), je +nachdem wie der Patch erstellt wurde. Im Beispiel ist also eine Änderung +an der Datei make/Config.in beschrieben. Konkret wurde hier ein neues +Paket *newpackage* geschrieben und soll jetzt dem menuconfig hinzugefügt +werden. Die fünfte Zeile des Patches enthält Informationen darüber wo +sich der zu patchende Abschnitt (hunk) in der Datei befindet und wie +viele Textzeilen der Patch verändert. Im Beispiel beginnt der Patch ab +Zeile 51 und fügt eine Zeile (7-6=1), gekennzeichnet durch ein ``+``, +hinzu. Man könnte also das gleiche Ergebnis erreichen, wenn man die +Datei make/Config.in in einem Texteditor öffnet und die Zeile +``source make/newpackage/Config.in`` an der beschriebenen Stelle +hinzufügt. + +.. _ErzeugeneinesPatches: + +Erzeugen eines Patches +---------------------- + +Man hat eine Datei (Config.in) geändert und difft sie gegen SVN: + +.. code:: bash + + svn diff Config.in > Config.patch + +Alle Änderungen im Verzeichnis + Unterverzeichnisse: + +.. code:: bash + + svn diff > all.patch + +Falls man neue Dateien angelegt hat müssen diese erst dem SVN +hinzugefügt werden: + +.. code:: bash + + svn add Datei- oder Verzeichnisname + +.. _Patchanwendenoderrückgängigmachen: + +Patch anwenden oder rückgängig machen +------------------------------------- + +Patch anwenden: + +.. code:: bash + + $ patch -p0 < Config.patch + patching file Config.in + $ + +Patch rückgängig machen: + +.. code:: bash + + $ patch -Rp0 < Config.patch + patching file Config.in + $ + +Falls ihr so etwas seht: + +.. code:: bash + + $ patch -p0 < Config.patch + patching file Config.in + Hunk #1 FAILED at 1. + 1 out of 1 hunk FAILED -- saving rejects to file Config.in.rej + +Dann passt der Patch nicht mehr und muss erneuert werden. + +- TODO (evtl. aus dem + `​ippf-Wiki <http://wiki.ip-phone-forum.de/software:ds-mod:howtos#patches_in_den_ds-mod_einspielen>`__ + kopieren) + +.. _WiefindeichdiezupatchendeStelle: + +Wie finde ich die zu patchende Stelle? +-------------------------------------- + +Auf diese Frage muss man primär antworten: Es kommt darauf an, worum es +geht. Weil das aber hier im Wiki natürlich nicht so befriedigend ist, +folgen ein paar Tipps von RalfFriedl am konkreten Beispiel von crond +bzw. dem Frotend dazu, nämlich dem crontab-Fenster im Freetz WebGUI. + +Da cron nicht ein extra Paket ist, sondern zum Freetz Basis-System +gehört, liegen die Dateien für cron unter dem Verzeichnis +"make/mod/root/files". Wenn es ein eigenes Paket wäre, z.B. inetd, wären +die Dateien unter "make/inetd/files/root". + +Im folgenden geht es darum, wie man die Web-Oberfläche von crontab +ändert und dann patcht. Am einfachsten findet man die Datei, wenn man +nach einem Text sucht, der sonst hoffentlich selten vorkommt, "crontab" +scheint hier ein guter Wert zu sein. + +.. code:: bash + + $ grep -r crontab make 2> /dev/null | fgrep -v /.svn/ + make/mod/files/root/etc/init.d/rc.crond: cat /tmp/flash/mod/crontab /etc/cron.d/* /tmp/cron.d/* 2> /dev/null | + make/mod/files/root/etc/init.d/rc.crond: crontab -u root - + make/mod/files/root/etc/init.d/rc.crond: [ -r /tmp/flash/crontab.save ] && mv /tmp/flash/crontab.save /tmp/flash/mod/crontab + make/mod/files/root/etc/init.d/rc.crond: modreg file mod crontab 'crontab' 0 "crontab" + make/mod/files/root/etc/init.d/rc.crond: modunreg file mod crontab + make/mod/files/root/etc/default.mod/crontab.def:CAPTION='Freetz: crontab' + make/mod/files/root/etc/default.mod/crontab.def:CONFIG_FILE='/tmp/flash/mod/crontab' + +Das suchen in "make" ist nur für den Fall, dass man nicht sicher ist, in +welchem Verzeichnis sich die Dateien befinden. Wenn man weiss, daß cron +zum Hauptsystem gehört, kann man direkt in "make/mod/files" suchen, dann +geht es schneller. Die Umleitung "2> /dev/null" unterdrückt +Fehlermeldungen wegen nicht gefundener Dateien/Links. + +Die Ergebnisse in Dateien mit "/.svn/" im Pfad sind hier nicht von +Bedeutung. + +Der Text "crontab" kommt also in den Dateien rc.crond und crontab.def +vor. Das sagt uns leider noch nicht, was man machen muss, um eine Hilfe +auf die Seite zu bringen. Also suchen wir einmal nach "Hosts", weil auf +der Hosts-Seite schon eine Hilfe da ist. + +.. code:: bash + + $ grep -r Hosts make 2> /dev/null | fgrep -v /.svn/ + ... + make/mod/files/root/etc/default.mod/hosts.def:CAPTION='Freetz: hosts' + root/etc/init.d/rc.mod: modreg file 'exhosts' 'Hosts' 1 "$deffile" + ... und noch viele andere Treffer + +Die Definitionsdatei, aus der der Text "hosts" kommt, ist also +make/mod/files/root/etc/default.mod/hosts.def. Schauen wir uns also mal +die Datei an: + +.. code:: bash + + $ cat make/mod/files/root/etc/default.mod/hosts.def + CAPTION='Freetz: hosts' + DESCRIPTION='Syntax: <ip> <mac> <interface> <host> [<aliases|#description>]<br> + ($(lang de:"z.B.: 10.0.0.1 * * www.local mfh1 # Mein Server" en:"e.g. 10.0.0.1 * * www.local mfh1 # my server")) *="$(lang de:"nicht definiert" en:"not defined")"' + ... der Rest ist hier nicht von Bedeutung + +Wir sehen also, dass die Beschreibung aus dem Eintrag DESCRIPTION kommt, +der in der Datei make/mod/files/root/etc/default.mod/crontab.def nicht +vorhanden ist. Man muss also in der Datei +make/mod/files/root/etc/default.mod/crontab.def einen Eintrag +DESCRIPTION anlegen. + +Wenn man will, dass mehrere Sprachen mit $(lang …) unterstützt werden, +dann muss man auch sicherstellen, dass die Datei in der passenden Liste +hinterlegt ist. Dies ist die datei ".language" im Verzeichnis +make/<Paket>/files. + +Die Datei sieht so aus: + +.. code:: bash + + $ cat .language + languages + { de en } + default + { en } + files + { + etc/default.mod/*.def + etc/init.d/rc.mod + usr/bin/modreg + ... + } + +Wir sehen hier, dass alle Dateien etc/default.mod/*.def schon inkludiert +werden und kein weiterer Eintrag notwendig ist. + +Die geänderte Datei ist in diesem Fall nur +make/mod/files/root/etc/default.mod/crontab.def und es geht weiter wie +unten beschrieben. + +Hintergrundinfos finden sich in diesem +`​IPPF-Thread <http://www.ip-phone-forum.de/showthread.php?p=1274104#post1274104>`__. + +.. _Links: + +Links +----- + +`​Wikipedia Artikel zu diff +(Englisch) <http://en.wikipedia.org/wiki/Diff>`__ `​Wikipedia Artikel zu +patch (Englisch) <http://en.wikipedia.org/wiki/Patch_(Unix)>`__ diff --git a/wiki/patches.rst b/wiki/patches.rst new file mode 100644 index 0000000..b529424 --- /dev/null +++ b/wiki/patches.rst @@ -0,0 +1,538 @@ +.. _FreetzPatches: + +Freetz Patches +============== + +- Die Größenabgaben (Platzeinsparung im komprimierten Dateisystem) sind + nur ungefähre Richtwerte und können von Version zu Version variieren. +- Es werden nur Patches angezeigt die für die ausgewählt FritzBox + nutzbar sind +- Die Auswirkungen eines Patches sind nicht unbedingt im + AVM-Webinterface sichtbar + += Web menu patches = + +Freetz **Funktionserweiterung-Patches** dienen dazu, das Verhalten der +FritzBox zu verbessern, indem einige Funktionen der Original-Firmware +verbessert oder erweitert werden. Neben diesem Überblick über die +**Patches** existiert noch `​ein Thread in +IPPF <http://www.ip-phone-forum.de/showthread.php?t=180289>`__, wo jeder +seine Lieblingskonfiguration posten kann. Diese +"Lieblingskonfigurationen" geben einen guten Richtwert dazu, welche +Patches in welcher Konfiguration sinnvoll und zu empfehlen sind. Denn +auch hier gilt auf keinen Fall die Regel "je mehr desto besser". + +**Name** + +**Beschreibung** + +**Größe** + +Patch VCC? + +Es kann der 2. VCC bearbeitet werden + +- + +Patch ATA? + +Es kann die ATA Konfiguration bearbeitet werden + +- + +`Patch enum <patches/enum.html>`__ + +Fügt dem WebIF Konfigurationsseiten für ENum hinzu + +- + +DSL settings? + +Es können mehr DSL Optionen bearbeitet werden + +- + +external SIP? + +Es können externe SIP verbindungen konfiguriert werden + +- + +`Patch 3rd alarm-clock <patches/alarmclock.html>`__ + +Fügt einen 3. Wecker zum AVM WebIF hinzu + +- + +`Patch webmenu signed message <patches/signed.html>`__ + +Entfernt den Hinweis auf "nicht unterstützte Modifikationen" aus dem AVM +WebIF + +- + += USB patches = + +Patches die die Funktionalität von USB Geräten beeinflussen + +**Name** + +**Beschreibung** + +**Größe** + +`Patch USB storage names <patches/usb_names.html>`__ + +Vergibt einheitliche Namen für USB-Speichermedien und verbessert +deutlich die Unterstützung der USB-Speichermedien + +- + +`Execute autorun <patches/exec_autorun.html>`__ + +Ermöglicht autorun.sh nach Mounten eines USB Speichermediums auszuführen + +- + +`FREETZMOUNT <patches/freetzmount.html>`__ + +Vergibt einheitliche Namen für USB-Speichermedien, verbessert deutlich +die Unterstützung der USB-Speichermedien, ermöglicht mounten nach LABEL. +FREETZMOUNT ist der Nachfolger vom USB-Storage-Patch und beinhaltet auch +autorun/autoend patch. Nach dem Umstieg zu FREETZMOUNT wird es empfohlen +das Paket fstyp manuell abzuwählen. + +- + +`Raise the count of connectable usb +devices <patches/maxdevcount.html>`__ + +Erhöht die Anzahl maximal anschließbarer USB-Devices auf 9 + +- + +`Multiple Printers <patches/multpile_printers.html>`__ + +Ermöglicht die Nutzung mehrere Drucker an der FritzBox + +- + +Modify UMTSD? + +Der umtsd wird nur für bekannte Modems gestartet und blockiert so +/dev/ttyUSB? nicht. + +- + +`Custom UDEV rules <patches/custom_udev_rules.html>`__ + +Es können eigene Regeln die UDEV auswertet hinterlegt werden. + +- + += Removal patches = + +Freetz **Remove-Patches** (auch Removes genannt) dienen dazu, Platz für +andere `Pakete <packages.html>`__ zu schaffen, indem nicht benötigte +Bestandteile der Original-Firmware entfernt werden. Neben diesem +Überblick über die **Remove-Patches** existiert noch `​ein Thread in +IPPF <http://www.ip-phone-forum.de/showthread.php?t=180289>`__, wo jeder +seine Lieblingskonfiguration posten kann. Diese +"Lieblingskonfigurationen" geben einen guten Richtwert dazu, welche +Removes in welcher Konfiguration sinnvoll und zu empfehlen sind. Denn +auch hier gilt auf keinen Fall die Regel "je mehr desto besser". Wenn +ein Freetz-Package eine Funktionalität ersetzt kann automatisch ein +Remove-Patch ausgewählt werden + +**Name** + +**Beschreibung** + +**Größe** + +Remove Annex X firmware file? + +Die entsprechende Annex Firmware wird entfernt. Es wird immer nur eine +benötigt, im ATA-Modus (z.B. Kabelanschlus) keine. + +je 335-745kB + +Remove v1/v2 piglet file(s)? + +Es wird nur eine Version abhängig von der Hardversion benötigt. + +? + +`Remove assistant <patches/remove_assistant.html>`__ + +Entfernt den Einrichtungs-Assistenten. Achtung! Dadurch ist die +automatische Einrichtung z.B. mit 1und1-Startcode nicht mehr möglich. + +ca. 50kB + +`Remove aura usb <patches/remove_aura_usb.html>`__ + +Entfernt die Unterstützung für den AVM-USB-Fernanschluss (hierfür hat +FREETZ das Paket `USB-IP <packages/usbip.html>`__ zu bieten) + +ca. 16kB + +Remove avalanche_usb.ko? + +??? + +ca. 60kB + +Remove AVM NAS Webinterface? + +Das AVM-NAS Webinterface wird entfernt und kann nicht mehr genutzt +werden. Entfernt auch den AVM-Media-Server (s. u.) + +ca. 390kB + +`Remove AVM vpn <patches/remove_vpn.html>`__ + +Entfernt AVM-VPN-Server (FREETZ bietet OpenVPN als Alternative) + +ca. 123kB + +Remove AVM web server? + +Der Webserver für das AVM-Webinterface wird entfernt und durch httpd +(immer in Freetz enthalten) ersetzt. (Zusammen mit UPnP kann auch die +libwebsrv.so library entfernt werden.) + +5(+38)kB + +Remove branding? + +Es können verschieden Brandings entfernt werden. Das auf der Box aktive +Branding darf nicht entfernt werden||? + +`Remove CapiOverTCP <patches/remove_capi.html>`__ + +Entfernt CapiOverTCP-Schnittstelle der FritzBox. Achtung! CapiOverTCP +wird von mehreren nützlichen PC-Programmen für den Zugriff auf die Box +benutzt! FritzFax nutzt z.B. diese Schnittstelle, um Faxe von PC aus +über die FritzBox zu verschicken + +ca. 10kB + +Remove chronyd? + +Der chronyd zur Zeitsynchronisation wird entfernt. Dessen Aufgabe +übernimmt dann multid. + +165-215kB + +Remove cdrom.iso? + +Die cdrom.iso wird entfernt. + +130-265kB + +Remove DECT files? + +Es können keine DECT Geräte mehr verbunden werden. + +20-360kB + +`Remove dsld <patches/remove_dsld.html>`__ + +Entfernt den DSL-daemon - die Box kann dann nur noch als IP-Client +verwendet werden. Achtung! Ohne dsld kann die Box keine DSL-Verbindung +aufbauen und auch "Internet über LAN" geht nicht mehr, weil der dsld +auch Firewall und NAT übernimmt. + +115-245kB + +Remove showdsldstat? + +Entfernt showdsldstat, ein Werkzeug mit dem der Status der +Internetverbindung (CPMAC-Modus, Verbindungszeit, DNS-Server und +Router), IPv6, VoIP und TR069 angezeigt werden kann. + +10-30kB + +Remove dtrace? + +Entfernt trace Debugging-Utility für den D-Kanal von ISDN + +85-225kB + +`Remove ftpd <patches/remove_ftpd.html>`__ + +Entfernt den AVM-FTP-Server (kann durch die Freetz-Pakete vsftpd oder +bftpd ersetzt werden) + +ca. 30kB + +`Remove help <patches/remove_help.html>`__ + +Entfernt die Online-Hilfe zum AVM-WebIF + +ca. 20kB + +Remove jffs2.ko? + +Entfernt das Kernelmodul für +`​JFFS2 <http://en.wikipedia.org/wiki/JFFS2>`__. Benötigt zur Nutzung +des optionalen, internen Speichers */data*, wo z.B. +Anrufbeantworterdaten und AVM-Plugins (7270_v1) gespeichert werden, +sofern die Firmware genügend Platz im Flash-Speicher frei gelassen hat +und kein USB-Speicher angeschlossen ist. + +144-192kB + +Remove lsof? + +Entfernt lsof. + +ca. 150kB + +`Remove mediasrv <patches/remove_mediasrv.html>`__ + +Entfernt den AVM-Media-Server + +ca. 40kB + +`Remove minid <patches/remove_minid.html>`__ + +Entfernt die Unterstützung für FritzMini + +ca. 215kB + +`Remove MyFritz <patches/remove_myfritz.html>`__ + +Entfernt das MyFritz Web Interface (AVM's DynDNS) + +ca. 1.1MB + +Remove NTFS support? + +AVM's NTFS Unterstützung wird entfernt. + +118-180kB + +Remove printserv? + +Die Fritzbox kann kein Druckserver mehr sein. + +15-20 kB + +Remove run_clock? + +Der Betriebsstundenzähler wird entfernt. + +10-15kB + +`Remove Samba <patches/remove_samba.html>`__ + +Entfernt den AVM-Samba-Server + +300-600kB + +Remove strace? + +Entfernt strace. + +ca. 440kB + +`Remove the support-files <patches/remove_support.html>`__ + +Entfernt die support-files, welche man über die URL +`​http://fritz.box/html/support.html <http://fritz.box/html/support.html>`__ +generieren und abspeichern kann. + +ca. 8kB + +`Remove tr069 stuff <patches/remove_tr069.html>`__ + +Entfernt tr069 (Remote-Konfiguration durch den Provider). Ohne tr069 ist +keine Einrichtung mit 1und1-Startcode möglich. + +ca. 70kB + +Remove UMTS support? + +Danach kann die FritzBox keine UMTS Verbindung mehr aufbauen. + +ca. 12kB + +`Remove UPnP daemon <patches/remove_upnp.html>`__ + +Entfernt den UPnP-daemon. Achtung! Ohne UPnP-daemon ist keine +Einrichtung von FritzFax möglich. + +ca. 10kB + +`Remove usermand <patches/remove_usermand.html>`__ + +| Entfernt die ausschließlich für die Kindersicherung benötigten Dateien + (usermand, userman.ko). +| Für die FBox **WLAN 3170** bitte diesen Patch nicht auswählen\ **, + ansonsten gibt es Dauerreboot.** + +ca. 40kB + +Remove AVM e2fsprogs binaries? + +Entfernt blkid, fsck, mkfs. + +ca. 220kB + +Remove VoIP files? + +Entfernt Daten für VoIP-Betrieb. + +ca. 250kB + +Remove VoIP & ISDN files? + +Entfernt vollständig neben dem VoIP-daemon noch die +Telefoniefunktionalität der Box. Achtung! Damit funktioniert die Box +dann **nicht** mehr als Telefonanlage. + +? + +Remove webdav? + +Entfernt die Dateien die für Webdav benötigt werden. + +10-510kB + +Remove WLAN files? + +Entfernt Daten für WLAN-Betrieb. + +ca. 700kB + += Replacement patches = + +**Name** + +**Beschreibung** + +**Größe** + +Replace AVM SSL Libs? + +Die SSL Libs von AVM werden ersetzt. + +ca. 400kB + +Replace dtrace? + +Statt dtrace wird ein eigenes `Script <packages/mod.html#dtrace>`__ (per +Telefoncode) ausgeführt. + +85-225kB + +`Replace onlinechanged <patches/replace_onlinechanged.html>`__ + +Onlinechanged wird durch eigenen IP-Watchdog angestoßen (geht auch auf +IP-Clients). + +- + += Additional patches = + +**Name** + +**Beschreibung** + +**Größe** + +Add Annex firmware file? + +Fügt eine Annex firmware ins Image ein. + +? + +Enforce urloader settings? + +Ändert das Environment des Urloaders. + +- + += Misc patches = + +**Name** + +**Beschreibung** + +**Größe** + +Change LED semantics to W920V? + +Passt die LEDs der Beschriftung vom Speedport an. + +- + +Disable serial console? + +Deaktiviert die Konsole am internen seriellen Port. + +- + += AVM daemons = + +**Name** + +**Beschreibung** + +**Größe** + +Disable igd/upnp? + +Es werden immer die Parameter gesetzt um dsld's IGD & multid's +UPNP-device zu deaktivieren. `Remove UPnP +daemon <patches/remove_upnp.html>`__ nutzt diese Option. + +- + +Disable ntp client? + +Die Sytemzeit wird nicht von multid gesetzt. Ausgewählt wenn chrony +vorhanden ist oder ein eigener Zeitserver wie zB OpenNTPd. + +- + +Disable IGMP? + +Der IGMP-Proxy von multid wird deaktiviert. + +- + +Disable tr069? + +Das tr069discover von multid wird abgeschaltet. Wird vom Patch `Remove +tr069 stuff <patches/remove_tr069.html>`__ automatisch ausgewählt. + +- + +Disable DNS? + +Der DNS-Port wird (mit Hilfe von libmultid) nicht von multid belegt. So +kann ein anderer DNS-Server genutzt werden, das Dynamic-DNS Update sowie +die Zeitsysnchronisation funktionieren weiterhin. + +- + += Invisible? patches = + +**Name** + +**Beschreibung** + +**Größe** + +`Onlinechanged <patches/onlinechanged.html>`__ + +Ermöglicht das Ausführen von Skripten bei einer Änderung des +Online-Statuses der Box + +- + +- Tags +- `patches <patches.html>`__ diff --git a/wiki/patches/alarmclock.rst b/wiki/patches/alarmclock.rst new file mode 100644 index 0000000..d47679e --- /dev/null +++ b/wiki/patches/alarmclock.rst @@ -0,0 +1,10 @@ +.. _Patchthirdalarm-clock: + +Patch third alarm-clock +======================= + +Durch diesen Patch wird dem AVM-Webinterface ein dritter Wecker +hinzugefügt. Dieser ist ohne den Patch nur per Telefon konfigurierbar. + +- Tags +- `patches <../patches.html>`__ diff --git a/wiki/patches/custom_udev_rules.rst b/wiki/patches/custom_udev_rules.rst new file mode 100644 index 0000000..e70b4d9 --- /dev/null +++ b/wiki/patches/custom_udev_rules.rst @@ -0,0 +1,14 @@ +Mit diesem Patch werden 2 zusätzliche frei verwendbare rules erstellt +und nach /tmp/flash/mod/ verlinkt. Diese können mit dem Webinterface in +einem Unterpunkt von "Freetz" bearbeitet werden. + +- first (00-custom.rules): wird vor allen Regeln von AVM ausgeführt +- final (99-custom.rules): wird nach allen Regeln von AVM ausgeführt + +Damit können USB Geräte fest zugeordnet werden: + +.. code:: bash + + SUBSYSTEMS=="usb", KERNEL=="ttyUSB*", ATTRS{serial}=="7CF6976", SYMLINK+="reader1" + SUBSYSTEMS=="usb", KERNEL=="ttyUSB*", ATTRS{serial}=="FDF4F0D", SYMLINK+="reader2" + SUBSYSTEMS=="usb", KERNEL=="ttyUSB*", ATTRS{serial}=="40ABBFF", SYMLINK+="lcd1" diff --git a/wiki/patches/enum.en.rst b/wiki/patches/enum.en.rst new file mode 100644 index 0000000..b88edae --- /dev/null +++ b/wiki/patches/enum.en.rst @@ -0,0 +1,10 @@ +`​ENUM <http://www.voip-info.org/wiki/view/ENUM>`__ can be used to +translate telephone numbers into IP addresses, much alike +`​DNS <http://en.wikipedia.org/wiki/Domain_Name_System>`__ is used to +translate domain names into IP adresses. This makes point-to-point +telephony possible (for example from Fritz!Box to Fritz!Box), bypassing +(internet) telephony companies. For this you need a working SIP server. +You can read `​here <http://www.wershoven.com/fritzbox/>`__ about how to +setup a SIP server and +`​here <http://www.wehavemorefun.de/fritzbox/index.php/Versteckte_Features#ENUM-Lookup>`__ +about changing the ENUM servers (both in German). diff --git a/wiki/patches/enum.rst b/wiki/patches/enum.rst new file mode 100644 index 0000000..cd47b52 --- /dev/null +++ b/wiki/patches/enum.rst @@ -0,0 +1,11 @@ +`Englische Beschreibung <enum.en.html>`__ + +Dieser Patch macht in AVM-WebIf eine Konfigurationsmöglichkeit sichtbar, +mit der man die Fritzbox vor jedem ausgehenden Gespräch einen +`​ENUM <http://de.wikipedia.org/wiki/Telephone_Number_Mapping>`__-Lookup +machen lassen kann. Dies funktioniert jedoch nur mit Firmwares bis +Version xx.04.59, da AVM in den nachfolgenden Firmwares die Funktion +entfernt und bisher nicht wieder eingebaut hat. + +- Tags +- `patches <../patches.html>`__ diff --git a/wiki/patches/exec_autorun.rst b/wiki/patches/exec_autorun.rst new file mode 100644 index 0000000..cbe57b4 --- /dev/null +++ b/wiki/patches/exec_autorun.rst @@ -0,0 +1,51 @@ +.. _Executeautorun.shautoend.shscriptonunmount: + +Execute autorun.sh/autoend.sh script on (un)mount +================================================= + +Diese Funktion kann recht praktisch sein - birgt jedoch auch ihre +Tücken: Hat man "Automount" aktiviert, werden z.B. neu angesteckte +USB-Sticks automatisch eingebunden (Fachjargon: "gemountet"), und stehen +somit sofort zur Verfügung. Erlaubt man jetzt auch noch "Autorun", wird +eine im Wurzelverzeichnis des Sticks (also /var/media/ftp/uStorXY/) +befindliche ``autorun.sh`` anschließend auch ohne Rückfrage ausgeführt +(sowie ``autoend.sh`` beim Auswerfen des Sticks über das AVM WebIF). + + |Warning| Falls ein Dateisystem mit Berechtigungen genutzt wird, müssen + die Dateien ausführbar gemacht werden. + +Diese Vor- und Nachteile sollten vor der Entscheidung abgewogen werden: + +.. _Vorteile: + +Vorteile +-------- + +- zusätzliche Module können durch einfaches Einstecken des Sticks + geladen werden +- Aktionen können ausgelöst werden - z.B. bei Einstecken eines Sticks + mit MP3 Dateien den MediaServer informieren, o.ä. + +.. _Nachteile: + +Nachteile +--------- + +- |Warning| ein "böser Bube" könnte auf diese Weise in die Box eindringen, + ohne das Passwort zu kennen - sofern er "physischen Zugang" hat (also + ein USB-Gerät an die Box anschließen, bzw. ein für diesen Zweck + ständig verwendetes Medium modifizieren kann) + +.. _Hinweis: + +Hinweis +======= + +Dieser Patch ist in `Freetzmount <freetzmount.html>`__ eingeflossen. +Hier können die Einstellungen dazu im Webinterface vorgenommen werden. + +- Tags +- `patches <../patches.html>`__ + +.. |Warning| image:: ../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/patches/freetzmount.en.rst b/wiki/patches/freetzmount.en.rst new file mode 100644 index 0000000..a40ca8e --- /dev/null +++ b/wiki/patches/freetzmount.en.rst @@ -0,0 +1,42 @@ +.. _FREETZMOUNT: + +FREETZMOUNT +=========== + +#. Replaces and deselects usb-storage patch. The names of USB storage + directories can be defined by WebIF (default: uStorXY) or by volume + LABEL. +#. Replaces and deselects autorun.sh/ autoend.sh patch. + + - - autorun/ autoend behaviour can be activated/ deactivated via + WebIF. + - - autorun/ autoend are useful to start/ terminate applications + located on USB devices, e.g. apache, samba or even swapfiles, + after connecting or before disconnecting of USB devices. + +#. Auto-mounted USB storage devices will be fully accessible, e.g. it is + now possible to put user home directories (e.g. for FTP) on a + FAT32-formatted partition and permit shell and FTP users to actually + write to their own home directories. +#. Avoid deleting whole filesystems on USB devices. +#. Enhanced behaviour during mounting and unmounting. + +**Notes:** + +#. fstyp is not needed and can be deselected in Package-Selection → + Testing. +#. You should not externalize ef2progs or blkid onto the same USB + device(s) which you later want to use freetzmount for. + +Further information (in German) is available in the following threads of +the IP-Phone forum: + +- `​FREETZMOUNT: Mounten ohne 1000 und ein Mal zu + patchen <http://www.ip-phone-forum.de/showthread.php?t=200293>`__ +- `​/etc/hotplug/run_mount + modifizieren <http://www.ip-phone-forum.de/showthread.php?t=200293>`__ +- `​Skript für immer gleiche Mountpoints (auch nach Verlust des + Mounts) <http://www.ip-phone-forum.de/showthread.php?t=181859>`__ + +- Tags +- `patches <../patches.html>`__ diff --git a/wiki/patches/freetzmount.rst b/wiki/patches/freetzmount.rst new file mode 100644 index 0000000..724b0d7 --- /dev/null +++ b/wiki/patches/freetzmount.rst @@ -0,0 +1,45 @@ +.. _FREETZMOUNT: + +FREETZMOUNT +=========== + +| **FREETZMOUNT** ist der Nachfolger-Patch vom ehemaligen + USB-Storage-Patch. Neben den Funktionen vom USB-Storage-Patch + beinhaltet er auch die autorun/autoend-Funktionalität (konfigurierbar + via Webinterface). +| FREETZMOUNT greift tiefer als die beiden Vorgänger-Patches in die + AVM-Mount-Struktur ein und lagert Teile der Mountskripte von + /etc/hotplug/storage und /etc/hotplug/run_mount in die FREETZ-eigene + Bibliothek /usr/lib/libmodmount.sh aus. Dadurch wird der + Wartungsaufwand für diese Patches reduziert, das Mount-Verhalten wird + für alle Box-/Firmware-Versionen vereinheitlicht. +| FREETZMOUNT ermöglicht das Mounten der Medien nach einem sogenannten + LABEL, einer einheitlicher Bezeichnung für die Medien. Dadurch wird + gewährleistet, dass das Medium (Partition) immer unter dem selben + Mount-Punkt zu finden sein wird (Bekämpfen vom uStor11-Problem). + +**Anmerkungen:** + +#. Bei der Auswahl des "mount-by-label"-Features wird fstyp nicht mehr + benötigt und kann abgewählt werden: Package-Selection → Testing → + fstyp. +#. Obwohl es eigentlich offensichtlich sein sollte, hier noch einmal zur + Verdeutlichung: + +| Ein Programm, welches für's Mounten in irgendeiner Art und Weise + zuständig ist, darf nicht auf einem zu mountenden Medium + externalisiert sein. +| Dazu gehören zum Beispiel e2fsck,ntfs-3g und blkid. + +Weiterführende Infos gibt es z.B. in folgenden Threads des +IP-Phone-Forums: + +- `​FREETZMOUNT: Mounten ohne 1000 und ein Mal zu + patchen <http://www.ip-phone-forum.de/showthread.php?t=200293>`__ +- `​/etc/hotplug/run_mount + modifizieren <http://www.ip-phone-forum.de/showthread.php?t=200293>`__ +- `​Skript für immer gleiche Mountpoints (auch nach Verlust des + Mounts) <http://www.ip-phone-forum.de/showthread.php?t=181859>`__ + +- Tags +- `hotplug </tags/hotplug>`__ diff --git a/wiki/patches/maxdevcount.rst b/wiki/patches/maxdevcount.rst new file mode 100644 index 0000000..778c5be --- /dev/null +++ b/wiki/patches/maxdevcount.rst @@ -0,0 +1,8 @@ +.. _MaxDevCount: + +MaxDevCount +=========== + +Standardmäßig begrenzt die FritzBox die Anzahl maximal anschließbarer +USB-Geräte auf 3. Dieser Patch erhöht dieses Limit, sodass sich bis zu 9 +Geräte anschließen lassen. diff --git a/wiki/patches/multpile_printers.rst b/wiki/patches/multpile_printers.rst new file mode 100644 index 0000000..a1a7dd4 --- /dev/null +++ b/wiki/patches/multpile_printers.rst @@ -0,0 +1,54 @@ +.. _FritzBoxalsPrintserverfürmehrereDrucker: + +FritzBox als Printserver für mehrere Drucker +============================================ + +Dieser Patch baut auf der Idee aus `​diesem +Beitrag <http://www.ip-phone-forum.de/showthread.php?t=161756&p=1075666>`__ +auf, angeschlossene Drucker und den jeweiligen Printserver-Port mittels +des physikalischen USB-Ports aneinander zu koppeln. Damit ist eine feste +Zuordnung gewährleistet. + +| Da der AVM-Printserver jeweils zwei Ports belegt (n+1), wird immer ein + Port übersprungen: + +.. code:: bash + + phys. USB-Port 0 => Port 9100 + phys. USB-Port 1 => Port 9102 + phys. USB-Port 2 => Port 9104 + ... + +Alle Drucker sollten an dem gleichen USB-Hub angeschlossen werden. +Prinzipiell sind mit Einschränkungen aber auch unterschiedliche Hubs +möglich. + +In der Übersicht "USB-Geräte" werden alle angeschlossenen Drucker mit +den vergebenen Printserver-Ports aufgelistet. + +Der Drucker am phys. USB-Port 0 (Port 9100) wird zudem - sofern +angeschlossen - immer als Standard-Drucker (Device-Node /dev/usblp0) +registriert. Das macht spätestens dann Sinn, wenn die Fritz Box mal +eigene Druckfunktionen (wie z.B. einen direkten Faxausdruck) mitbringen +sollte. + +.. _Einschränkungen: + +Einschränkungen +--------------- + +Der dargestellte Druckerstatus wechselt beliebig zwischen den +angeschlossenen Druckern. + +—by IPPF User thimo + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​http://www.ip-phone-forum.de/showthread.php?t=161756 <http://www.ip-phone-forum.de/showthread.php?t=161756>`__ +- `​http://www.ip-phone-forum.de/showthread.php?t=195811 <http://www.ip-phone-forum.de/showthread.php?t=195811>`__ + +- Tags +- `patches <../patches.html>`__ diff --git a/wiki/patches/onlinechanged.rst b/wiki/patches/onlinechanged.rst new file mode 100644 index 0000000..082ac31 --- /dev/null +++ b/wiki/patches/onlinechanged.rst @@ -0,0 +1,51 @@ +.. _Onlinechanged: + +Onlinechanged +============= + +Dieses Feature ist ab `r2850 </changeset/2850>`__ (trunk) in Freetz und +wurde implementiert weil AVM in der Firmware 54.04.67 das Verhalten von +/bin/onlinechanged geändert hat. Bisher handelte sich bei +/bin/onlinechanged um ein Symlink auf das Skript /var/tmp/onlinechanged. +Die Entstehung kann in Ticket #271 (`#271 </ticket/271>`__) nachverfolgt +werden. + +Um das Verhalten zu vereinheitlichen gilt ab `r2850 </changeset/2850>`__ +für /bin/onlinechanged: Beim Wechsel des Online Status wird das Skript +vom multid mit online bzw. offline als Parameter aufgerufen und ruft +dann selbst folgende Skripte auf: + ++----+-----------------------------+------------------------------------+ +| 1. | /var/tmp/onlinechanged | Kompatibilität zum alten Verhalten | ++----+-----------------------------+------------------------------------+ +| 2. | /etc/onlinechanged/\* | neues AVM Verhalten | ++----+-----------------------------+------------------------------------+ +| 3. | /tmp/flash/onlinechanged/\* | Skripte im Freetz Flash | ++----+-----------------------------+------------------------------------+ + +Ein Skript in /etc/onlinechanged könnte zum Beispiel folgendermaßen +aussehen: + +:: + + #!/bin/sh + + case "$1" in + online ) + /etc/init.d/rc.package online + ;; + + offline ) + /etc/init.d/rc.package offline + ;; + esac + +An application: update external IP-address for dnsd: + +.. code:: bash + + EXTIP="`/usr/bin/get_ip -d`" + sed "s/#EXTIP#/$EXTIP/g"</tmp/flash/dnsd/dnsd_template.conf >/tmp/flash/dnsd/dnsd.conf + modsave + /etc/init.d/rc.dnsd restart + logger -t dnsd "IP set to $EXTIP" diff --git a/wiki/patches/remove_assistant.rst b/wiki/patches/remove_assistant.rst new file mode 100644 index 0000000..62fb494 --- /dev/null +++ b/wiki/patches/remove_assistant.rst @@ -0,0 +1,14 @@ +.. _Removeassistant: + +Remove assistant +================ + +Der Einrichtungs-Assistent wird, wenn überhaupt, ohnehin nur bei der +erstmaligen Einrichtung der (neuen/jungfäulichen) Box benötigt. Um +einzelne Einstellungen zu verändern, steuert man diese später direkt an +- und ruft den Assistenten damit "nie wieder" auf. Ein guter Kandidat +also, um ohne Funktionsverlust ein paar Kilobyte im Image +"freizuschaufeln". + +- Tags +- `patches <../patches.html>`__ diff --git a/wiki/patches/remove_aura_usb.rst b/wiki/patches/remove_aura_usb.rst new file mode 100644 index 0000000..4756eff --- /dev/null +++ b/wiki/patches/remove_aura_usb.rst @@ -0,0 +1,38 @@ +.. _RemoveauraUSB: + +Remove aura USB +=============== + +| Entfernt die Unterstützung für den USB-Fernanschluss (wiederum nur die + Dateien - nicht die Konfigurationspunkte im AVM WebIF). +| Als Ersatz für den AVM USB-Fernanschluss bietet sich das Freetz-Paket + `USB-IP <../packages/usbip.html>`__ an. + +.. _WasisteinUSB-Fernanschluss: + +Was ist ein USB-Fernanschluss? +------------------------------ + +Mittels des USB-Fernanschlusses lässt sich ein an der Box +angeschlossenes USB Gerät von jedem an die Box angeschlossenen +(Windows-) Computer so nutzen, als wäre es direkt an letzterem +angeschlossen - vorausgesetzt es sind die passenden Treiber auf dem +Computer installiert. So kann man z.B. einen USB-Drucker an die Box +anschließen, und diesen bei allen angeschlossenen Computern wie einen +lokalen Drucker benutzen. Gleiches gilt für USB Speichermedien, +USB-Scanner, usw. + +|(!)| Laut diversen Foren-Einträgen gibt es den passenden Treiber nur +für Windows - sodass Anwender mit einem Mac oder Linux im Dunkeln stehen +bleiben. Hat man also keinen Windows-PC, kann man auf "aura USB" +offensichtlich gut verzichten. + +Weitere Informationen zum USB-Fernanschluss der Fritzbox finden sich auf +den Seiten von +`​AVM <http://www.avm.de/de/News/artikel/portal-artikel/tipp_der_woche/81_usb_fernanschluss.html>`__. + +- Tags +- `patches <../patches.html>`__ + +.. |(!)| image:: ../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/patches/remove_capi.rst b/wiki/patches/remove_capi.rst new file mode 100644 index 0000000..2bd1dd5 --- /dev/null +++ b/wiki/patches/remove_capi.rst @@ -0,0 +1,56 @@ +.. _RemoveCapiOverTCP: + +Remove CapiOverTCP +================== + +Dieser Patch entfernt das Binary "capiotcpserver" (Größe 13 KB) aus der +Firmware. Dieses Binary lauscht normalerweise auf Port 5031. + +.. _CapiOverIPunterWindows: + +CapiOverIP unter Windows +------------------------ + +Unter Windows wird CapiOverIP u.a. benutzt von: + +- FritzFax +- OutLook Wählhilfe (zum Zugriff auf die die FritzBox) +- `​DisplayCall <http://www.lachenmann-net.de/displaycall/>`__] +- `​Phoner <http://www.phoner.de/>`__] + +.. _CapiOverIPunterLinux: + +CapiOverIP unter Linux +---------------------- + +Auch unter Linux lässt sich das CapiOverTCP nutzen, wie es `​dieses +Howto <http://wiki.ip-phone-forum.de/gateways:avm:howtos:mods:remotecapi>`__ +beschreibt, und zwar z.B. zum + +- Faxe versenden und empfangen mithilfe eines Soft-DSP +- Telefonieren mit Headset +- Verbinden mit Asterisk + +.. _CapiOverIPaufdemMac: + +CapiOverIP auf dem Mac +---------------------- + +Wenn hier jemand was weiß, bitte eintragen! + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​CapiOverTCP im + Fritzbox-Wiki <http://www.wehavemorefun.de/fritzbox/Nutzung_des_Capi-over-TCP_Server_der_Fritzbox>`__ +- `​AVM FAQ zu + Fritz!Fax <http://www.avm.de/de/Service/FAQs/FAQ_Sammlung/11843.php3>`__ +- `​a-sa Wiki: Faxen über die + Fritz!Box <http://a-sawicki.de/cms/index.php?option=com_content&task=view&id=38&Itemid=29>`__ +- `​Howto: CapiOverIp unter + Linux <http://wiki.ip-phone-forum.de/gateways:avm:howtos:mods:remotecapi>`__ + +- Tags +- `patches <../patches.html>`__ diff --git a/wiki/patches/remove_dsld.rst b/wiki/patches/remove_dsld.rst new file mode 100644 index 0000000..5244de4 --- /dev/null +++ b/wiki/patches/remove_dsld.rst @@ -0,0 +1,29 @@ +.. _Removedsld: + +Remove dsld +=========== + +Der DSLd ist "ein AVM-Deamon der sich um das DSL-Interface kümmert. Auf +der FBF 7050 macht er auch das NAT für alle Pakete die duch sein +Interface gehen." (Fritzbox-Wiki). Wer seine Box also nicht für die +DSL-Einwahl nutzt (sondern z.B. hinter einer anderen Fritzbox, die sich +um DSL etc. kümmert), kann durch Entfernen des DSLd ein wenig Platz im +Image schaffen. |<!>| Alle anderen sollten besser die Finger davon +lassen |;)| + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​Fritzbox-Wiki: + DSLd <http://www.wehavemorefun.de/fritzbox/index.php/Dsld>`__ +- `​Blog: Fritz!Box + re-connect <http://blog.gauner.org/2008/03/19/fritzbox-reconnect/>`__ + +- Tags +- `patches <../patches.html>`__ + +.. |<!>| image:: ../../chrome/wikiextras-icons-16/exclamation-red.png +.. |;)| image:: ../../chrome/wikiextras-icons-16/smiley-wink.png + diff --git a/wiki/patches/remove_ftpd.rst b/wiki/patches/remove_ftpd.rst new file mode 100644 index 0000000..fc2b6a4 --- /dev/null +++ b/wiki/patches/remove_ftpd.rst @@ -0,0 +1,21 @@ +.. _RemoveFTPdeamonftpd: + +Remove FTP deamon (ftpd) +======================== + +Mit diesem Patch wird AVMs FTP Daemon entfernt. Auch wenn die regulären +Optionen für diesen im AVM WebIF nach wie vor verfügbar bleiben, ist +nach dem Entfernen des FTP Daemons kein Zugriff auf angeschlossene +Laufwerke per FTP mehr möglich! Dieser kann jedoch auch per +`bftpd <../packages/bftpd.html>`__ bzw. +`vsftpd <../packages/vsftpd.html>`__ konfiguriert werden - vorausgesetzt +natürlich, diese Pakete wurden auch installiert. + +|Warning| Der Patch ist nur auswählbar, wenn vorher die Option *Show +Advanced Options* ausgewählt wurde. + +- Tags +- `patches <../patches.html>`__ + +.. |Warning| image:: ../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/patches/remove_help.rst b/wiki/patches/remove_help.rst new file mode 100644 index 0000000..66fee7c --- /dev/null +++ b/wiki/patches/remove_help.rst @@ -0,0 +1,16 @@ +.. _Removehelp: + +Remove help +=========== + +Wer auf die Online-Hilfe von AVM nicht (mehr) angewiesen ist, kann diese +mit diesem Punkt aus dem Image entfernen lassen - und gewinnt damit ein +paar Kilobyte zusätzlichen Platz für andere Dinge. U.U. gibt es dann an +der einen oder anderen Stelle einen "hässlichen toten Link" - aber damit +lässt sich sicher leben |;)| + +- Tags +- `patches <../patches.html>`__ + +.. |;)| image:: ../../chrome/wikiextras-icons-16/smiley-wink.png + diff --git a/wiki/patches/remove_mediasrv.rst b/wiki/patches/remove_mediasrv.rst new file mode 100644 index 0000000..7cf5eff --- /dev/null +++ b/wiki/patches/remove_mediasrv.rst @@ -0,0 +1,34 @@ +.. _RemoveMediaServerdaemonmediasrv: + +Remove MediaServer daemon (mediasrv) +==================================== + +Hiermit, oh Wunder, entfernt man den von AVM bereitgestellten +MediaServer - so man ihn denn nicht benötigt. Für das lokale Netzwerk +ist das ohnehin bei den meisten Boxen eine fragwürdige Angelegenheit - +verfügen diese doch nur über USB 1.1 zur Anbindung von Speichermedien, +was den Zugriff entsprechend langsam gestaltet. Liegen die Medien in +besserer Qualität vor, ist "Ruckeln" sicher bereits vorprogrammiert. +Nicht umsonst hat AVM seinen Stand-Alone MediaServer (siehe Link) mit +USB 2.0 ausgestattet. + +[STRIKEOUT:Wie auch bereits bei vielen anderen Patches, werden auch hier +lediglich die Dateien entfernt - das WebIF bleibt unangetastet.] Seit +`r3353 </changeset/3353>`__ (trunk) wird auch das Webinterface entfernt. + +.. _WeiterführendeLinks: + +Weiterführende Links +^^^^^^^^^^^^^^^^^^^^ + +- `​AVM zu seinem + MediaServer <http://www.avm.de/de/News/artikel/portal-artikel/tipp_der_woche/79_musikbox.html>`__ +- `​AVM: + Fritz!Media <http://www.avm.de/de/Produkte/FRITZ_Media/FRITZ_Media/index.php>`__ +- `​Toms Hardware: Fritz!Box mit + MediaServer <http://www.tomshardware.com/de/Fritz-3270-WLAN-Repeater-N-G-AVM-Mediaserver,news-240627.html>`__ +- `​Wikipedia (EN): + MediaServers <http://en.wikipedia.org/wiki/UPnP_AV_MediaServers>`__ + +- Tags +- `patches <../patches.html>`__ diff --git a/wiki/patches/remove_minid.rst b/wiki/patches/remove_minid.rst new file mode 100644 index 0000000..6ec4bf5 --- /dev/null +++ b/wiki/patches/remove_minid.rst @@ -0,0 +1,32 @@ +.. _Removeminid: + +Remove minid +============ + +Dieser Patch entfernt lediglich die Unterstützung für FritzMini - die +zugehörigen Einstellungen im AVM WebIF bleiben wiederum erhalten. + +.. _WasistFritzMini: + +Was ist FritzMini? +------------------ + +**FritzMini** ist ein WLAN Multimedia-Gerät der AVM GmbH, das sowohl als +VoIP Client als auch als Client für Web-Radio, Podcasts, Streaming vom +MediaServer, u.a.m. Verwendung findet. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​Fritz!Mini im Fritzbox + Wiki <http://www.wehavemorefun.de/fritzbox/index.php/FRITZ!_Mini>`__ +- `​Fritz!Mini Artikel bei + PCWelt <http://www.pcwelt.de/start/dsl_voip/dsl/news/141186/internet_handy_fuer_zuhause/>`__ +- `​Fritz!Mini Produktseite bei + AVM <http://www.avm.de/de/Produkte/FRITZ_Mini/FRITZ_Mini/index.php>`__ +- `​http://www.fritzmini.de/ <http://www.fritzmini.de/>`__ + +- Tags +- `patches <../patches.html>`__ diff --git a/wiki/patches/remove_myfritz.rst b/wiki/patches/remove_myfritz.rst new file mode 100644 index 0000000..896f7f5 --- /dev/null +++ b/wiki/patches/remove_myfritz.rst @@ -0,0 +1,33 @@ +.. _RemoveMyFritz: + +Remove MyFritz +============== + +Dieser Patch entfernt das MyFritz Web Interface. + +.. _WasistMyFritz: + +Was ist MyFritz? +---------------- + +**MyFritz** ist AVMs DynDNS-Alternative für die FritzBox. AVM bietet für +Softwareversionen ab FRITZ!OS 05.20 einen eigenen DDNS-Dienst namens +MyFRITZ! an, der kostenfrei direkt aus dem Webinterface der FritzBox aus +eingerichtet werden kann. Direct aus dem WebIF kann man sich dafür einen +Account anlegen, und den Dienst einrichten. + +Wer diesen Dienst ohnehin nicht verwenden will, kann mit diesem +Remove-Patch ein gutes Megabyte Platz schaffen. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​MyFRITZ! – DynDNS-Alternative für die + Fritz!Box <http://www.meintechblog.de/2012/02/myfritz-dyndns-alternative-fuer-die-fritzbox/>`__ +- `​MyFRITZ!-Konto registrieren und in FRITZ!Box + einrichten <http://avm.de/nc/service/fritzbox/fritzbox-7390/wissensdatenbank/publication/show/966_MyFRITZ-Konto-registrieren-und-in-FRITZ-Box-einrichten/>`__ + (für die 7390) +- `​Myfritz.net <http://www.wehavemorefun.de/fritzbox/Myfritz.net>`__ + im AVM Wiki bei *WeHaveMoreFun.de* diff --git a/wiki/patches/remove_samba.rst b/wiki/patches/remove_samba.rst new file mode 100644 index 0000000..872c9d4 --- /dev/null +++ b/wiki/patches/remove_samba.rst @@ -0,0 +1,17 @@ +.. _RemoveSambadaemonsmbd: + +Remove Samba daemon (smbd) +========================== + +Dieser Patch entfernt lediglich den Samba Daemon - die regulären +Optionen in AVMs WebIF bleiben unangetastet. + +|Warning| **ACHTUNG:** Das Freetz Samba Paket ist kein vollständiger Ersatz +für dieses, sondern baut darauf auf - wer das Freetz Samba Paket nutzen +möchte, sollte den Samba Daemon hier **nicht** entfernen! + +- Tags +- `patches <../patches.html>`__ + +.. |Warning| image:: ../../chrome/wikiextras-icons-16/exclamation.png + diff --git a/wiki/patches/remove_support.rst b/wiki/patches/remove_support.rst new file mode 100644 index 0000000..5b58ee8 --- /dev/null +++ b/wiki/patches/remove_support.rst @@ -0,0 +1,29 @@ +.. _Removethesupport-files: + +Remove the support-files +======================== + +Entfernt die support-files, welche man über die URL +`​http://fritz.box/html/support.html <http://fritz.box/html/support.html>`__ +generieren und abspeichern kann. + +.. _Waswirdentfernt: + +Was wird entfernt? +------------------ + +| Mit dem Patch wird neben dem Code zur Generierung der support-files + auch die entsprechende Webseite im AVM WebGUI entfernt. +| Wenn man o.g. Link nach Entfernung der support-files aufruft, kommt + eine Meldung, dass die URL nicht gefunden werde: + + | **FRITZ!Box:** + | Die angegebene URL wurde nicht gefunden. + | Sie werden auf die Startseite der FRITZBox weitergeleitet. + | Falls Sie nicht automatisch auf die Startseite der FRITZBox + weitergeleitet werden, klicken Sie `​hier <http://fritz.box>`__. + +… und wird wieder auf die Startseite des AVM WebGUIs umgeleitet. + +- Tags +- `patches <../patches.html>`__ diff --git a/wiki/patches/remove_tr069.rst b/wiki/patches/remove_tr069.rst new file mode 100644 index 0000000..81d37a4 --- /dev/null +++ b/wiki/patches/remove_tr069.rst @@ -0,0 +1,96 @@ +.. _Removetr069stuff: + +Remove tr069 stuff +================== + +"TR69 ist […] ein Protokoll, das die Kommunikation zwischen einem +Endgerät und einem Kontrollserver regelt." So beschreibt es ein +Blogeintrag (siehe unten). Verwendet wird dies bei der Fritzbox +einerseits um komplexe Einstellungen bei der Einrichtung der Box zu +automatisieren, andererseits damit der jeweilige Provider im Supportfall +auf die Konfiguration der Box beim Kunden zugreifen kann. Das geht von +der Veränderung einzelner Einstellungen bis hin zum Firmware-Upgrade +oder der Feststellung von Modifikationen. + +Zu den Nachteilen des aktivierten TR-069 siehe insbesondere die zweite +Seite des zweiten Artikels in unten stehender Link-Liste: Offensichtlich +ist TR-069 bei Fritzboxen ab Werk bereits aktiviert, so dass "Big +Brother" seinen Schnüffel-Zugang bereits einsatzbereit vorfindet. Wer +einmal das Helferscript */bin/supportdata* ansieht braucht sich nicht zu +wundern warum Modifikationen sofort vom Provider im Supportfall entdeckt +werden, genauso wie Dienste dritter (z.B. VoIP). + +Viele der im `FAQ <../FAQ.html>`__ beschriebenen `Gefahren beim Ersetzen +der SSL +libraries <../FAQ.html#NachdemFlashenistdasAVM-Webinterfacenichtmehrerreichbar>`__ +stehen auch in direktem Zusammenhang mit dem TR069 Dienst der scheinbar +zur HTTPS gesicherten Verbindung zum ACS Server die "originalen" AVM SSL +libraries braucht. Bei früheren Firmware Versionen reichte hier das +Deaktivieren von TR069, jedoch tauchen die Probleme bei neueren +Firmwares auch dann auf - vielleicht ein Indiz dafür das sich der Dienst +garnicht mehr ganz deaktivieren lässt. + +**Konflikte zwischen Freetz Modifikationen und TR069 tauchen meist erst +bei angeschlossenem DSL auf, wodurch sich das Problem leicht eingrenzen +lässt. Läuft eine Box stabil bis DSL angeschlossen bzw synchronisiert +wird dann hilft dieser Patch. Warnung unten beachten!.** + +Es ist also in vieler Hinsicht eventuell empfehlenswert, an dieser +Stelle von der Möglichkeit der kompletten Entfernung von TR-069 Gebrauch +zu machen. Wer also die Hilfestellung per TR-069 nicht dauerhaft +benötigt (oder garnicht wünscht), kann sich den "tr069 stuff" im Image +ersparen - und den freigewordenen Platz für andere Dinge nutzen. + +**Warnung:** Entfernt man TR069 funktioniert weder automatische +Einrichtung noch Startcode. Manche Provider haben komplizierte Multi-PVC +Einstellungen für Internet Telefonie die sich über das Webinterface in +der Form oft nicht eingeben lassen. Eine **manuelle Eingabe** +funktioniert oft auch ist aber von der Providerseite leicht zu erkennen +und wird oft in den AGBs als **nicht unterstützt** benannt (Bsp: 1und1). + +Auch zieht der Support im Fehlerfall eventuell jegliche +Kooperationbereitschaft zurück wenn nicht mit TR069 konfiguriert wurde +oder werden kann - bis hin zu angeblichem Garantieverlust des +gelieferten Gerätes. Im gebrandeten Webinterface solcher Provider ist +TR069 auch nicht abschaltbar. Daher empfiehlt sich folgende +Vorgehensweise: + +- Vor dem Modifizieren der Firmware einen Werksreset machen (ausser bei + Neugeräten). +- Falls das Gerät bereits modifiziert wurde Freetz Einstellungen + sichern und eine Recovery durchführen (vorher auf original Branding + einstellen!). +- Eventuell vorhandenen USB-Speicher entfernen. +- Die vom Provider empfohlene Einstellungsprozedur durchführen (Bsp: + Startcode bei 1und1). +- Nach erfolgreicher Einrichtung und funktionierender Telefonie vom DSL + trennen. +- Freetz Firmware mit entfernter TR069 Funktionalität aufspielen - ggf. + NUR Freetz Einstellungen wiederherstellen. +- DSL wieder anschliessen - Ruhe ist. +- Im Service Fall die Prozedur wiederholen (Ab Recovery). + +**Tip:** Bevor man seine Box modifiziert sollte man sich eine Kopie des +Environments machen um später vergleichen zu können. Das Environment +bleibt bei einer Recovery unverändert und enthält eventuell Spuren von +Modifikationen. Es gibt mehrere Methoden dies zu tun: + +- FTP auf ADAM2 und dort *PRINTENV* +- Uber telnet/ssh in die Box (hinterlässt Spuren ⇒ Werksreset danach) + und *cat /proc/sys/urlader/environment* + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​Infos zu TR-069 <http://www.jodler.ch/bstocker/?p=335>`__ +- `​TR-069: Router-Plug-and-Play mit + Risiken <http://www.netzwelt.de/news/78076-tr-069-router-plug-and-play-mit-risiken.html>`__ +- `​Heise: TR-069 im laufenden + Betrieb <http://www.heise.de/netze/DSL-fernkonfiguriert--/artikel/99963/3>`__ +- `​IPPF Thread: tr069 verstehen und + nutzen <http://www.ip-phone-forum.de/showthread.php?t=146089>`__ + +- Tags +- `patches <../patches.html>`__ diff --git a/wiki/patches/remove_upnp.rst b/wiki/patches/remove_upnp.rst new file mode 100644 index 0000000..4cb4048 --- /dev/null +++ b/wiki/patches/remove_upnp.rst @@ -0,0 +1,64 @@ +.. _RemoveuPnPdaemon: + +Remove uPnP daemon +================== + +**uPnP** steht für "**u**\ niversal **P**\ lug\ **'n'P**\ lay". Hiermit +lassen sich, sofern aktiviert und freigegeben, von Clients auf Verlangen +Ports an der Box freischalten. Dies ist einerseits sicher ganz +praktisch, da man dies dann nicht mehr manuell in der Web-Oberfläche +erledigen muss - birgt aber auch seine Risiken: Auch ein Trojaner könnte +auf diese Weise seine "Autobahn-nach-Hause" schalten - siehe dazu auch +den Artikel `​Router hacken per +uPnP <http://forum.ubuntuusers.de/topic/router-hacken-mit-hilfe-von-upnp/>`__. +Bei aktiviertem uPnP auf der Box gibt man quasi die Kontrolle zumindest +ein gutes Stück ab. + +Einige AVM Software benötigt diese Funktionalität (u.a. FritzFax) - +andere Programme u.U. auch. Wer es hingegen nicht braucht, kann es hier +entfernen. Und wer sich dessen nicht ganz sicher ist, kann es ja +zunächst in der Web-Oberfläche deaktivieren und schauen, ob irgend ein +Programm schreit - passiert dies bis zum nächsten Firmware-Update nicht, +kann man den Kram dann rauswerfen |;)| + +.. _Waswirdentfernt: + +Was wird entfernt? +------------------ + +Mit dem Patch wird der uPnP Daemon (igdd) aus dem Image entfernt. +Außerdem werden die Init-Skripte angepasst, damit sie nicht über dessen +Fehlen stolpern. + +.. _Wasistzubeachten: + +Was ist zu beachten? +-------------------- + +Zum einen, wie schon oben erwähnt: Einige Software ist auf den uPnP +Server hier angewiesen - diese funktioniert dann mit großer +Wahrscheinlichkeit maximal noch eingeschränkt. + +Desweiteren sollte man vor Einspielen eines Images mit entferntem uPnP +Server sicherstellen, dass alle uPnP Features im aktuellen Image +deaktiviert wurden. Die entsprechenden Optionen finden sich unter +"Einstellungen ⇒ System ⇒ Netzwerkeinstellungen ⇒ Statusinformationen +über UPnP übertragen (empfohlen)". + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​Wikipedia: + uPnP <http://de.wikipedia.org/wiki/Universal_Plug_and_Play>`__ +- `​DSL Re-Connect per + uPnP <http://blog.jbbr.net/2008/01/03/fritzbox-schneller-reconnect-unter-linux/>`__ +- `​Router hacken per + uPnP <http://forum.ubuntuusers.de/topic/router-hacken-mit-hilfe-von-upnp/>`__ + +- Tags +- `patches <../patches.html>`__ + +.. |;)| image:: ../../chrome/wikiextras-icons-16/smiley-wink.png + diff --git a/wiki/patches/remove_usermand.rst b/wiki/patches/remove_usermand.rst new file mode 100644 index 0000000..1fda5c7 --- /dev/null +++ b/wiki/patches/remove_usermand.rst @@ -0,0 +1,28 @@ +.. _Removeusermanduserman.ko: + +Remove usermand & userman.ko +============================ + +Hiermit wird die Kindersicherung der Fritzbox entfernt. Wer alt genug +ist, und noch keinen "gefährlichen" oder "gefährdeten" Nachwuchs im +Hause hat, kann auf selbigen sicher verzichten. Und falls der Nachwuchs +bereits zu schlau dafür ist, und die Kindersicherung umgeht - naja, dann +braucht man sie wohl auch nicht mehr? + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​AVM: + Kindersicherung <http://www.avm.de/de/News/artikel/newsletter/tipp_kindersicherung.html>`__ +- `​Computerbild zur + Kindersicherung <http://www.computerbild.de/artikel/cb-Ratgeber-Kurse-DSL-WLAN-Ratgeber-Fritz-Box-optimal-einstellen_468382.html>`__\ (damit + kann man die Kleinen auch vor dem Zugriff auf selbige Website + schützen |;)|) + +- Tags +- `patches <../patches.html>`__ + +.. |;)| image:: ../../chrome/wikiextras-icons-16/smiley-wink.png + diff --git a/wiki/patches/remove_vpn.rst b/wiki/patches/remove_vpn.rst new file mode 100644 index 0000000..322676d --- /dev/null +++ b/wiki/patches/remove_vpn.rst @@ -0,0 +1,42 @@ +.. _RemoveAVMvpn: + +Remove AVM vpn +============== + +Hiermit wird, wer hätte das gedacht, der von AVM implementierte VPN +Service entfernt. Wiederum sind lediglich die Dateien betroffen, nicht +aber die Einstellungen im WebIF. + +Ein Entfernen macht hier sicherlich dann Sinn, wenn man entweder gar +kein VPN nutzt - oder aber lieber auf +`OpenVPN <../packages/openvpn.html>`__ setzen möchte - welches ja als +Paket angeboten wird. + +.. _WasistVPN: + +Was ist VPN? +------------ + +Für diejenigen, die zuvor gern noch wissen möchten, auf was sie da +eigentlich verzichten: **VPN** steht für **V**\ irtual **P**\ rivate +**N**\ etwork. Kurz, platt, und stark vereinfacht beschrieben: Damit +lassen sich zwei Netze zu einem (virtuellen) verschmelzen. Wird oft +genutzt, damit sich z.B. Außendienstmitarbeiter ins Firmennetz +einklinken können. Wer's genauer wissen will, kann z.B. bei +`​Wikipedia <http://de.wikipedia.org/wiki/Virtual_Private_Network>`__ +nachlesen. + +.. _WeiterführendeLinks: + +Weiterführende Links +-------------------- + +- `​AVM zum VPN auf der Fritz!Box <http://www.avm.de/vpn>`__ (mit + detaillierter Info zur Einrichtung etc.) +- `​Wikipedia: + VPN <http://de.wikipedia.org/wiki/Virtual_Private_Network>`__ +- Unsolved problem: `​AVM WebIF: no response + anymore <http://www.ip-phone-forum.de/showthread.php?t=233204>`__ + +- Tags +- `patches <../patches.html>`__ diff --git a/wiki/patches/replace_onlinechanged.rst b/wiki/patches/replace_onlinechanged.rst new file mode 100644 index 0000000..40fb385 --- /dev/null +++ b/wiki/patches/replace_onlinechanged.rst @@ -0,0 +1,59 @@ +.. _Replaceonlinechanged: + +Replace onlinechanged +===================== + +Dieser Patch sorgt dafür, daß die Onlinechanged-Skripten von + +- AVM-Diensten (Verzeichnis */etc/onlinechanged*), +- Freetz-Paketen (Verzeichnis */etc/onlinechanged*), +- Onlinechanged-CGI (Skript */tmp/flash/onlinechanged-cgi*) und +- manuell angelegten Skripten (Verzeichnisse */tmp/onlinechanged* und + */tmp/flash/onlinechanged*) + +von einem eigenen IP-Watchdog angestoßen werden statt vom AVM *multid*. + +Vorteile dieser Methode gegenüber dem AVM-Mechanismus sind: + +- Sie funktioniert im Gegensatz zur AVM-Methode auch auf Geräten, die + keine eigene Internet-Verbindung (z.B. via DSL oder PPPoE) aufbauen, + also auf Geräten hinter einem NAT (z.B. bei "Internetverbindung + mitbenutzen"). +- In Problemfällen, wo AVM Onlinechanged nicht zuverlässig funktioniert + (siehe entsprechendes + `​IPPF-Thema <http://www.ip-phone-forum.de/showthread.php?t=231873>`__) + bietet dieser Patch eine zuverlässige Alternative. + +Mehr Hintergründe zur Funktionsweise siehe Hilfetext in +`patches/Config.in </browser/trunk/patches/Config.in?rev=8350#L1076>`__\ `​ </export/8350/trunk/patches/Config.in#L1076>`__. + +.. _FAQ: + +`FAQ <../FAQ.html>`__ +--------------------- + +AVM Onlinechanged konnte man auch manuell von der Konsole aus aufrufen +via ``onlinechanged online``. Wie geht das beim IP-Watchdog, der doch +ständig im Hintergrund läuft? + + Ganz einfach: ``killall ip_watchdog``. Der Befehl beendet die + laufende Instanz, ``init`` startet den Watchdog daraufhin sofort neu + (wegen der Direktive "respawn" in */etc/inittab*). Das führt dazu, + daß sämtliche Onlinechanged-Skripten einmal ausgeführt werden. Danach + läuft es dann normal weiter, d.h. der erneute Aufruf der Skripten + erfolgt erst dann wieder, wenn sich die externe IP-Adresse ändert. Im + Gegensatz zu ``onlinechanged online`` (geht sowieso nur ohne diesen + Patch) oder ``/bin/onlinechanged.sh online`` (geht auch mit diesem + Patch) sorgt die Killall-Methode dafür, daß alles sauber + initialisiert wird (z.B. ``IPADDR``, vgl. auch nächste Frage). + +Wie ermittle ich in eigenen Onlinechanged-Skripten die externe +IP-Adresse? + + Der IP-Watchdog ermittelt sie sowieso und übergibt sie in der + Umgebungsvariablen ``IPADDR``, welche man in den entsprechenden + Skripten verwenden kann. Das spart Aufrufe von *get_ip* und somit + ggf. auch Anfragen an externe STUN-Server. Dadurch wird auch ein + Caching der IP-Adresse überflüssig. Die Variable ``IPADDR`` wird + übrigens auch im AVM-Original von *multid* bei Aufruf von + *onlinechanged* gesetzt. diff --git a/wiki/patches/signed.rst b/wiki/patches/signed.rst new file mode 100644 index 0000000..97b2a8a --- /dev/null +++ b/wiki/patches/signed.rst @@ -0,0 +1,17 @@ +.. _PatchWebmenuSignedMessage: + +Patch Webmenu Signed Message +============================ + + **"In Ihrer FRITZBox wurden vom Hersteller nicht unterstützte + Änderungen durchgeführt."** + +Wenn Ihr diesen Schriftzug in der Weboberfläche weg bekommen wollt, dann +solltet ihr diesen Patch auswählen. + +Details und Hintergründe dazu gibt es in einem Artikel von Alexander +"`Wie die Fritz!Box Manipulationen +erkennt <../help/howtos/development/manipulation_detection.html>`__". + +- Tags +- `patches <../patches.html>`__ diff --git a/wiki/patches/usb_names.rst b/wiki/patches/usb_names.rst new file mode 100644 index 0000000..9e84f04 --- /dev/null +++ b/wiki/patches/usb_names.rst @@ -0,0 +1,23 @@ +.. _PatchUSBstoragenamesmakeFATfilesystemsworld-writableautomountfeature: + +Patch USB storage names, make FAT filesystems world-writable, automount feature +=============================================================================== + +Hinter diesem Menüpunkt verstecken sich gleich eine ganze Reihe von +Modifikationen. Einige davon sind auch bereits per Default aktiviert - +es ist empfehlenswert, sie auch aktiviert zu lassen! + +Was passiert nun im einzelnen? + +- das USB-Storage Verzeichnis wird umbenannt in uStorXY +- auf automatisch eingebundene USB Speichermedien besteht voller + Zugriff - man kann also z.B. auch "home directories" (z.B. für FTP) + hier anlegen, und den betroffenen Benutzern dort Schreibzugriff geben +- das (versehentliche) Löschen des gesamten USB Dateisystems wird + unterbunden + +Dieser Patch ist in freetzmount eingeflossen und steht nicht mehr zur +Verfügung. + +- Tags +- `patches <../patches.html>`__ diff --git a/wiki/style.rst b/wiki/style.rst new file mode 100644 index 0000000..8d45526 --- /dev/null +++ b/wiki/style.rst @@ -0,0 +1,44 @@ +.. _Aussehen: + +Aussehen +======== + +Momentan gibt es nur ganz wenige Möglichkeiten, das Aussehen von FREETZ- +oder auch von AVM-Webinterface zu verändern. Bei AVM hängt es damit +zusammen, dass man die Urheberrechte von AVM auf ihre Webseiten nicht +verletzen will. Bei FREETZ-WebIF ist es mehr historisch gewachsen: Bei +der Vielfalt der vorhandenen Pakete ist es momentan nur schwer denkbar +globale Änderungen im WebIF-Design durchzuführen. + ++-----------------------+-----------------------+-----------------------+ +| **Bezeichnung** | **Beschreibung** | **Größe** | ++-----------------------+-----------------------+-----------------------+ +| FREETZ-WebIF-Breite? | Breite von | - | +| | FREETZ-Webinterface | | +| | verändern | | ++-----------------------+-----------------------+-----------------------+ +| `Favicons <style/favi | Ein Favicon ist ein | - | +| cons.html>`__ | kleines Icon, Symbol | | +| | oder Logo, das in der | | +| | Adresszeile eines | | +| | Browsers links von | | +| | der URL angezeigt | | +| | wird | | ++-----------------------+-----------------------+-----------------------+ +| `mounted.cgi <style/m | Darstellung der | - | +| ounted.html>`__ | eingebundenen Medien | | +| | / Partitionen | | ++-----------------------+-----------------------+-----------------------+ +| `Tagging <style/taggi | Das Logo im | - | +| ng.html>`__ | AVM-Webinterface wird | | +| | als "getaggt". So | | +| | kann schneller | | +| | erkannt werden ob | | +| | Freetz installiert | | +| | ist. | | ++-----------------------+-----------------------+-----------------------+ +| `Skins <style/skins.h | Aussehen des | - | +| tml>`__ | Freetz-Webinterfaces. | | +| | Menüposition, Farben | | +| | usw. | | ++-----------------------+-----------------------+-----------------------+ diff --git a/wiki/style/favicons.rst b/wiki/style/favicons.rst new file mode 100644 index 0000000..792502f --- /dev/null +++ b/wiki/style/favicons.rst @@ -0,0 +1,108 @@ +.. _Favicons: + +Favicons +======== + +Aus WIKIPEDIA: Ein Favicon (kurz für favourite icon, engl. für +Favoriten-Symbol) ist ein kleines, 16×16 oder 32×32 Pixel großes Icon, +Symbol oder Logo, das unter anderem in der Adresszeile eines Browsers +links von der URL angezeigt wird und meist dazu dient, die zugehörige +Website auf wiedererkennbare Weise zu kennzeichnen. Es taucht auch in +der Lesezeichenleiste (Favoriten), bei den Registerkarten (oder Tabs) +und unter Windows beim Speichern einer Seite auf dem Desktop auf. Das +Favicon wurde von Microsoft mit dem Internet Explorer 4 eingeführt. + +Die Favicons werden sowohl bei AVM-WebIF, als auch bei FREETZ-WebIF +angezeigt. Zur Zeit können folgende Einstellungen für Favicons im +menuconfig ausgewählt werden: + +.. _FreetzWebinterface: + +Freetz Webinterface +------------------- + +none +~~~~ + +Keine Favicons. Das ist die Default-Einstellung. + +atomphil +~~~~~~~~ + +.. figure:: /screenshots/138.jpg + :alt: Favicon atomphil + + Favicon atomphil + +cuma +~~~~ + +.. figure:: /screenshots/132.png + :alt: Favicon cuma + + Favicon cuma + +dsl123 +~~~~~~ + +.. figure:: /screenshots/133.png + :alt: Favicon dsl123 + + Favicon dsl123 + +hansolo +~~~~~~~ + +.. figure:: /screenshots/134.png + :alt: Favicon hansolo + + Favicon hansolo + +.. _AVMWebinterface: + +AVM Webinterface +---------------- + +.. _none1: + +none +~~~~ + +Keine Favicons. Das ist die Default-Einstellung. + +.. _atomphil1: + +atomphil +~~~~~~~~ + +Es wird das original AVM-Favicon genutzt + +.. _cuma1: + +cuma +~~~~ + +.. figure:: /screenshots/140.jpg + :alt: AVM Icon cuma + + AVM Icon cuma + +.. _dsl1231: + +dsl123 +~~~~~~ + +.. figure:: /screenshots/139.jpg + :alt: AVM Icon dsl123 + + AVM Icon dsl123 + +.. _hansolo1: + +hansolo +~~~~~~~ + +.. figure:: /screenshots/141.jpg + :alt: AVM Icon hansolo + + AVM Icon hansolo diff --git a/wiki/style/mounted.rst b/wiki/style/mounted.rst new file mode 100644 index 0000000..17dec52 --- /dev/null +++ b/wiki/style/mounted.rst @@ -0,0 +1,45 @@ +.. _Aussehenvonmounted.cgi: + +Aussehen von mounted.cgi +======================== + +Das Aussehen von mounted.cgi (Balken für die Größe der internen und +eingebundenen Medien) kann in menuconfig festgelegt werden. Folgende +Darstellungsarten sind möglich: + +.. _Farbig: + +Farbig +------ + +Überwiegend grüne Balken, die nach dem Mount-zustand ihre Farbe in +dunkelblau verändern können. Andere Informationen sind durch +unterschiedliche Farben gekennzeichnet. Wer in seinem Hirn einen +ausgebildeten Farbenfilter als Unterscheidung zwischen diversen +Informationen eingebaut pflegt, der wird es schätzen. Für besonders +Farbempfindliche unter uns, die durch eine bunte Farbenvielfalt in den +Wahnsinn getrieben werden, wird diese Einstellung nicht emfohlen. + +.. figure:: /screenshots/135.png + :alt: mounted.cgi farbig + + mounted.cgi farbig + +.. _Grau: + +Grau +---- + +Wird für farbblinde und für besonders farbempfindliche Personen +empfohlen. In diesem Design wurde versucht durch die Grauskala die +Vielfalt der bunten Farben möglichst getreu nachzubilden. Ob es +letztendlich überall gelungen ist, darüber lässt sich bekanntlich +streiten. Dies war nicht mein Favorit bei der Anpassung von mounted.cgi +und wurde lediglich auf eine besondere Anfrage im Forum und aus +historischen Gründen basierend auf einem entsprechenden Patch in FREETZ +übernommen. + +.. figure:: /screenshots/136.png + :alt: mounted.cgi grau + + mounted.cgi grau diff --git a/wiki/style/skins.rst b/wiki/style/skins.rst new file mode 100644 index 0000000..2c05527 --- /dev/null +++ b/wiki/style/skins.rst @@ -0,0 +1,39 @@ +.. _Skins: + +Skins +===== + +Momentan stehen 3 Skins zu Auswahl. Im Menuconfig unter ``Advanced`` +können die zu installierenden Skins ausgewählt werden. Im Webinterface +unter ``Freetz`` kann zwischen den installieren Skins umgeschaltet +werden. + +.. _Aussehen: + +Aussehen +-------- + +.. _Legacy: + +Legacy +~~~~~~ + +.. figure:: /screenshots/240.jpg + :alt: + +.. _Phoenix: + +Phoenix +~~~~~~~ + +.. figure:: /screenshots/241.jpg + :alt: + +.. _Newfreetz: + +Newfreetz +~~~~~~~~~ + +.. figure:: /screenshots/242.jpg + :alt: + diff --git a/wiki/style/tagging.rst b/wiki/style/tagging.rst new file mode 100644 index 0000000..dae14a1 --- /dev/null +++ b/wiki/style/tagging.rst @@ -0,0 +1,7 @@ +.. _Tagging: + +Tagging +======= + +Im Webinterface wird über AVM's "Fritz" Logo der Schriftzug "Freetz MOD" +gelegt diff --git a/wiki/ticket.rst b/wiki/ticket.rst new file mode 100644 index 0000000..d8814e8 --- /dev/null +++ b/wiki/ticket.rst @@ -0,0 +1,103 @@ +.. _WassollteichbeiderErstellungeinesneuenTicketsbeachten: + +Was sollte ich bei der Erstellung eines neuen Tickets beachten? +--------------------------------------------------------------- + +|Warning| **Grundsätzlich**: Das Bug-Tracking-System (BTS) ist primär für +**Bug-Reports** und **Erweiterungen** vorgesehen. **Support** gibt es im +`​IP-Phone-Forum +(IPPF) <http://www.ip-phone-forum.de/forumdisplay.php?f=525>`__ oder +`IRC <help/irc.html>`__. + +- Bitte nicht vergessen: Entwickler und User wollen sich einen + **schnellen Überblick** im BTS verschaffen. + Wir bitten um etwas Disziplin in den Kommentaren, da sonst die + Lesebereitschaft und auch die Qualität des BTS leidet. + +- Vorsicht: Tickets können **nicht gelöscht** werden, daher bitte erst + unten aufgelistete Punkte abklären, dann Ticket erstellen |:-)|. + +- Bitte prüfen **bevor** ein **neues Ticket** erstellt wird: + + - **Reproduzierbarkeit**: + Tritt der Fehler immer noch auf: + + - wenn auf die aktuellste Revision aus dem SVN-Repository + geupdatet wird (``svn up``) + - wenn nochmals frisch (Quellcode vorher löschen) ausgechecked + wird? + - wenn anstatt alter exisitierender ".config" eine neue mittels + ``make menuconfig`` erstellt wird? + - nach einem ``make dirclean`` oder ``make clean``? + + - **IRC ##fritzbox**: + Bitte nachfragen im offiziellen `IRC <help/irc.html>`__ + Support-Channel (evtl. lässt sich das Problem direkt im Chat + lösen). + - **IPPF-Forum**: Zuerst das offizielle + `​Forum <http://www.ip-phone-forum.de/forumdisplay.php?f=525>`__ + konsultieren (evtl. wurde dort schon das Problem geposted). + - Bitte auch die Liste der **offenen Tickets** `hier </report/9>`__ + inspizieren, um doppelte Einträge zu vermeiden. + +- Bitte einen **aussagekräftigen Titel** für das Ticket auswählen. + Dieser sollte eine kurze und exakte Beschreibung des Problems + enthalten. + +- Hilfreich zum **Eingrenzen des Problems** (Liste evtl. + unvollständig). Im Falle eines Tickets vom Typ **defect** sind die + hinten mit **[d]** markierten Punkte **zwingend notwendig**, Tickets + ohne entsprechende Anhänge/Informationen werden kommentarlos als + invalid geschlossen: + + - FritzBox Modell (z.B. FRITZBox Fon WLAN 7170) **[d]** + - Firmware-Version (z.B. 29.04.87) **[d]** + - verwendete Freetz-Version bzw. SVN-Branch (z.B. trunk) und + Revision (z.B. `r7300 </changeset/7300>`__) **[d]** + - nachvollziehbare Fehlerbeschreibung (siehe + `​Fehlerberichte <http://www.chiark.greenend.org.uk/~sgtatham/bugs-de.html>`__ + und `​Wie man Fragen richtig + stellt <http://www.tty1.net/smart-questions_de.html>`__) + - Beschreiben was man bisher versucht hat (mit und ohne Erfolg) + - Dateianhänge (bitte nicht als Verweis auf eine Pastebin-URL): + + - Konfigurationsdatei ".config" aus dem Freetz + Quellcode-Verzeichnis (z.B. als freetz-config.txt) **[d]** + - Output-Dateien von Debug-Werkzeugen wie strace, ltrace, lsof, + gdb etc. + - Supportdatei (Freetz Webinterface → System → Supportdatei + erstellen) + + - Weitere wichtige Felder: + + - Typ (Fehler, Erweiterung, Aufgabe oder Versionssprung) + - Komponente (betroffene Komponente) + - Die Felder Priorität und Meilenstein werden von den Entwicklern + festgelegt. + +- Die Bereitstellung eines **Patch** kann die Fehlerbehebung unter + Umständen erheblich beschleunigen. + + - `Patch How-to <patch.html>`__ (noch Work-In-Progress) + +- **Rückmeldung und Testen** von bereitgestellten Patches und/oder + Lösungsmöglichkeiten trägt zum erfolgreichen Abschluss eines Tickets + bei. + Bitte Aktivitäten im Ticket mitverfolgen, hilfreich "Watch page" + Funktion. + +- TIPP: Beim **Editieren** gibt es eine Vorschau-Funktion + (**Preview**). Bitte damit den Eintrag vorher testen und somit + unleserliche Einträge vermeiden. + +- Werden die Daten im Ticket als "ungenügend" oder "formal falsch" + betrachtet, so wird es auf Status "**invalid**" (ungültig) gesetzt. + +- Quellcode, Logausgaben usw in {{{ }}} einschließen, siehe + `WikiFormatting <WikiFormatting.html>`__ + +`Neues Ticket erstellen </newticket>`__ + +.. |Warning| image:: ../chrome/wikiextras-icons-16/exclamation.png +.. |:-)| image:: ../chrome/wikiextras-icons-16/smiley.png +