Cooperative Linux



  • Soeben habe ich ein ziemlich cooles Projekt entdeckt: coLinux

    Kurz: es lässt Linux in einem Win32 Prozess laufen, ist also viel schneller als in einer VMWare oder Cygwin.

    Hat das jemand von euch schon einmal ausprobiert?



  • Linux-User schrieb:

    Hat das jemand von euch schon einmal ausprobiert?

    ich verwende es.



  • es lässt Linux in einem Win32 Prozess laufen, ist also viel schneller als in einer VMWare oder Cygwin

    WTF?
    Diese Formulierung ("ist also") impliziert dass da irgendein Zusammenhang bestehen würde. Ganz davon abgesehen dass ich sowieso schonmal bezweifle *dass* es überhaupt so ist.



  • hustbaer schrieb:

    Diese Formulierung ("ist also") impliziert dass da irgendein Zusammenhang bestehen würde. Ganz davon abgesehen dass ich sowieso schonmal bezweifle *dass* es überhaupt so ist.

    Es gab schon häufiger Projekte, die versucht haben, den Linux-Kernel auf Win32 zu portieren. Und dass ein nativer Kernel in einem Windows-Programm schneller ist als ein emulierter, ist auch einleuchtend.
    Ein weiteres solches Projekt ist zum Beispiel andLInux.
    http://www.andlinux.org/

    EDIT: ich sehe gerade, andLinux basiert auf coLinux...



  • Heinzelotto schrieb:

    Und dass ein nativer Kernel in einem Windows-Programm schneller ist als ein emulierter, ist auch einleuchtend.

    Jaja blub. Ein emulierter Kernel.

    ----

    Wie soll bitte etwas "viel schneller" sein als Linux unter VMware, wenn Linux auf VMware bloss minimal langsamer läuft als Linux auf "bare metal".

    Ich will das coLinux ja garnicht schlecht reden, bloss dass es "viel schneller" als ein unter VMware laufendes System ist ist wohl ... kompletter Unfug.



  • ob die messungen irgendwas aussagen, weiß ich nicht. aber ich mess mal ein wenig drauflos:

    ich weiß nicht, wieviel ram man einem linux in VMWare geben mußt
    mein gentoo frißt beim idlen nach dem booten ... moment, mal messen...
    vorher 255MB
    nachher 293MB
    mein gentoo frißt beim idlen nach dem booten 38MB.

    ich lasse ich es auch immer mitlaufen, die 38M gönne ich mir. 🙂

    jetzt starte ich noch eine konsole, damit zugang zum gentoo habe.
    296MB

    mal ein wenig daten lesen.
    localhost ~ # ls -lR / | wc -l
    die platte rödelt, der speicherverbrauch steigt, windows reagiert noch normal.
    ausgabe: 265084

    localhost ~ # time ( ls -lR / | wc -l )
    real 0m3.690s
    user 0m1.760s
    sys 0m1.930s

    localhost ~ # cat /proc/cpuinfo
    processor : 0
    vendor_id : AuthenticAMD
    cpu family : 15
    model : 44
    model name : AMD Sempron(tm) Processor 3000+
    stepping : 2
    cpu MHz : 1799.000
    cache size : 128 KB
    fdiv_bug : no
    hlt_bug : no
    f00f_bug : no
    coma_bug : no
    fpu : yes
    fpu_exception : yes
    cpuid level : 1
    wp : yes
    flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
    pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt lm 3dnowext 3dnow
    pni lahf_lm ts fid vid ttp tm stc
    bogomips : 22701.67
    clflush size : 64

    speicherstatus jetzt: 537MB
    colinux allokiert also speicher erst bei bedarf und gibt ihn nicht einfach so zurück. man kann natürlich einstellen, wieviel ram es benutzen darf.

    localhost ~ # uname -a
    Linux localhost 2.6.22.18-co-0.8.0 #1 PREEMPT Sun Nov 30 23:32:39 UTC 2008 i686
    AMD Sempron(tm) Processor 3000+ AuthenticAMD GNU/Linux

    oh, weie. das ist aber ein altes image. habe das aktuelle vor ein paar tagen gelöscht beim festplattenumbau. auf dem neuen war die gcc aktuell, auch mit mingw.

    so, genug gespielt. ich mache
    > halt
    9 sekunden.



  • falls es von euch auch jemand ausprobieren mag, wird es hilfreich sein, meine einstellungen zu sehen.

    starten mit

    colinux-daemon.exe -d @gentoo.conf
    

    die gentoo.conf

    kernel=C:\Programme\coLinux\vmlinux
    
    #cobd1=C:\Programme\coLinux\data\gentoo.old
    #cobd2=C:\Programme\coLinux\data\gentoo.img
    #sdc1=:cobd2
    
    cobd1=C:\Programme\coLinux\data\gentoo.img
    #cofs0=C:\src
    
    # setcobd=async
    
    root=/dev/cobd1
    
    # Initrd installs modules into the root file system.
    # Need only on first boot.
    initrd=initrd.gz
    
    mem=500
    
    eth0=tuntap,"coLinux",12:34:56:78:9A:BC
    eth1=ndis-bridge,"LAN",12:34:56:78:9A:BD
    
    # Run an application on colinux start (Sample Xming, a Xserver)
    #exec0=C:\Programs\Xming\Xming.exe,":0 -clipboard -multiwindow -ac"
    

    und die gentoo-installationsbefehle

    wget -c http://mirrors.sec.informatik.tu-darmstadt.de/gentoo/releases/x86/current/stages/stage3-i686-2008.0.tar.bz2
    wget -c http://mirrors.sec.informatik.tu-darmstadt.de/gentoo/snapshots/portage-latest.tar.bz2
    mkfs.ext3 /dev/cobd2
    ! mkdir /mnt/gentoo
    mount -o noatime /dev/cobd2 /mnt/gentoo
    tar xvjpf stage3-*.tar.bz2 -C /mnt/gentoo
    tar xvjf portage-latest.tar.bz2 -C /mnt/gentoo/usr
    cp -L /etc/resolv.conf /mnt/gentoo/etc/
    mount -t proc none /mnt/gentoo/proc
    mount -o bind /dev /mnt/gentoo/dev
    chroot /mnt/gentoo /bin/bash
    env-update
    source /etc/profile
    #emerge --sync
    
    rm /etc/locale.gen
    echo en_US ISO-8859-1 >> /etc/locale.gen
    echo en_US.UTF-8 UTF-8 >> /etc/locale.gen
    echo de_DE ISO-8859-1 >> /etc/locale.gen
    echo de_DE@euro ISO-8859-15 >> /etc/locale.gen
    locale-gen 
    
    cp /usr/share/zoneinfo/Europe/Berlin /etc/localtime
    
    rm /etc/make.conf
    echo 'CHOST="i686-pc-linux-gnu"' >> /etc/make.conf
    echo 'CFLAGS="-march=athlon -O2 -pipe -fomit-frame-pointer"' >> /etc/make.conf
    echo 'CXXFLAGS="${CFLAGS}"' >> /etc/make.conf
    echo 'ACCEPT_KEYWORDS="~x86"' >> /etc/make.conf
    
    emerge --unmerge sys-libs/ss
    emerge --unmerge sys-fs/e2fsprogs
    emerge --unmerge sys-libs/com_err
    
    emerge -uDN world
    echo -5 | etc-update
    
    emerge -e world
    echo -5 | etc-update
    
    rm /etc/fstab
    echo -e "/dev/cobd1 /               ext3            noatime                0 1" >> /etc/fstab
    echo -e "shm        /dev/shm        tmpfs           nodev,nosuid,noexec    0 0" >> /etc/fstab
    
    rm /etc/conf.d/net
    echo 'config_eth0=("192.168.200.2/24")' >> /etc/conf.d/net
    echo 'routes_eth0=("default via 192.168.0.1")' >> /etc/conf.d/net
    echo 'config_eth1=("192.168.1.252/24")' >> /etc/conf.d/net
    echo 'dns_servers_eth1=( "192.168.1.253" )' >> /etc/conf.d/net
    
    cd /etc/init.d
    ln -s net.lo net.eth0
    ln -s net.lo net.eth1
    rc-update add net.eth0 default
    rc-update add net.eth1 default
    
    echo "127.0.0.1 cokirk.volkard.lan cokirk localhost" > /etc/hosts
    sed -i -e 's/HOSTNAME.*/HOSTNAME="cokirk"/' /etc/conf.d/hostname
    hostname cokirk
    
    passwd
    
    sed -i -e 's/rc_parallel=.*/rc_parallel="YES"/' /etc/rc.conf
    sed -i -e 's/RC_PARALLEL_STARTUP=.*/RC_PARALLEL_STARTUP="yes"/' /etc/conf.d/rc
    
    rc-update del consolefont boot
    rc-update add sshd default
    
    exit
    
    halt
    

Log in to reply