RPCEmu: RISC OS onder linux

Het is al weer een maand geleden sinds m'n 1e artikel over RPCEmu. Sinds die tijd heb ik weer allerlei dingen ontdekt en ben ik eindelijk achter gekomen hoe je CD-ROM ondersteuning kan activeren. In ieder geval leg ik deze keer uit hoe je de RISC OS 4 Boot installeert en netwerk-ondersteuning aan de gang krijgt.

Verder was ik de vorige keer vergeten te vertellen dat na installatie van de emulator je ook nog het configuratie-bestand rpc.cfg moet aanpassen. Doe je dit namelijk niet dan heb je geen geluid en crasht de emulator met RISC OS 4 al na een minuut. Zorg dat rpc.cfg in ieder geval het volgende bevat:

mouse_following = 1
cdrom_type = 0
cdrom_enabled = 1
blit_optimisation = 0
refresh_rate = 60
stretch_mode = 0
sound_enabled = 1
vram_size = 2
cpu_type = ARM710
mem_size = 32
ipaddress = 172.31.0.1

De vorige keer had ik ook laten zien hoe je de Boot voor RPCEmu installeert. Deze boot is als 1e stap goed genoeg maar als je een beetje functioneel werkend RISC OS wil hebben met netwerk-ondersteuning dat kan je beter een complete Boot installeren. Welke Boot je installeert hangt af van het versienummer van RISC OS. Gebruik je RISC OS 3 dan raad ik je aan de Universal Boot van Acorn te installeren. Deze kan je ophalen van de Acorn FTP site bij riscos.com. Aangezien ik al eerder aanraadde RISC OS 4 te gebruiken gaan we er in dit artikel niet op in hoe je deze Boot kan installeren. De RISC OS 4 Boot is eenvoudig te installeren via een installeer-progamma. Deze kan je ophalen bij de public resources bij riscos.com.

Vergroten ADFS harddisk

Eer je de Boot gaat installeren moet je de ADFS harddisk image groter maken. Deze is nog 50MB en dat is aan de krappe kant als je een goed functionele Boot wil hebben die je later nog kan uitbreiden. Je zal dus de ADFS harddisk moeten formateren maar eerst ga je de originele Boot overzetten op de HostFS disk. Start de emulator en wacht tot het systeem opgestart is. Open ADFS IDEDisc4 en open vervolgens de Boot applicatie !Boot door met shift ingedrukt te houden te dubbelklikken. Ga vervolgens naar de map Choices.Boot.Task en open de applicatie !hostfs. Bewerk vervolgens het bestand !Run door met shift ingedrukt te houden te dubbelklikken. Het bestand wordt nu geladen in Edit. Wijzig nu de volgende regel:

rmensure hostfs 0 rmload <hostfs$dir>.hostfsrm

naar:

rmensure ArcEmHostfs 0 RMLoad <hostfs$Dir>.hostfsrm

Pic2

Aanpassen !Run van applicatie !hostfs

Bewaar het bestand door het bewaarvenster te openen (of druk op F3) en vervolgens 'OK' te klikken. Open vervolgens de HostFS disk en kopieer de !Boot van de IDEDisc4 naar de HostFS disk door de !Boot-applicatie te slepen naar het lege Filer venster van de HostFS disk. Druk na het kopiëren op F12 en voer het volgende commando uit:

*configure filesystem HostFS

Het systeem staat nu ingesteld om bij de volgende herstart van de HostFS disk te booten. Ga terug naar de desktop, sluit RISC OS (druk Shift+CTRL+F12) af en stop de emulator. Open nu een linux console. Ga naar de map waar de rpcemu executable staat en voer de volgende kopieer opdracht uit:

cp hostfs/\!Boot/Choices/Boot/Tasks/\!hostfs/hostfsrm,ffa podulesroms/

