Cooperative Linux – Konfigurace

30. 8. 2005
Doba čtení: 8 minut

Sdílet

Cooperative Linux vytváří nad hostitelským operačním systémem prostředí, ve kterém lze spouštět běžné linuxové distribuce. Jak lze ovlivnit vlastnosti tohoto prostředí? Jak spouštět Cooperative Linux? Jak umožnit přístup k souborům na jiných linuxových oddílech nebo i ve Windows? Jak přistupovat k CD/DVD mechanice? A co odkládací oblast?

Konfigurace Cooperative Linuxu

Cooperative logo

Prostředí vytvářené Cooperative Linuxem lze definovat při jeho vytváření, tj. při spouštění programu colinux-daemon.exe. Parametry prostředí lze programu colinux-daemon.exe předávat rozepsané na příkazovém řádku nebo pomocí konfiguračního souboru.

V současné stabilní větvi Cooperative Linuxu (0.6.x) se jedná o XML konfigurační soubor. K předání jména konfiguračního souboru slouží volba -c ( colinux-daemon.exe -c debian.colinux.xml). Při vytváření XML konfiguračního souboru lze vyjít ze souboru default.colinux­.xml.

debian.colinux.xml

<?xml version="1.0" encoding="UTF-8"?>
<colinux>
    <block_device index="0" path="\DosDevices\c:\Program Files\coLinux\Debian-3.0r2.ext3-mit-backports.1gb"
    enabled="true" />

    <cofs_device index="0" path="\DosDevices\c:\" type="flat"
    enabled="true" />

    <bootparams>root=/dev/cobd0</bootparams>

    <initrd path="initrd.gz" />

    <image path="vmlinux" />

    <memory size="64" />

    <network index="0" type="tap" />
</colinux> 

Ve vývojové větvi Cooperative Linuxu (0.7.x) již nejsou XML konfigurační soubory podporovány. Nahrazují je klasické textové soubory. K předání jména textového konfiguračního souboru slouží znak @ ( colinux-daemon.exe @debian.txt).

debian.txt

kernel=vmlinux
cobd0=Debian-3.0r2.ext3-mit-backports.1gb
root=/dev/cobd0
cofs0=\DosDevices\c:\
eth0=pcap-bridge,debian 

Program colinux-daemon.exe lze spouštět přímo z Příkazového řádku nebo z dávkového .bat souboru. Japonský KNOPPIX využívá dávkového souboru  knoppix.bat.

knoppix.bat

…
colinux-daemon.exe kernel=vmlinux initrd=minirtcl.gz mem=%MEMORY% cobd0=\Device\Cdrom0 hdc=:cobd0 ramdisk_size=100000 lang=%KNX_LANG% vga=normal nodhcp noscsi nopcmcia noagp nodma nomkxf86config %DESKTOP% xserver=Xnest_colinux rc=colinux,networking eth0=tuntap %KIP%
… 

Dávkový soubor lze doporučit i v případě použití konfiguračního souboru. Na plochu lze například umístit jednořádkový soubor debian.bat a Debian v Cooperative Linuxu pak spouštět myší.

debian.bat

start "Cooperative Debian" /D "C:\Program Files\coLinux" /min colinux-daemon.exe -c debian.colinux.xml 

Cooperative Linux jako služba

Cooperative Linux lze spouštět také jako Windows službu. K přidání služby do systému slouží volba --install-service ( colinux-daemon.exe -c sourcemage-hda5.colinux.xml --install-service "Cooperative Source Mage"). K odebrání služby je určena volba --remove-service ( colinux-daemon.exe --remove-service "Cooperative Source Mage").

Cooperative service 1

