install.ms 40 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423
  1. .de EX
  2. .nr x \\$1v
  3. \\!h0c n \\nx 0
  4. ..
  5. .de FG \" start figure caption: .FG filename.ps verticalsize
  6. .KF
  7. .BP \\$1 \\$2
  8. .sp .5v
  9. .EX \\$2v
  10. .ps -1
  11. .vs -1
  12. ..
  13. .de fg \" end figure caption (yes, it is clumsy)
  14. .ps
  15. .vs
  16. .br
  17. \l'1i'
  18. .KE
  19. ..
  20. \" step numbers
  21. .nr ,s 0 1
  22. .af ,s a
  23. .am NH
  24. .nr ,s 0 1
  25. ..
  26. .de Sn \" .Sn "step"
  27. •\ Step \\n(H1\\n+(,s: \\$1
  28. ..
  29. .de Ss
  30. .P1
  31. .B
  32. .Sn "\\$1"
  33. .P2
  34. ..
  35. .TL
  36. Installing the Inferno Software
  37. .AU
  38. Vita Nuova
  39. .br
  40. support@vitanuova.com
  41. .br
  42. 12 June 2003
  43. .SP 4
  44. .LP
  45. Inferno can run as either a native operating system, in the usual way, or as a
  46. .I hosted
  47. virtual operating system,
  48. running as an application on another operating system.
  49. This paper explains how to install Inferno from the distribution media
  50. to a hosted environment and how to configure the system for
  51. basic networking.
  52. .LP
  53. Inferno can run as a hosted virtual operating system on top of
  54. Plan 9, Unix or Windows.
  55. In this paper, the term
  56. .I Unix
  57. is used to cover all supported variants, currently FreeBSD, Linux, HP/UX, Irix and Solaris,
  58. and the term
  59. .I Windows
  60. covers Microsoft Windows (98, Me, Nt, 2000, and XP).
  61. (Windows 98 might first require installation of the Unicode layer update from Microsoft.)
  62. .NH
  63. Preparation
  64. .LP
  65. You should ensure at least 150 Mbytes of free space on the filesystem.
  66. The installation program will copy files from the distribution CD to a
  67. directory on the filesystem called the
  68. .I inferno_root
  69. directory.
  70. You can choose the location of this directory.
  71. If you are installing to a multiuser filesystem outside your control a subdirectory of your home
  72. directory might be most sensible. If you plan to share the Inferno
  73. system with other users then common choices for
  74. .I inferno_root
  75. are
  76. .CW /usr/inferno
  77. on Unix and Plan 9 systems, and
  78. .CW c:\einferno
  79. on Windows systems.
  80. Where these appear in examples in this paper you should substitute
  81. your own
  82. .I inferno_root
  83. directory.
  84. .Ss "Choose the \fIinferno_root\fP directory."
  85. Ensure that the user who will run the installation program has
  86. appropriate filesystem permissions to create the
  87. .I inferno_root
  88. directory and
  89. files and subdirectories beneath it.
  90. .NH
  91. Copying Files
  92. .LP
  93. On all platforms the files will be owned by the user doing the installation,
  94. except for installation onto a FAT file system (eg, on Windows), where the files
  95. appear to be owned by
  96. .CW Everyone
  97. because FAT does not record ownership.
  98. .Ss "Insert the distribution CD into the CD drive."
  99. On Unix and Plan 9,
  100. mount the CD to a suitable location on the filesystem, call this location
  101. .I cd_path .
  102. On Windows, note the drive letter of the CD, call this drive letter
  103. .I cd_drive .
  104. The files will be copied by an Inferno hosted installation program which runs
  105. directly from the CD.
  106. The directory
  107. .CW /install
  108. on the CD contains an installation program for each supported platform \- a shell
  109. script for Unix and Plan 9 and an executable for Windows.
  110. The Plan 9 install script is called
  111. .CW Plan9.rc
  112. and determines the CPU type from the environment variable
  113. .CW cputype .
  114. The Unix install scripts all have names of the form
  115. .CW \fIhost_os\fP-\fIhost_arch\fP.sh
  116. where
  117. .I host_os
  118. will be one of:
  119. .CW FreeBSD ,
  120. .CW Linux ,
  121. or
  122. .CW Solaris
  123. and
  124. .I host_arch
  125. will be one of:
  126. .CW 386 ,
  127. .CW mips ,
  128. .CW power
  129. or
  130. .CW sparc .
  131. Most platforms offer just the one obvious combination.
  132. The Windows installation program is called
  133. .CW setup.exe ;
  134. it is used on all varieties of Windows.
  135. The next step describes how to begin the installation by running the program
  136. that corresponds to your host system.
  137. .Ss "Run the installation script."
  138. The installation program will copy files from the CD to the filesystem.
  139. The Windows installation program will also create registry entries and add
  140. an Inferno item to the Windows
  141. .I start
  142. menu.
  143. On Plan 9, run
  144. .P1
  145. rc \fIcd_path\fP/install/Plan9.rc \fIinferno_root\fP
  146. .P2
  147. Where
  148. .I inferno_root
  149. is the path to the chosen Inferno root directory. The CPU architecture
  150. will be inferred from the environment variable
  151. .CW cputype .
  152. On Unix, run
  153. .P1
  154. sh \fIcd_path\fP/install/\fIhost-os\fP-\fIhost_arch\fP.sh \fIinferno_root\fP
  155. .P2
  156. Where
  157. .I host_os
  158. is the Unix variant name
  159. .CW FreeBSD , (
  160. .CW Irix ,
  161. .CW Linux
  162. or
  163. .CW Solaris ).
  164. .I host_arch
  165. is the CPU type (eg,
  166. .CW 386 ),
  167. and
  168. .I inferno_root
  169. is the path to the chosen Inferno directory.
  170. On Windows, run
  171. .P1
  172. \fIcd_drive\f(CW:\einstall\esetup.exe
  173. .P2
  174. The Windows installation program will ask you to choose the location of the installation
  175. directory on the hard disk.
  176. .LP
  177. On all platforms, a copy of Inferno
  178. on the CD will install from various installation packages on the CD to the
  179. .I inferno_root
  180. subtree on the filesystem.
  181. On any platform it installs support for all.
  182. .LP
  183. Inferno is now installed, but it needs to be configured
  184. for your site.
  185. The process acts as a quick tour of parts of the system.
  186. The main tasks are to add local parameters to the network data base,
  187. and to set up the authentication system.
  188. If you are going to run Inferno standalone, for instance to experiment with Limbo
  189. and the file serving interface,
  190. most of what follows can be deferred indefinitely.
  191. It is still worthwhile skimming through it, because the first few sections tell how
  192. to start up Inferno with correct parameters (eg, root directory and graphics resolution).
  193. (A configuration program that runs under the window system would be more convenient,
  194. and fairly easy to do, but that has not yet been done.)
  195. .NH
  196. Running Inferno
  197. .LP
  198. Inferno host executables are all kept in a single directory corresponding
  199. to the combination of host operating system and CPU architecture \- the Inferno
  200. .CW bin
  201. directory.
  202. .P1
  203. \fIinferno_root\fP/\fIhost_os\fP/\fIhost_arch\fP/bin
  204. .P2
  205. (On Windows the path might need
  206. .CW \e
  207. not
  208. .CW /
  209. of course.)
  210. That directory can be added to the search path of the host system's command interpreter,
  211. and that process will be described first, although as discussed later one can use a script
  212. instead and that is sometimes more convenient.
  213. (Of course, the script will still need to refer to that directory.)
  214. .LP
  215. .I "Plan 9:\ \ "
  216. Plan 9 users should add a line to their
  217. .CW lib/profile
  218. file that binds this directory after their
  219. .CW /bin
  220. directory.
  221. .P1
  222. bind -a /usr/inferno/Plan9/$cputype/bin /bin
  223. .P2
  224. The bind is done after the existing
  225. .I bin
  226. directory to avoid hiding the existing Plan 9 compilers.
  227. If, at a later stage, you build either the hosted or native Inferno kernels for ARM or StrongARM
  228. you should ensure that the Inferno compilers are used rather than
  229. the Plan 9 compilers, since they differ in the implementation of
  230. floating-point instructions (the Plan 9 ARM suite uses a byte order that is more plausible
  231. than the order ARM dictates but therefore wrong).
  232. That difference is likely to be resolved at some point but it has not yet been done.
  233. .LP
  234. .I "Windows:\ \"
  235. The
  236. .I host_os
  237. is always
  238. .CW Nt
  239. (even for Windows 98, 2000 or XP)
  240. and
  241. .I host_arch
  242. is always
  243. .CW 386
  244. and the installation program will create an entry on the
  245. .I "start menu"
  246. to invoke Inferno.
  247. For Unix systems or Windows systems in which Inferno will be started
  248. from a command shell, the environment variable
  249. .CW PATH
  250. should be set to include the Inferno
  251. .CW bin
  252. directory.
  253. For Windows 95 and Windows 98 this should be done in the
  254. .CW \eautoexec.bat
  255. file by adding a line like
  256. .P1
  257. PATH=c:\einferno\eNt\e386\ebin;%PATH%
  258. .P2
  259. You will need to reboot Windows to have the system reread the
  260. .CW \eautoexec.bat
  261. file.
  262. For Windows NT and Windows 2000 modify the
  263. .CW Path
  264. environment variable through
  265. .I "Control Panel -> System -> Environment" .
  266. .LP
  267. If you are using an MKS or Cygwin Unix-like shell environment,
  268. you might instead set:
  269. .P1
  270. PATH="c:/inferno/Nt/386/bin;$PATH"
  271. .P2
  272. and export it if necessary.
  273. .LP
  274. .I "Unix:\ \"
  275. For Unix systems, for
  276. .CW sh
  277. derivatives, the environment variable
  278. .CW PATH
  279. should be set to include the Inferno
  280. .CW bin
  281. directory.
  282. This might be done in your
  283. .CW .profile
  284. file by adding a line like
  285. .P1
  286. PATH="/usr/inferno/Linux/386/bin:$PATH"
  287. .P2
  288. Don't forget to ensure that
  289. .CW PATH
  290. is exported.
  291. You may need to log out and back in again for the changes to take effect.
  292. .KS
  293. .Ss "Start Inferno."
  294. Hosted inferno is run by invoking an executable called
  295. .I emu .
  296. .KE
  297. On Windows, select the Inferno option from the
  298. .I "start menu" .
  299. This will invoke
  300. .I emu
  301. with appropriate arguments to find its files in
  302. .I inferno_root .
  303. If you need to change any of the options passed to
  304. .I emu
  305. when invoked from the
  306. .I "start menu"
  307. you need to do this by clicking the right mouse button
  308. on the Windows task bar and choosing
  309. .I "Properties -> Start Menu Programs -> Advanced"
  310. to modify the shortcut used for Inferno.
  311. For Unix and Plan 9, you will need to tell
  312. .I emu
  313. where to find the Inferno file tree by passing it the
  314. .CW -r\fIrootpath\f(CW
  315. command line option. For example
  316. .P1
  317. emu -r/usr/john/inferno
  318. .P2
  319. Without the
  320. .CW -r
  321. option it will look for the file tree in
  322. .CW /usr/inferno
  323. on Plan 9 and Unix and, when invoked from the command line on WIndows,
  324. the default is
  325. .CW \einferno
  326. on the current drive.
  327. (The Windows start menu by contrast has already been set to use the right directory by the installation software.)
  328. .LP
  329. When using graphics,
  330. .I emu
  331. will use a window with a resolution of 640 x 480 pixels by default. To use a larger resolution
  332. you will need to pass
  333. .I emu
  334. an option
  335. .CW -g\fIXsize\f(CWx\fIYsize\f(CW
  336. on the command line. So, for example, to invoke
  337. .I emu
  338. as above but with a resolution of 1024 x 768 pixels the full command line
  339. would be
  340. .P1
  341. emu -r/usr/john/inferno -g1024x768
  342. .P2
  343. When invoked in this way
  344. .I emu
  345. displays a command window running the Inferno shell
  346. .CW /dis/sh.dis .
  347. To avoid typing the command line options each time you invoke
  348. .I emu
  349. you can store them in the environment variable
  350. .CW EMU
  351. which is interrogated when
  352. .I emu
  353. is started and might as well be set along side the
  354. .CW PATH
  355. environment variable if the same configuration options are to be used on
  356. each invocation.
  357. .P1
  358. set EMU="-rd:\eDocuments and Settings\ejohn\einferno -g1024x768"
  359. .P2
  360. for Windows.
  361. .P1
  362. EMU=(-r/usr/john/inferno -g1024x768)
  363. .P2
  364. for Plan 9, and
  365. .P1
  366. EMU="-r/usr/john/inferno -g1024x768"
  367. .P2
  368. for Unix.
  369. An alternative to using the
  370. .CW EMU
  371. environment variable is to place the correct invocation in a
  372. script file (or batch file, for Windows) and invoke that instead
  373. of running
  374. .I emu
  375. directly.
  376. It is important to note that for Windows the
  377. .CW -r
  378. option also serves to indicate both the drive and directory on to which the software
  379. has been installed. Without a drive letter the system will assume the
  380. current drive and will fail if the user changes to an alternative drive.
  381. Once the environment variables or scripts are set up, as described above, invoking plain
  382. .P1
  383. emu
  384. .P2
  385. or the appropriate script file,
  386. should result in it starting up Inferno's command interpreter
  387. .I sh (1),
  388. which prompts with a semicolon:
  389. .P1
  390. ;
  391. .P2
  392. You can add a further option
  393. .CW -c1
  394. to start up
  395. .I emu
  396. in a
  397. mode in which the system compiles a module's
  398. Dis operations to native machine instructions when a module
  399. is loaded.
  400. (See the
  401. .I emu (1)
  402. manual page.)
  403. In
  404. .I compile
  405. mode programs that do significant computation will run much faster.
  406. Whether in compiled or interpreted mode you should now have a functional
  407. hosted Inferno system.
  408. When Inferno starts the initial
  409. .CW /dis/sh.dis
  410. it reads commands from the file
  411. .CW /lib/sh/profile
  412. before becoming interactive. See the manual pages for the shell
  413. .I sh (1)
  414. to learn more about tailoring the initial environment.
  415. .LP
  416. The semicolon is the default shell prompt. From this command window
  417. you should be able to see the installed Inferno files and directories
  418. .P1
  419. lc /
  420. .P2
  421. The command
  422. .I lc
  423. presents the contents of its directory argument in columnar fashion to standard
  424. output in the command window.
  425. .P1
  426. ; lc /
  427. FreeBSD/ Unixware/ icons/ libkern/ man/ prof/
  428. Hp/ acme/ include/ libkeyring/ mkconfig prog/
  429. Inferno/ appl/ keydb/ libmath/ mkfile services/
  430. Irix/ asm/ legal/ libmemdraw/ mkfiles/ tmp/
  431. LICENCE chan/ lib/ libmemlayer/ mnt/ tools/
  432. Linux/ dev/ lib9/ libtk/ module/ usr/
  433. MacOSX/ dis/ libbio/ licencedb/ n/ utils/
  434. NOTICE doc/ libcrypt/ limbo/ net/ wrap/
  435. Nt/ emu/ libdraw/ locale/ nvfs/
  436. Plan9/ env/ libfreetype/ mail/ o/
  437. Solaris/ fonts/ libinterp/ makemk.sh os/
  438. ;
  439. .P2
  440. Only the files and directories in and below the
  441. .I inferno_root
  442. directory on the host filesystem are immediately visible to an Inferno process;
  443. these files are made visible in the root of the Inferno file namespace.
  444. If you wish to import or export files
  445. from and to the host filesystem you will need to use tools on your
  446. host to move them in or out of the Inferno visible portion of your host
  447. filesystem (see the manual pages
  448. .I os (1)
  449. and
  450. .I cmd (3)
  451. for an interface to host commands).
  452. (We plan to make such access direct, but the details are still being worked out.)
  453. From this point onwards in this paper all file paths not qualified with
  454. .I inferno_root
  455. are assumed to be in the Inferno namespace.
  456. Files created in the host filesystem will be created with the user id of
  457. the user that started
  458. .I emu
  459. and on Unix systems with that user's group id.
  460. .NH
  461. Setting the site's time zone
  462. .LP
  463. Time zone settings are defined by
  464. files in the directory
  465. .CW /locale .
  466. The setting affects only how the time is displayed; the internal representation does not vary.
  467. For instance, the file
  468. .CW /locale/GMT
  469. defines Greenwich Mean Time,
  470. .CW /locale/GB-Eire
  471. defines time zones for Great Britain and the Irish Republic
  472. (GMT and British Summer Time), and
  473. .CW /locale/US_Eastern
  474. defines United States
  475. Eastern Standard Time and Eastern Daylight Time.
  476. The time zone settings used by applications are read
  477. (by
  478. .I daytime (2))
  479. from the file
  480. .CW /locale/timezone ,
  481. which is initially a copy of
  482. .CW /locale/GB-Eire .
  483. If displaying time as the time in London is adequate, you need change nothing.
  484. To set a different time zone for the whole site,
  485. copy the appropriate time zone file into
  486. .CW /locale/timezone :
  487. .P1
  488. cp /locale/US_Eastern /locale/timezone
  489. .P2
  490. To set a different time zone for a user or window,
  491. .I bind (1)
  492. the file containing the time zone setting over
  493. .CW /locale/timezone ,
  494. either in the user's profile or in a name space description file:
  495. .P1
  496. bind /locale/US_Eastern /locale/timezone
  497. .P2
  498. .NH
  499. Running the
  500. Window Manager
  501. .I wm
  502. .LP
  503. Graphical Inferno programs normally run under the window manager
  504. .I wm (1).
  505. Inferno has a simple editor,
  506. .I wm/edit ,
  507. that can be used to edit the inferno configuration files.
  508. The `power environment' for editing and program development is
  509. .I acme (1),
  510. but rather that throwing you in at the deep end, we shall stick to
  511. the simpler one for now.
  512. If you already know Acme from
  513. Plan 9, however, or perhaps Wily from Unix, feel free to use Inferno's
  514. .I acme
  515. instead of
  516. .I edit .
  517. .Ss "Start the window manager."
  518. Invoke
  519. .I wm
  520. by typing
  521. .P1
  522. wm/wm
  523. .P2
  524. You should see a new window open with a blue-grey background and a small
  525. .I "Vita Nuova"
  526. logo in the bottom left hand corner. Click on the logo with mouse button 1
  527. to reveal a small menu.
  528. Selecting the
  529. .I Edit
  530. entry will start
  531. .I wm/edit .
  532. In common with most
  533. .I wm
  534. programs the editor has three small buttons in a line at its top right hand corner.
  535. Clicking on the X button, the rightmost button,
  536. will close the program down. The leftmost of the three buttons will allow the window
  537. to be resized \- after clicking it drag the window from a point near to either one of its
  538. edges or one of its corners. The middle button will minimise the window, creating
  539. an entry for it in the application bar along the bottom of the main
  540. .I wm
  541. window. You can restore a minimised window by clicking on its entry in the application bar.
  542. The initial
  543. .I wm
  544. configuration is determined by the contents of the shell
  545. script
  546. .CW /lib/wmsetup
  547. (see
  548. .I toolbar (1)
  549. and
  550. .I sh (1)).
  551. .Ss "Open a shell window."
  552. Choose the
  553. .I shell
  554. option from the menu to open up a shell window. The configuration of Inferno
  555. will be done from this shell window.
  556. .NH
  557. Manual Pages
  558. .LP
  559. Manual pages for all of the system commands are available from a shell
  560. window. Use the
  561. .I man
  562. or
  563. .I wm/man
  564. commands. For example,
  565. .P1
  566. man wm
  567. .P2
  568. will give information about
  569. .I wm .
  570. And
  571. .P1
  572. man man
  573. .P2
  574. will give information about using
  575. .I man .
  576. .I Wm/man
  577. makes use of the Tk text widget to produce slightly more
  578. attractive output than the plain command
  579. .I man .
  580. Here, and in other Inferno documentation you will see references to manual page
  581. entries of the form \fIcommand\f(CW(\fIsection\f(CW)\fR.
  582. You can display the manual page for the command by running
  583. .P1
  584. man \fIcommand\fP
  585. .P2
  586. or
  587. .P1
  588. man \fIsection\fP \fIcommand\fP
  589. .P2
  590. if the manual page appears in more than one section.
  591. .NH
  592. Initial Namespace
  593. .LP
  594. The initial Inferno namespace is built
  595. by placing the root device '#/' (see
  596. .I root (3))
  597. at the root of the namespace and binding
  598. .nr ,i 0 1
  599. .af ,i i
  600. .IP \n+(,i)
  601. the host filesystem device '#U' (see
  602. .I fs (3))
  603. containing the
  604. .I inferno_root
  605. subtree of the host filesystem at the root of the Inferno filesystem,
  606. .IP \n+(,i)
  607. the console device '#c' (see
  608. .I cons (3))
  609. in
  610. .CW /dev ,
  611. .IP \n+(,i)
  612. the prog device '#p' (see
  613. .I prog (3))
  614. onto
  615. .CW /prog ,
  616. .IP \n+(,i)
  617. the IP device '#I' (see
  618. .I ip (3))
  619. in
  620. .CW /net ,
  621. and
  622. .IP \n+(,i)
  623. the environment device '#e' (see
  624. .I env (3))
  625. at
  626. .CW /dev/env .
  627. .rr ,i
  628. .LP
  629. You can see the sequence of commands required to construct the current namespace
  630. by running
  631. .P1
  632. ns
  633. .P2
  634. .NH
  635. Inferno's network
  636. .LP
  637. If you are just going to use Inferno for local Limbo programming, and not use its
  638. networking interface, you can skip to the section ``Adding new users'' at the end of this document.
  639. You can always come back to this step later.
  640. .LP
  641. To use IP networking, the IP device
  642. .I ip (3)) (
  643. must have been bound into
  644. .CW /net .
  645. Typing
  646. .P1
  647. ls -l /net
  648. .P2
  649. (see
  650. .I ls (1))
  651. should result in something like
  652. .P1
  653. --rw-rw-r-- I 0 network john 0 May 31 07:11 /net/arp
  654. --rw-rw-r-- I 0 network john 0 May 31 07:11 /net/ndb
  655. d-r-xr-xr-x I 0 network john 0 May 31 07:11 /net/tcp
  656. d-r-xr-xr-x I 0 network john 0 May 31 07:11 /net/udp
  657. .P2
  658. There might be many more names on some systems.
  659. .LP
  660. A system running Inferno, whether native or hosted, can by agreement attach to any or all resources that
  661. are in the name space of another Inferno system (or even its own).
  662. That requires:
  663. .IP •
  664. the importing system must know where to find them
  665. .IP •
  666. the exporting system must agree to export them
  667. .IP •
  668. the two systems must authenticate the access (not all resources will be permitted to all systems or users)
  669. .IP •
  670. the conversation can be encrypted to keep it safe from prying eyes and interference
  671. .LP
  672. On an Inferno network, there is usually one secure machine that acts as authentication server.
  673. All other systems variously play the rôles of server and client as required: any system can import some resources (or none)
  674. and export others (or none), simultaneously, and differently in different name spaces.
  675. In following sections, we shall write as though there were three distinct machines:
  676. authentication server (signer); server (exporting resources); and client (importing resources).
  677. With Inferno, you can achieve a similar effect on a single machine by starting up distinct
  678. instances of
  679. .I emu
  680. instead.
  681. That is the easiest way to become familiar with the process (and also avoids having to install
  682. the system on several machines to start).
  683. It is still worthwhile setting up a secured
  684. authentication server later, especially if you are using Windows on a FAT file system
  685. where the host system's file protections are limited.
  686. .LP
  687. We shall now configure Inferno to allow each of the functions listed above:
  688. .IP •
  689. change the network database to tell where to find local network resources
  690. .IP •
  691. set up the authentication system, specifically the authentication server or `signer'
  692. .IP •
  693. start network services (two distinct sets: one for the authentication services and the other for
  694. all other network services)
  695. .NH
  696. Network database files
  697. .LP
  698. In both hosted and native modes, Inferno uses a collection of text files
  699. of a particular form to store all details of network and service configuration.
  700. When running hosted, Inferno typically gets most of its data from the host operating system,
  701. and the database contains mainly Inferno-specific data.
  702. .LP
  703. The file
  704. .CW /lib/ndb/local
  705. is the root of the collection of network database files.
  706. The format is defined by
  707. .I ndb (6),
  708. but essentially it is a collection of groups of attribute/value pairs of the form
  709. \fIattribute\fP\f(CW=\fP\fIvalue\fP.
  710. Attribute names and most values are case-sensitive.
  711. .LP
  712. Related attribute/value pairs are grouped into database `entries'.
  713. An entry can span one or more
  714. lines: the first line starts with a non-blank character,
  715. and any subsequent lines in that entry start
  716. with white space (blank or tab).
  717. .NH 2
  718. Site parameters
  719. .LP
  720. The version of
  721. .CW /lib/ndb/local
  722. at time of writing looks like this:
  723. .P1
  724. database=
  725. file=/lib/ndb/local
  726. file=/lib/ndb/dns
  727. file=/lib/ndb/inferno
  728. file=/lib/ndb/common
  729. infernosite=
  730. #dnsdomain=your.domain.com
  731. #dns=1.2.3.4 # resolver
  732. SIGNER=your_Inferno_signer_here
  733. FILESERVER=your_Inferno_fileserver_here
  734. smtp=your_smtpserver_here
  735. pop3=your_pop3server_here
  736. registry=your_registry_server
  737. .P2
  738. The individual files forming the data base are listed in order in the
  739. .CW database
  740. entry.
  741. They can be ignored for the moment.
  742. The entry labelled
  743. .CW infernosite=
  744. defines a mapping from symbolic host names of the form
  745. .CW $\fIservice\f(CW
  746. to a host name, domain name, or a numeric Internet address.
  747. For instance, an application that needs an authentication service
  748. will refer to
  749. .CW $SIGNER
  750. and an Inferno naming service will translate that at run-time to the appropriate network name for
  751. that environment.
  752. Consequently,
  753. the entries above need to be customised for a given site.
  754. (The items that are commented out are not needed when the host's own DNS resolver is used instead
  755. of Inferno's own
  756. .I dns (8).)
  757. For example, our
  758. .CW infernosite
  759. entry in the
  760. .CW local
  761. file might look something like this
  762. .P1
  763. infernosite=
  764. dnsdomain=vitanuova.com
  765. dns=200.1.1.11 # resolver
  766. SIGNER=doppio
  767. FILESERVER=doppio
  768. smtp=doppio
  769. pop3=doppio
  770. registry=doppio
  771. .P2
  772. where
  773. .CW doppio
  774. is the host name of a machine that is offering the given services to Inferno,
  775. and
  776. .CW 200.1.1.11
  777. is the Internet address of a local DNS resolver.
  778. .Ss "Enter defaults for your site"
  779. .LP
  780. The only important names initially are:
  781. .IP \f(CWSIGNER\fP 20
  782. the host or domain name, or address of the machine that will act as signer
  783. .IP \f(CWregistry\fP
  784. the name or address of a machine that provides the local dynamic service
  785. .I registry (4)
  786. .IP \f(CWFILESERVER\fP
  787. the primary file server (actually needed only by clients with no storage of their own)
  788. .LP
  789. All others are used by specific applications such as
  790. .I acme (1)
  791. mail or
  792. .I ftpfs (4).
  793. .LP
  794. If you are using a single machine for signer and server/client, put its name in those three entries.
  795. .NH 2
  796. Connection server
  797. .I cs (8)
  798. and name translation
  799. .LP
  800. The connection server
  801. .I cs (8)
  802. uses the network database
  803. and other
  804. data (such as that provided by the host system and
  805. the Internet DNS servers) to translate symbolic network names and services into instructions
  806. for connecting to a given service.
  807. In hosted mode,
  808. network and service names are passed through to the host for conversion to numeric IP
  809. addresses and port numbers. If the host is unable to convert a service name
  810. the connection server will attempt to convert the name using mappings
  811. of service and protocol names to Internet port numbers
  812. in the file
  813. .CW /lib/ndb/inferno :
  814. .P1
  815. tcp=infgamelogin port=6660 # inferno games login service
  816. tcp=styx port=6666 # main file service
  817. tcp=mpeg port=6667 # mpeg stream
  818. tcp=rstyx port=6668 # remote invocation
  819. tcp=infdb port=6669 # database server
  820. tcp=infweb port=6670 # inferno web server
  821. tcp=infsigner port=6671 # inferno signing services
  822. tcp=infcsigner port=6672 # inferno countersigner
  823. tcp=inflogin port=6673 # inferno credential service
  824. tcp=infsds port=6674 # software download
  825. tcp=registry port=6675 # registry(4)
  826. udp=virgil port=2202 # naming service
  827. .P2
  828. For the moment, leave that file as it is.
  829. You will only need to modify this file if in future
  830. you add new statically-configured services to Inferno.
  831. (Services that come and go dynamically might use
  832. .I registry (4)
  833. instead, a registry manager that allows a service to be found
  834. using a description of it.)
  835. .NH
  836. Configuring a Signer
  837. .LP
  838. Before an Inferno machine can authenticate establish a secure connection to an Inferno
  839. service on another machine, each system needs to obtain a certificate from a common signer.†
  840. We talk here as though there is only one `signer' per site but in fact there can be application- or
  841. group-specific ones.
  842. For instance, a version of the Inferno games server automatically starts its own signing service to
  843. keep the identities and keys used for game service separate from those of the primary
  844. system, allowing users to set up their own gaming groups without fuss.
  845. .FS
  846. .FA
  847. †The authentication system will shortly expand to a rôle-based one allowing a chain of certificates to be used,
  848. from several signers, with delegation etc.
  849. .FE
  850. To use authenticated connections for the primary
  851. file services we need to set up a signer to generate
  852. certificates for users (see
  853. .I createsignerkey (8)
  854. and
  855. .I logind (8)).
  856. .LP
  857. Choose an Inferno machine to become the signer.
  858. If this is the first or only
  859. Inferno machine on your network then make this machine the signer.
  860. (It is more realistic if you start up a separate copy of
  861. .I emu
  862. and leave it in `console' mode without starting the window system.)
  863. You can always move the function elsewhere later.
  864. .Ss "Empty the secret file of secrets."
  865. The authentication server verifies a user's identity by checking that the user knows a shared secret.
  866. (In fact the secret is not used directly, but instead a scrambled value that was derived from it.)
  867. The file
  868. .CW /keydb/keys
  869. holds those secrets; it is encrypted using a secret password or phrase known only to the
  870. manager of the authentication server.
  871. Having just installed Inferno, the file
  872. should exist and be readable only by you (or the user as which the authentication service will run).
  873. On the signer machine, type
  874. .P1
  875. ls -l /keydb/keys
  876. .P2
  877. You should see something like:
  878. .P1
  879. --rw------- M 7772 yourname inf 0 Jun 12 03:08 /keydb/keys
  880. .P2
  881. You should see something like the above.
  882. If the file does not exist or is not empty or has the wrong mode, use:
  883. .P1
  884. cp /dev/null /keydb/keys; chmod 600 /keydb/keys
  885. .P2
  886. to set it right.
  887. .Ss "Generate a signer key."
  888. Next on the signer machine, run
  889. .P1
  890. auth/createsignerkey \fIname\fP
  891. .P2
  892. In place of
  893. .I name
  894. enter the network name of the signer. A fully-qualified domain name of a
  895. host or individual is fine.
  896. This value will appear as the signer name in each
  897. certificate generated by the signer.
  898. .I Createsignerkey
  899. creates public and private keys that are used by the signer when generating
  900. certificates.
  901. They are stored in
  902. .CW /keydb/signerkey ;
  903. check that it has permissions that limit access to the user that will run the
  904. authentication services:
  905. .P1
  906. ; ls -l /keydb/signerkey
  907. --rw------- M 32685 secrets inf 1010 Jul 07 2000 /keydb/signerkey
  908. .P2
  909. Use
  910. .I chmod (1)
  911. to set the mode to read/write only for the owner if necessary:
  912. .P1
  913. chmod 600 /keydb/signerkey
  914. .P2
  915. .Ss "Start the authentication network services"
  916. Still at the signer console, type
  917. .P1
  918. svc/auth
  919. .P2
  920. That script (see
  921. .I svc (8))
  922. will check that the
  923. .CW /keydb/keys
  924. and
  925. .CW /keydb/signerkey
  926. files exist, and then
  927. start the program
  928. .I keyfs (4),
  929. which manages the
  930. .CW keys
  931. file.
  932. It will prompt for the password (pass phrase) you wish to use to protect the
  933. .CW keys
  934. file, now and on subsequent runs:
  935. .P1
  936. ; svc/auth
  937. Key:
  938. Confirm key:
  939. .P2
  940. It prompts twice to confirm it.
  941. If successfully confirmed, it will then
  942. start the
  943. network services used by Inferno to authenticate local and remote users and hosts.
  944. (If confirmation fails, retry by running
  945. .CW svc/auth
  946. again.)
  947. .LP
  948. You can check that they are running by typing:
  949. .P1
  950. ps
  951. .P2
  952. which should show something like the following:
  953. .P1
  954. 1 1 john release 74K Sh[$Sys]
  955. 3 2 john alt 15K Cs
  956. 10 9 john recv 25K Keyfs
  957. 11 9 john release 44K Styx[$Sys]
  958. 12 9 john recv 25K Keyfs
  959. 14 1 john alt 8K Listen
  960. 16 1 john release 8K Listen[$Sys]
  961. 18 1 john alt 9K Listen
  962. 20 1 john release 9K Listen[$Sys]
  963. 22 1 john alt 9K Listen
  964. 24 1 john release 9K Listen[$Sys]
  965. 26 1 john alt 8K Listen
  966. 28 1 john release 8K Listen[$Sys]
  967. 29 1 john ready 73K Ps[$Sys]
  968. .P2
  969. There should be
  970. .CW Keyfs
  971. and
  972. .CW Listen
  973. processes.
  974. .Ss "Enter user names and secrets."
  975. For each user to be authenticated by the signer run
  976. .P1
  977. auth/changelogin \fIusername\fP
  978. .P2
  979. You will be prompted to supply a secret (ie, password or pass phrase) and expiration date.
  980. The expiration date will be used
  981. as the maximum expiration date of authentication certificates granted to that user.
  982. .I Changelogin
  983. (see
  984. .I changelogin (8))
  985. accesses the name space generated by
  986. .I keyfs (4),
  987. which has just been started above by
  988. .CW svc/auth .
  989. A user can later change the stored secret using the
  990. .I passwd (1)
  991. command.
  992. For the signer to generate a certificate there must be at least one entry in the
  993. password file.
  994. If you are not sure at this stage of the names of the users that you want to
  995. authenticate then create an entry for the user
  996. .CW inferno
  997. and yourself.
  998. .NH
  999. Establishing a Secure Connection
  1000. .LP
  1001. To establish a secure connection between two Inferno machines, each needs to present a public key with
  1002. a certificate signed by a common signer.
  1003. We shall make two public/private key sets, one for the server and one for a client
  1004. (they differ only in where they are stored).
  1005. We shall do the server first, because the usual network services require
  1006. the server possess some keys before they can start.
  1007. We shall then start those services, and finally sort out the client.
  1008. .Ss "Start the connection service."
  1009. The server still needs to make contact with the signer, so we need to start the basic connection service
  1010. .I cs (8).
  1011. If you are using the same instance of
  1012. .I emu
  1013. in which you invoked
  1014. .CW svc/auth
  1015. above, you should skip this step.
  1016. To check, you should see a new file in the
  1017. .CW /net
  1018. directory called
  1019. .CW cs .
  1020. Run the command
  1021. .P1
  1022. ls /net
  1023. .P2
  1024. You should see at least the following names in the output:
  1025. .P1
  1026. /net/cs
  1027. /net/ndb
  1028. /net/tcp
  1029. /net/udp
  1030. .P2
  1031. Otherwise, type
  1032. .P1
  1033. ndb/cs
  1034. .P2
  1035. That starts
  1036. .I cs (8).
  1037. Try the
  1038. .CW "ls /net"
  1039. again to check that the
  1040. .CW cs
  1041. file has appeared.
  1042. .LP
  1043. .Ss "Generate a server key set."
  1044. On the server machine (or in the `server' window),
  1045. use
  1046. .I getauthinfo (8)
  1047. to obtain a certificate and save it in a file named
  1048. .CW default
  1049. by running
  1050. .P1
  1051. getauthinfo default
  1052. .P2
  1053. .I Getauthinfo
  1054. will prompt for the address of your signer (you can often
  1055. just use its host name or even
  1056. .CW localhost )
  1057. and for a remote username and password
  1058. combination.
  1059. .I Getauthinfo
  1060. will connect to the
  1061. .I inflogin
  1062. service on the signer and authenticate you against its user and password database,
  1063. .CW /keydb/keys ,
  1064. using the username and password that you entered above.
  1065. Answer
  1066. .CW yes
  1067. to the question that asks if you want to save the certificate in a file.
  1068. .I Getauthinfo
  1069. will save a certificate in the file
  1070. .CW /usr/\fIuser\f(CW/keyring/default
  1071. where
  1072. .I user
  1073. is the name in
  1074. .CW /dev/user .
  1075. .NH
  1076. Network Services
  1077. .LP
  1078. As mentioned above, in a full Inferno network
  1079. the authentication services will usually be run on a secured machine of their own (the signer),
  1080. and the ordinary network services such as file service are not run on a signer.
  1081. If you are, however, using one machine for all functions, you can get the right
  1082. effect by starting another instance of
  1083. .I emu ,
  1084. to act as an Inferno host that is not a signer.
  1085. This one will run the services of a primary file server
  1086. and the site
  1087. .I registry (4).
  1088. .LP
  1089. Commands described in
  1090. .I svc (8)
  1091. start listeners for various local network services.
  1092. (The commands are actually shell scripts.)
  1093. As we saw above,
  1094. .CW svc/auth
  1095. starts the services on a signer.
  1096. .LP
  1097. Here we shall start the usual set of services.
  1098. .KS
  1099. .Ss "Start the network listener services."
  1100. Type
  1101. .P1
  1102. svc/net
  1103. .P2
  1104. .KE
  1105. Various network services will (should!) now be running. To confirm this type
  1106. .P1
  1107. ps
  1108. .P2
  1109. which should show something like the following:
  1110. .P1
  1111. ; ps
  1112. 1 1 inferno release 74K Sh[$Sys]
  1113. 7 6 inferno alt 15K Cs
  1114. 13 1 inferno recv 15K Registry
  1115. 14 1 inferno release 44K Styx[$Sys]
  1116. 15 1 inferno recv 15K Registry
  1117. 17 1 inferno alt 8K Listen
  1118. 19 1 inferno release 8K Listen[$Sys]
  1119. 22 1 inferno alt 8K Listen
  1120. 24 1 inferno release 8K Listen[$Sys]
  1121. 25 1 inferno ready 74K Ps[$Sys]
  1122. .P2
  1123. There should be a few
  1124. .CW Listen
  1125. processes and perhaps a
  1126. .CW Registry .
  1127. .LP
  1128. You can also try
  1129. .P1
  1130. netstat
  1131. .P2
  1132. .I Netstat
  1133. prints information about network connections. You should see
  1134. several lines of output, each one describing an announced TCP or UDP service.
  1135. Depending upon the contents of the network configuration files we included on the CD,
  1136. you might see output something like this:
  1137. .P1
  1138. tcp/1 Announced inferno 200.1.1.89!6668 ::!0
  1139. tcp/2 Announced inferno 200.1.1.89!6666 ::!0
  1140. tcp/3 Announced inferno 200.1.1.89!6675 ::!0
  1141. .P2
  1142. Each line corresponds to a network connection:
  1143. the connection name, the name of the user running the server,
  1144. the address of the local end of the connection,
  1145. the address of the remote end of the connection,
  1146. and the connection status.
  1147. The connection name is actually the protocol and conversation directory
  1148. in
  1149. .CW /net .
  1150. The connection addresses are all of the form \fIhost\f(CW!\fIport\fR
  1151. for these IP based services, and the remote addresses are not filled in
  1152. because they all represent listening services that are in the
  1153. .CW Announced
  1154. state.
  1155. In this example the third line shows a TCP service listening on port 6675.
  1156. Examining
  1157. .CW /lib/ndb/inferno
  1158. with
  1159. .CW grep
  1160. (see
  1161. .I grep (1))
  1162. shows that the listener on port 6675 is the Inferno registry service
  1163. .P1
  1164. grep 6675 /lib/ndb/inferno
  1165. .P2
  1166. gives
  1167. .P1
  1168. tcp=registry port=6675 # default registry
  1169. .P2
  1170. .LP
  1171. Now the server is ready but we need a client.
  1172. .LP
  1173. Either use a third machine or (more likely at first) simply start another
  1174. .I emu
  1175. instance in a new window.
  1176. Start its connection server, again by typing
  1177. .P1
  1178. ndb/cs
  1179. .P2
  1180. The connection server is fundamental to the Inferno network.
  1181. Once networking is set up, when subsequently starting up
  1182. a client you should start
  1183. .I cs
  1184. before starting the window system.
  1185. Note that if you are running the Inferno instance as a server, or combined
  1186. server and client,
  1187. the
  1188. .CW svc/net
  1189. that starts the network services
  1190. automatically starts
  1191. .I cs ,
  1192. and you need not do so explicitly.
  1193. .LP
  1194. .Ss "Generate a client certificate."
  1195. Obtain a certificate for the client in the same way as on the server.
  1196. We shall obtain a certificate for use with a specific server
  1197. by storing
  1198. it in a file whose name exactly matches the network address of the server
  1199. .P1
  1200. getauthinfo tcp!\fIhostname\fP
  1201. .P2
  1202. Use the current machine's
  1203. .I hostname .
  1204. .I Getauthinfo
  1205. stores the certificate in the file
  1206. .CW /usr/\fIuser\fP/keyring/\fIkeyname\fP
  1207. where
  1208. .I user
  1209. is the name in
  1210. .CW /dev/user
  1211. and
  1212. .I keyname
  1213. is the argument given to
  1214. .I getauthinfo .
  1215. Again,
  1216. answer
  1217. .CW yes
  1218. to the question that asks if you want to save the certificate in a file.
  1219. .LP
  1220. Now that both client and server have a certificate obtained from the same signer
  1221. it is possible to establish a secure connection between them.
  1222. Note that getting keys and certificates with
  1223. .I getauthinfo
  1224. is normally done just once (or at most once per server when the
  1225. .CW default
  1226. key is not used).
  1227. In short, all the work done up to now need not be repeated.
  1228. After this, provided the keys were saved to a keyring file,
  1229. as many authenticated connections can be made as desired
  1230. until the certificate expires (which by default is whenever the password entry
  1231. was set to expire).
  1232. Also note that the certificates for different machines can have
  1233. different signers, and one can even use different certificates for the same machine
  1234. when the remote user name is to differ
  1235. (the
  1236. .CW -f
  1237. option of
  1238. .I getauthinfo
  1239. can then be useful to force an appropriate keyring name).
  1240. .Ss "Make an authenticated connection."
  1241. The script
  1242. .CW svc/net
  1243. on the server started fundamental name services and also a Styx file service.
  1244. That can also be started separately using
  1245. .CW svc/styx .
  1246. In either case the namespace that is served
  1247. is the one in which the command was invoked.
  1248. Now you can test the service.
  1249. .LP
  1250. Confirm that
  1251. .CW /n/remote
  1252. is an empty directory by typing
  1253. .P1
  1254. lc /n/remote
  1255. .P2
  1256. You can now mount the server's name space
  1257. onto the client's directory
  1258. .CW /n/remote
  1259. by typing
  1260. .P1
  1261. mount \fIserveraddr\fP /n/remote
  1262. .P2
  1263. Where
  1264. .I serveraddr
  1265. is the IP address of the server or a name that the host can resolve to the
  1266. IP address of the server.
  1267. Now
  1268. .P1
  1269. lc /n/remote
  1270. .P2
  1271. should reveal the files and directories in the namespace being served by the server.
  1272. Those files are now also visible in the namespace of your shell.
  1273. You will notice that these changes only affect the shell in which you ran the
  1274. .I mount
  1275. command \- other windows are unaffected.
  1276. You can create, remove or modify files and directories in and under
  1277. .CW /n/remote
  1278. much as you can any other file or directory in your namespace.
  1279. In fact, in general, a process does not need to know whether a file
  1280. actually resides locally or remotely.
  1281. You can unmount the mounted directory with
  1282. .I unmount .
  1283. Type
  1284. .P1
  1285. unmount /n/remote
  1286. .P2
  1287. You can confirm that it has gone by running
  1288. .P1
  1289. ls /n/remote
  1290. .P2
  1291. All connections made by Inferno are authenticated. The default connection
  1292. made by
  1293. .I mount
  1294. is authenticated but uses neither encryption nor secure digests.
  1295. You can pass an argument to
  1296. .I mount
  1297. to specify
  1298. a more secure connection:
  1299. its
  1300. .CW -C
  1301. option gives it a hashing and an encryption algorithm to be applied to
  1302. the connection.
  1303. .KS
  1304. .Ss "Make a secure authenticated connection."
  1305. For example,
  1306. .P1
  1307. mount -C sha1/rc4_256 \fIserveraddr\fP /n/remote
  1308. .P2
  1309. makes an authenticated connection to the machine given by
  1310. .I serveraddr ,
  1311. then engages SHA1 hashing for message digesting and 256-bit RC4 for encryption.
  1312. .KE
  1313. It mounts the namespace served by
  1314. .I serveraddr 's
  1315. Styx service on the local Inferno directory
  1316. .CW /n/remote .
  1317. .NH
  1318. Adding new users
  1319. .LP
  1320. Every inferno process has an associated
  1321. .I "user name" .
  1322. At boot time the user name is set equal to your login name on the host
  1323. operating system.
  1324. The user name is used by
  1325. .I wm/logon
  1326. to select the home directory, and
  1327. by other programs like
  1328. .I mount
  1329. when it searches for certificates.
  1330. (It can also control permission for file access on the local system in native Inferno
  1331. and some hosted Inferno configurations.)
  1332. When you attach to a server on another
  1333. system the user name in the authenticating certificate can be used by
  1334. the remote file service to set the user name appropriately there.†
  1335. .FS
  1336. .FA
  1337. †The details are system-dependent and currently subject to change.
  1338. .FE
  1339. .LP
  1340. To create a new user, copy the directory
  1341. .CW /usr/inferno
  1342. into
  1343. \f(CW/usr/\fP\fIusername\fP.
  1344. If the user is to have access to services on the network,
  1345. make an authentication server entry using
  1346. .I changelogin (8).
  1347. The user can change the stored secret using
  1348. .I passwd (1),
  1349. if desired.
  1350. Having logged in for the first time, the user should generate
  1351. a default public/private key set using
  1352. .I getauthinfo (8).
  1353. (The authentication services must be running somewhere.)
  1354. .LP
  1355. The
  1356. .I wm
  1357. window manager program
  1358. .I wm/logon
  1359. allows a user to login to the local Inferno system as an Inferno
  1360. user (different from the host user name).
  1361. Its use is shown next.
  1362. .Ss "Re-start Inferno."
  1363. You should now close down any instances of
  1364. .I emu
  1365. that you are currently running.
  1366. The quickest way to do this is to
  1367. type
  1368. .I control-c
  1369. in the emu window in which you ran
  1370. .I wm/wm .
  1371. Start a new
  1372. .I emu ,
  1373. as before, by either running
  1374. .P1
  1375. emu
  1376. .P2
  1377. or by choosing the appropriate entry from your start menu on
  1378. Windows machines. This time, start network services
  1379. .P1
  1380. svc/net
  1381. .P2
  1382. and then run
  1383. .P1
  1384. wm/wm wm/logon
  1385. .P2
  1386. and log in as user
  1387. .I inferno .
  1388. When you log in,
  1389. .I wm/logon
  1390. will change directory to
  1391. .CW /usr/inferno
  1392. and then write the name
  1393. .CW inferno
  1394. to
  1395. .CW /dev/user .
  1396. If the file
  1397. .CW /usr/inferno/namespace
  1398. exists it will be used to construct a new namespace for the user
  1399. based on the commands that it contains (see
  1400. .I newns (2)).
  1401. .NH
  1402. What next
  1403. .LP
  1404. You should now have a fully functional Inferno system.
  1405. You will need to have a three button mouse to use
  1406. .I acme ,
  1407. .I wm ,
  1408. or
  1409. .I plumbing .
  1410. .LP
  1411. To learn more you could start with the manual pages for:
  1412. .I intro (1),
  1413. .I emu (1),
  1414. .I wm (1),
  1415. .I wm-misc (1),
  1416. .I sh (1),
  1417. .I acme (1),
  1418. and
  1419. .I limbo (1)
  1420. and also the papers in sections 1, 2 and 3
  1421. of Volume 2 of
  1422. .I "The Inferno Programmer's Manual" .