1 <chapter id="installing">
2 <title>Installing/compiling Wine</title>
3 <para>How to install Wine...</para>
5 <sect1 id="replace-windows" xreflabel="--Installing Section--">
6 <title>WWN #52 Feature: Replacing Windows</title>
9 Written by &name-ove-kaaven; <email>&email-ove-kaaven;</email>
14 <title>Installation Overview</title>
17 A Windows installation consists of many different parts.
23 Registry. Many keys are supposed to exist and contain
24 meaningful data, even in a newly-installed Windows.
29 Directory structure. Applications expect to find and/or
30 install things in specific predetermined locations. Most
31 of these directories are expected to exist. But unlike
32 Unix directory structures, most of these locations are
33 not hardcoded, and can be queried via the Windows API
34 and the registry. This places additional requirements on
40 System DLLs. In Windows, these usually reside in the
41 <filename>system</filename> (or
42 <filename>system32</filename>) directories. Some Windows
43 applications check for their existence in these
44 directories before attempting to load them. While Wine
45 is able to load its own internal DLLs
46 (<filename>.so</filename> files) when the application
47 asks for a DLL, Wine does not simulate the existence of
54 While the users are of course free to set up everything
55 themselves, the Wine team will make the automated Wine source
56 installation script, <filename>tools/wineinstall</filename>,
57 do everything we find necessary to do; running the
58 conventional <userinput>configure && make depend && make && make
59 install</userinput> cycle is thus not recommended, unless
60 you know what you're doing. At the moment,
61 <filename>tools/wineinstall</filename> is able to create a
62 configuration file, install the registry, and create the
63 directory structure itself.
68 <title>The Registry</title>
70 The default registry is in the file
71 <filename>winedefault.reg</filename>. It contains directory
72 paths, class IDs, and more; it must be installed before most
73 <filename>INSTALL.EXE</filename> or
74 <filename>SETUP.EXE</filename> applications will work. The
75 registry is covered in more detail in an earlier article.
80 <title>Directory Structure</title>
82 Here's the fundamental layout that Windows applications and
83 installers expect. Without it, they seldom operate
88 C:\ Root directory of primary disk drive
89 Windows\ Windows directory, containing .INI files,
91 System\ Win3.x/95/98/ME directory for common DLLs
92 WinNT/2000 directory for common 16-bit DLLs
93 System32\ WinNT/2000 directory for common 32-bit DLLs
94 Start Menu\ Program launcher directory structure
95 Programs\ Program launcher links (.LNK files) to applications
96 Program Files\ Application binaries (.EXE and .DLL files)
100 Wine emulates drives by placing their virtual drive roots to
101 user-configurable points in the Unix filesystem, so it's
102 your choice where <medialabel>C:</medialabel>'s root should
103 be (<filename>tools/wineinstall</filename> will even ask
104 you). If you choose, say, <filename>/var/wine</filename>, as
105 the root of your virtual drive <medialabel>C</medialabel>,
106 then you'd put this in your <filename>~/.wine/config</filename>:
114 "Filesystem" = "win95"
118 With this configuration, what windows apps think of as
119 "c:\windows\system" would map to
120 <filename>/var/wine/windows/system</filename> in the UNIX
121 filesystem. Note that you need to specify
122 <literal>"Filesystem" = "win95"</literal>, NOT
123 <literal>"Filesystem" = "unix"</literal>, to make Wine simulate a
124 Windows-compatible (case-insensitive) filesystem, otherwise
125 most apps won't work.
130 <title>System DLLs</title>
132 The Wine team has determined that it is necessary to create
133 fake DLL files to trick many applications that check for
134 file existence to determine whether a particular feature
135 (such as Winsock and its TCP/IP networking) is available. If
136 this is a problem for you, you can create empty files in the
137 <filename>system</filename> directory to make the
138 application think it's there, and Wine's built-in DLL will
139 be loaded when the application actually asks for it.
140 (Unfortunately, <filename>tools/wineinstall</filename> does
141 not create such empty files itself.)
144 Applications sometimes also try to inspect the version
145 resources from the physical files (for example, to determine
146 the DirectX version). Empty files will not do in this case,
147 it is rather necessary to install files with complete
148 version resources. This problem is currently being worked
149 on. In the meantime, you may still need to grab some real
150 DLL files to fool these apps with.
153 And there are of course DLLs that wine does not currently
154 implement very well (or at all). If you do not have a real
155 Windows you can steal necessary DLLs from, you can always
156 get some from one of the Windows DLL archive sites
157 that can be found via internet search engine.
158 Please make sure to obey any licenses on the DLLs you fetch...
159 (some are redistributable, some aren't).
164 <sect1 id="no-windows">
165 <title>Installing Wine Without Windows</title>
167 Written by &name-james-juran; <email>&email-james-juran;</email>
170 (Extracted from <filename>wine/documentation/no-windows</filename>)
174 A major goal of Wine is to allow users to run Windows programs
175 without having to install Windows on their machine. Wine
176 implements the functionality of the main DLLs usually
177 provided with Windows. Therefore, once Wine is finished, you
178 will not need to have windows installed to use Wine.
181 Wine has already made enough progress that it may be possible
182 to run your target applications without Windows installed. If
183 you want to try it, follow these steps:
189 Create empty <filename>C:\windows</filename>,
190 <filename>C:\windows\system</filename>,
191 <filename>C:\windows\Start Menu</filename>, and
192 <filename>C:\windows\Start Menu\Programs</filename>
193 directories. Do not point Wine to a
194 <filename>Windows</filename> directory full of old
195 installations and a messy registry. (Wine creates a
196 special registry in your <filename >home</filename>
197 directory, in <filename>$HOME/.wine/*.reg</filename>.
198 Perhaps you have to remove these files).
203 Point <medialabel>[Drive C]</medialabel> in
204 <filename>~/.wine/config</filename> to where you want
205 <filename>C:</filename> to be. Refer to the Wine man page
206 for more information. Remember to use
207 <userinput>"Filesystem" = "win95"</userinput>!
212 Use <filename>tools/wineinstall</filename> to compile Wine
213 and install the default registry. Or if you prefer to do
214 it yourself, compile <filename>programs/regapi</filename>,
218 <userinput>programs/regapi/regapi setValue < winedefault.reg</userinput>
223 Run and/or install your applications.
229 Because Wine is not yet complete, some programs will work
230 better with native Windows DLLs than with Wine's
231 replacements. Wine has been designed to make this possible.
232 Here are some tips by Juergen Schmied (and others) on how to
233 proceed. This assumes that your
234 <filename>C:\windows</filename> directory in the configuration
235 file does not point to a native Windows installation but is in
236 a separate Unix file system. (For instance, <quote>C:\windows</quote> is
237 really subdirectory <quote>windows</quote> located in
238 <quote>/home/ego/wine/drives/c</quote>).
244 Run the application with <parameter>--debugmsg
245 +module,+file</parameter> to find out which files are
246 needed. Copy the required DLLs one by one to the
247 <filename>C:\windows\system</filename> directory. Do not
248 copy KERNEL/KERNEL32, GDI/GDI32, or USER/USER32. These
249 implement the core functionality of the Windows API, and
250 the Wine internal versions must be used.
255 Edit the <quote>[DllOverrides]</quote> section of
256 <filename>~/.wine/config</filename> to specify
257 <quote>native</quote> before <quote>builtin</quote> for
258 the Windows DLLs you want to use. For more information
259 about this, see the Wine manpage.
264 Note that some network DLLs are not needed even though
265 Wine is looking for them. The Windows
266 <filename>MPR.DLL</filename> currently does not work; you
267 must use the internal implementation.
272 Copy SHELL/SHELL32 and COMDLG/COMDLG32 COMMCTRL/COMCTL32
273 only as pairs to your Wine directory (these DLLs are
274 <quote>clean</quote> to use). Make sure you have these
275 specified in the <quote>[DllPairs]</quote> section of
276 <filename>~/.wine/config</filename>.
281 Be consistent: Use only DLLs from the same Windows version
287 Put <filename>regedit.exe</filename> in the
288 <filename>C:\windows</filename> directory.
289 (<application>Office 95</application> imports a
290 <filename>*.reg</filename> file when it runs with an empty
291 registry, don't know about
292 <application>Office 97</application>).
297 Also add <filename>winhelp.exe</filename> and
298 <filename>winhlp32.exe</filename> if you want to be able
299 to browse through your programs' help function.
306 <title>Dealing With FAT/VFAT Partitions</title>
308 Written by &name-steven-elliott; <email>&email-steven-elliott;</email>
311 (Extracted from <filename>wine/documentation/linux-fat-permissions</filename>)
314 This document describes how FAT and
315 VFAT file system permissions work in Linux
316 with a focus on configuring them for Wine.
320 <title>Introduction</title>
322 Linux is able to access DOS and Windows file systems using
323 either the FAT (older 8.3 DOS filesystems) or VFAT (newer
324 Windows 95 or later long filename filesystems) modules.
325 Mounted FAT or VFAT filesystems provide the primary means
326 for which existing applications and their data are accessed
327 through Wine for dual boot (Linux + Windows) systems.
330 Wine maps mounted FAT filesystems, such as
331 <filename>/c</filename>, to driver letters, such as
332 <quote>c:</quote>, as indicated by the
333 <filename>~/.wine/config</filename> file. The following excerpt
334 from a <filename>~/.wine/config</filename> file does this:
342 Although VFAT filesystems are preferable to FAT filesystems
343 for their long filename support the term <quote>FAT</quote>
344 will be used throughout the remainder of this document to
345 refer to FAT filesystems and their derivatives. Also,
346 <quote>/c</quote> will be used as the FAT mount point in
347 examples throughout this document.
350 Most modern Linux distributions either detect or allow
351 existing FAT file systems to be configured so that they can be
352 mounted, in a location such as <filename>/c</filename>,
353 either persistently (on bootup) or on an as needed basis. In
354 either case, by default, the permissions will probably be
355 configured so that they look like:
358 <prompt>~></prompt><userinput>cd /c</userinput>
359 <prompt>/c></prompt><userinput>ls -l</userinput>
360 <computeroutput>-rwxr-xr-x 1 root root 91 Oct 10 17:58 autoexec.bat
361 -rwxr-xr-x 1 root root 245 Oct 10 17:58 config.sys
362 drwxr-xr-x 41 root root 16384 Dec 30 1998 windows</computeroutput>
365 where all the files are owned by "root", are in the "root"
366 group and are only writable by "root"
367 (<literal>755</literal> permissions). This is restrictive in
368 that it requires that Wine be run as root in order for
369 applications to be able to write to any part of the
373 There are three major approaches to overcoming the restrictive
374 permissions mentioned in the previous paragraph:
379 Run <application>Wine</application> as root
384 Mount the FAT filesystem with less restrictive
390 Shadow the FAT filesystem by completely or partially
396 Each approach will be discussed in the following sections.
401 <title>Running Wine as root</title>
403 Running Wine as root is the easiest and most thorough way of giving
404 applications that Wine runs unrestricted access to FAT files systems.
405 Running wine as root also allows applications to do things unrelated
406 to FAT filesystems, such as listening to ports that are less than
407 1024. Running Wine as root is dangerous since there is no limit to
408 what the application can do to the system.
413 <title>Mounting FAT filesystems</title>
415 The FAT filesystem can be mounted with permissions less restrictive
416 than the default. This can be done by either changing the user that
417 mounts the FAT filesystem or by explicitly changing the permissions
418 that the FAT filesystem is mounted with. The permissions are
419 inherited from the process that mounts the FAT filesystem. Since the
420 process that mounts the FAT filesystem is usually a startup script
421 running as root the FAT filesystem inherits root's permissions. This
422 results in the files on the FAT filesystem having permissions similar
423 to files created by root. For example:
426 <prompt>~></prompt><userinput>whoami</userinput>
427 <computeroutput>root</computeroutput>
428 <prompt>~></prompt><userinput>touch root_file</userinput>
429 <prompt>~></prompt><userinput>ls -l root_file</userinput>
430 <computeroutput></computeroutput>-rw-r--r-- 1 root root 0 Dec 10 00:20 root_file
433 which matches the owner, group and permissions of files seen
434 on the FAT filesystem except for the missing 'x's. The
435 permissions on the FAT filesystem can be changed by changing
436 root's umask (unset permissions bits). For example:
439 <prompt>~></prompt><userinput>umount /c</userinput>
440 <prompt>~></prompt><userinput>umask</userinput>
441 <computeroutput>022</computeroutput>
442 <prompt>~></prompt><userinput>umask 073</userinput>
443 <prompt>~></prompt><userinput>mount /c</userinput>
444 <prompt>~></prompt><userinput>cd /c</userinput>
445 <prompt>/c></prompt><userinput>ls -l</userinput>
446 <computeroutput>-rwx---r-- 1 root root 91 Oct 10 17:58 autoexec.bat
447 -rwx---r-- 1 root root 245 Oct 10 17:58 config.sys
448 drwx---r-- 41 root root 16384 Dec 30 1998 windows</computeroutput>
451 Mounting the FAT filesystem with a umask of
452 <literal>000</literal> gives all users complete control over
453 it. Explicitly specifying the permissions of the FAT
454 filesystem when it is mounted provides additional control.
455 There are three mount options that are relevant to FAT
456 permissions: <literal>uid</literal>, <literal>gid</literal>
457 and <literal>umask</literal>. They can each be specified
458 when the filesystem is manually mounted. For example:
461 <prompt>~></prompt><userinput>umount /c</userinput>
462 <prompt>~></prompt><userinput>mount -o uid=500 -o gid=500 -o umask=002 /c</userinput>
463 <prompt>~></prompt><userinput>cd /c</userinput>
464 <prompt>/c></prompt><userinput>ls -l</userinput>
465 <computeroutput>-rwxrwxr-x 1 sle sle 91 Oct 10 17:58 autoexec.bat
466 -rwxrwxr-x 1 sle sle 245 Oct 10 17:58 config.sys
467 drwxrwxr-x 41 sle sle 16384 Dec 30 1998 windows</computeroutput>
470 which gives "sle" complete control over
471 <filename>/c</filename>. The options listed above can be
472 made permanent by adding them to the
473 <filename>/etc/fstab</filename> file:
476 <prompt>~></prompt><userinput>grep /c /etc/fstab</userinput>
477 <computeroutput>/dev/hda1 /c vfat uid=500,gid=500,umask=002,exec,dev,suid,rw 1 1</computeroutput>
480 Note that the umask of <literal>002</literal> is common in
481 the user private group file permission scheme. On FAT file
482 systems this umask assures that all files are fully
483 accessible by all users in the specified group
484 (<literal>gid</literal>).
489 <title>Shadowing FAT filesystems</title>
491 Shadowing provides a finer granularity of control. Parts of
492 the original FAT filesystem can be copied so that the
493 application can safely work with those copied parts while
494 the application continues to directly read the remaining
495 parts. This is done with symbolic links. For example,
496 consider a system where an application named
497 <application>AnApp</application> must be able to read and
498 write to the <filename>c:\windows</filename> and
499 <filename>c:\AnApp</filename> directories as well as have
500 read access to the entire FAT filesystem. On this system
501 the FAT filesystem has default permissions which should not
502 be changed for security reasons or can not be changed due to
503 lack of root access. On this system a shadow directory
504 might be set up in the following manner:
507 <prompt>~></prompt><userinput>cd /</userinput>
508 <prompt>/></prompt><userinput>mkdir c_shadow</userinput>
509 <prompt>/></prompt><userinput>cd c_shadow</userinput>
510 <prompt>/c_shadow></prompt><userinput>ln -s /c_/* .</userinput>
511 <prompt>/c_shadow></prompt><userinput>rm windows AnApp</userinput>
512 <prompt>/c_shadow></prompt><userinput>cp -R /c_/{windows,AnApp} .</userinput>
513 <prompt>/c_shadow></prompt><userinput>chmod -R 777 windows AnApp</userinput>
514 <prompt>/c_shadow></prompt><userinput>perl -p -i -e 's|/c$|/c_shadow|g' /usr/local/etc/wine.conf</userinput>
517 The above gives everyone complete read and write access to
518 the <filename>windows</filename> and
519 <filename>AnApp</filename> directories while only root has
520 write access to all other directories.
525 <sect1 id="scsi-support">
526 <title>SCSI Support</title>
528 Written by &name-bruce-milner; <email>&email-bruce-milner;</email>;
529 Additions by &name-andreas-mohr; <email>&email-andreas-mohr;</email>
532 (Extracted from <filename>wine/documentation/aspi</filename>)
536 This file describes setting up the Windows ASPI interface.
540 <warning><title>Warning/Warning/Warning!!!!!!</title>
541 <para>This may trash your system if used incorrectly. It may
542 even trash your system when used <emphasis>correctly</>!
548 Now that I have said that. ASPI is a direct link to SCSI devices from
549 windows programs. ASPI just forwards the SCSI commands that programs send
550 to it to the SCSI bus.
553 If you use the wrong SCSI device in your setup file, you can send
554 completely bogus commands to the wrong device - An example would be
555 formatting your hard drives (assuming the device gave you permission -
556 if you're running as root, all bets are off).
559 So please make sure that <emphasis>all</emphasis> SCSI devices not needed by the program
560 have their permissions set as restricted as possible !
564 Cookbook for setting up scanner: (At least how mine is to work)
565 (well, for other devices such as CD burners, MO drives, ..., too)
569 <title>Windows requirements</title>
573 The scanner software needs to use the "Adaptec"
574 compatible drivers (ASPI). At least with Mustek, they
575 allow you the choice of using the builtin card or the
576 "Adaptec (AHA)" compatible drivers. This will not work
577 any other way. Software that accesses the scanner via a
578 DOS ASPI driver (e.g. ASPI2DOS) is supported, too. [AM]
583 You probably need a real windows install of the software
584 to set the LUN's/SCSI id's up correctly. I'm not exactly
592 <title>LINUX requirements:</title>
596 Your SCSI card must be supported under Linux. This will
597 not work with an unknown SCSI card. Even for cheap'n
598 crappy "scanner only" controllers some special Linux
599 drivers exist on the net.
600 If you intend to use your IDE device, you need to use the
603 <ulink url="http://www.linuxdoc.org/HOWTO/CD-Writing-HOWTO.html">
604 http://www.linuxdoc.org/HOWTO/CD-Writing-HOWTO.html</ulink>
605 for ide-scsi setup instructions.
610 Compile generic SCSI drivers into your kernel.
615 This seems to be not required any more for newer (2.2.x) kernels:
616 Linux by default uses smaller SCSI buffers than Windows.
617 There is a kernel build define <literal>SG_BIG_BUFF</literal> (in
618 <filename>sg.h</filename>) that is by default set too
619 low. The SANE project recommends
620 <literal>130560</literal> and this seems to work just
621 fine. This does require a kernel rebuild.
626 Make the devices for the scanner (generic SCSI devices)
627 - look at the SCSI programming HOWTO at
628 <ulink url="http://www.linuxdoc.org/HOWTO/SCSI-Programming-HOWTO.html">
629 http://www.linuxdoc.org/HOWTO/SCSI-Programming-HOWTO.html</ulink>
630 for device numbering.
635 I would recommend making the scanner device writable by
636 a group. I made a group called
637 <literal>scanner</literal> and added myself to it.
638 Running as root increases your risk of sending bad SCSI
639 commands to the wrong device. With a regular user, you
640 are better protected.
645 For Win32 software (WNASPI32), Wine has auto-detection in place.
646 For Win16 software (WINASPI), you need to add a SCSI device entry
647 for your particular scanner to ~/.wine/config. The format is
648 <literal>[scsi cCtTdD]</literal> where
649 <literal>"C" = "controller"</literal>,
650 <literal>"T" = "target"</literal>, <literal>D=LUN</literal>
653 For example, I set mine up as controller <literal>0</literal>,
654 Target <literal>6</literal>, LUN <literal>0</literal>.
657 "Device" = "/dev/sgi"
659 Yours will vary with your particular SCSI setup.
666 <title>General Information</title>
668 The mustek scanner I have was shipped with a package
669 "ipplus". This program uses the TWAIN driver specification
677 ipplus.exe <-> (TWAIN INTERFACE) <-> (TWAIN DATA SOURCE.ASPI) -> WINASPI
683 <title>NOTES/BUGS</title>
685 The biggest is that it only works under Linux at the moment.
688 The ASPI code has only been tested with:
693 a Mustek 800SP with a Buslogic controller under Linux [BM]
698 a Siemens Nixdorf 9036 with Adaptec AVA-1505 under Linux
699 accessed via DOSASPI. Note that I had color problems,
700 though (barely readable result) [AM]
705 a Fujitsu M2513A MO drive (640MB) using generic SCSI
706 drivers. Formatting and ejecting worked perfectly.
707 Thanks to Uwe Bonnes for access to the hardware ! [AM]
712 I make no warranty to the ASPI code. It makes my scanner
713 work. Your devices may explode. I have no way of determining
714 this. I take zero responsibility!
721 <!-- Keep this comment at the end of the file
724 sgml-parent-document:("wine-doc.sgml" "set" "book" "chapter" "")