Ke spouštění služby lze použít standardního Windows příkazu net (net start „Cooperative Source Mage"). Příznivci Cygwinu pravděpodobně upřednostní příkaz cygrunsrv (cygrunsrv -S „Cooperative Source Mage“). Služby lze samozřejmě ovládat i myší. Uživatelům, kterým již myš přirostla k ruce, může posloužit services.msc (Ovládací panely/Nastroje pro správu/Služby). Pokud služba běží, lze se ke Cooperative Linuxu připojovat/od­pojovat spuštěním/zavřením konzole ( colinux-console-fltk.exe nebo  colinux-console-nt.exe).

Cooperative service 2

Kořenový systém souborů

Jedním z nejdůležitějších parametrů předávaným programu colinux-daemon.exe je umístění kořenového systému souborů. Kořenový systém souborů je určen klíčovým slovem root, obvykle root=/dev/cobd0. Speciální soubor /dev/cobd0 (COlinux Block Device) představuje první blokové zařízení (index=“0“). V souboru default.colinux­.xml je toto zařízení definováno jako soubor \DosDevices\c:\coLinux\root_fs. Pokud se soubor s kořenovým systémem souborů nejmenuje root_fs nebo je umístěn v jiném adresáři, je nutné tuto definici změnit. Samozřejmě lze také přejmenovat soubor s kořenovým systémem souborů na root_fs.

Linux ze souboru

<block_device index="0" path="\DosDevices\c:\Program Files\coLinux\Gentoo-colinux-stage3-x86-2004.3"
enabled="true" /> 

Linux z diskového oddílu

<block_device index="0" path="\Device\HarddiskVolume2"
enabled="true" /> 

Linux z diskového oddílu

V Cooperative Linuxu lze spouštět také Linux nainstalovaný na některém z diskového oddílů hostitelského počítače. Programu colinux-daemon.exe stačí sdělit, na kterém z diskových oddílů se Linux – přesněji řečeno jeho kořenový systém souborů – nachází.

Každý zkušenější uživatel Linuxu ví, že pokud je Linux nainstalován do rozšířeného oddílu (extended partition) na prvním logickém oddílu, je tento oddíl přístupný pomocí speciálního souboru /dev/hda5, případně  /dev/discs/disc0/part5.

$ ls -l /dev/discs/disc0/part5
lrwxrwxrwx  1 root root 10 Jun 28 18:11 /dev/discs/disc0/part5 -> ../../hda5 

Cooperative Linux ale nemůže k diskům přistupovat přímo. Musí využívat služeb hostitelského operačního systému, mj. musí také používat jeho adresaci. Linuxový oddíl /dev/hda5 může být pro Cooperative Linux přístupný jako \Device\Harddisk0\Partition2 nebo \Device\HarddiskVolume2. Nebo také ne. Jak zjistit správnou adresu?

Pomoci může standardní Windows příkaz diskpart.exe poskytující informace o rozdělení disku. Problém je, že své číslo zde má i rozšířený oddíl. Linuxový oddíl hda5 je pro Windows přístupný jako oddíl3. Cooperative Linux ale rozšířený oddíl ignoruje, tj. z oddíl3 se stane oddíl2 (Partition2).

C:\>diskpart.exe

Microsoft DiskPart version 5.1.3564

Copyright (C) 1999-2003 Microsoft Corporation.
V počítači: K269-3916

DISKPART> list disk

  Disk ###  Stav       Velikost  Volné     Dyn  Gpt
  --------  ----------  -------  -------  ---  ---
  Disk 0    Online        34 GB     9 GB

DISKPART> select disk 0

Nyní je vybrán disk 0.

DISKPART> list partition

  Oddíl ###  Typ              Velikost     Posunutí
  -------------  ----------------  -------  -------
  Oddíl 1    Primární            15 GB    32 KB
  Oddíl 2    Rozšířený           10 GB    15 GB
  Oddíl 3    Logický           7632 MB    15 GB
  Oddíl 4    Logický           1906 MB    22 GB
  Oddíl 5    Logický            973 MB    24 GB 

Odkládací oblast – swap

Velikost fyzické paměti přiřazené Linuxu běžícímu pod Cooperative Linuxem lze také definovat při spouštění programu colinux-daemon.exe. Standardně je přiřazeno 64 MB. Jedná se o maximální velikost přidělené paměti. Cooperative Linux ji alokuje postupně.

<memory size="64" /> 

Příkazem free si lze její velikost ověřit:

colinux:~# free
             total       used       free     shared    buffers     cached
Mem:         61516      12660      48856          0       4132       4760
-/+ buffers/cache:       3768      57748
Swap:            0          0          0 

Pokud je fyzické paměti nedostatek, lze ji rozšířit odkládací oblastí neboli swapem. Odkládací oblast je také přístupná přes cobd zařízení. Lze ji namapovat na odkládací oblast vytvořenou na některém z diskových oddílů nebo na soubor představující odkládací oblast. Soubory představující odkládací oblast lze snadno vytvořit například příkazem dd v Cygwinu nebo příkazem fsutil ve Windows. Soubory si lze ale také stáhnout. Není nutné mít obavy, nebudou se zbytečně stahovat stovky MB. Zkomprimovaná odkládací oblast velikosti 64 MB má pouze 114 bajtů.

$ ls -l swap_64Mb.bz2
-rwx------+ 1 Administrator None 114 Jul 27 02:34 swap_64Mb.bz2

$ bunzip2 swap_64Mb.bz2

$ ls -l swap_64Mb
-rwx------  1 Administrator None 67108864 Jul 27 02:34 swap_64Mb 

Pro přístup k odkládací oblasti je obvykle používáno zařízení cobd1:

<block_device index="1" path="\DosDevices\c:\Program Files\coLinux\swap_64Mb"
enabled="true" /> 

Do /etc/fstab je nutno přidat:

/dev/cobd1 swap swap defaults 0 0 

Příkazem free si lze aktuální stav opět ověřit:

colinux:~# free
             total       used       free     shared    buffers     cached
Mem:         61516      12692      48824          0       4104       4752
-/+ buffers/cache:       3836      57680
Swap:        65528          0      65528 

Přidání odkládací oblasti nacházející se na některém z diskových oddílů je obdobné. Diskový oddíl přístupný pod Linuxem jako /dev/hda7 může být pro Cooperative Linux přístupný jako  \Device\Harddisk0\Partition4.

<block_device index="4" path="\Device\Harddisk0\Partition4"
enabled="true" /> 

Samozřejmě je opět nutné sáhnout do souboru /etc/fstab.

/dev/cobd4   swap   swap   defaults   0   0 

Přístup k souborům ve Windows

Z Cooperative Linuxu lze k souborům ve Windows přistupovat síťově nebo přímo. Pokud mezi hostem a hostitelem existuje síťové propojení, lze k přenosu souborů využít všech nainstalovaných síťových služeb. Běžně se používá Samba nebo FTP. Ve starších verzích Cooperative Linux bylo možné přistupovat k souborům ve Windows pouze síťově. Od verze 0.6.2 se to změnilo. V novějších jádrech Cooperative Linuxu je implementován ovladač cofs (COoperative File System) umožňující přímý přístup k Windows souborům.

Pro přímý přístup z Cooperative Linuxu k celému disku C stačí do konfiguračního souboru přidat:

<cofs_device index="0" path="\DosDevices\c:\" type="flat"
enabled="true" /> 

Po naběhnutí Linuxu lze zařízení připojit. Typ souborového systému je cofs ( -t cofs).

mount -t cofs 0 /mnt/C
nebo
mount -t cofs cofs0 /mnt/C 

Samozřejmě lze pomocí souboru /etc/fstab zajistit, aby byla cofs zařízení při startu Linuxu automaticky připojována.

cofs0:/  /mnt/C  cofs 

Přístup k dalším linuxovým oddílům

Pokud má být Linuxu běžícímu pod Cooperative Linuxem umožněn přístup k dalším linuxovým oddílům, musí být tyto oddíly namapovány na další cobd zařízení. Opět lze přistupovat k reálným diskovým oddílům nebo k pouhým souborům.

Diskový oddíl

<block_device index="2" path="\Device\Harddisk0\Partition3"
enabled="true" /> 

Soubor

<block_device index="2" path="\DosDevices\c:\Program Files\coLinux\home"
enabled="true" /> 

Soubory představující diskové oddíly lze stáhnout stejně jako soubory představující odkládací oblasti. Samozřejmě je lze dle individuálních požadavků snadno vytvořit. Například přímo v Cooperative Linuxu.

colinux:/mnt/C/Program Files/coLinux# dd if=/dev/zero of=home bs=1k count=100k
102400+0 records in
102400+0 records out
104857600 bytes transferred in 57.927445 seconds (1810154 bytes/sec)

colinux:/mnt/C/Program Files/coLinux# mke2fs -j home
mke2fs 1.27 (8-Mar-2002)
home is not a block special device.
Proceed anyway? (y,n) y
… 

V Cooperative Linuxu je lze také vyzkoušet.

colinux:/mnt/C/Program Files/coLinux# mount -o loop home /home
EXT3 FS on loop0, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting.  Commit interval 5 seconds

colinux:/mnt/C/Program Files/coLinux# mount
/dev/cobd0 on / type ext3 (rw,errors=remount-ro)
proc on /proc type proc (rw)
tmpfs on /dev/shm type tmpfs (rw)
cofs0:/ on /mnt/C type cofs (rw)
/mnt/C/Program Files/coLinux/home on /home type ext3 (rw,loop=/dev/loop0) 

Pak už je třeba jenom při spouštění programu colinux-daemon.exe namapovat vytvořený soubor na cobd zařízení a v Cooperative Linuxu dané cobd zařízení připojit.

<block_device index="2" path="\DosDevices\c:\Program Files\coLinux\home"
enabled="true" /> 
colinux:~# mount /dev/cobd2 /home
EXT3 FS on cobd2, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting.  Commit interval 5 seconds

colinux:~# mount
/dev/cobd0 on / type ext3 (rw,errors=remount-ro)
proc on /proc type proc (rw)
tmpfs on /dev/shm type tmpfs (rw)
cofs0:/ on /mnt/C type cofs (rw)
/dev/cobd2 on /home type ext3 (rw) 

Pokud má být dané zařízení připojováno automaticky, stačí jej zmínit v souboru  /etc/fstab.

/dev/cobd2      /home           ext3 

Přístup k CD/DVD

Pro přístup k CD/DVD (dále jen CD) je opět nutné vytvořit další cobd zařízení:

<block_device index="3" path="\Device\Cdrom0"
enabled="true" /> 

Zařízení cobd3 lze následně v Linuxu připojit:

bitcoin_skoleni

mount -t iso9660 /dev/cobd3 /mnt/cdrom/
nebo
mount /dev/cobd3 /mnt/cdrom/ 

K CD nelze přistupovat současně z Windows i z Linuxu. Pokud je CD používáno ve Windows – stačí, aby byl obsah CD zobrazen v okně průzkumníka – příkaz mount v Linuxu pouze vypíše zprávu „ mount: /dev/cobd3: unknown device“. Po zavření okna průzkumníka a zopakování příkazu mount bude CD připojeno. Platí to i obráceně. Pokud je CD připojeno v Linuxu, tak průzkumník ve Windows zobrazuje u CD pouze prázdné okno.

Příště …

Konfigurace počítačové sítě a možnosti grafického přístupu k Linuxu běžícímu pod Cooperative Linuxem.

Autor článku