LDP/LDP/howto/docbook/JavaStation-HOWTO.sgml

3378 lines
109 KiB
Plaintext

<!DOCTYPE Article PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
<!--
Here's the current source for the Linux on JavaStation HOWTO
Thanks for checking out the source.
Things to do:
1) All requests have been merged.
-->
<Article>
<ArtHeader>
<!-- Title information -->
<Title><Application>Linux</Application> on the <ProductName>Sun JavaStation
</ProductName> <Acronym>NC</Acronym> HOWTO</Title>
<TitleAbbrev>JavaStation-HOWTO</TitleAbbrev>
<Author>
<FirstName>Robert S.</FirstName><Surname>Dubinski</Surname>
</Author>
<AuthorInitials>RSD</AuthorInitials>
<!--
<Ulink url="mailto://dubinski@mscs.mu.edu">dubinski@mscs.mu.edu</Ulink>
Is there any real valid way of adding an email address in the artheader
and still include both FirstName and SurName? And is there a MidName tag?
Email me and let me know.
-->
<Publisher>
<PublisherName>Linux Documentation Project</PublisherName>
</Publisher>
<PubDate>2000-Jun-16</PubDate>
<Abstract>
<Para>
This is a HOWTO document describing how to enable the <Application><Acronym>GNU</Acronym>/Linux <Acronym>OS</Acronym></Application> on the Sun JavaStation NC.
</Para>
<!-- removed tags from above paragraph due to stylesheets goofing with it -->
</Abstract>
</ArtHeader>
<!-- Begin the document -->
<Sect1 id="MetaInfoChapter">
<Title>META Information</Title>
<Para>
This section lists the meta-information of this document. The
hows, whys, location and changes to the structure of the document
are documented here. The main content begins in the next chapter.
</Para>
<Sect2 id="DocumentPurposeSection">
<Title>The Purpose of this Document</Title>
<Para>
This document is to serve as a comprehensive HOWTO and <Acronym>FAQ</Acronym>
collection regarding the <ProductName>Sun JavaStation <Acronym>NC</Acronym>
</ProductName> and enabling the <Application><Acronym>GNU</Acronym>/Linux
<Acronym>OS</Acronym> </Application> on it.
</Para>
<Para>
The intended audience of this document is anyone who has an interest
in enabling <Application>Linux</Application> on the <ProductName>Sun
JavaStations</ProductName>. The document structure is laid out to
serve as either a top-to-bottom read for a newcomer, or as quick
reference on a single topic for advanced users. Pointers
to sample files submitted by users are included for
extremely hurried readers.
</Para>
<Para>
The author of this document is Robert Dubinski <Email>dubinski@mscs.mu.edu
</Email>, Computer Technician and UNIX systems administrator for <Ulink
url ="http://www.marquette.edu">Marquette University's</Ulink> <Ulink url="
http://www.mscs.mu.edu"> Math, Statistics and Computer Science
Department</Ulink>. In the <Acronym>MU MSCS</Acronym> department,
125 <ProductName>JavaStations</ProductName> are currently running
<Application>Linux</Application>, configured using the information,
techniques and files presented in this document.
</Para>
<Para>
In early 1999, Eric Brower <Email>ebrower@usa.net</Email> wrote the
first informal HOWTO for the <ProductName>JavaStation</ProductName>. Parts
of this document are inspired by his work, and all unique information
presented there have since been merged into this document.
</Para>
<Para>
This HOWTO also aims to serve as a member document of the Linux Documentation
Project. The <Acronym>LDP</Acronym> can be reached at:
<ULink url="http://www.linuxdoc.org"> http://www.linuxdoc.org</ULink>
</Para>
</Sect2>
<Sect2 id="DocumentAcknowledgementsSection">
<Title>Acknowledgments</Title>
<Para>
Enabling <Application>Linux</Application> on the <ProductName>JavaStations
</ProductName>, and allowing this HOWTO to come to be would never have
been possible without the fine work of the following people:
</Para>
<Para>
<ItemizedList>
<ListItem>
<Para>
Pete Zaitcev <Email>zaitcev@metabyte.com</Email>
(<ProductName>JavaStation</ProductName> kernel mod author)
</Para>
</ListItem>
<ListItem>
<Para>
Eric Brower <Email>ebrower@usa.net</Email>
(<Application>XFree</Application> mods and author of the original
embedded-build HOWTO)
</Para>
</ListItem>
<ListItem>
<Para>
Varol Kaptan <Email>varol@ulakbim.gov.tr</Email>
(made available his <ProductName>Krups</ProductName> images and patches.
Backported kernel support to 2.2.x series)
</Para>
</ListItem>
<ListItem>
<Para>
David Miller <Email>davem@redhat.com</Email>
(the original <Application>Linux/SPARC</Application> kernel porter)
</Para>
</ListItem>
<ListItem>
<Para>
The <Application>Linux/SPARC</Application> kernel porters and mailing list
</Para>
</ListItem>
<ListItem>
<Para>
The thousands of contributors to the <Application>Linux kernel</Application>
</Para>
</ListItem>
</ItemizedList>
</Para>
<Para>
The HOWTO author wishes to give a second thank-you to Pete
and Eric for their work:
</Para>
<BlockQuote>
<Attribution>Robert Dubinski</Attribution>
<Para>
Pete got me going with <Application>Linux</Application> on the
<ProductName>JavaStation</ProductName> in December 1998, has
been the main kernel programmer adding in support for the
<ProductName>JavaStation</ProductName> line, and despite his busy
work schedule was nice enough to find time to answer all my email
queries for help over the last 15 months.
</Para>
<Para>
Eric worked on bringing <Application>X</Application> support to the
<ProductName>JavaStation</ProductName> when it had none.
He had been working on a dedicated server for the <ProductName>
JavaStation</ProductName> in early 1999, and kept me informed of
his progress. In mid-1999, he switched tactics and sent a working
framebuffer example to test out. He also wrote the first comprehensive
mini-HOWTO for the <ProductName>JavaStations</ProductName>,
answered my email questions, and got me interested in the embedded
solution which I employ here at Marquette.
</Para>
<Para>
Thank-you Pete and Eric!
</Para>
</BlockQuote>
</Sect2>
<Sect2 id="DocumentContributorsSection">
<Title>Document Contributors</Title>
<Para>
The following people have contributed to this specific document:
</Para>
<ItemizedList>
<ListItem>
<Para>
Pete Zaitcev <Email>zaitcev@metabyte.com</Email>
(Proofreading and factual corrections of initial drafts)
</Para>
</ListItem>
<ListItem>
<Para>
Eric Brower <Email>ebrower@usa.net</Email>
(Proofreading and factual corrections of initial drafts)
</Para>
</ListItem>
<ListItem>
<Para>
Magdalena Wodzinska <Email>magdalena.wodzinska@marquette.edu</Email>
(Proofreading and document layout suggestions)
</Para>
</ListItem>
<ListItem>
<Para>
Richard Tomlinson <Email>Richard.Tomlinson@one2one.co.uk</Email>
(Document reader, Krups tester, feedback)
</Para>
</ListItem>
<ListItem>
<Para>
Michael R. Eckhoff <Email>foobar@null.net</Email>
(feedback on sample kernel)
</Para>
</ListItem>
</ItemizedList>
<Para>
If you contributed a tidbit of info and are not listed, please email
the document author to get yourself listed.
</Para>
</Sect2>
<Sect2 id="DocumentHistorySection">
<Title>History of this document</Title>
<Para>
<RevHistory>
<Revision>
<RevNumber>1.05</RevNumber>
<Date>16 Jun 2000</Date>
<RevRemark>Requested Format Changes and Fixes</RevRemark>
</Revision>
<Revision>
<RevNumber>1.04</RevNumber>
<Date>13 Jun 2000</Date>
<RevRemark>Suggested Fixes and Added Requests</RevRemark>
</Revision>
<Revision>
<RevNumber>1.03</RevNumber>
<Date>04 May 2000</Date>
<RevRemark>Minor Fixes, Requests</RevRemark>
</Revision>
<Revision>
<RevNumber>1.02</RevNumber>
<Date>28 Apr 2000</Date>
<RevRemark>Small fixes.</RevRemark>
</Revision>
<Revision>
<RevNumber>1.01</RevNumber>
<Date>25 Apr 2000</Date>
<RevRemark>"Brown Paper Bag" Revision.</RevRemark>
</Revision>
<Revision>
<RevNumber>1.0</RevNumber>
<Date>24 Apr 2000</Date>
<RevRemark>First submission to the LDP.</RevRemark>
</Revision>
<Revision>
<RevNumber>0.9</RevNumber>
<Date>18 Apr 2000</Date>
<RevRemark>Continued reorganization and final merges.
</RevRemark>
</Revision>
<Revision>
<RevNumber>0.7</RevNumber>
<Date>15 Apr 2000</Date>
<RevRemark>Migration from LinuxDoc DTD to Docbook DTD.
</RevRemark>
</Revision>
<Revision>
<RevNumber>0.71</RevNumber>
<Date>14 Apr 2000</Date>
<RevRemark>Received word doc was forwarded inside Sun.
</RevRemark>
</Revision>
<Revision>
<RevNumber>0.7</RevNumber>
<Date>14 Apr 2000</Date>
<RevRemark>Linked on Metabyte Website.
</RevRemark>
</Revision>
<Revision>
<RevNumber>0.6</RevNumber>
<Date>9 Apr 2000</Date>
<RevRemark>First semi-public release.
</RevRemark>
</Revision>
<Revision>
<RevNumber>0.4</RevNumber>
<Date>24 Mar 2000</Date>
<RevRemark>First move to comprehensive HOWTO.
</RevRemark>
</Revision>
<Revision>
<RevNumber>0.2</RevNumber>
<Date>15 Oct 1999</Date>
<RevRemark>More notes collected and merged.
</RevRemark>
</Revision>
<Revision>
<RevNumber>0.1</RevNumber>
<Date>24 Jun 1999</Date>
<RevRemark>Initial scraps put together.
</RevRemark>
</Revision>
</RevHistory>
</Para>
</Sect2>
<Sect2 id="DocumentCopyrightSection">
<Title>Document Copyright and Licenses</Title>
<Para>
This particular document and its source as a whole is Copyright 1999-2000,
Robert Dubinski <Email>dubinski@mscs.mu.edu</Email>. You may mirror or
redistribute this document as a whole or in part for either public or
commercial purposes <Emphasis>provided</Emphasis> the following: 1) you do
not make any modifications to this work , 2) retain this license information
and author copyright section, even when redistributing just a part of this
document, and 3) include acknowledgement of where this document as a whole may
be obtained . This ensures that any comments written by the document author
do not get taken out of context or modified incorrectly, acknowledges the
work of the author, allows for inclusion in commercial projects, and points
readers to where they may find potentially updated versions of the information
presented.</Para>
<Para>
The document author makes <Emphasis>no</Emphasis> warranties that all
the information presented here is completely accurate, and cannot be
held liable to any loss you experience as a result of the information
you use from here.
</Para>
<Para>
Best efforts have been made to ensure everything included is accurate as
of the publication date listed at the beginning of this document, but
there is always a possibility something may be wrong. In this case,
doublecheck with alternative sources first before considering implementing
anything at a production-level. If you find something wrong, drop the author
a line at <Email>dubinski@mscs.mu.edu</Email> or send me a patch to the
document source, and corrections will be made immediately.
</Para>
<Para>
In the future, this document may be re-released under the Open Content or
other Free Document license, but for now all Open Documentation licenses
are currently being investigated by the author. If you have comments into
this legal matter, drop the author a line at <Email>dubinski@mscs.mu.edu
</Email>. As it stands, the license presented above captures the spirit of the
<Acronym>LDP</Acronym> boilerplate license without specifically mentioning it.
</Para>
<Para>
This document is a member document of the <Ulink url="http://www.linuxdoc.org">
Linux Documentation Project</Ulink>.
</Para>
</Sect2>
<Sect2 id="DocumentLocationSection">
<Title>Location of the Latest Version and Source</Title>
<Para>
The latest online version of this document can be found at:
<ULink url="http://www.mscs.mu.edu/&tilde;tech/Linux_on_JS">
http://www.mscs.mu.edu/~tech/Linux_on_JS</ULink>
.
</Para>
<Para>
The pre-processed <Acronym>SGML</Acronym> source to this document, written to the Docbook <Acronym>DTD</Acronym>, is available from:
<Ulink
url="http://www.mscs.mu.edu/&tilde;tech/Linux_on_JS/Files/JavaStation-HOWTO.sgml"
>http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/JavaStation-HOWTO.sgml</Ulink>
</Para>
<Para>
Copies of this document are also available from the Linux Documentation
Project at: <Ulink url="http://www.linuxdoc.org/HOWTO/JavaStation-HOWTO/">http://www.linuxdoc.org/HOWTO/JavaStation-HOWTO</Ulink>.
</Para>
</Sect2>
</Sect1>
<Sect1 id="WhatIsChapter">
<Title>What is a <ProductName>JavaStation</ProductName>?</Title>
<Para>
This chapter explains to the reader what the <ProductName>JavaStation
</ProductName> line is, its components, <Acronym>NC</Acronym> concepts,
how to get one, and why one would choose the <Application>Linux
<Acronym>OS</Acronym></Application> for it.
</Para>
<Sect2 id="WhatIsJavaStationSection">
<Title>What is a <ProductName>JavaStation</ProductName> <Acronym>NC</Acronym>?
</Title>
<Para>
The <ProductName>JavaStation</ProductName> <Acronym>NC</Acronym> is a
model line of network computers built and sold by
<ULink url="http://www.sun.com">Sun Microsystems</Ulink> between
November 1996 and March 2000. The <ProductName>JavaStation</ProductName>
line was Sun's low-cost terminal option during that timeframe.
</Para>
<Para>
The <ProductName>JavaStation</ProductName> hardware ran Sun's
own <Application>JavaOS</Application> and either Sun's <Application>
Hotjava</Application> web browser, Sun's <Application>HotJava Views
</Application> task-manager software, or custom <Application>Java
</Application> applications of the customer's choice.
</Para>
<Para>
The <ProductName>JavaStation</ProductName> was originally billed in
November 1996 sneak previews as a low-cost desktop terminal,
providing customers access to hot new <Application>Java</Application>
applications, <Quote>legacy</Quote> <Application>X</Application> applications,
and <Quote>legacy</Quote> <Application>MS Windows</Application> apps.
During its lifetime, The <ProductName>JavaStation</ProductName>'s marketed
functionality was changed twice from <Quote>desktop terminal</Quote> to
<Quote>single-app desktop device</Quote> to finally a <Quote>browser-based
kiosk device</Quote>.
</Para>
<Para>
At no time did Sun market the <ProductName>JavaStation</ProductName> as
capable of running its flagship
<Ulink url="http://www.sun.com/solaris">Solaris</Ulink> operating system
or the <Ulink url="http://www.linux.com">Linux OS</Ulink>.
</Para>
</Sect2>
<Sect2 id="WhatIsNCSection">
<Title>Definition of an <Acronym>NC</Acronym> including the Differentiation
from <Acronym>PC</Acronym>'s</Title>
<Para>
A network computer, or <Acronym>NC</Acronym>, was hailed as
"the next big thing" in computing from late 1995 to early 1998.
Conventional <Acronym>PC</Acronym>'s, called "fat clients", were
expected to be minimized in businesses by thin-client
<Acronym>NC</Acronym>'s.
</Para>
<Para>
Thin-clients get their <Acronym>OS</Acronym>, applications, and data
files entirely through the network. They are different from
dumb-terminals; they run full-scale graphical applications.
Thin-clients are also different than graphical X-terminals.
X-terminals typically run an X server and display the client programs of
a remote server. Thin clients generally run full-scale graphical
programs locally, such as a web browser, a <Application>Java</Application>
application, or a <Quote>legacy-connectivity program</Quote>, which enables
the thin-client to display <Application>X</Application> apps or
<Application>MS Windows</Application> apps which run on more
powerful servers.
</Para>
<Para>
Advantages of <Acronym>NC</Acronym>'s include:
</Para>
<ItemizedList>
<ListItem>
<Para>
<Quote>Zero-Administration</Quote>. (Add a new <Acronym>NC</Acronym> and
it will get <Emphasis>everything</Emphasis> it needs off the network,
without an admin ever needing to visit it.)
</Para>
</ListItem>
<ListItem>
<Para>
Lower Total-Cost-of-Ownership (<Acronym>TCO</Acronym>) (No internal
hard drives, floppy drives or <Acronym>CD</Acronym> players reduces
form-factor, repair expenses, selling price and thus total-cost-of-ownership.)
</Para>
</ListItem>
<ListItem>
<Para>
Access to all web-based apps as well as <Quote>legacy</Quote> <Application>X
</Application> and <Application>MS Windows</Application> apps.
</Para>
</ListItem>
<ListItem>
<Para>
Quick upgrades (just upgrade your server and the changes propogate throughout)
</Para>
</ListItem>
<ListItem>
<Para>
Longer lifespan (just upgrade the software, growing hard disk and memory
requirements is not an issue)
</Para>
</ListItem>
<ListItem>
<Para>
Smaller <Acronym>OS</Acronym> footprint (when running brower-based apps)
</Para>
</ListItem>
</ItemizedList>
<Para>
Disadvantages of <Acronym>NC</Acronym>'s:
</Para>
<ItemizedList>
<ListItem>
<Para>
No local access to data files (all your files stored on a remote server)
</Para>
</ListItem>
<ListItem>
<Para>
Requires fast, stable networks
</Para>
</ListItem>
</ItemizedList>
</Sect2>
<Sect2 id="JavaStationModelsSection">
<Title>Description of the <ProductName>JavaStation</ProductName> Model
Line including Hardware Specs</Title>
<Para>
Depending on who you talk to, the number of <ProductName>JavaStation
</ProductName> models that were created is anywhere from one to six.
The descriptions below will explain why.
</Para>
<Sect3 id="MrCoffeeDescSection">
<Title>
<ProductName>JavaStation-1</ProductName> [ <Quote>Mr. Coffee</Quote>]
[<Quote>the brick</Quote>] [Sun Option No. JJ-xx]
</Title>
<Para>
This model is the most prevalent <ProductName>JavaStation</ProductName> model
you are likely to find, although it wasn't the one and only
<Emphasis><ProductName>JavaStation</ProductName></Emphasis> model Sun wished
to sell to the public. The <ProductName>JavaStation-1</ProductName> was the
first generation <ProductName>JavaStation</ProductName>, released in
November 1996 to pilot deployments as Sun's <Quote>proof of concept</Quote>
of the Java <Acronym>NC</Acronym> design.
</Para>
<Para>
Hardware-wise, the <ProductName>JavaStation-1</ProductName> is a
Sun4M architecture machine. It is based on the <ProductName>SPARCStation-4
</ProductName> design, with some deletions and <Acronym>PC</Acronym>-like
modifications. It is powered by a <Hardware>110 Mhz MicroSPARC IIe
CPU</Hardware> and has no <Hardware>SCSI</Hardware>, <Hardware>internal disks
</Hardware>, <Hardware>floppy</Hardware>, <Hardware>CD</Hardware> or
<Hardware>expansion slots</Hardware>. The <ProductName>Mr. Coffee
</ProductName> <Hardware>motherboard</Hardware> is Sun Part
No. <ProductNumber>501-3141</ProductNumber>.
</Para>
<Para>
Instead of using the Sun-type <Hardware>keyboard</Hardware> and
<Hardware>mice</Hardware>, <ProductName>JavaStation-1</ProductName>
uses <Acronym>PC</Acronym>-like <Hardware>PS2</Hardware> parts instead.
One of the original marketing highlights of the <ProductName>JavaStation
</ProductName> was that it would use standard <Acronym>PC</Acronym> parts
wherever possible to keep overall price down.
</Para>
<Para>
The <Quote>brick</Quote> has four <Hardware>PC-like SIMM</Hardware>
slots. The <Hardware>SIMMs</Hardware> taken are industry-standard
60ns, 32-bit, 72-pin, 5V fast page <Hardware>SIMMs</Hardware>,
installed in pairs. Each slot is capable of holding up to a
<Hardware>16MB SIMM</Hardware>, bringing the maximum total capacity
of the unit to 64MB. The <Quote>xx</Quote> in the Sun Option# of the
unit indicated how much memory the unit shipped with.
</Para>
<Para>
For video display, the <ProductName>JavaStation-1</ProductName> utilizes
the <Hardware>Sun TCX framebuffer</Hardware>, capable of 1024x768@70Hz in
8-bit color. The port connector however, is a <Hardware>standard VGA jack
</Hardware>, enabling the user to use standard <Acronym>PC</Acronym>
<Hardware>monitors</Hardware> if desired (again, low cost in mind).
The <Hardware>on-board audio</Hardware> is a <Hardware>Crystal CS4231 chip
</Hardware>, and the network interface is the <Hardware>Sun Lance</Hardware>
10Mbps interface. In addition, the <Quote>brick</Quote> also came with
a <Hardware>9-pin serial port</Hardware> and <Hardware>1/8" audio out jack
</Hardware> on its back.
</Para>
<Para>
The <ProductName>JavaStation-1</ProductName> was fitted into the Sun
<Quote>unidisk</Quote> form factor case, and has been seen in a number
of color schemes. <ProductName>JavaStations</ProductName> have been
fitted with casings in the white with light blue trim scheme used in
<Hardware>Sun workstations</Hardware>, as well as the dark blue-grey
<Quote>new desktop</Quote> scheme. Some say <Quote>JavaStation</Quote>
and have the Java coffee cup logo written on it, others do not.
Collectors may wish to collect all case variations.
</Para>
<Para>
The <ProductName>JavaStation-1</ProductName> was used in early
Sun demos, and sold to pilot sites. When first brought out, the
cost to pilot sites was $699US. This was at a time when <Acronym>PC
</Acronym>'s were still higher than $1000US. By the end of the pilot
run, Sun was selling any remaining or used units for $299-$399US, in
anticipation for its <Quote>real</Quote> <ProductName>JavaStation
</ProductName> model.
</Para>
<Para>
See the <ProductName>JavaStation-1</ProductName> at:
<ULink
url="http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/mr_coffee_front_view.jpg">
http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/mr_coffee_front_view.jpg
</Ulink>
</Para>
</Sect3>
<Sect3 id="KrupsDescSection">
<Title>
<ProductName>JavaStation-<Acronym>NC</Acronym></ProductName> [<Quote>
<ProductName>JavaStation-10</ProductName></Quote>] [<Quote>
<ProductName>Krups</ProductName></Quote>] [<Quote><ProductName>the tower</ProductName></Quote>]
[<Quote><ProductName>the percolator</ProductName></Quote>] [
Sun Option No. JK-xx]
</Title>
<Para>
This model is the second most prevalent <ProductName>JavaStation</ProductName>
model you are likely to find. When you talk to industry folks about the
<Quote>JavaStation</Quote>, this is typically the model remembered first.
Delayed numerous times, the <ProductName>Krups</ProductName> model
officially went on sale to the general public Mar. 26, 1998 at the annual
JavaOne conference.
</Para>
<Para>
Though generation two of the <ProductName>JavaStation</ProductName> line, the
<ProductName>Krups</ProductName> model was <Emphasis>the JavaStation</Emphasis>
. Sporting a completely different board design than <ProductName>JavaStation-1
</ProductName>, <ProductName>Krups</ProductName> establishes what was to be
the characteristic <ProductName>JavaStation</ProductName> architecture.
</Para>
<Para>
<ProductName>Krups</ProductName> is powered by a
<Hardware>100Mhz MicroSPARC IIep</Hardware> chip, (note the 'p').
Its mainboard had the internal addition of a <Hardware>PCI bus</Hardware>,
about a year before this standard bus made its well-publicized
appearance on the <ProductName>Sun Ultra</ProductName> workstation
line. The <ProductName>Krups</ProductName> <Hardware>motherboard</Hardware>
is Sun Part no. <ProductNumber>501-4267</ProductNumber>.
</Para>
<Para>
<ProductName>Krups</ProductName> keeps the <Hardware>PS2 keyboard</Hardware>
and <Hardware>PS2 mouse ports</Hardware> from <ProductName>JavaStation-1
</ProductName>, keeping in mind the low-cost, interoperable goal of
generation 1.
</Para>
<Para>
With the new board design, came new memory chip sockets. Instead of
<Hardware>SIMMs</Hardware>, the <Quote>tower</Quote> moved to <Hardware>
168-pin DIMMs</Hardware>. <Hardware>DIMMs</Hardware> had begun to make
their way from the workstation realm to <Acronym>PC</Acronym>'s in the
time between generations one and two of the <ProductName>JavaStation
</ProductName> line, so it was fitting for Sun to switch to
it in anticipation of their status low-cost commodity memory chips. The
<Hardware>DIMMs</Hardware> accepted by the <Quote>tower</Quote> are
<Hardware>168pin, 3.3V unbuffered EDO DIMMs (not SDRAM)</Hardware>. With
two sockets capable of holding a <Hardware>32MB DIMM</Hardware> each, the
<ProductName>Krups</ProductName> has a maximum capacity of 64<Acronym>MB
</Acronym> <Acronym>RAM</Acronym>. As with the <ProductName>JavaStation-1
</ProductName>, the number <Quote>xx</Quote> in the Sun option number
refers to the amount of memory shipped with the unit.
</Para>
<Para>
For video display, the <ProductName>JavaStation-NC</ProductName> utilizes
the <Hardware>PCI-based IGS C1682 framebuffer</Hardware>,
capable of 1280x1024@80Hz in 24-bit <Quote>true color</Quote>. This
is a step up from the 8-bit display on <ProductName>JavaStation-1
</ProductName>. The port connector remained a <Hardware>standard VGA jack
</Hardware> like <ProductName>JavaStation-1</ProductName>, enabling the
user to use standard <Acronym>PC</Acronym> monitors if desired.
The on-board audio remains a <Hardware>Crystal
CS4231 chip</Hardware> like <ProductName>JavaStation-1</ProductName>.
The network interface on <ProductName>Krups</ProductName> is the
<Hardware>Sun HappyMeal</Hardware> 10/100 Mbps interface, another step
up from the original offering of <ProductName>JavaStation-1</ProductName>.
</Para>
<Para>
The <Quote>tower</Quote> came with the <Hardware>9-pin serial port
</Hardware> and <Hardware>1/8" audio out jack</Hardware> as
<ProductName>JavaStation-1</ProductName>, but it also added a
<Hardware>1/8" audio-in jack</Hardware>, to do sound recording with.
</Para>
<Para>
Another addition in the <ProductName>JavaStation-NC</ProductName> is a
<Hardware>flash memory SIMM</Hardware>. This allows one to load the
current revision of the <Acronym>OS</Acronym> onboard, increasing
boot-speed tremendously.
</Para>
<Para>
Perhaps the thing most memorable about the <ProductName>JavaStation-NC
</ProductName> is its case design. The <ProductName>Krups</ProductName>
comes in an aesthetically appealing casing. The <Hardware>mainboard</Hardware>
is mounted vertically, and the shell entraps it, giving it the <Quote>tower
</Quote> or <Quote>percolator</Quote> shape referred to. With the
streamlined case, the <Hardware>power supply</Hardware> is moved outside
to small transformer. The <ProductName>Krups</ProductName> unit gives
off so little heat that there are no onboard cooling fans, making the
<ProductName>Krups</ProductName> a <Emphasis>dead-silent</Emphasis>
machine. Imagine the difference in noise when replacing a lab of
traditional desktops with the <ProductName>Krups</ProductName>!
This case design earned <ProductName>Krups</ProductName> a<Quote>
1998 Industrial Design Excellence Award</Quote> from the Industrial
Designers Society of America. This award announcement is archived
for read at:
<Ulink url="http://www.idsa.org/whatis/seewhat/idea98/winners/javastation.htm">
http://www.idsa.org/whatis/seewhat/idea98/winners/javastation.htm"
</Ulink>
</Para>
<Para>
The <ProductName>Krups</ProductName> had an initial base price of $599US,
$100US cheaper than <ProductName>Mr. Coffee</ProductName>'s rollout price.
Due to it being the only model formally sold by Sun to the general public,
this is how <ProductName>Krups</ProductName> is sometimes referred to as
the only <ProductName>JavaStation</ProductName>, and not one model of a
product line.
</Para>
<Para>
See the <ProductName>JavaStation-NC</ProductName> at:
<ULink
url="http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/krups_front_view.jpg">
http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/krups_front_view.jpg
</Ulink>
</Para>
</Sect3>
<Sect3 id="EspressoDescSection">
<Title>
<ProductName>JavaStation-E</ProductName> [<Quote>Espresso</Quote>]
[Sun Option No. JE-xx]
</Title>
<Para>
This model is extremely rare to find. It was never available for
sale in quantities to either the general public or the initial
<ProductName>JavaStation</ProductName> deployments, limiting the
model's production quantity. To call this <Quote>Generation
Three</Quote> of the <ProductName>JavaStation</ProductName>
may be improper, as <ProductName>Espresso</ProductName> is nothing like
the generation three <ProductName>JavaStation</ProductName> written about
in early Sun literature.
</Para>
<Para>
The <ProductName>Espresso</ProductName> was designed as an extension of
the <ProductName>Krups</ProductName>. It was geared to sites that
wanted a little bit more functionality and expansion capability from
their <ProductName>JavaStations</ProductName>: a cross between an
<Acronym>NC</Acronym> and a workstation.
</Para>
<Para>
<ProductName>Espresso</ProductName> is powered by the same
<Hardware>110Mhz MicroSPARC IIep chip</Hardware> as <ProductName>Krups
</ProductName>. It's mainboard is similar to <ProductName>Krups</ProductName>,
with the addition of <Hardware>PCI slots</Hardware> and an <Hardware>IDE
channel</Hardware> for local hard disks. The <Hardware>IDE</Hardware> on
<ProductName>Espresso</ProductName> was not enabled in the demo units.
Those who have tried to make it work have concluded the wiring is incorrect,
and it requires a hardware rework to get working.
</Para>
<Para>
<ProductName>Espresso</ProductName> continues with the <Hardware>PS2 keyboard
</Hardware> and <Hardware>PS2 mouse ports</Hardware> from <ProductName>
Mr. Coffee</ProductName> and <ProductName>Krups</ProductName>.
</Para>
<Para>
<ProductName>Espresso</ProductName> uses the same <Hardware>168-pin,
3.3V unbuffered EDO DIMMs</Hardware> as <ProductName>Krups</ProductName>.
The maximum amount of memory for Espresso is reported to be 96MB.
As with the <ProductName>Mr. Coffee</ProductName> and <ProductName>Krups
</ProductName>, the number <Quote>xx</Quote> in the Sun option number
refers to the amount of memory shipped with the unit.
</Para>
<Para>
For video display, the <ProductName>Espresso</ProductName> uses the
<Hardware>PCI-based IGS C2000 framebuffer</Hardware>, along with the same
standard <Hardware>VGA port connector</Hardware> as <ProductName>Krups
</ProductName> and <ProductName>Mr. Coffee</ProductName>. The
on-board audio remains a <Hardware>Crystal CS4231 chip</Hardware> like
<ProductName>Krups</ProductName>, and the network interface remains a
<Hardware>Sun HappyMeal</Hardware> 10/100 Mbps interface like
<ProductName>Krups</ProductName> as well.
</Para>
<Para>
<ProductName>Espresso</ProductName> came with the <Hardware>9-pin serial
port</Hardware> and <Hardware>1/8" audio out</Hardware> and
<Hardware>1/8" audio in</Hardware> jacks of <ProductName>Krups</ProductName>,
and a new addition of a <Hardware>parallel port</Hardware>, and a second
9-pin serial port. <ProductName> Espresso</ProductName> also comes
with the <Hardware>flash memory</Hardware> to load your <Acronym>OS</Acronym>
on and bypass the network boot cycle.
</Para>
<Para>
One new addition to the <ProductName>Espresso</ProductName> is a
<Hardware>smart card slot</Hardware>.
</Para>
<Para>
The <ProductName>Espresso</ProductName> comes in a <Quote>pizza box</Quote>
style case like the old <ProductName>Sun SparcStations</ProductName>, only
a little taller, and not quite as wide.
</Para>
<Para>
The <ProductName>Espresso</ProductName> was never sold to the public. There
was an internal testing period at Sun, but the units never went into
mass-production.
</Para>
<Para>
One <ProductName>Espresso</ProductName> user mentioned he now uses
his unit as both a server and router, with the addition of an
<Hardware>IDE disk</Hardware> and <Hardware>3C905 ethenet card</Hardware>,
demonstrating the expandability of this unit.
</Para>
<Para>
See the <ProductName>JavaStation-E</ProductName> at:
<ULink
url="http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/espresso_front_view.jpg">
http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/espresso_front_view.jpg
</Ulink>
</Para>
</Sect3>
<Sect3 id="JavaEngineDescSection">
<Title>
<ProductName>JavaEngine-1</ProductName> [<Quote>JE-1</Quote>]
</Title>
<Para>
Like the <ProductName>Espresso</ProductName>, this unit is also an extremely
rare find.
</Para>
<Para>
This unit is supposed to be of similar board design to the Krups, but in
an ATX form factor, with soldered onboard flash memory, and with a
regular SVGA video chipset.
</Para>
<Para>
Gleb Raiko <Email>raiko@niisi.msk.ru)</Email> with the help of
Vladimir Roganov <Email>roganov@niisi.msk.ru</Email> did initial
the Linux kernel support on <Quote>JE-1</Quote>. Pete Zaitcev
<Email>zaitcev@metabyte.com</Email> later obtained a <Quote>JE-1</Quote>
unit and restored full support in <Application>Linux kernel 2.3.x+
</Application>.
</Para>
<Para>
As the author of this document has never seen a <Quote>JE-1</Quote>,
submissions from the public are welcome.
</Para>
<Para>
See the <ProductName>JavaEngine-1</ProductName> at:
<ULink
url="http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/je1_overhead_view.jpg">
http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/je1_overhead_view.jpg
</Ulink>
</Para>
</Sect3>
<Sect3 id="DoverDescSection">
<Title>
The <Quote>Dover</Quote> <ProductName>JavaStation</ProductName> model
</Title>
<Para>
This is another box which does not exist officially outside of Sun.
Little is known of it.
</Para>
<Para>
A nice speculation would be that the next step in the <ProductName>
JavaStation</ProductName> evolution was more of a low-cost <Acronym>NC
</Acronym> based on <Acronym>PC</Acronym> boards. The
<Hardware>PCI</Hardware>, <Hardware>PS2</Hardware>, and <Hardware>SVGA
</Hardware> (as in <Quote>JE-1</Quote>) was already present. The
next step would have been a non-proprietary, industry-standard mainboard.
Since nobody's talking, this is all speculation.
</Para>
<Para>
However, the document author has been informed it is fully supported
by the <Application>Linux kernel</Application>, should you be lucky
enough to find one.
</Para>
</Sect3>
<Sect3 id="GenerationThreeDescSection">
<Title>
The Generation 3 <Quote>Super JavaStation</Quote>
</Title>
<Para>
Sun originally envisioned three generation models of the <ProductName>
JavaStation</ProductName>: <ProductName>Mr. Coffee</ProductName>, the
<ProductName>Krups</ProductName>, and the <Quote>Super JavaStation</Quote>.
Generation Three was billed in early literature as going to be the fastest
<ProductName>JavaStation</ProductName> offerred, with a high-speed
<Hardware>CPU</Hardware> and a <Hardware>JavaChip co-processor</Hardware>
to translate <Application>Java-bytecode</Application> in hardware.
</Para>
<Para>
All indications are that it never got beyond the mental stage,
and was more of a marketing myth than anything else.
</Para>
<Para>
First, consider that the cost of higher performance <Acronym>CPU</Acronym>
as a factor. If Sun packaged a high-performance <Acronym>CPU</Acronym> into
a <ProductName>JavaStation</ProductName>, the low-cost advantage of an
<Acronym>NC</Acronym> goes away.
</Para>
<Para>
Next, Sun did have their <Hardware>PicoJava chip</Hardware> available to
decode <Application>Java bytecode</Application>, but word is the performance
was not as good as expected, and the <Hardware>JavaChip</Hardware> project
was shelved in the Summer of 1998, not long after <ProductName>Krups
</ProductName> was formally released.
<!-- <Comment>ed note: verify date.</Comment> -->
The <Quote>Dover</Quote> project was being worked on, but the <Quote>Corona
</Quote> project which would go on to become the <ProductName>Sun Ray
</ProductName> was the final nail in the <ProductName>JavaStation</ProductName>
's coffin.
</Para>
<Para>
So all indications are that this model is a piece of <Quote>vaporware</Quote>.
It is included here though, for the sake of completeness.
</Para>
</Sect3>
<Sect3 id="JavaStationProtoDescSection">
<Title>
The Early JavaStation Prototype?
</Title>
<Para>
After the original publishing of this HOWTO, word of one more
"JavaStation" model has surfaced. John of bodoman.com, a reseller
of JavaStation equipment, chimed in that he has a motherboard of a
pre-JavaStation machine. The board used a 68040 CPU. Apparently
the company that produced it was bought out by Sun and its
design became a basis for the JavaStation line.
</Para>
<Para>
As this is the first mention of this prototype machine, any further
info is appreciated.
</Para>
</Sect3>
</Sect2>
<Sect2 id="WhyLinuxSection">
<Title>Reasons for Running <Application>Linux</Application> and <Acronym>NC
</Acronym> Myths Dispelled</Title>
<Para>
It turns out that <Application>Linux</Application> makes the
<ProductName>JavaStations</ProductName> perform more than adequately
on the desktop. Thanks to the dedicated work of the Linux
developer community, the <ProductName>JavaStations</ProductName>
offer users the low-cost, zero-admin, versatile desktop
<Acronym>NC</Acronym>'s they were originally billed to be, but with
the added freedom granted by the <Application>Linux OS</Application>.
</Para>
<Para>
While low-cost <Acronym>PC</Acronym>'s now eclipse the <ProductName>JavaStation
</ProductName> in terms of default CPU speed and RAM size, the
<ProductName>JavaStations</ProductName> running <Application>Linux</Application> are still well-suited for a number of tasks:
</Para>
<ItemizedList>
<ListItem>
<Para>
Diskless X-Terminal. (Gives the <ProductName>JavaStations</ProductName> the
capability of the <ProductName>Sun Xterminal 1</ProductName> hardware that
they replaced).
</Para>
</ListItem>
<ListItem>
<Para>
The <Acronym>NC</Acronym> solution, Linux-style: local X + a java-capable
browser can make the <ProductName>JavaStations</ProductName>
perform like they did with <Application>JavaOS</Application>/<Application>
HotJava</Application>, only <Emphasis>many</Emphasis> times faster.
</Para>
</ListItem>
<ListItem>
<Para>
A beowulf node, or a dedicated <Application>RC5</Application>/<Application>
SETI@HOME</Application> client. The <ProductName>JavaStation</PRoductName>
running <Application>Linux</Application> makes a stable, long-lasting
number cruncher.
</Para>
</ListItem>
<ListItem>
<Para>
A small, standalone machine. While a task more suited on today's
low-cost machines, there's not much that prevents the <ProductName>
JavaStation</ProductName> from performing as a full-fleged
standalone <Application>UNIX</Application> machine by itself.
Just remember to set your expectations appropriately when doing so;
they were <Quote>low-budget</Quote> clients when they were sold, and
should not be directly compared to today's workstation offerings.
</Para>
</ListItem>
<ListItem>
<Para>
A small router and server, particularly with the <ProductName>Espresso
</ProductName> model decked out with added IDE disks and NIC.
</Para>
</ListItem>
</ItemizedList>
<Para>
In all of the above scenarios, there is little to no maintenance of
the machine once configured properly. Such is the advantage of the
<Acronym>NC</Acronym> hardware.
</Para>
<Para>
<ProductName>JavaStations</ProductName> run so much better with
<Application>Linux</Application> than <Application>JavaOS</Application>,
one would think that even Sun should have offered it as an option.
Unfortunately, Sun has killed the line in favor of the <ProductName>Sun Ray
</ProductName>. While the performance of the <ProductName>Sun Ray
</ProductName> is good, keep in mind it is not a dedicated computing
device and is little more than a graphics display hanging off your Sun
server, which can give you some unexpected features (translation:
<Quote>brand-name product lock</Quote>). The performance on
the <ProductName>JavaStations</ProductName> with <Application>Linux
</Application> will be similar to what you can get with a <ProductName>Sun
Ray</ProductName>, but if ever you want to do something different with
your machines, you have the flexibility to do so with the
<ProductName>JavaStations</ProductName>.
</Para>
<Para>
Lastly, if you're thinking of switching to <Hardware>diskless Xterminals
</Hardware> on your network, you might consider the <ProductName>JavaStations
</ProductName> over stripped down <Acronym>PC</Acronym>'s. The hardware
is standardized, smaller, and you do not need to worry about burning boot
<Acronym>PROM</Acronym>'s and the like.
</Para>
</Sect2>
<Sect2 id="JavaStationDeathSection">
<Title>Why <ProductName>JavaStations</ProductName> are No Longer
Produced</Title>
<Para>
Sun's official stance is that the <ProductName>JavaStation</ProductName>
line was terminated in favor of the new <ProductName>Sun Ray</ProductName>
line. A trip to the former <ProductName>JavaStation</ProductName>
section of Sun's website at <ULink url="http://www.sun.com/javastation">
http://www.sun.com/javastation</ULink> verifies this formal positioning.
</Para>
<Para>
As the <ProductName>Sun Ray</ProductName> is not an <Acronym>NC</Acronym>
in the traditional sense (it is merely a framebuffer, and not a
computing device itself), there is no explanation why the two do not co-exist.
</Para>
<Para>
In talking to the users of the <ProductName>JavaStations</ProductName>
in the pre-Linux era, you will find strong opinions as to why
the <ProductName>JavaStations</ProductName> are no more. The common
thread in almost all opinions collected is that the software provided
by Sun was inadequete for a production environment. Here are
collected opinions from users of the Sun-provided software, included
with their permission:
</Para>
<BlockQuote>
<Attribution>Dr. Alex Ryba, Professor at Marquette University
<Email>alexr@mscs.mu.edu</Email>
</Attribution>
<Para>
I only used the Java Stations last summer while teaching 51 and 55/154.
GoJoe was incredibly slow and I seem to remember having to login to several
different screens and browsers just to be able to start anything.
</Para>
<Para>
I had to apologize to my students for the slow and inconvenient
machines --- I remember making some jokes about technological progress.
</Para>
</BlockQuote>
<Para></Para> <!--Be sure there's space -->
<BlockQuote>
<Attribution>Dr. Mark Barnard, Professor at Marquette University
<Email>markb@mscs.mu.edu</Email>
</Attribution>
<Para>
Well, of course the old JavaStations were practically
unusable. It's not a matter of just my opinion; we used to
have CU 310 full of students using the Xterms all the time.
As soon as the JavaStations appeared there were NO STUDENTS
in there at all. The JavaStations killed CU 310. Now that
the JavaStations are (thanks to you) back up to speed,
students are beginning to come back, but they've gotten out
of the habit of working in our lab, and are used to working
on their own in the dorms. I think this is a big loss --
they don't learn anything from talking to each other in the
labs anymore.
</Para>
<Para>
Ghostview was slow, etc, but even vi was too slow. I am
used to typing quickly, and when the cursor can't keep up
with me, I can't handle it. I would also have worked at home
if I didn't have to be here. And there were those annoying
red squares left all over the Xterm window when you were in
vi. I had to type ^L every few lines to get rid of them to
see what I was typing... The pits. The whole setup made
me lose a lot of respect for Sun (although I try to separate
the different product lines as much as possible); I also
think Sun will not get respect for hyping a product like the
JavaStation so strongly, and then just dumping it. I would
wonder why anyone would not just dump Sun...
</Para>
<Para>
BTW, the JavaStations, now that they are fast, are quite fine.
I really like mine, and don't see why they aren't a viable
product.
</Para>
</BlockQuote>
<Para></Para> <!--Be sure there's space -->
<BlockQuote>
<Attribution>Robert Dubinski, Computer Systems Technician at Marquette
University
<Email>tech@mscs.mu.edu</Email>
</Attribution>
<Para>
I believe that it was the triple combination of Sun's JavaOS, the
Hotjava software, and GraphOn's GoJoe X-connectivity software which
ultimately doomed the JavaStation line.
</Para>
<Para>
JavaOS was always sluggish in performance for us. It was rated as
having one of the slowest Java VMs by a ZDNet Online Magazane review at
<ULink url="http://www.zdnet.com/pcmag/features/javaguide/jfgr10.htm">
http://www.zdnet.com/pcmag/features/javaguide/hfgr10.htm</ULink>
. I speculate this was the the main cause of delaying the
JavaStation's formal public release to April 1998.
</Para>
<Para>
JavaOS also always lagged behind the current Java developer
spec (ie running Java 1.0 when Java 1.1 was prevalent, and Java 1.1
when Java 1.2 was issued). It was tough explaining to students why
the books they were buying were all using the new event-model of Java 1.1,
but they could not program to it and have it run on <Quote>the Java machine
</Quote>. There were also some implementation problems with some of the
AWT peers which sometimes made programming across
platforms difficult.
</Para>
<Para>
These performance and implementation problems were never addressed in
subsequent build of JavaOS for the duration we ran it. I believe the
last edition we had used a Java 1.1.4 runtime, when we had a Java 1.2
development kit on the server.
</Para>
<Para>
The HotJava browser software suffered from not being able to handle
web standards HTML4, cascading style-sheets, or the ECMA javascript.
All of these standards were employed in commercial sites at the time,
resulting in many sites that weren't viewable by the JavaStations.
The Hotjava Browser engine also had serious printing problems with
certain webpages, some of which appeared on Sun's own website!
</Para>
<Para>
The HotJava Views task selector software also was rough. Users could have
multiple apps running, but only one displayed at a time. Manipulation
of multiple window panes was difficult (no minimization, no quick list to
all apps, resizing not always possible). Flexibility users had grown
accustomed to was tossed out in favor of this task-selector approach.
On Sun's Java website there was a page boasting of a committee formed
that decided this was the <Quote>right way</Quote> to make a desktop.
Tell that to our users.
</Para>
<Para>
The GraphOn Go-Joe software was by far the most damaging piece of software
to the JavaStation line. This was an X-connectivity software Sun licensed
from GraphOn to give users access to the Solaris servers' X apps.
The connectivity worked via a daemon installed on the Solaris server,
which was connected to by a Java connectivity applet on the NC side. This
small applet (only about 250K) simply threw up the latest display state
and sent back to the daemon the mouse and keyboard strokes of the user.
Unlike Xterminals though, the actual Xserver process was spawned and
communicated with on the remote server-side by the daemon. Communication
between the GraphOn client applet and the server daemon was supposedly
done by a patented protocol to compress communication and speed things up.
However, the performance of X under Go-Joe was terribly sluggish, with
horrible refresh rates (10-seconds for some page scroll refreshes).
Many sites operators I spoke to elected to not run the Go-Joe software
past a trial period for this reason. We had to run it though, as our
users were heavily X dependant. Alternatives like Weird/X were not
available at this time, and VNC proved not up to snuff given the slow
JavaOS VM.
</Para>
<Para>
This performance in Go-Joe alone was enough to give uninformed users the
impression that the JavaStation was an underpowered machine, especially
when placed side-by-side with the low-cost, end-of-lifed Sun Xterminal 1
hardware it was meant to replace. Our students left labs in droves,
faculty were upset, and giving demos to outsiders was downright
embarrassing. In reality the hardware was solid and stable, but
was hampered by this new, untested OS and new, untested applications
running on a new, untested hardware architecture. This triple-threat
combination, and Sun's timeline for fixing the problems is what
I feel truly doomed the JavaStation.
</Para>
<Para>
I remember that in 1998, Sun publicized that it had rolled out 3000
of these machines in-house, including one on Scott McNealy's desk.
One who has used the JavaStations with the Sun software would have
to wonder whether he ever turned it on and used it solely for a day?
Had he done so, I'm sure he'd demand things be done differently.
Why Sun never ported and released its tried and tested XTerminal
software to the JavaStation, or even a mini-Solaris, remained a
mystery to us the whole time before we switched to Linux. It was
only after we moved to Linux and the JavaStation line was formally killed
by Sun when we learned from some inside Sun sources that Solaris
actually was ported to Mr. Coffee, but released only internally at Sun.
As a heavily invested customer site who had begged for help, this was
not only disheartening, but insulting to discover.
</Para>
<Para>
Lastly, the customer support we received at the time was horrible. We pled
our case on more than a few occassions, but requests always seemed to
fall on deaf ears. Calling up SunSolve for JavaStation help always
resulted in a transfer to a Java <Emphasis>Language</Emphasis> engineer.
If the Sun employees do not know their own products, that's a problem!
</Para>
<Para>
>From our view, there no doubt was politics involved in this, and as
customers, we were the ones to bear the results of this.
We continue using Sun equipment when it comes to the proven models
like the Enterprise-class servers and diskarrays, but on the
latest low-cost desktop offerings, we will be forever cautious
given the JavaStation history.
</Para>
<Para>
Linux now proves the JavaStations are adequate machines, and Sun could
take this bait and go with it. If they sell the JavaStations for $250
a piece and the JavaStation running a proven OS like Linux (or Solaris)
with proven apps (X), the JavaStation makes for a great network appliance.
The recent NetPliance I-Opener Linux hack and subsequent controversy
proves there certainly is a market for this type of low-cost device.
</Para>
</BlockQuote>
<Para>
More comments and rebuttal statements by Sun employees are always welcome.
</Para>
</Sect2>
<Sect2 id="WherePurchaseSection">
<Title>Where to Purchase a JavaStation</Title>
<Para>
Since Sun has canceled production of the <ProductName>JavaStation</ProductName>
line, it no longer sells them through their official channels. It should
be possible to order any remaining <ProductName>JavaStation</ProductName>
stock from the Sun Spares site at <ULink url="http://www.sunspares.com">
http://www.sunspares.com</ULink>.
</Para>
<Para>
Your best bet to get <ProductName>JavaStations</ProductName> though is
out on the open market. Educational institutions which received a
handful from Sun as demo units are now trying to offload them any way
they can. Search around the auction sites like Ebay and Yahoo Auctions,
and you should be able to turn some up.
</Para>
<Para>
Lastly, a great resource for <ProductName>JavaStations</ProductName> is
<Quote>Bodoman's JavaStation site</Quote> at:
<ULink url="http://www.bodoman.com/javastation/javastation.html">
http://www.bodoman.com/javastation/javastation.html</ULink>
. Here you can find <ProductName>Mr. Coffee</ProductName> and
<ProductName>Krups</ProductName> models. As of June 15th 2000, Bodoman
was selling out of Krups models and was thinking about selling all
remaining Mr. Coffees to a different reseller. If you want a JavaStation
from BodoMan, contact him now!
</Para>
<Para>
The current going price as of June 2000 for a <ProductName>Mr. Coffee
</ProductName> model without memory or monitor is about $50-100US, while
the <ProductName>Krups</ProductName> goes for about $85-100US. Anything
more is typically due to memory pre-installed. Since the Taiwanese
earthquake of 1999, memory prices have fluctuated on a near daily basis,
making it difficult to pin a price range down in this manner.
</Para>
<Para>
You might also get lucky and stumble on someone who wants to get rid of
<ProductName>JavaStations</ProductName> cheap. One reader reported
finding a 32-MB Krups for $75 in a pristine unopened box.
</Para>
</Sect2>
</Sect1>
<Sect1 id="BackgroundRequirementsChapter">
<Title>Background Requirements for <Application>Linux</Application> on a
<ProductName>JavaStation</ProductName></Title>
<Para>
This chapter describes the base hardware and software requirements
for enabling <Application>Linux</Application> on the <ProductName>JavaStation
</ProductName>.
</Para>
<Sect2 id="HardwareRequirementsSection">
<Title>Complete Hardware Requirements</Title>
<Para>
For hardware, you will need one or more <ProductName>JavaStation</ProductName>
clients and a server to feed it its <Application>Linux</Application>
image from, all networked on the same net segment.
</Para>
<Para>
This server you use can be any server which supports <Acronym>DHCP</Acronym>
and <Acronym>TFTP</Acronym>, and <Acronym>RARP</Acronym>. These are the
base protocols needed to perform a network boot of the <ProductName>
JavaStations</ProductName>. You may also need <Acronym>NFS</Acronym>
service as well, but it is not necessary in one type of configuration
this HOWTO describes. Also, you can get by without <Acronym>RARP</Acronym>
on both the <ProductName>Krups</ProductName> and <ProductName>Espresso
</ProductName> models.
</Para>
<Para>
This document will describe how to set up serving the network <Application>
Linux OS</Application> image to the <ProductName>JavaStation</ProductName>
from a Sun server running <Application>SparcLinux</Application>. While you
do not need a Sun server to serve your <Application>Linux</Application>
image off of, the <Hardware>Sun SparcLinux server</Hardware> is needed
should you wish to compile a kernel of your own, or prototype a new
filesystem for your <ProductName>JavaStations</ProductName> to use.
Otherwise, you will need to use prepackaged kernels and filesystems
somebody else has pre-built and made publicly available for use.
</Para>
<Para>
Your network can be a simple <Hardware>10 Mbps ethernet</Hardware>
<Acronym>LAN</Acronym>, but when you begin using more than 50
<ProductName>JavaStations</ProductName> at once, a <Hardware>switched
100 Mbps network</Hardware> becomes desirable for your server to handle
multiple concurrent boot requests.
</Para>
<Para>
This HOWTO includes example kernels and filesystems for you to use,
eliminating your need of a <Hardware>Linux/SPARC server</Hardware>,
but you still need a server of some type to feed the image to the
<Hardware>JavaStations</Hardware> as they boot.
</Para>
</Sect2>
<Sect2 id="NetworkServiceRequirements">
<Title>Network Service Requirements</Title>
<Para>
As discussed in the last section, the <ProductName>JavaStation</ProductName>
boot cycle will make use of <Acronym>DHCP</Acronym> and <Acronym>TFTP</Acronym>
with possibly <Acronym>NFS</Acronym> and <Acronym>RARP</Acronym>. To
understand why, read up on the <ProductName>JavaStation</ProductName> boot
sequence in the next section.
</Para>
</Sect2>
<Sect2 id="JavaStationBootDescSection">
<Title>Understand the <ProductName>JavaStation</ProductName> Boot Sequence</Title>
<Para>
The <ProductName>JavaStations</ProductName> follow a typical <Hardware>
diskless workstation</Hardware> boot sequence.
</Para>
<Para>
When powered on, the <ProductName>JavaStation</ProductName> sends out a
broadcast request for its <Acronym>IP</Acronym>. It gets its <Acronym>IP
</Acronym> info via <Acronym>RARP</Acronym> or <Acronym>DHCP</Acronym>.
With a <Acronym>DHCP</Acronym> response, it gets information about the
network it is on and where to go download its boot image from via
<Acronym>TFTP</Acronym>.
</Para>
<Para>
There are subtle variations in diskless boots from one diskless machine to
the next. For instance, <Acronym>BOOTP</Acronym> may sometimes be
substituted where <Acronym>DHCP</Acronym> is, and <Acronym>RARP</Acronym>
may be eliminated in favor of either of the two. But in general, the
sequence is typically the same between the client and the server:
</Para>
<OrderedList>
<ListItem>
<Para>
C: <Quote>Who am I?</Quote>
</Para>
</ListItem>
<ListItem>
<Para>
S: <Quote>You are xxx</Quote>
</Para>
</ListItem>
<ListItem>
<Para>
C: <Quote>Where do I go for my boot image?</Quote>
</Para>
</ListItem>
<ListItem>
<Para>
S: <Quote>You go here.</Quote>
</Para>
</ListItem>
<ListItem>
<Para>
C: <Quote>Give me my image from here...Please?</Quote>
</Para>
</ListItem>
<ListItem>
<Para>
S: <Quote>Here's your image.</Quote>
</Para>
</ListItem>
</OrderedList>
<Para>
After the kernel is finished loading, your diskless client typically mounts
its root filesystem from the network via <Acronym>NFS</Acronym>.
Alternatively, it may load and mount it from a <Acronym>RAM</Acronym>disk.
</Para>
</Sect2>
<Sect2 id="ProllDescSection">
<Title>Additional Software Requirements: Replacement Firmware (<Application>
PROLL</Application>)</Title>
<Para>
<ProductName>JavaStations</ProductName> came with two different
<Acronym>PROMs</Acronym> installed in them. Version 2.30 shipped with
the earliest <ProductName>Mr. Coffee</ProductName> models, and was
updated by latter versions of the <Application>Sun Netra J</Application>
software environment to 3.11. <ProductName>Krups</ProductName> and
<ProductName>Espresso</ProductName> came with 3.x versions of the
<Acronym>PROM</Acronym> by default.
</Para>
<Para>
It turns out the later 3.x series of <Acronym>PROMs</Acronym> is not
conducive to booting <Application>Linux</Application> upon.
Fortunately, a complete <Acronym>PROM</Acronym> replacement
called <Application>PROLL</Application> now exists to get by this limitation.
</Para>
<Para>
<Application>PROLL</Application> becomes the first image your <ProductName>
JavaStation</ProductName> grabs by <Acronym>TFTP</Acronym>. It then
will load your true kernel image and boot into <Application>Linux
</Application>.
</Para>
<Para>
No matter what <Acronym>PROM</Acronym> revision you have, get <Application>
PROLL</Application>. This can make troubleshooting new installs easier.
</Para>
<Para>
The current, master version of <Application>PROLL</Application> is available
from the Metabyte website at:
<ULink url="http://www.metabyte.com/~zaitcev/linux/">
http://www.metabyte.com/~zaitcev/linux</ULink>.
</Para>
<Para>
The current version at the time of this writing is <Quote>13</Quote>.
</Para>
<Para>
<Application>PROLL</Application> can also be found mirrored on <Quote>VGER
</Quote>, and also on this HOWTO's distribution site at:
<ULink url="http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/proll_13.tar.bz2">
http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/proll_13.tar.bz2</ULink>
(HOWTO website mirror - version 13)
</Para>
</Sect2>
<Sect2 id="FSTypeDescSection">
<Title>Decide on your Filesystem: <Acronym>NFS</Acronym>-Root, or
Embedded?</Title>
<Para>
Before you begin, you must decide upon the root-filesystem type you wish to
use for your diskless <ProductName>JavaStation</ProductName>.
</Para>
<Sect3 id="NFSRootFSDesc">
<Title><Quote><Acronym>NFS</Acronym>-Root</Quote> Filesystem</Title>
<Para>
In this setup, after the boot kernel is retrieved off the network, the
running <ProductName>JavaStation</ProductName> makes an <Acronym>NFS</Acronym>
connection for its root filesystem. The root directory <Quote>/</Quote> is
mounted off the network for the duration of the current session.
</Para>
<Para>
The <Quote><Acronym>NFS</Acronym>-Root</Quote> solution is the recommended
way to go for beginners, as it is easier to troubleshoot if there are
problems. It also makes it easier to prototype the proper filesystem,
as any changes you make on a running system can be propogated for the
next boot cycle (so long as you are in read-write mode, of course).
</Para>
</Sect3>
<Sect3 id="EmbeddedFSDesc">
<Title>
<Quote>Embedded-Root</Quote> Filesystem
</Title>
<Para>
In this setup, the root filesystem is loaded directly into <Acronym>RAM
</Acronym> and accessed from there.
</Para>
<Para>
The advantage of this setup is that there is no <Acronym>NFS</Acronym>
traffic to worry about, resulting in a clean solution.
</Para>
<Para>
The disadvantage of this configuration is that you can no longer do rapid
prototyping of your filesystem, as any changes you make to a running system
are lost. If you have no <Quote>NFS-Root</Quote> setup available, you
develop an embedded filesystem by making small tweaks and performing
reboots to test.
</Para>
<Para>
First time users will want to set up an <Quote>NFS-Root</Quote>
configuration. When you have things stabilized, move to
<Quote>Embedded-Root</Quote> and make use of its advantages.
</Para>
</Sect3>
</Sect2>
<Sect2 id="SupportSitesSection">
<Title>Support Sites to Check Out: Metabyte</Title>
<Para>
One website to keep on reference when you begin thinking about
putting Linux on your JavaStation is Pete Zaitcev's website at:
<ULink url="http://www.metabyte.com/~zaitcev/linux">
http://www.metabyte.com/~zaitcev/linux</ULink>, referenced
throughout this document as the <Quote>Metabyte server</Quote>.
Here you will find the latest version of PROLL and many low-level
details about dealing with the JavaStations.
</Para>
</Sect2>
</Sect1>
<Sect1 id="KernelBuildChapter">
<Title>Build Your Kernel</Title>
<Sect2 id="BeforeBeginningSection">
<Title>Before you begin</Title>
<Para>
This chapter assumes you wish to compile your own <Application>Linux
</Application> kernel for the <ProductName>JavaStation</ProductName>.
It assumes you already know how to compile <Application>Linux</Application>
kernels in general, perhaps on <Acronym>PC</Acronym>, a <Acronym>SPARC
</Acronym> server running <Application>Linux</Application>, or any of
the other <Application>Linux</Application> ports. If not, read the
Kernel-HOWTO and the README file of your kernel source.
</Para>
<Para>
Compiling a kernel for a <ProductName>JavaStation</ProductName> is not
much different than compiling a <Application>Linux kernel</Application>
elsewhere. You just need to know the right options to pick. In general,
you're compiling for a <Hardware>Sun4M class architecture</Hardware>, and
enabling <ProductName>JavaStation</ProductName>-specific options. The
following sections in this chapter will take you through the steps.
</Para>
<Para>
While it may be possible to compile the <ProductName>JavaStation</ProductName>
-enabled kernel on alternate platforms, this HOWTO assumes you do it on a
<Hardware>Linux/Sparc based server</Hardware> running in 32-bit mode.
</Para>
</Sect2>
<Sect2 id="WorkIn32BitModeSection">
<Title>Make sure you use 32-bit mode</Title>
<Para>
When compiling your own <ProductName>JavaStation</ProductName>-capable
kernel, you need to make sure the Sun server you are working on is set
to 32-bit mode. So, if you're on an Ultra-class machine, be sure you
first switch to 32-bit mode before you begin compiling.
</Para>
<Para>
To check what mode you're in, do a <UserInput>uname -a</UserInput>. If it
says <Quote>sparc</Quote>, you're in 32-bit mode and don't have to do
anything. If it reports <Quote>sparc64</Quote>, then you should perform
a <UserInput>sparc32 bash</UserInput> first to switch to 32-bit mode. A
subsequent <UserInput>uname -a</UserInput> should reflect the change.
</Para>
</Sect2>
<Sect2 id="KernelVersionSupportSection">
<Title>Supported <Application>Linux Kernel</Application> Versions</Title>
<Para>
The kernel source revision you should use depends on which model of
<ProductName>JavaStation</ProductName> you have.
</Para>
<Para>
<ProductName>Mr. Coffee</ProductName> support has worked since about
kernel version 2.2.5, and definitely works out of the box with the
<Application>RedHat 6.0+/SPARC distribution kernels</Application>.
</Para>
<Para>
<ProductName>Krups</ProductName> support did not work well out of the
box until the latter 2.3.x kernel cycle. Pete Zaitcev <Email>zaitcev@metabyte.com</Email> added <ProductName>Krups</ProductName> support in the early 2.3.x
sequence, but the <Hardware>MMU</Hardware> changes to the 32-bit <Application>
SPARC kernel</Application> kept it from compiling cleanly until later on.
The kernel is known to compile cleanly with the Mar. 17 CVS kernel, and
should compile cleanly with any 2.3.99pre3+ version kernel. <ProductName>
Krups</ProductName> support has been backported by Varol Kapton <Email>
varol@ulakbim.gov.tr</Email>, and it is fully supported in the 2.2.15-prepatch
versions.
</Para>
<Para>
By the time this document gets widespread exposure, it is hoped that the
2.4.x stable kernel cycle will be ready, at which time any 2.4.x kernel
should compile cleanly with support for the entire <ProductName>JavaStation
</ProductName> line.
</Para>
<Para>
If you can not get a kernel to compile, you should try the samples pointed
to by this document.
</Para>
</Sect2>
<Sect2 id="RequiredKernelConfigOptionsSection">
<Title>Required Kernel Configuration Options</Title>
<Para>
When you do your <UserInput>make config</UserInput> command to enter the
kernel configuration stage, there are a few things you are required to
enable:
</Para>
<Para>
For all <ProductName>JavaStations</ProductName>, you want to enable
<Acronym>PCI</Acronym> support:
</Para>
<Screen>
CONFIG_PCI=y
</Screen>
<Para>
Don't forget your mouse:
</Para>
<Screen>
CONFIG_BUSMOUSE=y
CONFIG_SUN_MOUSE=y
</Screen>
<Para>
You'll want video, done with the <Application>Linux framebuffer interface</Application>:
</Para>
<Screen>
CONFIG_FB_TCX=y (for Mr. Coffee)
CONFIG_FB_PCI=y
CONFIG_FB_IGA=y (for Krups/Espresso)
</Screen>
<Para>
Audio is done with the <Hardware>Crystal Audio 4231 chipset</Hardware>:
</Para>
<Screen>
CONFIG_SPARCAUDIO=y
CONFIG_SPARCAUDIO_CS4231=y
</Screen>
<Para>
Don't forget your network interface:
</Para>
<Screen>
CONFIG_SUNLANCE=y (Mr. Coffee)
CONFIG_HAPPYMEAL=y (Krups/Espresso)
</Screen>
<Para>
You'll no doubt need to support a filesystem:
</Para>
<Screen>
CONFIG_EXT2_FS=y
</Screen>
<Para>
You'll want <Acronym>IP</Acronym> autoconfiguration, and
<Acronym>RARP</Acronym>/<Acronym>BOOTP</Acronym> support:
</Para>
<Screen>
CONFIG_IP_PNP=y
CONFIG_IP_PNP_BOOTP=y
CONFIG_IP_PNP_RARP=y
</Screen>
<Para>
When doing the <Quote>NFS-Root</Quote> filesystem configuration, you will
need both <Acronym>NFS</Acronym> and <Acronym>NFS</Acronym>-Root support:
</Para>
<Screen>
CONFIG_NFS_FS=y
CONFIG_ROOT_NFS=y
</Screen>
<Para>
When doing the <Quote>Embedded-Root</Quote> filesystem, configure both
<Acronym>RAM</Acronym> disks and <Quote>initial ramdisk</Quote> support:
</Para>
<Screen>
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_INITRD=y
</Screen>
<Para>
You can get a working <Quote>.config</Quote> file which has these options
set later in this chapter.
</Para>
</Sect2>
<Sect2 id="EmbeddedRootFSPatchSection">
<Title>Necessary Patch for <Quote>Embedded-Root</Quote> FS Configurations</Title>
<Para>
If you have decided to go with the <Quote>Embedded-Root</Quote> filesystem
option, you will want to make a patch to the <Acronym>RAM</Acronym>disk
driver source first.
</Para>
<Para>
The default size of a <Acronym>RAM</Acronym> disk when using the <Acronym>RAM
</Acronym>disk driver is 4 <Acronym>MB</Acronym>. Chances are that you will
want an embedded filesystem of more than that size, particularly when you
start thinking about running an <Application>X server</Application>, or
including a <Application>Java</Application> runtime.
</Para>
<Para>
You can do this change by yourself, or by using the patch pointed to below.
The change is a one-line edit in the file
&lt;LINUXROOT&gt;/drivers/block/rd.c . Look for a line that says:
</Para>
<Screen>
int rd_size = 4096; /* Size of the RAM disks */
</Screen>
<Para>
and change it to the size of the <Acronym>RAMdisk</Acronym> you wish.
Typically, most embedded systems are under 16 <Acronym>MB</Acronym>, so
a common edit is to change the line to:
</Para>
<Screen>
int rd_size = 4 * 4096; /* Size of the RAM disks */
</Screen>
<Para>
If you can not do this, the patch below makes the edit for you.
</Para>
<Para>
4MB to 16MB kernel patch file is at:
<ULink
url="http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/ramdisk_patch">
http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/ramdisk_patch
</Ulink>
</Para>
<Para>
It should be noted in this section that there is currently a limit on the
size of <Application>Linux</Application> boot image for all
<ProductName>JavaStation</ProductName> models, due to the implementation
of <Application>PROLL</Application>. This limit is technically 8
<Acronym>MB</Acronym>. This topic is mentioned again in
the <Quote>TroubleShooting</Quote> section of this document.
</Para>
</Sect2>
<Sect2 id="BuildTheKernelSection">
<Title>Build the <ProductName>JavaStation</ProductName>-Ready Kernel</Title>
<Para>
To build the kernel, you type <UserInput>make vmlinux</UserInput>. If you
come from an <Hardware>x86 </Hardware> Linux background, you might be
surprised that you do not perform a <UserInput>make bzImage</UserInput>
or <UserInput>make zImage</UserInput>. Do not be alarmed: this command
is correct.
</Para>
<Para>
When the compile is finished, you will find a file named <Quote>vmlinux
</Quote> in the kernel source root directory. You are almost ready to
put this kernel to use.
</Para>
<Para>
You need to make one more change to your kernel before it is ready for
use. You need to convert it from <Acronym>ELF</Acronym> to <Acronym>AOUT
</Acronym> executable format. You can do this with the <Quote>elftoaout
</Quote> utility included in most <Application>Linux/SPARC</Application>
distributions.
</Para>
<Para>
To convert your kernel image to the <Acronym>AOUT</Acronym> executable format,
you issue the command:
</Para>
<Screen>
<UserInput>elftoaout -o vmlinux.aout vmlinux </UserInput>
</Screen>
<Para>
You will probably now want to rename the image file to a longer name
which includes the current date and kernel revision you used, so as not
to get confused with when you have multiple boot kernel images down the road.
</Para>
</Sect2>
<Sect2 id="KernelSamplesSection">
<Title><ProductName>JavaStation</ProductName>-Ready Kernel Images,
System.map and <Quote>.config</Quote> File Samples</Title>
<Para>
Here are some sample <Quote>.config</Quote> and <ProductName>JavaStation
</ProductName>-ready kernel images. They have been donated by
<Application>Linux</Application>-running <ProductName>JavaStation
</ProductName> users.
</Para>
<Sect3 id="ConfigSamplesSection">
<Title>Sample <Quote>.config</Quote> Files</Title>
<Para>
<Ulink
url="http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/kernel_embedded_config_2_3_99pre3_mar_17" >
http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/kernel_embedded_config_2_3_99pre3_mar_17</ULink>
</Para>
<Para>
This is a <Quote>.config</Quote> file donated by Robert Dubinski
<Email>dubinski@mscs.mu.edu</Email>. It was used at Marquette
University to build an embedded boot image from the Mar. 17, 2000 CVS kernel
version. This includes support for both <ProductName>Mr. Coffee</ProductName>
and <ProductName>Krups</ProductName> in an <Quote>Embedded-Root</Quote>
filesystem configuration. These options should be valid for newer kernels
as well; Perform a <UserInput>make oldconfig</UserInput> when using with
latter kernels.
</Para>
<Para>
<Ulink
url="http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/kernel_nfsroot_config_2_3_99pre3_mar_17" >
http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/kernel_nfsroot_config_2_3_99pre3_mar_17</ULink>
</Para>
<Para>
This is an nfs-root capable version of the above <Quote>.config</Quote> file.
</Para>
</Sect3>
<Sect3 id="KernelFileSamplesSection">
<Title>Sample <ProductName>JavaStation</ProductName>-Ready Kernel
Files</Title>
<Para>
<ULink
url="http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/vmlinux_embedded_2_3_99pre3_mar_17" >
http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/vmlinux_embedded_2_3_99pre3_mar_17
</ULink>
</Para>
<Para>
This is a kernel file donated by Robert Dubinski <Email>dubinski@mscs.mu.edu
</Email>. It was built for Marquette University and is based off the
Mar. 17, 2000 CVS kernel version.
</Para>
<Para>
This kernel image includes support for both <ProductName>Mr. Coffee
</ProductName> and <ProductName>Krups</ProductName> models in an
<Quote>Embedded-Root</Quote> filesystem configuration.
</Para>
<Para>
This boot kernel image has already been converted to the required
<Acronym>AOUT</Acronym> executable format.
</Para>
<Para>
<ULink
url="http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/vmlinux_nfsroot_2_3_99pre3_mar_17" >
http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/vmlinux_nfsroot_2_3_99pre3_mar_17
</ULink>
</Para>
<Para>
This is the nfs-root version of the above kernel.
</Para>
<Para>
<ULink
url="http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/system.map_embedded_2_3_99pre3_mar_17" >
http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/system.map_embedded_2_3_99pre3_mar_17
</ULink>
</Para>
<Para>
The System.map for the embedded kernel image.
</Para>
<Para>
<ULink
url="http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/system.map_nfsroot_2_3_99pre3_mar_17" >
http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/system.map_nfsroot_2_3_99pre3_mar_17
</ULink>
</Para>
<Para>
The System.map for the nfsroot kernel image.
</Para>
</Sect3>
</Sect2>
</Sect1>
<Sect1 id="BuildFileSystemChapter">
<Title>Build A <ProductName>JavaStation</ProductName>-Ready FileSystem</Title>
<Para>
This chapter details how one constructs a filesystem suitable for use
on the <Application>Linux</Application>-running <ProductName>JavaStations
</ProductName>.
</Para>
<Sect2 id="FSBuildIntroSection">
<Title>Preparing Yourself to Build Your Own Filesystem</Title>
<Para>
Building a filesystem for use with the <ProductName>JavaStations
</ProductName> is a time-consuming, but rewarding task for those
who undertake it. You will learn more about library dependencies than
you ever thought you could, all the time while trying to keep the
overall image size as small as possible.
</Para>
<Para>
There are two common approaches one can take when rolling a new
<ProductName>JavaStation</ProductName>-ready filesystem.
</Para>
<OrderedList>
<ListITem>
<Para>
Start with an established distribution's filesystem and whittle down
to the core.
</Para>
</ListItem>
<ListItem>
<Para>
Start with an established distribution's <Quote>rescue disk</Quote>
filesystem and add desired functionality.
</Para>
</ListItem>
</OrderedList>
<Para>
Which path you take, of course, is entirely up to you. The <Quote>rescue
disk</Quote> build procedure seems to work best though, as more base
commands in a rescue disk are statically linked, increasing the starting
image size but causing less initial library headaches.
</Para>
<Para>
Obviously when building a filesystem in the context of the <ProductName>
JavaStation</ProductName>, you will be basing off of an existing
<Application>Linux/SPARC</Application> filesystem. The filesystems
that come with the RedHat and Debian distributions are good starting
points.
</Para>
<Warning>
<Para>
In the future, you will also need to make sure you base off a filesystem
built with compiled 32-bit mode executables, as a 64-bit userland project
is presently in progress for 64-bit <Acronym>SPARC</Acronym>
<Application>Linux kernels</Application>.
</Para>
</Warning>
</Sect2>
<Sect2 id="FstabDescSection">
<Title>Contents of the <Quote>/etc/fstab</Quote> File</Title>
<Para>
The configuration lines placed into <Quote>/etc/fstab</Quote> depend
on whether you will be using the <Quote>NFS-Root</Quote> or
<Quote>Embedded-Root</Quote> filesystem configuration.
</Para>
<Sect3 id="NFSRootFstabSection">
<Title><Quote>NFS-Root</Quote> Filesystem fstab</Title>
<Para>Here is an example of an <Quote>/etc/fstab</Quote> for
an <Quote>NFS-Root</Quote> boot option.
</Para>
<Screen>
###
#
your.nfs.server:/path/to/filesystem / nfs defaults,rsize=8192,wsize=8192 1 1
#
none /proc proc defaults 0 0
###
</Screen>
</Sect3>
<Sect3 id="EmbeddedRootFstabSection">
<Title><Quote>Embedded-Root</Quote> Filesystem fstab</Title>
<Para>Here is an example of an <Quote>/etc/fstab</Quote> for
an <Quote>Embedded-Root</Quote> boot option.
</Para>
<Screen>
###
#
/dev/ram / ext2 defaults
#
/proc /proc proc defaults
###
</Screen>
</Sect3>
</Sect2>
<Sect2 id="EmbeddedRootProcedureSection">
<Title>The <Quote>Embedded-Root</Quote> Image Creation Procedure</Title>
<Para>
Prepping up the <Quote>Embedded-Root</Quote> boot image requires a
number of extra steps. Due to these extra steps, the <Quote>NFS-Root</Quote>
filesystem option is recommended for beginners to <Application>Linux
</Application> on the <ProductName>JavaStation</ProductName>. You might
also try the samples pointed to in this document. Should you still wish
to build and embedded image on your own, this section outlines the basic
instructions.
</Para>
<Para>
Creating the <Quote>Embedded-Root</Quote> boot image is a 5-Step Procedure:
</Para>
<OrderedList>
<ListItem>
<Para>
<Emphasis>Prototype Your Filesystem</Emphasis>
</Para>
<Para>
This whole chapter deals with rolling your own filesystem.
In this step, it is assumed you create your own filesystem,
perhaps by prototyping one on a working <Quote>NFS-Root</Quote>
filesystem configuration.
</Para>
<Para>
One thing to keep in mind is that unlike your <Quote>NFS-Root</Quote>
filesystem, the <Quote>Embedded-Root</Quote> filesystem must fit
within the confines of your allocated <Acronym>RAM</Acronym>disk,
generally 4-16 <Acronym>MB</Acronym>. Your maximum size is dependant
on the setting of the <Acronym>RAM</Acronym>disk driver.
</Para>
</ListItem>
<ListItem>
<Para>
<Emphasis>Create an Empty File for Your FileSystem</Emphasis>
</Para>
<Para>
You now need to create a file-based filesystem <Quote>container</Quote>.
This is just a file that is the size of your <Acronym>RAM</Acronym>disk.
</Para>
<Para>
To create this, try the <UserInput>dd</UserInput> command:
</Para>
<Screen>
<UserInput>dd if=/dev/zero of=./fs_test.img bs=1k count=8000 </UserInput>
</Screen>
<Para>
Using this example, you now should have an 8 <Acronym>MB</Acronym> file
named <Quote>fs_test.img</Quote>. Note: Be <Emphasis>sure</Emphasis>
the count you use matches the <Acronym>RAM</Acronym>disk size you
allocated for in the kernel's <Acronym>RAM</Acronym>disk driver!
</Para>
</ListItem>
<ListItem>
<Para>
<Emphasis>Format your Filesystem <Quote>Container</Quote></Emphasis>
</Para>
<Para>
Now that you have a <Quote>container</Quote> for your filesystem, it
is time to format it and place a bare filesystem on it.
</Para>
<Para>
In our kernel phase, we added in support for the ext2 filesystem.
We'll now format our <Quote>container</Quote> with this filesystem
type.
</Para>
<Screen>
<UserInput>mkfs.ext2 ./fs_test.img</UserInput>
</Screen>
<Para>
Ignore any warnings about the file not being a block device, and
proceed anyway. This is an expected warning message.
</Para>
</ListItem>
<ListItem>
<Para>
<Emphasis>Mount the Filesystem <Quote>Container</Quote> and Write to It</Emphasis>
</Para>
<Para>
Now that you have your filesystem container, you can
mount it and load your prototyped filesystem on it.
</Para>
<Para>
To mount the container, use the kernel loopback device.
Make sure your server's kernel has loopback support enabled
and issue a:
</Para>
<Screen>
<UserInput>mount -o loop ./fs_test.img /mnt</UserInput>
</Screen>
<Para>
Copy your files to the filesystem, and make sure <Quote>/etc/fstab
</Quote> has the <Acronym>RAM</Acronym>disk entries as described
elsewhere in this document.
</Para>
<Para>
To avoid symbolic links being changed into actual copies of files, use
a copy tool like <Quote>tar</Quote> or <Quote>cpio</Quote> instead of a
<Quote>cp</Quote>.
</Para>
</ListItem>
<ListItem>
<Para>
<Emphasis>Unmount and Compress the Root Filesystem</Emphasis>
</Para>
<Para>
Unmount the root filesystem you just created.
</Para>
<Screen>
<UserInput>umount /mnt</UserInput>
</Screen>
<Para>
Compress the filesystem file with maximum <Quote>gzip</Quote>
compression levels.
</Para>
<Screen>
<UserInput>gzip -v9 ./fs_test.img</UserInput>
</Screen>
<Para>
You should now have <Quote>fs_test.img.gz</Quote> file.
</Para>
</ListItem>
<ListItem>
<Para>
<Emphasis>Hook the Root-Filesystem Onto the Back of Your Kernel Image</Emphasis>
</Para>
<Para>
Now you must append the filesystem image onto your kernel.
</Para>
<Para>
You do this with a utility program called <Quote>piggyback</Quote>.
The piggyback program takes care of the task of appending the two and
letting the kernel know where both it and the filesystem begins and ends.
</Para>
<Para>
The <Quote>piggyback</Quote> program is found in your kernel source tree
under &lt;LINUXROOT&gt;/arch/sparc/boot. It might also be found on your
favorite ftp.kernel.org site.
</Para>
<Para>
For piggyback to work, it needs your <Acronym>AOUT</Acronym> format
kernel image, the System.map file from your kernel source root
directory, and the compressed root-filesystem you just created.
</Para>
<Para>
We put it all together with a:
</Para>
<Screen>
<UserInput>piggyback vmlinux.aout System.map fs_test.img.gz</UserInput>
</Screen>
<Para>
Be sure to backup your kernel image first, as piggyback used the same
<Quote>vmlinux.aout</Quote> filename for output. Check the filesize of
your <Quote>vmlinux.aout</Quote> file after giving this command and you
can verify the filesystem has indeed been appended.
</Para>
</ListItem>
</OrderedList>
<Para>
Congratulations! You've created an <Quote>Embedded-Root</Quote>
kernel/filesystem boot image.
</Para>
</Sect2>
<Sect2 id="SampleFilesystemsSection">
<Title>Sample FileSystems</Title>
<Para>
Here are some sample filesystems for you to start with.
</Para>
<Para>
A filesystem image contributed by Varol Kapton <Email>varol@ulakbim.gov.tr
</Email> is at:
<ULink
url="http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/jsroot_varol.tar.gz">
http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/jsroot_varol.tar.gz
</Ulink>
</Para>
</Sect2>
</Sect1>
<Sect1 id="ServerSetupChapter">
<Title>Set up Your Server</Title>
<Para>
This chapter describes the configuration steps necessary for
the server machine to hand-off your <ProductName>JavaStation</ProductName>
boot image.
</Para>
<Sect2 id="ServerPrefaceSection">
<Title>Preface</Title>
<Para>
It is now time to setup your server to deliver the <Acronym>OS</Acronym>
and filesystem to the <ProductName>JavaStation</ProductName>.
</Para>
<Para>
In our examples here, we configure a Linux/SPARC server <Quote>lnxserv
</Quote> at private IP 192.168.128.100 to deliver a boot image to
<ProductName>JavaStation</ProductName> <Quote>java01</Quote> at
private IP 192.168.128.1. Both are on private network 192.168.128/24.
When using an <Quote>NFS-Root</Quote> Filesystem, the location on
the server of the filesystem in our sample is at <Quote>/path/to/nfsroot
</Quote>.
</Para>
</Sect2>
<Sect2 id="ConfigureRARPSection">
<Title>Setting up the <Acronym>RARP</Acronym> service</Title>
<Para>
We first need to set up <Acronym>RARP</Acronym> service on our server,
so the <ProductName>JavaStation</ProductName> can auto-configure its
<Acronym>IP</Acronym>.
</Para>
<Para>
First, populate the <Quote>/etc/ethers</Quote> file with the mapping of
the mac address of the <ProductName>JavaStation</ProductName> to its
hostname:
</Para>
<Screen>
### /etc/ethers
8:0:20:82:7a:21 lnxserv # 192.168.128.100 (server is not necessary,)
# # (just for completeness)
#
#
08:00:20:81:C2:ae java01 # 192.168.128.1 (JavaStation)
#
###
</Screen>
<Para>
Next, populate the <Quote>/etc/hosts</Quote> file with the <Acronym>IP
</Acronym> to hostname maps:
</Para>
<Screen>
### /etc/hosts
192.168.128.100 lnxserv
192.168.128.1 java01
###
</Screen>
<Para>
Lastly, configure the <Acronym>RARP</Acronym> cache to fill at start-up
(<Application>Linux/SPARC</Application> has no <Acronym>RARP</Acronym>
daemon, per se):
</Para>
<Screen>
### Part of rc.local
#
# If necessary, first load the rarp module to be able to fill the cache.
# /sbin/insmod rarp
#
# Now we fill the rarp cache. You better have the rarp command available.
if [ -f /sbin/rarp ]; then
/sbin/rarp -f
fi
###
</Screen>
</Sect2>
<Sect2 id="ConfigureDHCPSection">
<Title>Setting up the <Acronym>DHCP</Acronym> service</Title>
<Para>
You now need to configure your server to deliver <Acronym>DHCP</Acronym>
service. This will help identify the <ProductName>JavaStation</ProductName>,
the network it is on, and where to get its boot image from.
</Para>
<Para>
The following is a sample <Quote>dhcpd.conf</Quote> file for the
<Application>ISC DHCP server</Application> software which ships
with most <Application>Linux/SPARC</Application> distributions.
</Para>
<Screen>
### Sample /etc/dhcpd.conf file for ISC DHCPD
#
deny unknown-clients;
#
subnet 192.168.128.0 netmask 255.255.255.0
{
range 192.168.128.1 192.168.128.150;
}
group
{
host java01
{
hardware ethernet 08:00:20:81:C2:ae;
filename "C0A88003"; # "/tftpboot/xxx"
fixed-address java01; # 192.168.128.1
}
}
#
### End dhcpd.conf file
</Screen>
<Para>
Note: Some early versions of <Application>ISC DHCPD</Application> are
reported to not work well. It is recommended you use <Application>ISC
DHCPD Version 2.0 and above</Application>.
</Para>
<Para>
A longer
<ULink url="http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/petes_dhcpd.conf.txt">dhcpd.conf</Ulink> from the Metabyte server is mirrored here for
demonstration purposes.
</Para>
</Sect2>
<Sect2 id="ConfigureNFSSection">
<Title>Set up <Acronym>NFS</Acronym> service (<Quote>NFS-Root Options
</Quote> Only)</Title>
<Para>
When you are serving up an <Quote>NFS-Root</Quote> filesystem, you need
to share the filesystem you created to the <ProductName>JavaStation
</ProductName> client. You do this with the <Quote>/etc/exports</Quote>
file.
</Para>
<Screen>
###/etc/exports
/path/to/nfsroot java01(rw,no_root_squash)
###
</Screen>
<Para>
Be sure your <Acronym>NFS</Acronym> server gets properly started
up at boot-time.
</Para>
</Sect2>
<Sect2 id="ConfigureTFTPSection">
<Title>Setting up for Boot with <Acronym>TFTP</Acronym></Title>
<Para>
Now we need to set up the last step on our server: the <Acronym>TFTP
</Acronym> configuration. For this step, you will need the kernel
you created (using the <Quote>NFS-Root</Quote> option) or the
piggybacked kernel/fs boot image (using the <Quote>Embedded-Root</Quote>
option), the appropriate <Application>PROLL</Application>, and some
knowledge of hexadecimal numbering.
</Para>
<Para>
The first thing you need to do is verify that <Quote>TFTPd</Quote> is
enabled in your <Quote>/etc/inetd.conf</Quote> file:
</Para>
<Screen>
tftp dgram udp wait root /usr/sbin/tcpd in.tftpd
</Screen>
<Para>
Now, you move your copy of proll for your <ProductName>JavaStation
</ProductName> architecture, along your kernel or piggybacked kernel
image to /tftpboot.
</Para>
<Para>
Now, you create of symbolic link from the hexidecimal version of your
<Acronym>IP</Acronym> to your <Application>PROLL</Application> image,
and a map from <Quote>HEXIP.PROL</Quote> to your real kernel image. If
you are using <Quote>Embedded-Root</Quote> option, you point to your
<Quote>Embedded-Root</Quote> Filesystem plus Kernel image. If you are
using the <Quote>NFS-Root</Quote> option, you need to point to the
normal <Quote>vmlinux.aout</Quote> image, plus have a separate map of
<Acronym>IP</Acronym>-&gt;nfsroot location. For sake of completeness,
you might also want a <Quote>HEXIP.SUN4M</Quote> -&gt; <Quote>HEXIP
</Quote> map, as that is the custom way of dealing with net boot
situations with the Sun.
</Para>
<Para>
Example for java01 booting from <Quote>NFS-Root</Quote>:
</Para>
<Screen>
$ ls -ld /tftpboot
-rw-r--r-- 1 root root 89608 Mar 20 10:15 proll.aout.krups.11
-rw-r--r-- 1 root root 52732 Mar 17 11:52 proll.aout.mrcoffee.11
lrwxrwxrwx 1 root root 19 Mar 20 10:16 proll.krups -&gt; proll.aout.krups.11
lrwxrwxrwx 1 root root 22 Mar 17 11:54 proll.mrcoffee -&gt; proll.aout.mrcoffee.11
lrwxrwxrwx 1 root root 10 Apr 1 13:00 C0A88001.SUN4M -&gt; COA88001
lrwxrwxrwx 1 root root 10 Apr 1 13:00 C0A88001 -&gt; proll.mrcoffee
lrwxrwxrwx 1 root root 12 Apr 1 13:00 C0A88001.PROL -&gt; vmlinux.aout
-rw-r--r-- 1 root root 1456189 May 21 12:53 vmlinux.aout
-rw-r--r-- 1 root root 6743821 Apr 1 12:53 vmlinux_embed.aout
lrwxrwxrwx 1 root root 18 Apr 1 12:53 192.168.128.1 -&gt; /path/to/nfsroot
</Screen>
<Para>
Example for java01 booting from <Quote>Embedded-Root</Quote> boot image:
</Para>
<Screen>
$ ls -ld /tftpboot
-rw-r--r-- 1 root root 89608 Mar 20 10:15 proll.aout.krups.11
-rw-r--r-- 1 root root 52732 Mar 17 11:52 proll.aout.mrcoffee.11
lrwxrwxrwx 1 root root 19 Mar 20 10:16 proll.krups -&gt; proll.aout.krups.11
lrwxrwxrwx 1 root root 22 Mar 17 11:54 proll.mrcoffee -&gt; proll.aout.mrcoffee.11
lrwxrwxrwx 1 root root 10 Apr 1 13:00 C0A88001.SUN4M -&gt; COA88001
lrwxrwxrwx 1 root root 10 Apr 1 13:00 C0A88001 -&gt; proll.mrcoffee
lrwxrwxrwx 1 root root 12 Apr 1 13:00 C0A88001.PROL -&gt; vmlinux_embed.aout
-rw-r--r-- 1 root root 1456189 May 21 12:53 vmlinux.aout
-rw-r--r-- 1 root root 6743821 Apr 1 12:53 vmlinux_embed.aout
</Screen>
</Sect2>
<Sect2 id="LastConfigureStepSection">
<Title>The Last Configuration Step</Title>
<Para>
The last step to configuring your <Application>Linux</Application>-running
<ProductName>JavaStation</ProductName>: boot it and cross your fingers!
</Para>
<Tip>
<Para>
Report of success are also heard of where one or more of these configuration
steps have been used: knocking on a wooden surface, booting during a full
moon, walking under ladders, breaking of mirrors, throwing salt over one's
shoulder, hunting black cats and sacrificing chickens (KFC will suffice).
</Para>
</Tip>
</Sect2>
<Sect2 id="BootVisualsSection">
<Title>What to See When Booting Linux</Title>
<Para>
When you boot things properly, your JavaStation will start up with
the normal white background screen with the PROM banner at the top,
and you will get the black "exclamation mark in triangle" logo,
signalling the system doesn't yet know who it is. When contact is
made with the DHCP server, the logo goes away and changes to the
Java coffee cup logo. After this, a black background window opens.
This is the PROLL window. It'll show status of the TFTP download in
progress, and give stats on the size of the file downloaded. Next,
the whole screen should go black, you should see a picture of Tux the
penguin in the upper left hand of the screen, and have the
normal Linux kernel messages printed before you. Any mistakes from
this point are due to the filesystem you are using, the filesystem
mounting, or missing kernel drivers which should have been compiled
in.
</Para>
</Sect2>
</Sect1>
<Sect1 id="TroubleShootingChapter">
<Title>Troubleshooting</Title>
<Para>
This chapter is intended to provide solutions to frequently and
infrequently encountered problems in enabling <Application>Linux
</Application> on the <ProductName>JavaStations</ProductName>.
</Para>
<Sect2 id="NotExecutableTSSection">
<Title>When booting, the message <Quote>The file just loaded does not
appear to be executable.</Quote> Why?
</Title>
<Para>
On systems that have the older OpenBoot version 2.3, and are not set
up to use PROLL, you will get this message when attempting to boot
up a kernel image that is not in AOUT format. Be sure to run
<UserInput>elftoaout</UserInput> on your kernel image.
</Para>
</Sect2>
<Sect2 id="NoMagicTSSection">
<Title>When booting, the message <Quote>no a.out magic</Quote> appears
and halts the boot. Why?
</Title>
<Para>
On systems that are set up to use PROLL, you will see this message
when attempting to boot up a kernel image that is not in AOUT format.
Be sure to run <UserInput>elftoaout</UserInput> on your kernel image.
</Para>
</Sect2>
<Sect2 id="FlashTSSection">
<Title>I tried booting a Krups but JavaOS comes up. I don't even have JavaOS!
</Title>
<Para>
This likely means you have a copy of JavaOS loaded on your flash SIMM.
Remove the SIMM and the problem should go away.
</Para>
</Sect2>
<Sect2 id="TenMBLimitTSSection">
<Title>Cannot Boot an <Quote>Embedded-Root</Quote> image &gt; 10 <Acronym>MB
</Acronym>on my <ProductName>JavaStation</ProductName>. Why?</Title>
<Para>
There is a known limit of 8 <Acronym>MB</Acronym> when using the
<Quote>Embedded-Root</Quote> boot image option.
</Para>
<Para>
The cause of this is the current version of the <Application>PROLL
</Application> software, which map only 8 <Acronym>MB</Acronym>
of low memory. Any more and banking support would need to be
added to it.
</Para>
<Para>
This limit can be fixed if needed by someone, as the source
to <Application>PROLL</Application> has been released under the
General Public License <Acronym>GPL</Acronym>.
</Para>
<Para>
So in reality, the embedded image size limit is really 8 <Acronym>MB</Acronym>
, not 10 <Acronym>MB</Acronym>. If 10 <Acronym>MB</Acronym> somehow works
for you, it is by <Quote>luck</Quote>!
</Para>
</Sect2>
<Sect2 id="KeyGarblesTSSection">
<Title>After Booting, Typing Anything Yields Garbage Characters. Why?</Title>
<Para>
There are a few possibilities for this. Among them:
</Para>
<OrderedList>
<ListItem>
<Para>
You have an incorrect device # for tty0.
</Para>
</ListItem>
<ListItem>
<Para>
A <Quote>keytable</Quote> loaded is incorrect. Make sure you use
<Quote>sun</Quote> instead of <Quote>PC</Quote> if you use the keytable
program. Look for the keytable configuration file if it exists.
</Para>
</ListItem>
</OrderedList>
</Sect2>
<Sect2 id="FontServTSSection">
<Title>In X Sessions to a <Application>Solaris</Application> server, the
font server <Quote>xfs</Quote> crashes. Why?
</Title>
<Para>
If you do <Application>X</Application> sessions to a <Application>Solaris
</Application> server, and you find that your sessions are no longer opening
up new windows, chances are the font server on the <Application>Solaris
</Application> host has crashed. This is a known bug in <Application>
Solaris</Application> 2.6 and 2.7 when you have about 2 dozen <Hardware>
X terminals</Hardware> sessions running.
</Para>
<Para>
The fix is to move the font server to a different architecture and point your
<ProductName>JavaStations</ProductName> there, or to upgrade your
<Application>Solaris</Application> to the 2.7 11/99 maintenance
release or <Application>Solaris 8</Application> which both have fixes
to this problem.
</Para>
</Sect2>
<Sect2 id="XDMCPTSSection">
<Title>Performing Indirect <Acronym>XDMCP</Acronym> to a <Application>
Solaris</Application> Server Results in Session Login Failures. Why?
</Title>
<Para>
Congratulations! You must have one of patch numbers 107180-12 through
107180-19 installed on a <Application>Solaris 7</Application>
server. You need to upgrade to 107180-20 or above to fix this problem.
</Para>
<BlockQuote>
<Attribution>Robert Dubinski, Computer Systems Technician at Marquette
University
<Email>tech@mscs.mu.edu</Email>
</Attribution>
<Para>
Here's a little rant:
</Para>
<Para>
I reported this problem to Sun in November 1999, at which time I was
told a fix was not scheduled to be made, since I was using an
<Quote>unsupported configuration.</Quote>. Never mind the client
was a piece of hardware made by Sun itself. Also never mind that
indirect <Acronym>XDMCP</Acronym> queries is a standard itself which
was broken by Sun. A call back in late January 2000, and I learn that
the record of my previous call was non-existant, but a fix was now on
its way. The fix finally was made available in April 2000, five months
after first reporting the problem. Considering revisions to this
patch during the broken <Acronym>XDMCP</Acronym> period dealt with
fixing system security issues, we were forced to run the older insecure
software for five months while waiting for a fix to a problem which
should have been patched immediately.
</Para>
<Para>
The moral of the story: test your <ProductName>JavaStation</ProductName>
configuration against an upgraded server that is not in production mode.
</Para>
</BlockQuote>
</Sect2>
<Sect2 id="SUSETftpTSSection">
<Title>TFTPd config doesn't work on SUSE. Why?</Title>
<Para>
This was reported by a user after this document was first released.
</Para>
<Para>
In SUSE 6.3, using the tftpd from the 'a' package of the netkit rpm,
you must be sure your tftpd line in /etc/inetd.conf has the -s flag.
Otherwise you need to specify a full path.
</Para>
<Para>
Also, it is not necessary to run tftpd as root, so the suggested username
and group for tftpd on SUSE 6.3 is 'nobody' and 'nogroup'
</Para>
</Sect2>
</Sect1>
<Sect1 id="MiscAnswersChapter">
<Title>Answers to Miscellaneous Questions</Title>
<Para>
This chapter aims to answer some miscellaneous questions
about <Application>Linux</Application> and the <ProductName>JavaStations
</ProductName>.
</Para>
<Sect2 id="RARPFAQSection">
<Title>Regarding <Acronym>RARP</Acronym>: Is it Needed or Not?</Title>
<Para>
<Acronym>RARP</Acronym> is not needed with the <ProductName>Krups
</ProductName> or <ProductName>Espresso</ProductName> models and
recent <Application>PROLL</Application> software. <Acronym>RARP
</Acronym> is required for <ProductName>Mr. Coffee</ProductName>,
however.
</Para>
<Para>
This document explains how to set up kernel-level <Acronym>RARP</Acronym>
for the remaining models. In kernel versions 2.3.x/2.4.x, kernel-level
<Acronym>RARP</Acronym> support is removed. The Metabyte server
holds a version of <Application> ANK userland RARP</Application> from
Andi Klein of SuSE that will work with Linux/SPARC. It is available
from: <ULink url="http://corp.metabyte.com/~zaitcev/linux/rarpd-ap1.tar.bz2">
http://corp.metabyte.com/~zaitcev/linux/rarpd-ap1.tar.bz2</Ulink>.
The command to use then is <UserInput>rarpd-ank -e eth0</UserInput>.
<Quote>-e</Quote> makes it ignore /tftpboot checking, and
<Quote>eth0</Quote> is needed if you are behind a firewall.
</Para>
</Sect2>
<Sect2 id="EspressoCardReaderFAQSection">
<Title>Can One Use the Smart Card Reader on the Espresso models?</Title>
<Para>
This is not currently supported, but the reader follows an
ISO standard (ISO 7816-3). On <ProductName>
Espresso</ProductName>, if you look into <Application>PROLL</Application>,
there are definitions for the <Acronym>GPIO</Acronym> smartcard data/clock in
<Quote>eeprom.c</Quote>. So a programmer should technically be able to get
the Smart Card slot running.
</Para>
</Sect2>
<Sect2 id="SolarisDHCPFAQSection">
<Title>Can One Use the <Application>Solaris</Application> <Acronym>DHCP</Acronym>
server instead of <Acronym>ISC</Acronym>?</Title>
<Para>
Yes, this is possible. Earlier ISC daemons had problems, while the
Solaris server was more robust. Here is how to configure it:
</Para>
<Para>
First, fill in your /var/dhcp/<Quote>networks</Quote> file, populating
it with ethernet to IP info, and the appropriate leastime.
</Para>
<Screen>
# This example uses "infinite" leastime
#
0108002081C2AE 03 192.168.128.1 192.168.128.100 java01 # JavaStation
010800208E4CF6 03 192.168.128.2 192.168.128.100 java02 # JavaStation
</Screen>
<Para>
Next, fill in your /var/dhcp/dhcptab file with entries similar to:
</Para>
<Screen>
##
# First, some network info
#
Locale m :UTCoffst=21600:
www m :Include=Locale:Timeserv=192.168.128.100:DNSdmain=my.own.net:DNSserv=192.168.128.100:
192.168.128.0 m :Broadcst=192.168.128.255:Subnet=255.255.255.0:MTU=1500:BootSrvA=192.168.128.100:Router=192.168.128.101:NISdmain=my.own.net:NISservs=192.168.128.100:
#
# note: BootServA can point to a different TFTP server to get the kernel image
# off of.
#
#
##
# Now we define the JavaStation TFTPboot parameters
#
SUNW.Linux m :Include=www:JOSchksm=0x155dbf97:Rootpath=/tftpboot:BootFile=proll.mrcoffee:BootSrvA=192.168.128.100:TFTPsrvN=lnxserv:
SUNW.Linux.Krups m :Include=www:Rootpath=/tftpboot:BootFile=proll.krups:BootSrvA=192.168.128.100:TFTPsrvN=lnxserv:
#
#
# note: different classes are defined for the different PROLL images.
#
##
# Lastly, we list our hosts and which boot class each one gets.
java01 m :LeaseTim=-1:Include=SUNW.Linux:
java02 m :LeaseTim=-1:Include=SUNW.Linux.Krups:
#
#
#
###
</Screen>
</Sect2>
<Sect2 id="BootOptionsFAQSection">
<Title>Can One Pass Arguments to <Quote>/sbin/init</Quote> in a Diskless
Boot like This?</Title>
<Para>
<Application>PROLL</Application> ships with <Acronym>DHCP</Acronym>
options disabled, but it could be changed. You would then do something
like <Quote>/tftpboot/0A0A0000.ARGS</Quote> to get those parameters in.
</Para>
<Para>
If you boot from flash memory, <Application>PROLL</Application> picks up
<Application>SILO</Application> options (where <Application>SILO
</Application> is &gt; version 0.9.6 and <Application>PROLL</Application>
is &gt;= version 11)
</Para>
</Sect2>
<Sect2 id="EnablingXFAQSection">
<Title>Enabling <Application>X</Application> on the
<ProductName>JavaStation</ProductName></Title>
<Para>
Enabling <Application>X</Application> on the <ProductName>JavaStation
</ProductName> is possible.
</Para>
<Para>
First, be sure you have enabled the appropriate framebuffer device
in your kernel's configuration (as described elsewhere in this document).
</Para>
<Para>
Next, you'll want to use the generic <Application>Sun Framebuffer X server
</Application> and <Quote>XF86Config</Quote> file. You can build this
yourself, or you can try someone's prebuilt binaries, like the samples
pointed to below.
</Para>
<Para>
As of this time, <Application>XFree 4.0</Application> does not work on
the <Hardware>SPARC</Hardware> line. You'll need to use an
<Application>XFree 3.3.x</Application> variant in the meantime.
The new driver model of 4.0 will provide the path necessary to
provide a dedicated accellerated X server for the <ProductName>
JavaStations</ProductName>.
</Para>
<Para>
Sample XFree Sun Frambuffer X Server File is at:
<ULink
url="http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/XF86_FBDev">
http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/XF86_FBDev
</Ulink>
</Para>
<Para>
Sample XFree JavaStation-Ready XF86Config File is at:
<ULink
url="http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/XF86Config">
http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/XF86Config
</Ulink>
</Para>
</Sect2>
<Sect2 id="MailingListFAQSection">
<Title>Is There Mailing List Help?</Title>
<Para>
There is a mailing devoted exclusively to running <Application>Linux
</Application> on <Hardware>SPARC processor</Hardware> based machines
like the <ProductName>JavaStations</ProductName>.
</Para>
<Para>
The mailing list address is <Quote>sparclinux@vger.rutgers.edu</Quote>.
You should first subscribe to it by sending a message to
<Quote>majordomo@vger.rutgers.edu</Quote> with a subject and body line
of <Quote>subscribe sparclinux &lt;your_email_address&gt;</Quote>. You
can leave out your email address, but it is helpful to put it in if you
have multiple valid addresses at your site.
</Para>
<Para>
Archives of the Linux/Sparc mailing list are kept at:
<ULink url="http://www.progressive-comp.com/Lists/?l=linux-sparc&amp;r=1&amp;
w=2">http://www.progressive-comp.com/Lists/?l=linux-sparc&amp;r=1&amp;w=2"
</ULink>
</Para>
</Sect2>
<Sect2 id="FlashBootFAQSection">
<Title>Can One Boot a JavaStation from Onboard Flash Memory?</Title>
<Para>
It is possible to boot a JavaStation-NC from flash, but requires
too much arcane knowledge at the moment to be recommended.
</Para>
</Sect2>
</Sect1>
<Sect1 id="UnansweredQuestionsChapter">
<Title>Unanswered Questions</Title>
<Para>
This chapter lists questions which have been asked by the author or
others, but as of now have no answers to.
</Para>
<Sect2 id="PiggybackUnanswered">
<Title>Does <Quote>Piggyback</Quote> work for the <Hardware>x86</Hardware>
too?
</Title>
<Para>Enquiring minds want to know.</Para>
</Sect2>
<Sect2 id="EspressoAvailabilityUnanswered">
<Title>Where Can One Find <ProductName>Espressos</ProductName> for Sale?</Title>
<Para>Enquiring minds want to know.</Para>
</Sect2>
<Sect2 id="NetBootToolsUnanswered">
<Title>Do Tools Exist to Configure Net Boot Entries Quickly?</Title>
<Para>Enquiring minds want to know.</Para>
</Sect2>
<Sect2 id="FlashUseUnanswered">
<Title>What can one use the Krups Flash memory for?</Title>
<Para>
Though it is not supported without some experimental patches from
Metabyte, the question arises as to what uses one might put the
flash to use for, aside from booting?
</Para>
</Sect2>
</Sect1>
<Sect1 id="AppendixChapter">
<Title>Appendix</Title>
<Para>
This section is a collection of various reference documents which
do not belong in any other section.
</Para>
<Sect2 id="MrCoffeeJumpersSection">
<Title><ProductName>Mr. Coffee</ProductName> Jumper Info</Title>
<Screen>
Mr. Coffee Jumper Assignments
J0206 JTAG header, perhaps JSCC compatible.
J0904 1-2 shortened Enter POST - output ttya, input ttya
1-2 open Skip POST - output screen, input ttya
3-4 Unused
5-6 Unused
7-8 Unused
J1101 1-2 open (dflt) TPE squelch
1-2 short Reduced squelch threshold
J1102 1-2 open (dflt) 100 Ohm TPE termination
short 150 Ohm TPE termination
J1602 Manufacturing test of unknown sort
J1603 1-2 PROM select (unfortunately PROM socket is emply)
2-3 (default) Flash select
J1604 1-2 FPROM write disable
2-3 (default) FPROM write enable
J0904 block is a bit block of pullup resistors which a user may shorten.
They may be read from the keyboard controller with a command 0xDD.
</Screen>
</Sect2>
<Sect2 id="KrupsJumperSection">
<Title><ProductName>Krups</ProductName> Jumper Info</Title>
<Screen>
Krups Jumper Assignments
J1202 1-2 Use Flash
2-3 Select optional diagnostic FLASH PROM in socket J1203
(this does not sound quite right ...)
J1300 1-2 Software debug use
3-4 Factory use - PROM switch??
5-6 Unused
7-8 Flash update recovery
J0500 JTAG
</Screen>
</Sect2>
<Sect2 id="JavaStationPhotoGallery">
<Title><ProductName>JavaStation</ProductName> Photo Gallery</Title>
<Para>
This section contains links to pictures of the JavaStation line.
</Para>
<Para>
Front view of Mr. Coffee is at:
<ULink
url="http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/mr_coffee_front_view.jpg">
http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/mr_coffee_front_view.jpg
</Ulink>
</Para>
<Para>
Top view of Mr. Coffee is at:
<ULink
url="http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/mr_coffee_top_view.jpg">
http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/mr_coffee_top_view.jpg
</Ulink>
</Para>
<Para>
Inside view of Mr. Coffee is at:
<ULink
url="http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/mr_coffee_inside_view.jpg">
http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/mr_coffee_inside_view.jpg
</Ulink>
</Para>
<Para>
Mr. Coffee white case variation #1 at:
<ULink
url="http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/mr_coffee_white_case_1.jpg">
http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/mr_coffee_white_case_1.jpg
</Ulink>
</Para>
<Para>
Mr. Coffee white case variation #2 at:
<ULink
url="http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/mr_coffee_white_case_2.jpg">
http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/mr_coffee_white_case_2.jpg
</Ulink>
</Para>
<Para>
Front view of krups is at:
<ULink
url="http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/krups_front_view.jpg">
http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/krups_front_view.jpg
</Ulink>
</Para>
<Para>
Side view of krups is at:
<ULink
url="http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/krups_side_view.jpg">
http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/krups_side_view.jpg
</Ulink>
</Para>
<Para>
Top view of krups is at:
<ULink
url="http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/krups_top_view.jpg">
http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/krups_top_view.jpg
</Ulink>
</Para>
<Para>
Front view of Espresso is at:
<ULink
url="http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/espresso_front_view.jpg">
http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/espresso_front_view.jpg
</Ulink>
</Para>
<Para>
Side view of Espresso is at:
<ULink
url="http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/espresso_side_view.jpg">
http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/espresso_side_view.jpg
</Ulink>
</Para>
<Para>
Rear view of Espresso is at:
<ULink
url="http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/espresso_rear_view.jpg">
http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/espresso_rear_view.jpg
</Ulink>
</Para>
<Para>
Inside view of Espresso is at:
<ULink
url="http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/espresso_inside_view.jpg">
http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/espresso_inside_view.jpg
</Ulink>
</Para>
<Para>
See the <ProductName>JavaEngine-1</ProductName> at:
<ULink
url="http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/je1_overhead_view.jpg">
http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/je1_overhead_view.jpg
</Ulink>
</Para>
<Para>
View of the JavaStation mousepad is at:
<ULink
url="http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/javastation_mousepad.jpg">
http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/javastation_mousepad.jpg
</Ulink>
</Para>
<Para>
View of a Lab of JavaStations running Linux is at:
<ULink
url="http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/lab_of_javastations.jpg">
http://www.mscs.mu.edu/~tech/Linux_on_JS/Files/lab_of_javastations.jpg
</Ulink>
</Para>
</Sect2>
</Sect1>
</Article>