Linux naast MS Windows
Dus Ook Samen

voordracht bij de DOSgg op zaterdag 22 januari 2000
voordracht bij afdeling Groningen op dinsdag 25 januari 2000
door Johan Swenker, Swenker@NL.Linux.org

Inleiding bij de webpresentatie

Op verschillende plaatsen in deze presentatie staan links. De meeste links verwijzen naar de uitvoer van het bijbehorende commando in de vorm van een GIF-file. Deze files zijn 10 to 60 kbyte groot. Een paar links verwijzen naar leveranciers waar software te downloaden is.
De hele presentatie inclusief alle gelinkte plaatjes is hier als een gezipte file (pkzip formaat) van 360kbyte te downloaden.

Inleiding

Ik ben Johan Swenker, coordinator van de Linux werkgroep van de afdeling Groningen van de HCC. 17 Jaar geleden kwam ik met Unix in aanraking. Sindsdien wilde ik Unix op mijn eigen computer hebben.
Toen ik 7 jaar geleden Linux wilde gaan installeren, was mijn eerste vraag: kan ik nog bij mijn DOS-bestanden? Die vraag blijkt nog steeds de meest voorkomende vraag te zijn. Ik zal die vraag vandaag een beetje uitgebreider beantwoorden als simpelweg "ja".

Inhoud

De onderwerpen die aan bod komen zijn: Ondertussen vertel ik het een en ander over Linux.

Benaderen van de DOS-schijf

Ik zal het eenvoudig houden. Ik ga uit van 2 IDE-disken en een ATAPI CD-Rom speler, zoals ze in mijn computer zitten. Eén IDE-disk zit als master op het eerste IDE-interface. De eerste partitie van die schijf heet in DOS de C-schijf. Onder Linux is dat /dev/hda1. Onder Linux heet de 2e partitie van diezelfde schijf /dev/hda2. Mijn andere harde schijf zit als slave op dit zelfde interface. De hele disk heet /dev/hdb; de individuele partities heten /dev/hdb1, /dev/hdb2, etc. Mijn CD-speler is de master op het tweede IDE-interface. De hele disk heet /dev/hdc. Op CD's worden nooit partities aangemaakt.
Huiswerkopgave: hoe zou de slave op het 3e IDE-interface heten?

Als gewone gebruiker mag ik de schijf niet direct aanspreken:
$ strings /dev/hda1
strings: /dev/hda1: Permission denied
Als systeembeheerder, in MS Windows NT termen administrator, in Unix termen root, mag ik dat wel. Het leukste commando ter demonstratie vind ik strings /dev/hda1 | less.
strings haalt alle leesbare tekens uit het bestand
less laat de invoer pagina voor pagina zien, net als more
| (het pipe-symbool) de uitvoer van het ene programma is de invoer voor het volgende programma.
# strings /dev/hda1 | less
Linux is multi tasking. Beide commando's worden kwasi gelijktijdig uitgevoerd. Anders zou een tussenbestand van ongeveer de hele disk gemaakt moeten worden. Bladeren we door de uitvoer heen, dan zien we een typische FAT structuur. Mensen die met bijvoorbeeld Norton Commander wel eens naar de schijf gekeken hebben zullen dit herkennen. Zoeken we /AUTO vinden we de directory, zonder punt tussen de AUTOEXEC en BAT.

Kortom: als het moet kunnen we op deze manier bij de inhoud van de files. Maar handig is anders.

Benaderen van files op een FAT-filesysteem

Je zou dus een programma kunnen schrijven dat weet hoe een FAT in elkaar zit; dat weet hoe een directory in elkaar zit; dat losse files kan lezen. Bij Linux is het zo: als het kan, als je een beschrijving kunt vinden en als je een programmeur kunt vinden die er belang bij heeft, dan bestaat het. Met de mtools programma-verzameling kun je op deze manier files verwerken. Het bevat onderdelen met als namen mdir en mtype.
# mdir C:
# mtype C:autoexec.bat

Dit werkt, ik gebruik het vooral om losse files naar een DOS-geformatteerde floppy te copieren. Als ik veel met een DOS-geformatteerde disk wil doen, dan zorg ik ervoor dat deze disk een onderdeel wordt van de Linux-filestructuur. Op mijn machine heb ik dat gedaan met de C-schijf en de D-schijf. Ik heb er zelf de namen /Cdos en /Ddos voor verzonnen.
$ cd /Cdos
$ ls
$ cat autoexec.bat