De hostfs module van je !Boot is nu gekopieerd naar de map poduleroms. In de map poduleroms kan je allerlei modules zetten die je geladen wilt zien voordat RISC OS gaat booten. Dit is in dit geval ook nodig omdat RISC OS standaard geen HostFS ondersteuning heeft en dus niet vanaf de HostFS disk kan booten als de HostFS module niet geladen zou zijn.

Haal HForm op van de Arculator website en pak het zip-archief uit. Dit kan met:

wget http://b-em.bbcmicro.com/arculator/rpchform.zip
unzip rpchform

Start de emulator en open het menu van RPCEmu door de toetsen CTRL en END tegelijkertijd in de drukken. Ga vervolgens naar optie 'Disc' en klik vervolgens op optie 'Load drive :0...' en selecteer in het volgende venster het bestand hform.adf en klik vervolgens 'OK'. Open nu de floppy drive door op het symbool :0 onderdaan de desktop te klikken. Er verschijnt nu de inhoud van de hform diskimage. Controleer voordat je HForm opstart of je niet naast de !Boot al andere dingen op IDEDisc4 disk had neergezet. Is dit wel het geval dan kopieer deze naar de HostFS disk want HForm wist namelijk de complete inhoud van IDEDisc4! Start !HForm en initialiseer de ADFS harddisk met deze opties:

Pic4


Je hebt nu een nieuwe ADFS harddisk image die zo'n 504MB groot is. Mocht je een grotere image willen dat moet je het aantal cylinders verhogen. Let op dat je de parkeer cylinder (parking cylinder) altijd op het cylinder aantal - 1 zet. Verder zorg ervoor dat je de LFAU waarde die HForm opgeeft, altijd vermenigvuldigt met 2. Dus als HForm 1024 geeft, je 2048 invult.

Je zou er voor kunnen kiezen om de Boot op de HostFS disk te installeren. Dan ben je qua ruimte alleen afhankelijk van de vrije ruimte van de harde schijf van je linux systeem. Je hoeft dan niet elke keer een grotere image te maken als de ADFS harddisk vol loopt. Toch raad ik je aan dit niet te doen omdat HostFS helaas niet compleet ADFS compatibel is waardoor sommige applicaties niet juist kunnen werken. Neem bijvoorbeeld !UnixHome. Deze applicatie wordt gebruikt voor het bewaren van instellingen van applicaties die van origine uit een unix-omgeving komen. Aangezien de bestanden/mappen waarin de instellingen zijn meestal beginnen met een / (een punt onder unix) worden deze op de HostFS disk onzichtbaar en zijn ze niet meer benaderbaar door RISC OS.

Installatie RISC OS 4 Boot

Ga in de console naar de map hostfs en download het Boot installatieprogramma van de riscos.com pagina:

wget http://support.riscos.com/Support/Releases/RO4install.zip
mv RO4install.zip RO4install,ddc

Mocht je de tip van vorige week over het installeren van een uitpak-programma al uitgevoerd hebben dan kan je het nu volgende gedeelte overslaan. Haal het bestand splug.bas op van David Pillings website en hernoem het naar splug,ffb of gebruik wget:

wget http://www.davidpilling.net/splug.bas
mv splug.bas splug,ffb

Open vervolgens de HostFS disk in de emulator en dubbelklik op het basic-bestand splug. Nadat de applicatie !SparkPlug is aangemaakt, dubbelklik op het zip-bestand RO4install en sleep de !RO4Install applicatie naar ADFS Harddisc4.

Pic5

RISC OS 4 Installer

Start nu het installeerprogramma !RO4Install. Nadat het hoofdvenster is geopend, sleep je het Boot symbool vanuit dit venster naar het Filer venster van Harddisc4. Klik vervolgens 'Continue' en klik in het volgende venster op 'Start install'. Er verschijnt nu een waarschuwing. Klik in dit venster ook 'Continue'. Klik vervolgens nog eens 'Continue' in het volgende venster en wacht totdat het installeerprogramma klaar is met de installatie. Klik nu vervolgens op 'Continue' om de extra Applicaties en Utilities te installeren. Klik 'Continue' om de installatie te starten. Na installatie klik op 'Exit' om het installeerprogramma te verlaten. Druk op F12 en voer de volgende commando's uit:

*configure filesystem ADFS
*configure drive 4

Nu start RISC OS weer op van de ADFS Harddisc4 bootimage. Ga terug naar de desktop en open de !Boot applicatie op de HostFS disk. Open vervolgens de map Choices.Boot.Task. Kopieer nu de !hostfs applicatie naar dezelfde map als in de net geïnstalleerde !Boot. Sluit RISC OS af en klik op 'Restart' om RISC OS opnieuw op starten.

Je hebt nu een volledige functionele Boot inclusief extra applicaties en utilities zoals !Maestro, !SciCalc, !Squash, !Printers en !ChangeFSI.

Netwerk-ondersteuning

RPCEmu maakt gebruikt van een TAP-tunnel device om te communiceren tussen de emulator en je linux systeem. Helaas mogen deze interface devices alleen door root worden aangemaakt wat betekent dat RPCEmu met root-rechten gedraaid moet worden. Om dit te bewerkstelligen heb je twee methodes:

1. Gebruik sudo om RPCEmu te starten:

sudo ./rpcemu

RPCEmu zal na het aanmaken van de interface meteen de root-rechten uitzetten en draaien als een taak van de gebruiker. Het nadeel van deze methode is dat je elke keer het root-wachtwoord moet invoeren om RPCEmu te starten.

2. Maak root de eigenaar van de rpcemu executable en stel de s-bit in voor de gebruiker. Op deze manier wordt RPEmu gestart als een taak van de root. Om te zorgen dat ook via deze methode de root-rechten weer teniet worden gedaan moet je de volgende regel toevoegen aan het bestand rpc.cfg:

username = < je gebruikersnaam, op te vragen met: echo $USER >

Het instellen van de rpcemu executable gaat als volgt:

sudo chwon root rpcemu
sudo chmod u+s rpcemu

Controleer nu of het IP-adres klopt in rpc.cfg. Dit zou als volgt moeten zijn:

ipaddress = 172.31.0.1

Start nu RPCEmu op met root-rechten. Als het goed is krijg je geen berichten meer als:

Error setting TAP on tunnel device: Operation not permitted
Networking unavailable

in je linux console.

Controleer vervolgens of de emulator een tap interface heeft aangemaakt en deze juist heeft ingesteld. Gebruik bijvoorbeeld:

ifconfig -a

om het te controleren. Je moet ongeveer het volgende krijgen:

Pic6

Probeer nu de interface te pingen:

ping 171.31.0.1

Als het goed krijg je dit:

PING 172.31.0.1 (172.31.0.1) 56(84) bytes of data.
64 bytes from 172.31.0.1: icmp_seq=1 ttl=64 time=0.079 ms
64 bytes from 172.31.0.1: icmp_seq=2 ttl=64 time=0.069 ms

De emulator is nu goed ingesteld. Vervolgens moet RISC OS geconfigureerd worden maar eerst haal je de nieuwe !System op van Castle:

cd hostfs
wget http://www.iyonix.com/32bit/download/System.zip
mv System.zip System,ddc

Kopieer vervolgens de map EtherRPCEM naar de hostfs map:

cp -r riscos-progs/EtherRPCEm/ hostfs/

Onder RISC OS open je de HostFS disk en pak je het bestand System uit op de HostFS disk. Dubbelklik nu op het bestand !SysMerge. Hiermee worden de laatste CLib module en andere belangrijke modules toegevoegd aan de !System in je !Boot. Open vervolgens de EtherRPCEm map en kopieer de !Boot in deze map over je !Boot die op ADFS Harddisc4 staat. Dit installeert een detectie-programma voor de EtherRPCEm netwerkmodule. Dubbelklik nu op de !Boot van je Harddisc4. Je krijgt nu het configuratie-venster waar je RISC OS mee kan instellen. Klik op 'System' om het System samenvoeg-venster te openen. Sleep de !System van de EtherRPCEm map naar dit venster en klik vervolgens op 'Merge'. Hiermee wordt de EtherRPCEm netwerkmodule geïnstalleerd.

