fix bsdtalk download links
[ikiwiki.git] / docs / howtos / HowToFirefoxandFlashplayer.mdwn
index fc9aa44..49c4457 100644 (file)
@@ -59,55 +59,151 @@ rm install_flash_player*gz
 
 * Now restart your Firefox browser
 
-# Alternative: Using a plugin-wrapper under a native environment 
- . The method described here consists on using ***nspluginwrapper***, from ***pkgsrc***, with a native browser which, in theory, will perform much better if compared to a generic emulated browser. Despite the fact that Flash 9 does not seem to work properly, I managed to get Flash Player 7 working very nicely, and at the time of this writing no crashes were found. (Though: Looks like Flash 9 is performing pretty well under NetBSD, so if you are able to fix it... :-)))
+# Alternative: Using nspluginwrapper with the native Flash plugin
 
- **Quoted from the package DESCR:**  nspluginwrapper is an Open Source compatibility plugin for Netscape 4 (NPAPI) plugins. It separates the execution environment of the plugin from the browser, allowing a plugin compiled for one ABI to be used in a browser compiled for another.
+The method described here consists on using ***nspluginwrapper***, 
+from ***pkgsrc***, with a native browser which, in theory, will 
+perform much better if compared to a generic emulated browser. 
 
- First you will need a web browser such as Iceweasel, Firefox, Seamonkey or derived. As an example, here, seamonkey is used. :)
+Procedure tested against DragonFlyBSD 2.6/i386, Firefox 3.6, and flash9 
+on the pkgsrc-2010Q1 branch.
 
+**Note** : Linux emulation support on 64Bit DragonFly is not functional
+  at the time of writing - so you'll need to run 32Bit DragonFly
+  if you want this to work for now.
 
-* Compile and install a web browser, as root:
-     
-    cd /usr/pkgsrc/www/seamonkey
-bmake install
- Alternatively you can search an already compiled version for DragonFlyBSD and install it with pkg_add(1)
-     Just one hint: If you are going to compile your browser, please, use some safe CFLAGS. If something unexpected occurs after/during the build you probably will have to recompile it from zero, truste me. ;-)  $ seamonkey # Execute the newly installed browser as normal user, just to check if it works as expected.
-    
-* Now let's build and install the plugin-wrapper:
-    ******'NOTE: Nowadays nspluginwrapper builds without any problems. A simple 'bmake install' should be enough to install it.******'
-         
-    cd /usr/pkgsrc/www/nspluginwrapper
-bmake extract patch
+## Step 1: Setup Linux Emulation Environment
 
-* By default, nspluginwrapper fails to build properly under DragonFly, so we will have to make some small adjustments, under the package workdir (work/nspluginwrapper-0.9.91.3) edit the  **configure**  file with your preferred editor, and change:
-     
-    host_os=`uname -s | tr '[A-Z]' '[a-z]'`
-    to:
-host_os='netbsd'
- . Altough for the reader this may seem strange the only two accepted options available for us are freebsd and netbsd, so, unless you're willing to edit the whole configure and Makefile... :)
+Nspluginwrapper requires that the Linux emulation infrastructure is
+in place in order to correctly deal with the linux format flash plugin.
 
-* Now, with your preferred editor, edit the  **Makefile**  and change:
-     
-    All occurrence of  **-lpthread**  to -pthread
-     Example:  npwrapper_LDFLAGS = $(X_LDFLAGS) -lpthread
-    change to:
-     npwrapper_LDFLAGS = $(X_LDFLAGS) -pthread
-and so on...
- . And you're done! Now type bmake install under the ***nspluginwrapper*** port. :)
-
-* Now, you will need the libflashsupport port installed, as it will download every linux dependency needed to make flash work properly. As root:
-     
-    cd /usr/pkgsrc/multimedia/libflashsupport
-bmake install
- . You shouldn't install the ns-flash port, under multimedia, as it will download the Flash 9 which, at least under SeaMonkey, didn't worked properly. However if you're going to use Firefox, it'd pretty nice to give it a try.
+### Install linux compatibility packages and multimedia/libflashsupport 
+
+  This installs the needed linux packages for flash support, as well as
+installing the core linux emulation environment, and can be done as follows:
+
+    # cd /usr/pkgsrc/multimedia/libflashsupport
+    # bmake package clean
+
+### Configure DragonFlyBSD to run Linux binaries
+
+In order to use Linux emulated binaries, the linux compatibility
+layer needs a bit of setup. 
+
+First, load the linux emulator kernel module:
+
+    # kldload linux
+    # kldload aac_linux # note - not 100% sure if needed here..
+
+Next, mount linprocfs:
+
+    # mount -t linprocfs none /usr/pkg/emul/linux/proc
+
+Then, run Linux ldconfig to setup the linux-side library linker paths:
+
+    # /compat/linux/sbin/ldconfig
+
+The above steps should enable the linux emulation system to work - 
+this can be tested by running a linux command - for example:
+
+    # uname -sr                                   
+    DragonFly 2.6-RELEASE
+    # file /usr/bin/uname /compat/linux/bin/uname 
+    /usr/bin/uname:          ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for DragonFly 2.0.600, stripped
+    /compat/linux/bin/uname: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.2.5, stripped
+    # uname -sr                                   
+    DragonFly 2.6-RELEASE
+    # /compat/linux/bin/uname -sr                 
+    Linux 2.6.16
+    # file /bin/ls /compat/linux/bin/ls              
+    /bin/ls:              ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for DragonFly 2.0.600, stripped
+    /compat/linux/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.2.5, stripped
+    # /bin/ls -l /compat/linux/bin/ls                
+    -rwxr-xr-x  1 root  wheel  82640 May  6 00:38 /compat/linux/bin/ls
+    # /compat/linux/bin/ls -l /bin/ls                
+    -rwxr-xr-x  1 root wheel 82640 May  6 00:38 /bin/ls
+
+This example shows the different binary formats, as well as the uname
+and path overrides provided by the emulation layer, 
+as well as some some subtle ls formatting subtleties between the two
+systems.
+
+To enable linux emulation at boot, set linux_enable='YES' in your rc.conf,
+and create an fstab entry for the proc filesystem.
+
+### Install nspluginwrapper and ns-flash
+
+Now that the Linux emulation system has been configured and tested, 
+it's time to setup the actual flash portion:
 