Op mijn C-schijf staat een hele directory boom van files. In Windows worden deze aangeduid met C:\dirnaam\filenaam. In Linux wordt zo'n hele boom opgehangen in de Linux filestructuur: je neemt een directory, bijvoorbeeld /mnt/documenten, daarin hang je met het mount commando de directory boom van een hele disk.
# umount /Cdos
Het koppelen van twee directory bomen
# mount -t vfat /dev/hda1 /mnt/documenten
mount het commando om te koppelen, mounten heet dat in Unix
-t vfat geeft aan dat het een FAT-filesysteem betreft
/dev/hda1 geeft aan dat het filesysteem op /dev/hda1 staat
/mnt/documenten geeft aan dat de hele boom hier opgehangen moet worden.
# ls /mnt/documenten
# umount /mnt/documenten
# mount /Cdos

Op een vergelijkbare manier kun je ook een share koppelen van een MS Windows NT fileserver of van de MS Windows 95 machine van je vader/zoon. Op een vergelijkbare manier kun je de files op de CD-rom in de algemene directory boom ophangen.

Uitstapje: andere filesystemen

Linux gebruikt normaal het ext2 filesysteem. Dit kent zaken die bij een modern operatingsysteem horen, zoals lange filenamen, snelkoppelingen (symbolic links heten die in Unix) en eigendomsrechten. Unix gebruikt een paar zaken die niet in MS Windows 95 voorkomen, onder andere de device files in /dev en eigendomsrechten per file.

Om Unix op je W95 systeem te draaien moet je dus iets bijzonders doen:

Met de huidige versie van Linux kun je ook files op het NT-filesysteem verwerken.

Partitioneringsadvies (voor thuissystemen)

Als je partities voor Linux gaat maken, dan raad ik je aan om er meteen 3 te maken: drie partities voor Linux
  1. een partitie van ongeveer 10 Mbyte voor /boot. Hierin komen files die door de BIOS tijdens het booten gelezen worden. Omdat de BIOS de files moet kunnen benaderen moet de hele partitie in de eerste 512 Mb resp 8 Gb liggen.
  2. een swappartitie van 16 Mb tot 128 Mb. Dit wordt gebruikt als uitbreiding op het fysieke RAM van de machine. Wil een swappartitie nuttig zijn, dan moet die een omvang hebben die minimaal vergelijkbaar is met je fysieke RAM. Op je oude trouwe 486 met een 120 Mbyte harde schijf en 8 Mbyte geheugen zul je merken dat je een swappartitie van 16 Mb nodig hebt.
  3. een partitie met de rest van het filesysteem.
Voor multi-user productie servers gelden heel andere regels. Die systemen zullen ingericht worden door professionele Unix systeem beheerders.

Benutten van files in open-standaard formaat

We hebben gezien dat we files kunnen lezen. We gaan nu bekijken of we de files kunnen begrijpen, kunnen verwerken. Als voorbeelden kies ik een jpg-file, een html-file en een textfile.

Joint Photographic Experts Group

Als jpg-file heb ik een heel mooie foto. Ik hoop dat niemand zich stoort aan dit soort foto's. Ik bekijk ze met
$ seejpeg bill.jpg -F G640x480x32k

Voor de rest van de demonstratie is een grafische mode beter. Ik kies er voor om Linux in tekst mode op te starten en dan, als ik dat wil, over te gaan in grafische mode. Er zijn dagen dat ik de grafische mode helemaal niet gebruik.

$ xinit
We kunnen nu grafische tools gebruiken om onze jpeg file aan te passen.
$ xv bill.jpg
Met xv kun je eenvoudige wijzigingen in het plaatje aanbrengen. En soms is dat voldoende. Als je echt iets moois wilt maken, dan gebruik je The GIMP (GNU Image Manipulation Program). Dit heel complete pakket is ook voor MS Windows beschikbaar. Ik heb laatst het recept opgevolgd en de volgende tekening gemaakt.
$ gimp voorbeeld.jpg

Hypertext Markup Language

HTML-files zijn de files waarin internet documenten geschreven zijn. Het aanmaken, genereren van zo'n file doe ik bij voorkeur met een tekst editor:
$ vi samen.html
Dit is de presentatie van vandaag, zoals die op Internet beschikbaar komt. Ik geef de voorkeur aan vi als tekst-editor. Er zijn veel meer van dit soort tekst editors. Mensen die net uit de DOS-wereld gestapt zijn geven vaak de voorkeur aan joe of pico. Veel ervaren Linux gebruikers geven de voorkeur aan Emacs (Eight Megabytes And Constantly Swapping) vanwege de grote flexibiliteit.

Het bekijken van een file gaat met willekeurig welke browser. Ik zal er twee laten zien:
$ lynx samen.html
Dit is de Linux manier van werken. Platte tekst zonder franje. Mensen gebruiken lynx als ze over een traag modem ingelogd zijn bij hun internet provider.

$ netscape ./samen.html
Dit is gewoon de standaard netscape. Op mijn machine heb ik Netscape 4.03 geinstalleerd. De Linux versie van Netscape loopt parallell aan die voor Windows. Dit betekent dat je ook met de composer van Netscape HTML-bestanden kunt aanmaken.

