AndLinux
Intro
andLinux is a bundle of several pieces enabling a linux distribution to run with its kernel as a Windows service.
- Ubuntu
- coLinux, a port of the Linux kernel to Windows
- Xming, a X server for Windows
- PulseAudio, the sound server
Tips
Add sth like this to andLinux\settings.txt
cofs1=D:\
And in the /etc/fstab of the Ubuntu:
1 /mnt/d cofs defaults 0 0
Running kgpg
The problem is that once kgpg is iconified, I've no idea where this icon goes and I cannot maximize the window anymore (it's also true for e.g. klipper)
The trick is to use a dcop command to raise the window, you can play with kdcop to experiment
So I added to andLinux\Launcher\menu.txt the following:
Kgpg;kgpg.ico;pgrep kgpg > /dev/null || kgpg;dcop kgpg KeyInterface showKeyManager
The icon was converted from /usr/share/icons/hicolor/32x32/apps/kgpg.png with The Gimp
Windows Explorer integration
In the Windows Explorer there is now on right-click on a file a possibility to open it with Kate.
And right-click on a folder allows it to be opened in Konqueror or Konsole.
To do that it is creating the path file:///mnt/win/... so be sure that /mnt/win points to your data partition.
If you want or need to hack into that part, have a look here:
- last point of the FAQ: Changing the Launcher Port
- a patched launcher.pl to get it working with andCmd.exe too, as with this example
And here is a patch by Thierry Walrant to allow more than one share and to fix the andCmd.exe bug as well, you can [{{#file:launcher.patch}} get the patch here]
--- launcher.pl 2008-07-03 05:26:40.000000000 -0400
+++ launcher.pl 2008-07-03 05:52:45.000000000 -0400
@@ -1,27 +1,44 @@
#!/usr/bin/perl
use IO::Socket;
+use strict;
+# Default settings.
+our $localPort = 81;
+our %pathPrefixes = (
+ '/mnt/win/' => "C:\\"
+ );
-$windowsPathPrefix = "C:\\";
-$linuxPathPrefix = "/mnt/win/";
+# Load config, if any.
+my $conf = '/etc/launcher-conf.pl';
+require $conf if -f $conf;
-$sock = new IO::Socket::INET(LocalPort => 81, Reuse => 1, Listen => 20) or die("Error creating local socket: $@\n");
+my $sock = new IO::Socket::INET(LocalPort => $localPort, Reuse => 1, Listen => 20) or die("Error creating local socket: $@\n");
-while($client = $sock->accept())
+while(my $client = $sock->accept())
{
- $request = <$client>;
+ my $request = <$client>;
chomp $request;
if($request =~ m/^cmd=(.+)&file=(.*)$/)
{
- $cmd = $1;
- $file = $2;
+ my $cmd = $1;
+ my $file = $2;
- $escapedWindowsPathPrefix = $windowsPathPrefix;
- $escapedWindowsPathPrefix =~ s/\\/\\\\/g;
- $file =~ s/$escapedWindowsPathPrefix/$linuxPathPrefix/g;
+ # Apply all mappings
+ foreach my $linuxPathPrefix ( keys %pathPrefixes ) {
+ my $windowsPathPrefix = $pathPrefixes{$linuxPathPrefix};
+ $windowsPathPrefix =~ s/\\/\\\\/g;
+ $file =~ s/$windowsPathPrefix/$linuxPathPrefix/g;
+
+ # Apply mapping to 'cmd' as well (circumvent issue with
+ # andCmd.exe which passes all arguments in 'cmd').
+ $cmd =~ s/$windowsPathPrefix/$linuxPathPrefix/g;
+ }
+
+ # Finalize with back-slashes replacement.
$file =~ s/\\/\//g;
+ $cmd =~ s/\\/\//g;
system("$cmd $file &");
To use it you can use the hardcoded mapping as before or you can define your mappings in a config file /etc/launcher-conf.pl such as:
# Configuration file for the launcher: /usr/local/sbin/launcher.pl
%pathPrefixes = (
'/mnt/winC/' => 'C:\\',
'/mnt/winD/' => 'D:\\',
'/mnt/winZ/' => 'Z:\\'
);
# A Perl library MUST return 1
1;
Starting Xming our own way
By default Xming is started at boot time (cf folder Startup)
If you don't want that and start Xming only when you need it, here is a replacement of andLinux/srvstart.bat
@echo off
setlocal ENABLEEXTENSIONS
rem Do we need to start xming?
set TASKNAME=xming.exe
tasklist /FI "IMAGENAME eq %TASKNAME%" 2> \nul | find /i "%TASKNAME%" > \nul
IF ERRORLEVEL 1 CALL :STARTXMING
net start andLinux
goto :EOF
:STARTXMING
echo Starting XMing...
start /D"C:\Program Files\andLinux" C:\Progra~1\andLinux\Xming\Xming.exe :0 -dpi 85 -ac -clipboard -notrayicon -c -multiwindow -reset -terminate -unixkill -logfile Xming.log
goto :EOF
Port forwarding
To forward a port of the host to andLinux so it can run servers available to everybody: (instructions extracted from here)
Edit your settings.txt and append some port forwarding infos to eth0:
#eth0=slirp,<MAC>,tcp:<from Hosting OS port>:<to coLinux OS port>/... eth0=slirp,,tcp:22:22/tcp:80:80