-* As an alternative, download the Flash 7 plugin from:
+    # cd /usr/pkgsrc/www/ns-pluginwrapper
+    # bmake package clean
+
+This should be all that is needed - however, during my tests, I
+did come across some errors that were related to not having setup
+the emulation layer properly - these errors contained something
+like "Elf type '0' binary unknown" - which means that nspluginwrapper
+is having trouble interfacing with the linux emulation subsystem.
+
+You can check the installation with:
+
+    # nspluginwrapper --list
+    /usr/pkg/lib/netscape/plugins/npwrapper.libflashplayer.so
+      Original plugin: /usr/pkg/lib/netscape/plugins/libflashplayer.so
+      Wrapper version string: 1.2.2
+    /usr/pkg/lib/netscape/plugins/npwrapper.libflashplayer.so
+      Original plugin: /usr/pkg/lib/netscape/plugins/libflashplayer.so
+      Wrapper version string: 1.2.2  
+
+No idea why it lists the plugin twice. From there - use it!
+
+* Check about:plugins in your FireFox url bar - you should see:
+
+    File: npwrapper.libflashplayer.so
+    Version: Shockwave Flash 9.0 r283
+
+* Try it out!
+
+even when working, you might still recieve the following message when 
+starting firefox:
+
+    LoadPlugin: failed to initialize shared library /usr/pkg/lib/netscape/plugin
+s/libflashplayer.so [Shared object "libdl.so.2" not found, required by "libflash
+player.so"] 
+
+which, apparently, can be ignored - as it still worked.
+
+## Audio/Video sync issues with this method
+
+Untested - the following was mentioned by ahornung@ on the docs@ list 
+9/30/2010:
+
+    About this: with the libflashsupport out of pkgsrc there's an
+    audio<->video sync problem. Johannes Hofmann (jh33) has found and fixed
+    the issue, but since libflashsupport is distributed as a binary, it
+    didn't make its way into pkgsrc and might never do so.
+
+    He is providing a fixed version (yes, it's a trustworthy source) here:
+
+    http://flpsed.org/libflashsupport.so.gz
+    and here, I think:
+    http://leaf.dragonflybsd.org/~hofmann/libflashsupport.so
+
+## Further testing for nspluginwrapper, trying other versions, etc
+
+If you want to try out another flash version, etc - or possibly
+for other linux-only plugins - the following steps apply and 
+were previously tested using flash7 and the seamonkey browser.
+
+* download the Flash 7 plugin from:
  http://fpdownload.macromedia.com/get/flashplayer/installers/archive/fp7_archive.zip and unzip it.
  r73/install_flash_player_7_linux_r73.tar.gz is reported to work.
- Extract it somewhere of your choice and run,  **as normal user** :
+* Extract it somewhere of your choice and run,  **as normal user** :
      
     nspluginwrapper -i /path/to/your/flash7/libflashplayer.so
 seamonkey
- Remember that you need to create ~/.mozilla/plugins first as nspluginwrapper won't do this for you. It will just silent fail.
- . Now enjoy! :)
+
+Remember that you need to create ~/.mozilla/plugins first as 
+nspluginwrapper won't do this for you. It will just silent fail.
+
+Now enjoy! :)