Tekst file

Ik heb vi reeds laten zien om een HTML-file te maken. Maar laat ik even een echte DOS txt-file in vi openen:
$ vi /Cdos/bootlog.txt
Elke regel eindigt in ^M. In Unix eindigt een regel met een enkele linefeed (ascii 10). In DOS eindigt een regel met een carriage return - line feed combinatie (hex: 0D 0A) Bij het uitwisselen van txt-files tussen Linux en DOS moet je hier rekening mee houden.
De meeste Linux commando's kunnen hier rekening mee houden. Zo zal het print-commando de returns toevoegen om het zogenaamde staircase effect te voorkomen.

Benutten van files in proprietary formaat

Feitelijk was zo'n txt-file al bijna in proprietary formaat. Ik doel nu echter op MS-Office en WP-files.

WordPerfect

WordPerfect word tegenwoordig door Corel verkocht. Voor Linux is een vrije versie te downloaden.
$ xwp (na het openen van bemi.wp)
Het enige voorbeeld in WordPerfect wat ik heb is een document wat de internationale esperanto fietsclub (BEMI) me ooit toegestuurd heeft. Dit is dus een document wat mij toegestuurd werd, waarvan ik niet weet op welk platform het aangemaakt is. Ik kan het onder Linux verwerken.

Microsoft Office

Om MS-Office documenten te verwerken gebruik ik StarOffice.
$ soffice -geometry 715x485
StarOffice mag gratis gebruikt worden. Je hoeft slechts een file van 70 Mbyte te downloaden vanaf de website van SUN.
Spreadsheet.xls openen Dit is een spreadsheet wat ik midden vorig jaar toegezonden kreeg toen ik een nieuw notebook zocht. Het is een gewoon Excel spreadsheet wat ik met StarOffice kan aanpassen en naar een MS Windows-gebruiker kan terugsturen.
hcc99brf.doc openen Dit is een word-document wat ik toegestuurd kreeg als uitnodiging om aan de HCC-dagen voor de DOSgg mee te doen.
Net zoals MS-Office HTML-documenten kan genereren, zo kan ook StarOffice HTML-documenten genereren. Een save as levert dit op.

Tekstverwerkers

Er zijn nog veel meer tekstverwerkers, ook grafische zoals de verwende windows gebruikers tegenwoordig verwachten. Ik noem slechts KOffice, een onderdeel van KDE. Als je op freshmeat.net gaat zoeken naar wordprocessor, dan vind je er een stuk of 10.

Ik vind het leuk om een niet-grafische tekstverwerker te demonstreren: TeX. Het TeX-document wat ik voor deze demonstratie gekozen heb is het TeXbook zelf. Dit is een document van bijna 500 pagina's. De beschrijving is iets meer dan een megabyte. Met vi kan ik wijzigingen aanbrengen:
$ vi -c :13541 texbook.tex
TeX is een combinatie van platte tekst, opmaakcodes en bij tijd en wijle heel ingewikkelde macro's. Het heeft wel iets weg van HTML. Ook daar geef je met een opmaakcodes in de tekst aan dat iets onderstreept moet zijn of zo.
Nu 2 eenvoudige wijzigingen: vervang 30 door 130 en vervang 'The' overal door 'the' 1,$ s/The/the/g. Zo, probeer dat maar eens zo snel met een grafische tekstverwerker. We moeten het wel nog omzetten in een printbaar bestand:
$ tex texbook.tex
Dat hoeft je enkel te doen als je het naar de printer wilt sturen of als je een preview doet van je document. Ik kan het nu previewen met
$ xdvi texbook.dvi
Op pagina 218 staan onze 130 priemgetallen.

Gebruiken van DOS en Windows programma's

DOS

Dosemu is iets wat op een dosemulator lijkt. Het emuleert eigenlijk alleen de BIOS-calls. Je hebt er een echte DOS bij nodig, zoals FreeDOS. Ik heb het ooit aan de praat gehad met mijn eigen harde schijf. Ik kon toen turbo pascal 5.0 draaien. Na de laatste upgrade heb ik het niet meer gebruikt.

Windows

Wat ik wel regelmatig gebruik is freecell.exe. Op mijn andere machine wordt het zo vaak gebruikt dat het gerechtvaardigt was er een eigen button voor te maken. Ik kan het ook direct met wine opstarten:

$ cd /Cdos/freecell
$ wine ./freecell.exe

Wine wordt steeds beter. Corel stopt er momenteel een hoop effort in. Ze willen hun office suite op Linux beschikbaar krijgen en denken dat wine daar een geschikte weg voor is. Wine is begonnen als Windows 3.11 emulator. Inmiddels worden ook een groot aantal systemcalls van W9x en WNT nagebootst. Toch zou ik Wine niet gebruiken als ik met Word for Windows een word document zou moeten verwerken.