Pic7

RISC OS !System Merge

Klik in het configuratie-venster op 'Network' en vervolgens in het volgende venster op 'Internet'. Zet het TCP/IP Protocol aan en klik op op 'Interfaces'. Zet de RPCEmu interface aan en klik op 'Configure...'. Stel de volgende opties in dit venster:

Pic8

Klik 'Set' en vervolgens 'Close' in het Interface-venster. Klik nu op 'Routing' en vul het volgende in:

Pic9

Klik op 'Set' en klik vervolgens op 'Host names' en stel deze opties in:

Pic11

Vul voor de Primary en de Secondary name server de IP-adressen in die in het bestand /etc/resolv.conf staan.

Klik op 'Set' en daarna op 'Close' in het Internet configuration venster. Klik vervolgens op 'Set' in het Network configuration venster. Er verschijnt nu een waarschuwing. Klik op 'Reset now' om RISC OS opnieuw op te starten.

Nadat de emulator opnieuw is opgestart open je een taakvenster (CTRL+F12) en voer je het volgende commando uit:

*ifconfig -a

Als het goed is moet de rpcem0 interface nu actief zijn en krijg je dit:

Pic12

Probeer nu 172.31.0.1 (de emulator gateway) te pingen en vervolgens het IP-adres van je linux systeem. Als dat allemaal goed gaat hoef je alleen nog packet forwarding aan te zetten op je linux systeem. Mocht je een linux hebben met een draaiend firewall-pakket dan raad ik je aan dit te gebruiken om packet forwarding aan te zetten. Je kan dit natuurlijk ook met de hand doen met de volgende commando's:

sudo iptables -I FWDINTERNET -j ACCEPT
sudo iptables -I FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING --source 172.31.0.0/16 -o eth0 -j MASQUERADE
sudo echo "1" > /proc/sys/net/ipv4/ip_forward
sudo echo "1" > /proc/sys/net/ipv4/ip_dynaddr

Let op dat netwerk interface eth0 wel ingesteld moet zijn als de interface waar je internet-aansluiting op zit. Probeer nu wat internetsites te pingen zoals: bigbenclub.nl, google.com of riscos.com. Als dat lukt dan kan je met RPCEmu internetten onder RISC OS.

Installatie NetSurf

Je hebt nu internet onder RISC OS maar om op het World Wide Web (WWW) te komen heb je nog een browser nodig. Een goede browser voor RISC OS is bijvoorbeeld NetSurf. Deze kan je downloaden van http://www.netsurf-browser.org. Ga weer naar de map hostfs en download de laatste versie van NetSurf of gebruik weer wget:

wget http://www.netsurf-browser.org/downloads/development/netsurf.zip

Hernoem neturf.zip weer naar netsurf,ddc en open onder RISC OS het netsurf zip-bestand. Maak vervolgens een map Internet aan op Harddisc4 en pak de inhoud van het zip-bestand uit in deze map. Open het configuratie-venster van RISC OS (dubbelkliken op !Boot) en gebruik het BootMerge en SystemMerge venster om de !Boot en !System uit de Internet map samen te voegen met je huidige !Boot en !System. Sluit RISC OS af en herstart de emulator opnieuw. Ga naar de map Internet en start de applicatie !NetSurf. Klik op het NetSurf-symbool onderaan de desktop om het browservenster te openen. Voer een geldig webadres bovenaan in de url-balk en druk op RETURN. Voilà je zit nu op het world wide web.

Pic13

NetSurf draaiend met RPCEmu

Diverse links

Acorn FTP bij riscos.com http://acorn.riscos.com/acornftp.htm

RISC OS 4 Public support http://support.riscos.com/Support/index.htm

NetSurf http://www.netsurf-browser.org