https://wiki.archlinux.org/api.php?action=feedcontributions&user=Geekner&feedformat=atomArchWiki - User contributions [en]2024-03-29T13:27:32ZUser contributionsMediaWiki 1.41.0https://wiki.archlinux.org/index.php?title=Talk:Diskless_system&diff=44240Talk:Diskless system2008-07-05T07:11:32Z<p>Geekner: </p>
<hr />
<div>Thanks, Net147, those edits helped me remove the last issues I had with my diskless setup. I moved your DHCP workaround to the top of the list, that is a very good script you have. --[[User:Geekner|Geekner]]</div>Geeknerhttps://wiki.archlinux.org/index.php?title=Talk:Diskless_system&diff=44239Talk:Diskless system2008-07-05T07:11:23Z<p>Geekner: </p>
<hr />
<div>Thanks, Net147, those edits helped me remove the last issues I had with my diskless setup. I moved your DHCP workaround to the top of the list, that is a very good script you have. [[User:Geekner|Geekner]]</div>Geeknerhttps://wiki.archlinux.org/index.php?title=Talk:Diskless_system&diff=44238Talk:Diskless system2008-07-05T07:11:15Z<p>Geekner: </p>
<hr />
<div>Thanks, Net147, those edits helped me remove the last issues I had with my diskless setup. I moved your DHCP workaround to the top of the list, that is a very good script you have. [[User:Geekner|Geekner]]Geekner</div>Geeknerhttps://wiki.archlinux.org/index.php?title=Talk:Diskless_system&diff=44237Talk:Diskless system2008-07-05T07:10:19Z<p>Geekner: </p>
<hr />
<div>Thanks, Net147, those edits helped me remove the last issues I had with my diskless setup. I moved your DHCP workaround to the top of the list, that is a very good script you have. --Geekner</div>Geeknerhttps://wiki.archlinux.org/index.php?title=Talk:Diskless_system&diff=44236Talk:Diskless system2008-07-05T07:09:47Z<p>Geekner: New page: Thanks, Net147, those edits helped me remove the last issues I had with my diskless setup. I moved your DHCP workaround to the top of the list, that is a very good script you have.</p>
<hr />
<div>Thanks, Net147, those edits helped me remove the last issues I had with my diskless setup. I moved your DHCP workaround to the top of the list, that is a very good script you have.</div>Geeknerhttps://wiki.archlinux.org/index.php?title=Diskless_system&diff=44235Diskless system2008-07-05T07:06:15Z<p>Geekner: Moved better DHCP workaround to be first. Thanks, Net147.</p>
<hr />
<div>[[Category:HOWTOs (English)]]<br />
[[Category:Networking (English)]]<br />
<br />
==Root over NFS (diskless boot)==<br />
<br />
This HOWTO will explain the step-by-step method for booting an Archlinux installation over an NFS share. The first half will primarily cover configuration of the server, and the second will cover client side configuration.<br />
<br />
This text will contain errors, please report any problems you have with error messages on the talk page.<br />
<br />
For more information on Network File Sharing, see [[Nfs]].<br />
<br />
==Hardware Considerations==<br />
<br />
Server: <br />
Any standard computer should work, but for performance reasons it should have fast disk access and preferably gigabit ethernet.<br />
<br />
Client:<br />
For a completely diskless boot, the client computer must have a network-bootable (PXE) network card. Wireless will not work, with exception of a wireless-to-ethernet external bridge. Many motherboards have a PXE-compatible ethernet card built in, but you will need to enable support in the BIOS.<br />
<br />
If you don't have a PXE-compatible network card, you can setup a semi-diskless client. This involves building a flashdrive or CD-based boot partition with syslinux or grub. The configuration is the same, but skipping the tftp steps. Creating boot-CDs or flashdrives is beyond the scope of this article.<br />
<br />
=Server-Side Setup=<br />
<br />
The server will have to run a tftp daemon to share the kernel/bootsector along with an NFS share to share the root directory. PXE requires the DHCP server to announce the location of the tftp server to any clients that connect. Most routers will not support this, and this article will show how to modify an existing DNSMasq or DHCPD server. See [[NAT'ing_firewall_-_Share_your_broadband_connection]] for setting up a simple router replacement, including DHCP via DNSMasq, a good place to start for this project. If you do have a router that supports PXE, then you will need to tell it to send all tftp requests to the server.<br />
<br />
At this point I will assume you have a server running with DNSMasq or DHCPd providing DHCP services, along with some space for the client's root.<br />
<br />
First, install nfs-utils, syslinux (for the pxelinux bootloader, you can substitute for GRUB, see [http://wiki.linuxmce.org/index.php/GRUB_PXE_network_boot]).<br />
<pre><br />
pacman -S nfs-utils syslinux<br />
</pre><br />
<br />
==Create Client Root Directory==<br />
<br />
First, create a directory that will hold the root filesystem, this can be anywhere. For this example, I will use /disklessroot.<br />
<pre><br />
mkdir /disklessroot<br />
</pre><br />
<br />
Now you need to populate that root with an installation of Archlinux.<br />
<pre><br />
pacman -S --root /disklessroot --dbpath /disklessroot/var/lib/pacman base<br />
</pre><br />
<br />
Edit /disklessroot/etc/mkinitcpio.conf, add 'nfs' to the MODULE section, and add 'net' as the second entry under HOOKS..<br />
<pre><br />
MODULES="nfs"<br />
HOOKS="base net udev autodetect pata scsi sata filesystems"<br />
</pre><br />
<br />
Now, chroot into /disklessroot and recreate the kernel image.<br />
<pre><br />
chroot /disklessroot<br />
mkinitcpio -p kernel26<br />
exit<br />
</pre><br />
You should be back to the normal root, the exit command should leave the chroot. Check before continuing.<br />
<br />
==PXE/TFTP Setup==<br />
Now to setup tftp and PXE.<br />
<br />
Within DNSMasq, there is an easy-to-use tftp server, so this article will use that.<br />
First, edit /etc/dnsmasq.conf and uncomment these lines, changing them to reflect your file paths.<br />
<pre><br />
# Set the boot filename for BOOTP. You will only need <br />
# this is you want to boot machines over the network and you will need<br />
# a TFTP server; either dnsmasq's built in TFTP server or an<br />
# external one. (See below for how to enable the TFTP server.)<br />
dhcp-boot=pxelinux.0 #change this if you are using GRUB.<br />
<br />
# Enable dnsmasq's built-in TFTP server<br />
enable-tftp<br />
<br />
# Set the root directory for files available via FTP.<br />
tftp-root=/disklessroot/boot/<br />
</pre><br />
This has the additional feature of allowing you to update the kernel within the client OS.<br />
<br />
Make sure the firewall on your server does not block UDP port 69 (UDP ports 67-68 and 4011 are also used, but should not need to be opened).<br />
<br />
==NFS Setup==<br />
Edit /etc/exports, add this line.<br />
<pre><br />
/disklessroot *(rw,no_root_squash,no_subtree_check)<br />
</pre><br />
If security is an issue, you can replace * with an IP address or IP range to restrict connections. This is semi-redundant with the /etc/hosts.allow configuration below.<br />
<br />
Edit /etc/hosts.allow<br />
<pre><br />
nfsd: 10.0.0.<br />
portmap: 10.0.0.<br />
mountd: 10.0.0.<br />
</pre><br />
This partial IP will match everything in the 10.0.0.x range, you can specify a single address, IP range, or simply "ALL" (Insecure!).<br />
<br />
Add "portmap nfslock nfsd" to the server's /etc/rc.conf under DAEMONS, in that specific order. (Assuming dnsmasq was already installed and on the daemons list.)<br />
<br />
Refer to [[Nfs]] for any configuration/security issues that are not covered here.<br />
<br />
=Client Configuration=<br />
These files are to be edited from the server, as the client is not ready yet.<br />
<br />
==Boot Configuration==<br />
Copy pxelinux.0 to /diskless/boot/<br />
<pre><br />
cp /usr/lib/syslinux/pxelinux.0 /disklessroot/boot/<br />
</pre><br />
Create and edit /diskless/boot/pxelinux.cfg/default (Replacing IP addresses and file-paths as needed.)<br />
<pre><br />
default linux<br />
<br />
label linux<br />
kernel vmlinuz26<br />
append initrd=kernel26.img rootfstype=nfs root=/dev/nfs nfsroot=10.0.0.1:/disklessroot,v3,rsize=16384,wsize=16384 ip=dhcp<br />
</pre><br />
The syntax for the pxelinux bootloader is the same as Syslinux, here[http://syslinux.zytor.com/faq.php] under "CONFIGURATION FILE".<br />
Remember that any filenames will be relative to the tftp server, check the setting in /etc/dnsmasq.conf named "tftp-root=". <br />
This example places tftp-root at /disklessroot/boot/. Thus the kernel should be at /disklessroot/boot/vmlinuz26 on the server, and will show up as /vmlinuz26 for the first stage of client boot. Exactly like a separate /boot partition.<br />
<br />
As there is no entry for / in the clients /etc/fstab file, the client may display the error "mount: can't find / in /etc/fstab or /etc/mtab" on startup. This error can be safely ignored. However, if you want to suppress the error you can add a hack to /etc/fstab. This involves adding the following to /disklessroot/etc/fstab:<br />
<pre><br />
none / none<br />
</pre><br />
<br />
=DHCP/Network Daemon Workaround=<br />
This is to prevent the client from trying to reconnect the network and killing itself, also prevents the client from prematurely killing itself while shutting down. Any disconnect of the network and your client will freeze.<br />
<br />
The following workaround involves running the dhcpcd DHCP client on startup with the -s option to use the existing kernel DHCP auto-configured IP address instead of requesting a new one. The -p option is used to prevent dhcpcd from deconfiguring eth0 when it exits (which causes problems when shutting down). Notes: This workaround assumes that eth0 is the network interface used for DHCP.<br />
<br />
Create a new file /etc/rc.d/network-nfsroot (/disklessroot/etc/rc.d/network-nfsroot on the server) with the following contents:<br />
<pre><br />
#!/bin/bash<br />
<br />
. /etc/rc.conf<br />
. /etc/rc.d/functions<br />
<br />
case "$1" in<br />
start)<br />
if ! ck_daemon network-nfsroot; then<br />
echo "Network is already running. Try 'network restart'"<br />
exit<br />
fi<br />
<br />
stat_busy "Starting Network"<br />
<br />
if dhcpcd -p -s $(ifconfig eth0 | grep -o '[0-9]*\.[0-9\.]*' | head -n1) eth0; then<br />
add_daemon network-nfsroot<br />
stat_done<br />
else<br />
stat_fail<br />
fi<br />
;;<br />
stop)<br />
stat_busy "Stopping Network"<br />
<br />
if [ -f /var/run/dhcpcd-eth0.pid ]; then<br />
/bin/kill $(cat /var/run/dhcpcd-eth0.pid)<br />
rm_daemon network-nfsroot<br />
stat_done<br />
else<br />
stat_fail<br />
fi<br />
;;<br />
restart)<br />
$0 stop<br />
/bin/sleep 2<br />
$0 start<br />
;;<br />
*)<br />
echo "usage: $0 {start|stop|restart}" <br />
esac<br />
<br />
# vim: set ts=2 noet:<br />
</pre><br />
<br />
Edit the client's rc.conf and change to use network-nfsroot daemon instead of network daemon (/disklessroot/etc/rc.conf, or just /etc/rc.conf once you boot into the client).<br />
<br />
Before:<br />
<pre><br />
DAEMONS=(syslog-ng network ...<br />
</pre><br />
<br />
After:<br />
<pre><br />
DAEMONS=(syslog-ng network-nfsroot ...<br />
</pre><br />
<br />
Another workaround is presented below which configures the DNS server manually.<br />
<br />
=DHCP/Network Daemon Workaround Number 2=<br />
<br />
Edit the client's rc.conf and disable the network daemon (/disklessroot/etc/rc.conf, or just /etc/rc.conf once you boot into the client).<br />
<pre><br />
DAEMONS=(syslog-ng !network ...<br />
</pre><br />
<br />
The main issue with this method is the fact that your resolv.conf will not auto-update (since this bypasses DHCP).<br />
To work around this, edit /etc/resolv.conf and add this line (/disklessroot/etc/resolv.conf on the server).<br />
<pre><br />
nameserver 10.0.0.1 #change this IP for whatever DHCP/DNS server you have, the server's IP usually works if you configured DNS correctly.<br />
</pre><br />
<br />
<br />
=Testing/Debugging the Client=<br />
Now reboot the client computer, making sure the network card is first in the boot-order.<br />
<br />
If all goes right, you should see the network card get an IP address from the server, then connect and boot the kernel. After the initial kernel messages, you should either see ArchLinux boot, or a "killed init" message. <br />
<br />
If init was killed, check your configuration, it usually means it could not mount the NFS folder. Refer to [[Nfs]] for more help. <br />
<br />
If it freezes during a mounting operation, check the client's /etc/fstab or the /boot/pxelinux.cfg/default settings.<br />
<br />
If it freezes duing the "Network" section, either disable it using the previously mentioned workaround, or specify IP settings in /etc/rc.conf. (You can try setting <i>eth0="dhcp"</i>)<br />
<br />
==Performance Notes==<br />
I am currently using a diskless client as my primary internet/development OS due to a hard-drive restriction on my PC. My server is an older machine is running Archlinux with a software-based raid5 array. My client can read files from the NFS share almost as fast as my server can, but there is a limitation with latency and caching. It slows down during "pacman -Sy" and package installs that involve many small files. Otherwise, it runs fine. It also seems that NFS runs synchronously by default, meaning that all writes have to be committed before continuing, no caching in free memory like it would on a local hard drive. This is actually a good thing, from the data integrity standpoint, as fewer files are lost during a random power outage. I have not tried the "async" NFS option because the nfs man page does not suggest it will work for NFSv3.<br />
<br />
<br />
----<br />
<br />
<br><br><br />
<i>Mostly Complete.<br />
Thank you, Net147, for your excellent edits.<br />
Please edit/update as needed.</i></div>Geeknerhttps://wiki.archlinux.org/index.php?title=Diskless_system&diff=43738Diskless system2008-06-26T19:30:11Z<p>Geekner: Cleaned</p>
<hr />
<div>[[Category:HOWTOs (English)]]<br />
[[Category:Networking (English)]]<br />
<br />
==Root over NFS (diskless boot)==<br />
<br />
This HOWTO will explain the step-by-step method for booting an Archlinux installation over an NFS share. The first half will primarily cover configuration of the server, and the second will cover client side configuration.<br />
<br />
This text will contain errors, please report any problems you have with error messages on the talk page.<br />
<br />
For more information on Network File Sharing, see [[Nfs]].<br />
<br />
==Hardware Considerations==<br />
<br />
Server: <br />
Any standard computer should work, but for performance reasons it should have fast disk access and preferably gigabit ethernet.<br />
<br />
Client:<br />
For a completely diskless boot, the client computer must have a network-bootable (PXE) network card. Wireless will not work, with exception of a wireless-to-ethernet external bridge. Many motherboards have a PXE-compatible ethernet card built in, but you will need to enable support in the BIOS.<br />
<br />
If you don't have a PXE-compatible network card, you can setup a semi-diskless client. This involves building a flashdrive or CD-based boot partition with syslinux or grub. The configuration is the same, but skipping the tftp steps. Creating boot-CDs or flashdrives is beyond the scope of this article.<br />
<br />
=Server-Side Setup=<br />
<br />
The server will have to run a tftp daemon to share the kernel/bootsector along with an NFS share to share the root directory. PXE requires the DHCP server to announce the location of the tftp server to any clients that connect. Most routers will not support this, and this article will show how to modify an existing DNSMasq or DHCPD server. See [[NAT'ing_firewall_-_Share_your_broadband_connection]] for setting up a simple router replacement, including DHCP via DNSMasq, a good place to start for this project. If you do have a router that supports PXE, then you will need to tell it to send all tftp requests to the server.<br />
<br />
At this point I will assume you have a server running with DNSMasq or DHCPd providing DHCP services, along with some space for the client's root.<br />
<br />
First, install nfs-utils, syslinux (for the pxelinux bootloader, you can substitute for GRUB, see [http://wiki.linuxmce.org/index.php/GRUB_PXE_network_boot]).<br />
<pre><br />
pacman -S nfs-utils syslinux<br />
</pre><br />
<br />
==Create Client Root Directory==<br />
<br />
First, create a directory that will hold the root filesystem, this can be anywhere. For this example, I will use /disklessroot.<br />
<pre><br />
mkdir /disklessroot<br />
</pre><br />
<br />
Now you need to populate that root with an installation of Archlinux.<br />
<pre><br />
pacman -S --root /disklessroot --dbpath /disklessroot/var/lib/pacman base<br />
</pre><br />
<br />
Edit /disklessroot/etc/mkinitcpio.conf, add 'nfs' to the MODULE section, and add 'net' as the second entry under HOOKS..<br />
<pre><br />
MODULES="nfs"<br />
HOOKS="base net udev autodetect pata scsi sata filesystems"<br />
</pre><br />
<br />
Now, chroot into /disklessroot and recreate the kernel image.<br />
<pre><br />
chroot /disklessroot<br />
mkinitcpio -p kernel26<br />
exit<br />
</pre><br />
You should be back to the normal root, the exit command should leave the chroot. Check before continuing.<br />
<br />
==PXE/TFTP Setup==<br />
Now to setup tftp and PXE.<br />
<br />
Within DNSMasq, there is an easy-to-use tftp server, so this article will use that.<br />
First, edit /etc/dnsmasq.conf and uncomment these lines, changing them to reflect your file paths.<br />
<pre><br />
# Set the boot filename for BOOTP. You will only need <br />
# this is you want to boot machines over the network and you will need<br />
# a TFTP server; either dnsmasq's built in TFTP server or an<br />
# external one. (See below for how to enable the TFTP server.)<br />
dhcp-boot=pxelinux.0 #change this if you are using GRUB.<br />
<br />
# Enable dnsmasq's built-in TFTP server<br />
enable-tftp<br />
<br />
# Set the root directory for files available via FTP.<br />
tftp-root=/disklessroot/boot/<br />
</pre><br />
This has the additional feature of allowing you to update the kernel within the client OS.<br />
<br />
Make sure the firewall on your server does not block UDP port 69 (UDP ports 67-68 and 4011 are also used, but should not need to be opened).<br />
<br />
==NFS Setup==<br />
Edit /etc/exports, add this line.<br />
<pre><br />
/disklessroot *(rw,no_root_squash,no_subtree_check)<br />
</pre><br />
If security is an issue, you can replace * with an IP address or IP range to restrict connections. This is semi-redundant with the /etc/hosts.allow configuration below.<br />
<br />
Edit /etc/hosts.allow<br />
<pre><br />
nfsd: 10.0.0.<br />
portmap: 10.0.0.<br />
mountd: 10.0.0.<br />
</pre><br />
This partial IP will match everything in the 10.0.0.x range, you can specify a single address, IP range, or simply "ALL" (Insecure!).<br />
<br />
Add "portmap nfslock nfsd" to the server's /etc/rc.conf under DAEMONS, in that specific order. (Assuming dnsmasq was already installed and on the daemons list.)<br />
<br />
Refer to [[Nfs]] for any configuration/security issues that are not covered here.<br />
<br />
=Client Configuration=<br />
These files are to be edited from the server, as the client is not ready yet.<br />
<br />
==Boot Configuration==<br />
Copy pxelinux.0 to /diskless/boot/<br />
<pre><br />
cp /usr/lib/syslinux/pxelinux.0 /disklessroot/boot/<br />
</pre><br />
Create and edit /diskless/boot/pxelinux.cfg/default (Replacing IP addresses and file-paths as needed.)<br />
<pre><br />
default linux<br />
<br />
label linux<br />
kernel vmlinuz26<br />
append initrd=kernel26.img rootfstype=nfs root=/dev/nfs nfsroot=10.0.0.1:/disklessroot,v3,rsize=16384,wsize=16384 ip=dhcp<br />
</pre><br />
The syntax for the pxelinux bootloader is the same as Syslinux, here[http://syslinux.zytor.com/faq.php] under "CONFIGURATION FILE".<br />
Remember that any filenames will be relative to the tftp server, check the setting in /etc/dnsmasq.conf named "tftp-root=". <br />
This example places tftp-root at /disklessroot/boot/. Thus the kernel should be at /disklessroot/boot/vmlinuz26 on the server, and will show up as /vmlinuz26 for the first stage of client boot. Exactly like a separate /boot partition.<br />
<br />
=DHCP/network daemon Workaround=<br />
This is to prevent the client from trying to reconnect the network and killing itself, also prevents the client from prematurely killing itself while shutting down. Remember, any disconnect of the network and your client will freeze.<br />
<br />
Edit the client's rc.conf and disable the network daemon. (/disklessroot/etc/rc.conf, or just /etc/rc.conf once you boot into the client.)<br />
<pre><br />
DAEMONS=(syslog-ng !network ...<br />
</pre><br />
<br />
The main issue with this method is the fact that your resolv.conf will not auto-update (since this bypasses DHCP).<br />
To work around this, edit /etc/resolv.conf and add this line. (/disklessroot/etc/resolv.conf on the server)<br />
<pre><br />
nameserver 10.0.0.1 #change this IP for whatever DHCP/DNS server you have, the server's IP usually works if you configured DNS correctly.<br />
</pre><br />
If you can find a better workaround to the DHCP issue, please edit this section.<br />
<br />
=Testing/Debugging the Client=<br />
Now reboot the client computer, making sure the network card is first in the boot-order.<br />
<br />
If all goes right, you should see the network card get an IP address from the server, then connect and boot the kernel. After the initial kernel messages, you should either see ArchLinux boot, or a "killed init" message. <br />
<br />
If init was killed, check your configuration, it usually means it could not mount the NFS folder. Refer to [[Nfs]] for more help. <br />
<br />
If it freezes during a mounting operation, check the client's /etc/fstab or the /boot/pxelinux.cfg/default settings.<br />
<br />
If it freezes duing the "Network" section, either disable it using the previously mentioned workaround, or specify IP settings in /etc/rc.conf. (You can try setting <i>eth0="dhcp"</i>)<br />
<br />
==Performance Notes==<br />
I am currently using a diskless client as my primary internet/development OS due to a hard-drive restriction on my PC. My server is an older machine is running Archlinux with a software-based raid5 array. My client can read files from the NFS share almost as fast as my server can, but there is a limitation with latency and caching. It slows down during "pacman -Sy" and package installs that involve many small files. Otherwise, it runs fine. It also seems that NFS runs synchronously by default, meaning that all writes have to be committed before continuing, no caching in free memory like it would on a local hard drive. This is actually a good thing, from the data integrity standpoint, as fewer files are lost during a random power outage. I have not tried the "async" NFS option because the nfs man page does not suggest it will work for NFSv3.<br />
<br />
<br />
----<br />
<br />
<br><br><br />
<i>Work in Progress.<br />
This recreation was based on my attempt at a diskless client. It was successful, but there are some minor issues I am tracking down. (Error messages and such)<br />
I will update this as I find anything else.<br />
Please edit/update as needed.</i></div>Geeknerhttps://wiki.archlinux.org/index.php?title=Diskless_system&diff=43616Diskless system2008-06-24T07:46:36Z<p>Geekner: Added category</p>
<hr />
<div>[[Category:HOWTOs (English)]]<br />
[[Category:Networking (English)]]<br />
<br />
==Root over NFS (diskless boot)==<br />
<br />
This HOWTO will explain the step-by-step method for booting an Archlinux installation over an NFS share. The first half will primarily cover configuration of the server, and the second will cover client side configuration.<br />
<br />
This text will contain errors, please report any problems you have with error messages on the talk page.<br />
<br />
For more information on Network File Sharing, see [[Nfs]].<br />
<br />
==Hardware Considerations==<br />
<br />
Server: <br />
Any standard computer should work, but for performance reasons it should have fast disk access and preferably gigabit ethernet.<br />
<br />
Client:<br />
For a completely diskless boot, the client computer must have a network-bootable (PXE) network card. Wireless will not work, with exception of a wireless-to-ethernet external bridge. Many motherboards have a PXE-compatible ethernet card built in, but you will need to enable support in the BIOS.<br />
<br />
If you don't have a PXE-compatible network card, you can setup a semi-diskless client. This involves building a flashdrive or CD-based boot partition with syslinux or grub. The configuration is the same, but skipping the tftp steps. Creating boot-CDs or flashdrives is beyond the scope of this article.<br />
<br />
=Server-Side Setup=<br />
<br />
The server will have to run a tftp daemon to share the kernel/bootsector along with an NFS share to share the root directory. PXE requires the DHCP server to announce the location of the tftp server to any clients that connect. Most routers will not support this, and this article will show how to modify an existing DNSMasq or DHCPD server. See [[NAT'ing_firewall_-_Share_your_broadband_connection]] for setting up a simple router replacement, including DHCP, a good place to start for this project. If you do have a router that supports PXE, then you will need to tell it to send all tftp requests to the server.<br />
<br />
At this point I will assume you have a server running with DNSMasq or DHCPd providing DHCP services, along with some space for the client's root.<br />
<br />
First, install nfs-utils, syslinux (for the pxelinux bootloader, you can substitute for GRUB, see [http://wiki.linuxmce.org/index.php/GRUB_PXE_network_boot]).<br />
<pre><br />
pacman -S nfs-utils syslinux<br />
</pre><br />
<br />
==Create Client Root Directory==<br />
<br />
First, create a directory that will hold the root filesystem, this can be anywhere. For this example, I will use /disklessroot.<br />
<pre><br />
mkdir /disklessroot<br />
</pre><br />
<br />
Now you need to populate that root with an installation of Archlinux.<br />
<pre><br />
pacman -S --root /disklessroot --dbpath /disklessroot/var/lib/pacman base<br />
</pre><br />
<br />
Edit /disklessroot/etc/mkinitcpio.conf, add 'nfs' to the MODULE section, and add 'net' as the second entry under HOOKS..<br />
<pre><br />
MODULES="nfs"<br />
HOOKS="base net udev autodetect pata scsi sata filesystems"<br />
</pre><br />
<br />
Now, chroot into /disklessroot and recreate the kernel image.<br />
<pre><br />
chroot /disklessroot<br />
mkinitcpio -p kernel26<br />
exit<br />
</pre><br />
You should be back to the normal root, the exit command should leave the chroot. Check before continuing.<br />
<br />
==PXE/TFTP Setup==<br />
Now to setup tftp and PXE.<br />
<br />
Within DNSMasq, there is an easy-to-use tftp server, so this article will use that.<br />
First, edit /etc/dnsmasq.conf and uncomment these lines, changing them to reflect your file paths.<br />
<pre><br />
# Set the boot filename for BOOTP. You will only need <br />
# this is you want to boot machines over the network and you will need<br />
# a TFTP server; either dnsmasq's built in TFTP server or an<br />
# external one. (See below for how to enable the TFTP server.)<br />
dhcp-boot=pxelinux.0 #change this if you are using GRUB.<br />
<br />
# Enable dnsmasq's built-in TFTP server<br />
enable-tftp<br />
<br />
# Set the root directory for files available via FTP.<br />
tftp-root=/disklessroot/boot/<br />
</pre><br />
This has the additional feature of allowing you to update the kernel within the client OS.<br />
<br />
Make sure the firewall on your server does not block UDP port 69 (UDP ports 67-68 and 4011 are also used, but should not need to be opened).<br />
<br />
==NFS Setup==<br />
Edit /etc/exports, add this line.<br />
<pre><br />
/disklessroot *(rw,no_root_squash,no_subtree_check)<br />
</pre><br />
If security is an issue, you can replace * with an IP address or IP range to restrict connections. This is semi-redundant with the /etc/hosts.allow configuration below.<br />
<br />
Edit /etc/hosts.allow<br />
<pre><br />
nfsd: 10.0.0.<br />
portmap: 10.0.0.<br />
mountd: 10.0.0.<br />
</pre><br />
This partial IP will match everything in the 10.0.0.x range, you can specify a single address, IP range, or simply "ALL" (Insecure!).<br />
<br />
Add "portmap nfslock nfsd" to the server's /etc/rc.conf under DAEMONS, in that specific order. (Assuming dnsmasq was already installed and on the daemons list.)<br />
<br />
Refer to [[Nfs]] for any NFS configuration/security issues that are not covered here.<br />
<br />
=Client Configuration=<br />
These files are to be edited from the server, as the client is not ready yet.<br />
<br />
==Boot Configuration==<br />
Copy pxelinux.0 to /diskless/boot/<br />
<pre><br />
cp /usr/lib/syslinux/pxelinux.0 /disklessroot/boot/<br />
</pre><br />
Create and edit /diskless/boot/pxelinux.cfg/default (Replacing IP addresses and file-paths as needed.)<br />
<pre><br />
default linux<br />
<br />
label linux<br />
kernel vmlinuz26<br />
append initrd=kernel26.img rootfstype=nfs root=/dev/nfs nfsroot=10.0.0.1:/disklessroot,v3,rsize=16384,wsize=16384 ip=dhcp<br />
</pre><br />
The syntax for the pxelinux bootloader is the same as Syslinux, here[http://syslinux.zytor.com/faq.php] under "CONFIGURATION FILE".<br />
Remember that any filenames will be relative to the tftp server, check the setting in /etc/dnsmasq.conf named "tftp-root=". <br />
This example places tftp-root at /disklessroot/boot/. Thus the kernel should be at /disklessroot/boot/vmlinuz26 on the server, and will show up as /vmlinuz26 for the first stage of client boot. Exactly like a separate /boot partition.<br />
<br />
=DHCP/network daemon Workaround=<br />
This is to prevent the client from trying to reconnect the network and killing itself, also prevents the client from prematurely killing itself while shutting down. Remember, any disconnect of the network and your client will freeze.<br />
<br />
Edit the client's rc.conf and disable the network daemon. (/disklessroot/etc/rc.conf, or just /etc/rc.conf once you boot into the client.)<br />
<pre><br />
DAEMONS=(syslog-ng !network ...<br />
</pre><br />
<br />
The main issue with this method is the fact that your resolv.conf will not auto-update (since this bypasses DHCP).<br />
To work around this, edit /etc/resolv.conf and add this line. (/disklessroot/etc/resolv.conf on the server)<br />
<pre><br />
nameserver 10.0.0.1 #change this IP for whatever DHCP/DNS server you have, the server's IP usually works if you configured DNS correctly.<br />
</pre><br />
If you can find a better workaround to the DHCP issue, please edit this section.<br />
<br />
=Testing/Debugging the Client=<br />
Now reboot the client computer, making sure the network card is first in the boot-order.<br />
<br />
If all goes right, you should see the network card get an IP address from the server, then connect and boot the kernel. After the initial kernel messages, you should either see ArchLinux boot, or a "killed init" message. <br />
<br />
If init was killed, check your configuration, it usually means it could not mount the NFS folder. Refer to [[Nfs]] for more help. <br />
<br />
If it freezes during a mounting operation, check the client's /etc/fstab or the /boot/pxelinux.cfg/default settings.<br />
<br />
If it freezes duing the "Network" section, either disable it using the previously mentioned workaround, or specify IP settings in /etc/rc.conf. (You can try setting <i>eth0="dhcp"</i>)<br />
<br />
==Performance Notes==<br />
I am currently using a diskless client as my primary internet/development OS due to a hard-drive restriction on my PC. My server is an older machine is running Archlinux with a software-based raid5 array. My client can read files from the NFS share almost as fast as my server can, but there is a limitation with latency and caching. It slows down during "pacman -Sy" and package installs that involve many small files. Otherwise, it runs fine. It also seems that NFS runs synchronously by default, meaning that all writes have to be committed before continuing, no caching in free memory like it would on a local hard drive. This is actually a good thing, from the data integrity standpoint, as fewer files are lost during a random power outage. I have not tried the "async" NFS option because the nfs man page does not suggest it will work for NFSv3.<br />
<br />
<br />
----<br />
<br />
<br><br><br />
<i>Work in Progress.<br />
This recreation was based on my attempt at a diskless client. It was successful, but there are some minor issues I am tracking down. (Error messages and such)<br />
I will update this as I find anything else.<br />
Please edit/update as needed.</i></div>Geeknerhttps://wiki.archlinux.org/index.php?title=NFSv3&diff=43615NFSv32008-06-24T07:44:57Z<p>Geekner: Added link to diskless howto</p>
<hr />
<div>[[Category:Networking (English)]]<br />
[[Category:HOWTOs (English)]]<br />
{{i18n_links_start}}<br />
{{i18n_entry|English|Nfs}}<br />
{{i18n_entry|Italiano|Nfs (Italiano)}}<br />
{{i18n_entry|Русский|Nfs_(Russian)}}<br />
{{i18n_entry|Česky|Nfs_(Česky)}}<br />
{{i18n_links_end}}<br />
<br />
==Goals==<br />
The goal of this article is setting up a nfs-server for sharing files over a network. We'll keep it simple here, so everything should be pretty much understandable.<br />
'''Note: for NFSv4, see [[NFSv4]]'''<br />
<br />
==Required packages==<br />
Required packages for both the server and the client are minimal.<br><br />
You'll only need to install:<br />
*core/portmap<br />
*core/nfs-utils<br />
As both packages are in the [core] repository, they will be included by default in new Arch installations.<br />
<br />
==Setting up the server==<br />
You can now edit your configuration and start the daemons. You need to be root to execute the following commands.<br />
<br />
===Files===<br />
====/etc/exports====<br />
This file (/etc/exports) defines the various shares on the nfs server, and their permissions.<br><br />
A few examples:<br />
<pre><br />
/files *(ro,sync) ; Read-only access to anyone<br />
/files 192.168.0.100(rw,sync) ; Read-write access to a client on 192.168.0.100<br />
/files 192.168.1.1/24(rw,sync) ; Read-write access to all clients from 192.168.1.1 to 192.168.1.255<br />
</pre><br />
If you make changes to /etc/exports after starting the daemons, you can make them effective by issuing the following command:<br />
<pre><br />
exportfs -r<br />
</pre><br />
<br />
If you decide to make your NFS share public and writable, you can use the all_squash option in combination with anonuid and the anongid option.<br />
For example, to set the privileges for the user nobody in the group nobody, you can do the following:<br />
<pre><br />
; Read-write access to a client on 192.168.0.100, with rw access for the user 99 with gid 99<br />
/files 192.168.0.100(rw,sync,all_squash,anonuid=99,anongid=99))<br />
</pre><br />
<br />
This also means, that if you want write access to this directory, nobody.nobody must be the owner of the share directory:<br />
<pre><br />
chown -R nobody.nobody /files<br />
</pre><br />
<br />
Full details on the exports file are provided by the exports man page.<br />
<br />
====/etc/conf.d/nfs====<br />
Edit this file to pass appropriate run-time options to nfsd, mountd, statd, and sm-notify. The default Arch NFS init scripts require the --no-notify option for statd, as follows:<br />
STATD_OPTS="--no-notify"<br />
Others may be left at the provided defaults, or changed according to your requirements. Please refer to the relevant man pages for full details.<br />
<br />
====/etc/hosts.allow====<br />
To allow network access to the nfs server you should edit /etc/hosts.allow.<br><br />
The following example opens these services to anyone:<br />
<pre><br />
nfsd: ALL<br />
portmap: ALL<br />
mountd:ALL<br />
</pre><br />
This is a very insecure way of allowing host access. To get better control over who is allowed to access the daemons hosts.deny should be everyone, and hosts.allow should specifically allow certain people.<br />
In this example, 192.168.0.101 should be the IP address of the person(s) allowed to access it.<br />
<pre><br />
nfsd: 192.168.0.101/255.255.255.0<br />
portmap: 192.168.0.101/255.255.255.0<br />
mountd: 192.168.0.101/255.255.255.0<br />
</pre><br />
For finer control, read the hosts_access(5) man page.<br />
<br />
===Daemons===<br />
You can now start the server with the following commands:<br />
<pre><br />
/etc/rc.d/portmap start<br />
/etc/rc.d/nfslock start<br />
/etc/rc.d/nfsd start<br />
</pre><br />
Please note that they must be started in that order.<br><br />
To start the server at boot time, add these daemons to the DAEMONS array in /etc/rc.conf.<br />
<br />
==Setting up the client==<br />
===Files===<br />
====/etc/conf.d/nfs====<br />
Edit this file to pass appropriate run-time options to statd - the remaining options are for server use only. Do NOT use the --no-notify option on the client side, unless you are fully aware of the consequences of doing so.<br />
<br />
Please refer to the statd man page for full details.<br />
<br />
===Daemons===<br />
Start the portmap and nfslock daemons:<br />
/etc/rc.d/portmap start<br />
/etc/rc.d/nfslock start<br />
Please note that they must be started in that order.<br><br />
To start the daemons at boot time, add them to the DAEMONS array in /etc/rc.conf.<br />
<br />
Then just mount as normal:<br />
mount server:/files /files<br />
<br />
===Auto-mount on boot===<br />
If you want to mount on boot, make sure netfs is in the DAEMONS array in /etc/rc.conf, and add an appropriate line in '''/etc/fstab''', for example:<br />
server:/files /files nfs defaults 0 0<br />
<br />
If you wish to specify a packet size for read and write packets, specify them in your fstab entry. The values listed below are the defaults if none are specified:<br />
<br />
server:/files /files nfs rsize=32768,wsize=32768 0 0<br />
<br />
Read the nfs man page for further information, including all available mount options.<br />
<br />
==Troubleshooting==<br />
===Unreliable performance, slow data transfer, and/or high load when using NFS and gigabit===<br />
This is a result of the default packetsize used by NFS, which causes significant fragmentation on gigabit networks. You can modify this behavior by the rsize and wsize mount parameters. Using rsize=32768,wsize=32768 should suffice. Please note that this problem does not occur on 100Mb networks, due to the lower packet transfer speed.<br />
<br />
Note: Default value for NFS4 is 32768. Maximum is 65536. Increase from default in increments of 1024 until maximum transfer rate is achieved.<br />
<br />
===Portmap daemon fails to start at boot===<br />
Make sure you place portmap BEFORE netfs in the daemons array in /etc/rc.conf .<br />
<br />
==Links & References==<br />
HOWTO: [[Diskless network boot NFS root]]<br><br />
[http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=/com.ibm.aix.prftungd/doc/prftungd/nfs_perf.htm Very helpful]</div>Geeknerhttps://wiki.archlinux.org/index.php?title=Diskless_system&diff=43614Diskless system2008-06-24T07:39:44Z<p>Geekner: Complete Rewrite</p>
<hr />
<div>[[Category:HOWTOs (English)]]<br />
<br />
==Root over NFS (diskless boot)==<br />
<br />
This HOWTO will explain the step-by-step method for booting an Archlinux installation over an NFS share. The first half will primarily cover configuration of the server, and the second will cover client side configuration.<br />
<br />
This text will contain errors, please report any problems you have with error messages on the talk page.<br />
<br />
For more information on Network File Sharing, see [[Nfs]].<br />
<br />
==Hardware Considerations==<br />
<br />
Server: <br />
Any standard computer should work, but for performance reasons it should have fast disk access and preferably gigabit ethernet.<br />
<br />
Client:<br />
For a completely diskless boot, the client computer must have a network-bootable (PXE) network card. Wireless will not work, with exception of a wireless-to-ethernet external bridge. Many motherboards have a PXE-compatible ethernet card built in, but you will need to enable support in the BIOS.<br />
<br />
If you don't have a PXE-compatible network card, you can setup a semi-diskless client. This involves building a flashdrive or CD-based boot partition with syslinux or grub. The configuration is the same, but skipping the tftp steps. Creating boot-CDs or flashdrives is beyond the scope of this article.<br />
<br />
=Server-Side Setup=<br />
<br />
The server will have to run a tftp daemon to share the kernel/bootsector along with an NFS share to share the root directory. PXE requires the DHCP server to announce the location of the tftp server to any clients that connect. Most routers will not support this, and this article will show how to modify an existing DNSMasq or DHCPD server. See [[NAT'ing_firewall_-_Share_your_broadband_connection]] for setting up a simple router replacement, including DHCP, a good place to start for this project. If you do have a router that supports PXE, then you will need to tell it to send all tftp requests to the server.<br />
<br />
At this point I will assume you have a server running with DNSMasq or DHCPd providing DHCP services, along with some space for the client's root.<br />
<br />
First, install nfs-utils, syslinux (for the pxelinux bootloader, you can substitute for GRUB, see [http://wiki.linuxmce.org/index.php/GRUB_PXE_network_boot]).<br />
<pre><br />
pacman -S nfs-utils syslinux<br />
</pre><br />
<br />
==Create Client Root Directory==<br />
<br />
First, create a directory that will hold the root filesystem, this can be anywhere. For this example, I will use /disklessroot.<br />
<pre><br />
mkdir /disklessroot<br />
</pre><br />
<br />
Now you need to populate that root with an installation of Archlinux.<br />
<pre><br />
pacman -S --root /disklessroot --dbpath /disklessroot/var/lib/pacman base<br />
</pre><br />
<br />
Edit /disklessroot/etc/mkinitcpio.conf, add 'nfs' to the MODULE section, and add 'net' as the second entry under HOOKS..<br />
<pre><br />
MODULES="nfs"<br />
HOOKS="base net udev autodetect pata scsi sata filesystems"<br />
</pre><br />
<br />
Now, chroot into /disklessroot and recreate the kernel image.<br />
<pre><br />
chroot /disklessroot<br />
mkinitcpio -p kernel26<br />
exit<br />
</pre><br />
You should be back to the normal root, the exit command should leave the chroot. Check before continuing.<br />
<br />
==PXE/TFTP Setup==<br />
Now to setup tftp and PXE.<br />
<br />
Within DNSMasq, there is an easy-to-use tftp server, so this article will use that.<br />
First, edit /etc/dnsmasq.conf and uncomment these lines, changing them to reflect your file paths.<br />
<pre><br />
# Set the boot filename for BOOTP. You will only need <br />
# this is you want to boot machines over the network and you will need<br />
# a TFTP server; either dnsmasq's built in TFTP server or an<br />
# external one. (See below for how to enable the TFTP server.)<br />
dhcp-boot=pxelinux.0 #change this if you are using GRUB.<br />
<br />
# Enable dnsmasq's built-in TFTP server<br />
enable-tftp<br />
<br />
# Set the root directory for files available via FTP.<br />
tftp-root=/disklessroot/boot/<br />
</pre><br />
This has the additional feature of allowing you to update the kernel within the client OS.<br />
<br />
Make sure the firewall on your server does not block UDP port 69 (UDP ports 67-68 and 4011 are also used, but should not need to be opened).<br />
<br />
==NFS Setup==<br />
Edit /etc/exports, add this line.<br />
<pre><br />
/disklessroot *(rw,no_root_squash,no_subtree_check)<br />
</pre><br />
If security is an issue, you can replace * with an IP address or IP range to restrict connections. This is semi-redundant with the /etc/hosts.allow configuration below.<br />
<br />
Edit /etc/hosts.allow<br />
<pre><br />
nfsd: 10.0.0.<br />
portmap: 10.0.0.<br />
mountd: 10.0.0.<br />
</pre><br />
This partial IP will match everything in the 10.0.0.x range, you can specify a single address, IP range, or simply "ALL" (Insecure!).<br />
<br />
Add "portmap nfslock nfsd" to the server's /etc/rc.conf under DAEMONS, in that specific order. (Assuming dnsmasq was already installed and on the daemons list.)<br />
<br />
Refer to [[Nfs]] for any NFS configuration/security issues that are not covered here.<br />
<br />
=Client Configuration=<br />
These files are to be edited from the server, as the client is not ready yet.<br />
<br />
==Boot Configuration==<br />
Copy pxelinux.0 to /diskless/boot/<br />
<pre><br />
cp /usr/lib/syslinux/pxelinux.0 /disklessroot/boot/<br />
</pre><br />
Create and edit /diskless/boot/pxelinux.cfg/default (Replacing IP addresses and file-paths as needed.)<br />
<pre><br />
default linux<br />
<br />
label linux<br />
kernel vmlinuz26<br />
append initrd=kernel26.img rootfstype=nfs root=/dev/nfs nfsroot=10.0.0.1:/disklessroot,v3,rsize=16384,wsize=16384 ip=dhcp<br />
</pre><br />
The syntax for the pxelinux bootloader is the same as Syslinux, here[http://syslinux.zytor.com/faq.php] under "CONFIGURATION FILE".<br />
Remember that any filenames will be relative to the tftp server, check the setting in /etc/dnsmasq.conf named "tftp-root=". <br />
This example places tftp-root at /disklessroot/boot/. Thus the kernel should be at /disklessroot/boot/vmlinuz26 on the server, and will show up as /vmlinuz26 for the first stage of client boot. Exactly like a separate /boot partition.<br />
<br />
=DHCP/network daemon Workaround=<br />
This is to prevent the client from trying to reconnect the network and killing itself, also prevents the client from prematurely killing itself while shutting down. Remember, any disconnect of the network and your client will freeze.<br />
<br />
Edit the client's rc.conf and disable the network daemon. (/disklessroot/etc/rc.conf, or just /etc/rc.conf once you boot into the client.)<br />
<pre><br />
DAEMONS=(syslog-ng !network ...<br />
</pre><br />
<br />
The main issue with this method is the fact that your resolv.conf will not auto-update (since this bypasses DHCP).<br />
To work around this, edit /etc/resolv.conf and add this line. (/disklessroot/etc/resolv.conf on the server)<br />
<pre><br />
nameserver 10.0.0.1 #change this IP for whatever DHCP/DNS server you have, the server's IP usually works if you configured DNS correctly.<br />
</pre><br />
If you can find a better workaround to the DHCP issue, please edit this section.<br />
<br />
=Testing/Debugging the Client=<br />
Now reboot the client computer, making sure the network card is first in the boot-order.<br />
<br />
If all goes right, you should see the network card get an IP address from the server, then connect and boot the kernel. After the initial kernel messages, you should either see ArchLinux boot, or a "killed init" message. <br />
<br />
If init was killed, check your configuration, it usually means it could not mount the NFS folder. Refer to [[Nfs]] for more help. <br />
<br />
If it freezes during a mounting operation, check the client's /etc/fstab or the /boot/pxelinux.cfg/default settings.<br />
<br />
If it freezes duing the "Network" section, either disable it using the previously mentioned workaround, or specify IP settings in /etc/rc.conf. (You can try setting <i>eth0="dhcp"</i>)<br />
<br />
==Performance Notes==<br />
I am currently using a diskless client as my primary internet/development OS due to a hard-drive restriction on my PC. My server is an older machine is running Archlinux with a software-based raid5 array. My client can read files from the NFS share almost as fast as my server can, but there is a limitation with latency and caching. It slows down during "pacman -Sy" and package installs that involve many small files. Otherwise, it runs fine. It also seems that NFS runs synchronously by default, meaning that all writes have to be committed before continuing, no caching in free memory like it would on a local hard drive. This is actually a good thing, from the data integrity standpoint, as fewer files are lost during a random power outage. I have not tried the "async" NFS option because the nfs man page does not suggest it will work for NFSv3.<br />
<br />
<br />
----<br />
<br />
<br><br><br />
<i>Work in Progress.<br />
This recreation was based on my attempt at a diskless client. It was successful, but there are some minor issues I am tracking down. (Error messages and such)<br />
I will update this as I find anything else.<br />
Please edit/update as needed.</i></div>Geeknerhttps://wiki.archlinux.org/index.php?title=Diskless_system&diff=43604Diskless system2008-06-24T04:59:59Z<p>Geekner: </p>
<hr />
<div>[[Category:Foobar (English)]]<br />
[[Category:HOWTOs (English)]]<br />
{{stub}}<br />
<br />
==Root over NFS (diskless)==<br />
<br />
This HOWTO will show you the shortest way (IMHO) to build a System that boots via Network and uses a NFS share as root.<br />
I'm assuming that the system you are currently reading this article with will be the netboot server, adjust paths accordingly if this is not the case.<br />
This text will contain errors, please report any problems you have with error messages on the talk page.<br />
<br />
==Needed Hardware/Software==<br />
<br />
Hardware: PXE compactible Network card. - got some older 3com cards that claim to support PXE, but never got them to work. Try other hardware if it doesn't work out.<br />
<br />
Software:<br />
<pre><br />
tftp-hpa dhcp nfs-utils syslinux<br />
</pre><br />
All packages are available from the archlinux repositories.<br />
<br />
<br />
<br />
==Modify the initial ramdisk image==<br />
The client kernel needs the net HOOK so that the network card driver is available at boot time.<br><br />
The default Archlinux kernel comes with all server capabilities you need to get started. However, the NFS module must be added to the initial ramdisk image to be loaded on startup before anything else.<br />
<br />
/etc/minitcpio.conf<br />
<pre><br />
MODULES="nfs"<br />
HOOKS="base net udev autodetect ide scsi sata filesystems"<br />
</pre><br />
then run <br />
<pre><br />
mkinitcpio -p kernel26<br />
</pre><br />
<br />
==Configure the daemons==<br />
<br />
/etc/dhcpd.conf<br />
<pre><br />
ddns-update-style ad-hoc;<br />
<br />
subnet 192.168.11.0 netmask 255.255.255.0 {<br />
<br />
option routers 192.168.11.1; #duplication later on, have to test which one to kill<br />
<br />
}<br />
<br />
allow booting;<br />
allow bootp;<br />
<br />
# Standard configuration directives...<br />
<br />
option domain-name "plop";<br />
option subnet-mask 255.255.255.0;<br />
option broadcast-address 192.168.11.255;<br />
option domain-name-servers 192.168.11.1;<br />
option routers 192.168.11.1;<br />
<br />
# Group the PXE bootable hosts together<br />
group { <br />
# PXE-specific configuration directives...<br />
next-server 192.168.11.3;<br />
filename "/pxelinux.0"; #this means /var/tftpboot/pxelinux.0<br />
<br />
# You need an entry like this for every host<br />
# unless you're using dynamic addresses<br />
host testpc {<br />
hardware ethernet 00:02:B3:88:B7:9C;<br />
fixed-address 192.168.11.101;<br />
}<br />
}<br />
</pre><br />
<br />
<br />
Configuring dhcpd is out of the scope for this document, this is a minimal config which should get you started.<br />
Besides the obvious things like "option router" you need to change "hardware ethernet" and "fixed-address" - these are the netboot client parameters.<br />
<br />
<br />
/etc/exports (directories exported via NFS)<br />
<pre><br />
/nfs-exports/pxeclient *(rw,no_root_squash,no_subtree_check)<br />
</pre><br />
<br />
<b>WARNING: this will allow anybody to mount that directory writable, read "man exports" for security</b><br />
<br />
==File/Directory Structure==<br />
<br />
1. The kernel needs to be placed somewhere where the tftp daemon has access, the default is /var/tftpboot. (Changeable in /etc/rc.d/tftpd)<br />
<pre><br />
cp /boot/vmlinuz26 /boot/kernel26.img /var/tftpboot/<br />
</pre><br />
<br />
2. You need pxelinux.0 from the syslinux package.<br />
<pre><br />
cp /usr/lib/syslinux/pxelinux.0 /var/tftpboot/<br />
</pre><br />
<br />
3. The boot entry.<br />
<pre><br />
mkdir /var/tftpboot/pxelinux.cfg/<br />
</pre><br />
/var/tftpboot/pxelinux.cfg/default<br />
<pre><br />
default test<br />
<br />
label test<br />
kernel vmlinuz26<br />
append initrd=kernel26.img rootfstype=nfs root=/dev/nfs nfsroot=192.168.11.50:/nfs-exports/pxeclient,v3 ip=dhcp<br />
</pre><br />
<br />
4. The client's root filesystem.<br />
<pre><br />
/nfs-exports/pxeclient #this is / for the netboot client, looks like your normal /<br />
</pre><br />
<br />
5. Create needed device node in dev folder.<br />
/dev<br />
<pre><br />
cd /dev && mknod nfs b 0 255<br />
</pre><br />
<br />
6. Edit the client's /etc/fstab. Remember, this will be under /nfs-exports/pxeclient/etc/fstab (or wherever you placed the client's root on the server). If you boot the operating system, then it will simply be /etc/fstab.<br />
<pre><br />
192.168.111.50:/nfs-exports/pxeclient / nfs nfsvers=3 0 0<br />
</pre><br />
<br />
<br />
will finish tomorrow</div>Geeknerhttps://wiki.archlinux.org/index.php?title=Diskless_system&diff=43603Diskless system2008-06-24T04:57:35Z<p>Geekner: Cleaned up, added detail, more to come.</p>
<hr />
<div>[[Category:Foobar (English)]]<br />
[[Category:HOWTOs (English)]]<br />
{{stub}}<br />
<br />
==Root over NFS (diskless)==<br />
<br />
This HOWTO will show you the shortest way (IMHO) to build a System that boots via Network and uses a NFS share as root.<br />
I'm assuming that the system you are currently reading these lines with is the netboot client, adjust paths accordingly if this is not the case.<br />
This text will contain errors, please report any problems you have with error messages on the talk page.<br />
<br />
==Needed Hardware/Software==<br />
<br />
Hardware: PXE compactible Network card. - got some older 3com cards that claim to support PXE, but never got them to work. Try other hardware if it doesn't work out.<br />
<br />
Software:<br />
<pre><br />
tftp-hpa dhcp nfs-utils syslinux<br />
</pre><br />
All packages are available from the archlinux repositories.<br />
<br />
<br />
<br />
==Modify the initial ramdisk image==<br />
The client kernel needs the net HOOK so that the network card driver is available at boot time.<br><br />
The default Archlinux kernel comes with all server capabilities you need to get started. However, the NFS module must be added to the initial ramdisk image to be loaded on startup before anything else.<br />
<br />
/etc/minitcpio.conf<br />
<pre><br />
MODULES="nfs"<br />
HOOKS="base net udev autodetect ide scsi sata filesystems"<br />
</pre><br />
then run <br />
<pre><br />
mkinitcpio -p kernel26<br />
</pre><br />
<br />
==Configure the daemons==<br />
<br />
/etc/dhcpd.conf<br />
<pre><br />
ddns-update-style ad-hoc;<br />
<br />
subnet 192.168.11.0 netmask 255.255.255.0 {<br />
<br />
option routers 192.168.11.1; #duplication later on, have to test which one to kill<br />
<br />
}<br />
<br />
allow booting;<br />
allow bootp;<br />
<br />
# Standard configuration directives...<br />
<br />
option domain-name "plop";<br />
option subnet-mask 255.255.255.0;<br />
option broadcast-address 192.168.11.255;<br />
option domain-name-servers 192.168.11.1;<br />
option routers 192.168.11.1;<br />
<br />
# Group the PXE bootable hosts together<br />
group { <br />
# PXE-specific configuration directives...<br />
next-server 192.168.11.3;<br />
filename "/pxelinux.0"; #this means /var/tftpboot/pxelinux.0<br />
<br />
# You need an entry like this for every host<br />
# unless you're using dynamic addresses<br />
host testpc {<br />
hardware ethernet 00:02:B3:88:B7:9C;<br />
fixed-address 192.168.11.101;<br />
}<br />
}<br />
</pre><br />
<br />
<br />
Configuring dhcpd is out of the scope for this document, this is a minimal config which should get you started.<br />
Besides the obvious things like "option router" you need to change "hardware ethernet" and "fixed-address" - these are the netboot client parameters.<br />
<br />
<br />
/etc/exports (directories exported via NFS)<br />
<pre><br />
/nfs-exports/pxeclient *(rw,no_root_squash,no_subtree_check)<br />
</pre><br />
<br />
<b>WARNING: this will allow anybody to mount that directory writable, read "man exports" for security</b><br />
<br />
==File/Directory Structure==<br />
<br />
1. The kernel needs to be placed somewhere where the tftp daemon has access, the default is /var/tftpboot. (Changeable in /etc/rc.d/tftpd)<br />
<pre><br />
cp /boot/vmlinuz26 /boot/kernel26.img /var/tftpboot/<br />
</pre><br />
<br />
2. You need pxelinux.0 from the syslinux package.<br />
<pre><br />
cp /usr/lib/syslinux/pxelinux.0 /var/tftpboot/<br />
</pre><br />
<br />
3. The boot entry.<br />
<pre><br />
mkdir /var/tftpboot/pxelinux.cfg/<br />
</pre><br />
/var/tftpboot/pxelinux.cfg/default<br />
<pre><br />
default test<br />
<br />
label test<br />
kernel vmlinuz26<br />
append initrd=kernel26.img rootfstype=nfs root=/dev/nfs nfsroot=192.168.11.50:/nfs-exports/pxeclient,v3 ip=dhcp<br />
</pre><br />
<br />
4. The client's root filesystem.<br />
<pre><br />
/nfs-exports/pxeclient #this is / for the netboot client, looks like your normal /<br />
</pre><br />
<br />
5. Create needed device node in dev folder.<br />
/dev<br />
<pre><br />
cd /dev && mknod nfs b 0 255<br />
</pre><br />
<br />
6. Edit the client's /etc/fstab. Remember, this will be under /nfs-exports/pxeclient/etc/fstab (or wherever you placed the client's root on the server). If you boot the operating system, then it will simply be /etc/fstab.<br />
<pre><br />
192.168.111.50:/nfs-exports/pxeclient / nfs nfsvers=3 0 0<br />
</pre><br />
<br />
<br />
will finish tomorrow</div>Geeknerhttps://wiki.archlinux.org/index.php?title=World_of_Warcraft&diff=10002World of Warcraft2006-03-23T06:51:41Z<p>Geekner: </p>
<hr />
<div>[[Category:Games]][[Category:Installation]]<br />
<br />
{{stub}}<br />
<br />
World of Warcraft is a Massive Multiplayer Online Role-Playing Game (MMORPG) by Blizzard Entertainment taking place in the fictional world of Azeroth; The world that previous Blizzard titles in the real-time strategy Warcraft game series has presented to the players.<br />
<br />
This article will describe how to get it runing on Arch Linux, even though it's a Windows (Win32) game.<br />
<br />
This requires an active World of Warcraft account and install CDs or working Windows World of Warcraft installation.<br />
<br />
==Introduction==<br />
As Blizzard so kindly also shipped World of Warcraft with OpenGL support, we don't need Transgaming's Cedega software (which is a implementation of the Microsoft DirectX libraries).<br />
Basically, we just need a out-of-the-box wine installation and run WoW with opengl<br />
<br />
NOTE: You may experience issues when installing patches if you use the stock wine package. If you have issues, install wine-cvs from [http://bbs.archlinux.org/viewtopic.php?t=18127 Shadowhand's repository], as it has been patched to deal with this specific issue.<br />
<br />
==Installation==<br />
<br />
You can copy a working install of World of Warcraft from a windows partition or follow the instructions at this site:<br />
http://gentoo-wiki.com/HOWTO_Install_and_update_World_Of_Warcraft_with_wine#Normal_CD_Installation<br />
<br />
Please note you will need wine installed in order to run the install program. Refer to the instructions later in this article to install wine, the article linked above describes installing wine in Gentoo, which is different from Archlinux.<br />
<br />
==Post-Installation Tasks==<br />
<br />
===Updating World of Warcraft===<br />
<br />
''I had WoW already installed and patched on a Windows machine, so I simply copied the WoW folder to my Linux system to save me some time.''<br />
<br />
===No sound===<br />
Edit /path to your World of Warcraft folder/WTF/Config.wtf and add or change:<br />
<br />
SET SoundOutputSystem "1"<br />
SET SoundBufferSize "100"<br />
<br />
====OK, I have sound, but it's all crappy====<br />
I solved this by running<br />
<br />
# winecfg<br />
<br />
In the "Audio" tab, selected OSS as the sound driver, using "Standard" hardware acceleration and driver emulation enabled.<br />
<br />
===Running World of Warcraft===<br />
After patching and installing the wine package (see further down on this page) and fixed the sound, run the following command to play WoW:<br />
<br />
# wine /home/user/.wine/c_drive/Program\ Files/World\ of\ Warcraft/WoW.exe -opengl<br />
<br />
There was a bug that would prevent targetting circles from appearing below targeted mobs/players/NPCs, this bug was fixed by blizzard in patch 1.9. Any wine patches to correct the "Targeting circle bug" are no longer needed, and may cause graphics to display improperly.<br />
<br />
===Installing Wine===<br />
As said above, you need Wine. There are several ways to install Wine in Archlinux, you can install a precompiled version from Shadowhand's repository, or compile wine manually using makepkg. The standard wine package provided by pacman will not work with World of Warcraft due to graphical issues. There is a specially compiled version of wine provided by Shadowhand. If you choose to compile wine, you will need to patch it manually, this is described later.<br />
<br />
<br />
'''Installing from Shadowhand's repository:'''<br />
<br />
In order to install wine from Shadowhands repository, you will need to edit /etc/pacman.conf and add the following line:<br />
<br />
<pre><br />
[shadowhand]<br />
Server = http://arch.os-zen.net/pkg/shadowhand<br />
</pre><br />
<br />
As described [http://bbs.archlinux.org/viewtopic.php?t=18127 here].<br />
<br />
Once the repository in enabled, run these commands as root:<br />
<pre>pacman -Sy<br />
pacman -S wine-cvs<br />
</pre><br />
<br />
This will replace any existing copies of wine.<br />
<br />
<br />
'''Compiling wine from source:'''<br />
<br />
''This is an old section, it still needs to be updated. The recent versions of wine will not work with the patch below. If you wish to compile wine manually, use the files provided [http://aur.archlinux.org/packages.php?do_Details=1&ID=3515&O=0&L=0&C=0&K=wine&SB=&SO=&PP=25&do_MyPackages=0&do_Orphans=0&SeB=nd here].''<br />
<br />
<br />
First, we need the wine package from ArchLinux, which we get by running:<br />
<br />
# pacman -Sy cvsup<br />
# abs<br />
<br />
Then begin the creation of the new custom wine package.<br />
<br />
# cd /var/abs/local<br />
# mkdir wine<br />
# cd wine<br />
# cp ../../extra/x11/wine/PKGBUILD ../../extra/x11/wine/wine.install .<br />
<br />
Now we need the patch,<br />
<br />
0.9.4 Patch can be found at [http://polynomial-c.homelinux.net/pub/gentoo/portage/app-emulation/wine/files/wine-0.9.4-wow_fixes.patch Wine-0.9.4-wow_fixes.patch]<br />
<br />
Before we edit the PKGBUILD, get the md5 sums for the Wine 0.9.4 WoW Patch.<br />
<br />
# md5sum wine-0.9.4-wow_fixes.patch<br />
# 15bbfc8b6e205406c16d99fa39b05cd4 wine-0.9.4-wow_fixes.patch<br />
<br />
What you need to modify in your PKGBUILD (as we copied it from the ArchLinux abs tree) is the source & md5sums variables.<br />
<br />
The following edited PKGBUILD is based on the 0.9.4-1 package.<br />
<br />
# $Id: PKGBUILD,v 1.4 2005/12/23 18:51:45 dale Exp $<br />
# Maintainer: judd <jvinet@zeroflux.org><br />
# Contributor: Matt Smith (Majik) <darkknight@helpdesk.zaz.net><br />
pkgname=wine<br />
pkgver=0.9.4<br />
# ugh, have to use the force switch to work around the version format<br />
# change -- remove the force switch after an upgrade or two<br />
force=y<br />
pkgrel=1<br />
pkgdesc="Emulator of the Windows 3.x and Win32 APIs"<br />
url="http://www.winehq.com"<br />
depends=('x-server' 'libjpeg' 'libungif' 'alsa-lib' 'glut' 'arts' 'openldap' 'libxslt' 'lcms')<br />
makedepends=('alsa-lib')<br />
install=wine.install<br />
source=(http://ibiblio.org/pub/linux/system/emulators/wine/wine-$pkgver.tar.bz2 <br />
wine-0.9.4-wow_fixes.patch)<br />
md5sums=('73205d83a5612a43441a8532683c0434' \ '15bbfc8b6e205406c16d99fa39b05cd4')<br />
<br />
build() {<br />
cd $startdir/src/$pkgname-$pkgver<br />
./configure --prefix=/usr --sysconfdir=/etc --enable-opengl --with-x<br />
make depend<br />
make || return 1<br />
make prefix=$startdir/pkg/usr install<br />
# conflicts with textutils<br />
rm -f $startdir/pkg/usr/bin/expand<br />
mkdir -p $startdir/pkg/etc/wine<br />
mkdir -p $startdir/pkg/etc/profile.d<br />
#cp -r $startdir/src/$pkgname-$pkgver/documentation/samples $startdir/pkg/etc/wine<br />
}<br />
<br />
Now we run:<br />
<br />
# makepkg<br />
<br />
After the makepkg completes, if you have a previous installation of wine, best to remove it prior to installing the new patched version.<br />
<br />
# pacman -R wine<br />
<br />
Then to install the new patched version. For the above package build the final patched version of the file is wine-0.9.4-1.pkg.tar.gz. So to install, we use the following command.<br />
<br />
# pacman -A wine-0.9.4-1.pkg.tar.gz<br />
<br />
After this command completes, you have a 0.9.4-1 Wine patched for World of Warcraft installed!</div>Geeknerhttps://wiki.archlinux.org/index.php?title=World_of_Warcraft&diff=10001World of Warcraft2006-03-23T06:50:03Z<p>Geekner: </p>
<hr />
<div>[[Category:Games]][[Category:Installation]]<br />
<br />
{{stub}}<br />
<br />
World of Warcraft is a Massive Multiplayer Online Role-Playing Game (MMORPG) by Blizzard Entertainment taking place in the fictional world of Azeroth; The world that previous Blizzard titles in the real-time strategy Warcraft game series has presented to the players.<br />
<br />
This article will describe how to get it runing on Arch Linux, even though it's a Windows (Win32) game.<br />
<br />
Patches from the Gentoo forum thread<br />
http://forums.gentoo.org/viewtopic-t-246098.html<br />
<br />
This requires an active World of Warcraft account and install CDs or working Windows World of Warcraft installation.<br />
<br />
==Introduction==<br />
As Blizzard so kindly also shipped World of Warcraft with OpenGL support, we don't need Transgaming's Cedega software (which is a implementation of the Microsoft DirectX libraries).<br />
Basically, we just need a out-of-the-box wine installation and run WoW with opengl<br />
<br />
NOTE: You may experience issues when installing patches if you use the stock wine package. If you have issues, install wine-cvs from [http://bbs.archlinux.org/viewtopic.php?t=18127 Shadowhand's repository], as it has been patched to deal with this specific issue.<br />
<br />
==Installation==<br />
<br />
You can copy a working install of World of Warcraft from a windows partition or follow the instructions at this site:<br />
http://gentoo-wiki.com/HOWTO_Install_and_update_World_Of_Warcraft_with_wine#Normal_CD_Installation<br />
<br />
Please note you will need wine installed in order to run the install program. Refer to the instructions later in this article to install wine, the article linked above describes installing wine in Gentoo, which is different from Archlinux.<br />
<br />
==Post-Installation Tasks==<br />
<br />
===Updating World of Warcraft===<br />
<br />
''I had WoW already installed and patched on a Windows machine, so I simply copied the WoW folder to my Linux system to save me some time.''<br />
<br />
===No sound===<br />
Edit /path to your World of Warcraft folder/WTF/Config.wtf and add or change:<br />
<br />
SET SoundOutputSystem "1"<br />
SET SoundBufferSize "100"<br />
<br />
====OK, I have sound, but it's all crappy====<br />
I solved this by running<br />
<br />
# winecfg<br />
<br />
In the "Audio" tab, selected OSS as the sound driver, using "Standard" hardware acceleration and driver emulation enabled.<br />
<br />
===Running World of Warcraft===<br />
After patching and installing the wine package (see further down on this page) and fixed the sound, run the following command to play WoW:<br />
<br />
# wine /home/user/.wine/c_drive/Program\ Files/World\ of\ Warcraft/WoW.exe -opengl<br />
<br />
There was a bug that would prevent targetting circles from appearing below targeted mobs/players/NPCs, this bug was fixed by blizzard in patch 1.9. Any wine patches to correct the "Targeting circle bug" are no longer needed, and may cause graphics to display improperly.<br />
<br />
===Installing Wine===<br />
As said above, you need Wine. There are several ways to install Wine in Archlinux, you can install a precompiled version from Shadowhand's repository, or compile wine manually using makepkg. The standard wine package provided by pacman will not work with World of Warcraft due to graphical issues. There is a specially compiled version of wine provided by Shadowhand. If you choose to compile wine, you will need to patch it manually, this is described later.<br />
<br />
<br />
'''Installing from Shadowhand's repository:'''<br />
<br />
In order to install wine from Shadowhands repository, you will need to edit /etc/pacman.conf and add the following line:<br />
<br />
<pre><br />
[shadowhand]<br />
Server = http://arch.os-zen.net/pkg/shadowhand<br />
</pre><br />
<br />
As described [http://bbs.archlinux.org/viewtopic.php?t=18127 here].<br />
<br />
Once the repository in enabled, run these commands as root:<br />
<pre>pacman -Sy<br />
pacman -S wine-cvs<br />
</pre><br />
<br />
This will replace any existing copies of wine.<br />
<br />
<br />
'''Compiling wine from source:'''<br />
<br />
''This is an old section, it still needs to be updated. The recent versions of wine will not work with the patch below. If you wish to compile wine manually, use the files provided [http://aur.archlinux.org/packages.php?do_Details=1&ID=3515&O=0&L=0&C=0&K=wine&SB=&SO=&PP=25&do_MyPackages=0&do_Orphans=0&SeB=nd here].''<br />
<br />
<br />
First, we need the wine package from ArchLinux, which we get by running:<br />
<br />
# pacman -Sy cvsup<br />
# abs<br />
<br />
Then begin the creation of the new custom wine package.<br />
<br />
# cd /var/abs/local<br />
# mkdir wine<br />
# cd wine<br />
# cp ../../extra/x11/wine/PKGBUILD ../../extra/x11/wine/wine.install .<br />
<br />
Now we need the patch,<br />
<br />
0.9.4 Patch can be found at [http://polynomial-c.homelinux.net/pub/gentoo/portage/app-emulation/wine/files/wine-0.9.4-wow_fixes.patch Wine-0.9.4-wow_fixes.patch]<br />
<br />
Before we edit the PKGBUILD, get the md5 sums for the Wine 0.9.4 WoW Patch.<br />
<br />
# md5sum wine-0.9.4-wow_fixes.patch<br />
# 15bbfc8b6e205406c16d99fa39b05cd4 wine-0.9.4-wow_fixes.patch<br />
<br />
What you need to modify in your PKGBUILD (as we copied it from the ArchLinux abs tree) is the source & md5sums variables.<br />
<br />
The following edited PKGBUILD is based on the 0.9.4-1 package.<br />
<br />
# $Id: PKGBUILD,v 1.4 2005/12/23 18:51:45 dale Exp $<br />
# Maintainer: judd <jvinet@zeroflux.org><br />
# Contributor: Matt Smith (Majik) <darkknight@helpdesk.zaz.net><br />
pkgname=wine<br />
pkgver=0.9.4<br />
# ugh, have to use the force switch to work around the version format<br />
# change -- remove the force switch after an upgrade or two<br />
force=y<br />
pkgrel=1<br />
pkgdesc="Emulator of the Windows 3.x and Win32 APIs"<br />
url="http://www.winehq.com"<br />
depends=('x-server' 'libjpeg' 'libungif' 'alsa-lib' 'glut' 'arts' 'openldap' 'libxslt' 'lcms')<br />
makedepends=('alsa-lib')<br />
install=wine.install<br />
source=(http://ibiblio.org/pub/linux/system/emulators/wine/wine-$pkgver.tar.bz2 <br />
wine-0.9.4-wow_fixes.patch)<br />
md5sums=('73205d83a5612a43441a8532683c0434' \ '15bbfc8b6e205406c16d99fa39b05cd4')<br />
<br />
build() {<br />
cd $startdir/src/$pkgname-$pkgver<br />
./configure --prefix=/usr --sysconfdir=/etc --enable-opengl --with-x<br />
make depend<br />
make || return 1<br />
make prefix=$startdir/pkg/usr install<br />
# conflicts with textutils<br />
rm -f $startdir/pkg/usr/bin/expand<br />
mkdir -p $startdir/pkg/etc/wine<br />
mkdir -p $startdir/pkg/etc/profile.d<br />
#cp -r $startdir/src/$pkgname-$pkgver/documentation/samples $startdir/pkg/etc/wine<br />
}<br />
<br />
Now we run:<br />
<br />
# makepkg<br />
<br />
After the makepkg completes, if you have a previous installation of wine, best to remove it prior to installing the new patched version.<br />
<br />
# pacman -R wine<br />
<br />
Then to install the new patched version. For the above package build the final patched version of the file is wine-0.9.4-1.pkg.tar.gz. So to install, we use the following command.<br />
<br />
# pacman -A wine-0.9.4-1.pkg.tar.gz<br />
<br />
After this command completes, you have a 0.9.4-1 Wine patched for World of Warcraft installed!</div>Geeknerhttps://wiki.archlinux.org/index.php?title=World_of_Warcraft&diff=10000World of Warcraft2006-03-23T06:35:17Z<p>Geekner: /* Running World of Warcraft */</p>
<hr />
<div>[[Category:Games]][[Category:Installation]]<br />
<br />
{{stub}}<br />
<br />
World of Warcraft is a Massive Multiplayer Online Role-Playing Game (MMORPG) by Blizzard Entertainment taking place in the fictional world of Azeroth; The world that previous Blizzard titles in the real-time strategy Warcraft game series has presented to the players.<br />
<br />
This article will describe how to get it runing on Arch Linux, even though it's a Windows (Win32) game.<br />
<br />
Patches from the Gentoo forum thread<br />
http://forums.gentoo.org/viewtopic-t-246098.html<br />
<br />
This REQUIRES a bought copy of World of Warcraft (of course you need a copy of the game, duh!).<br />
<br />
==Introduction==<br />
As Blizzard so kindly also shipped World of Warcraft with OpenGL support, we don't need Transgaming's Cedega software (which is a implementation of the Microsoft DirectX libraries).<br />
Basically, we just need a out-of-the-box wine installation and run WoW with opengl<br />
<br />
NOTE: You may experience issues when installing patches if you use the stock wine package. If you have issues, install wine-cvs from [http://bbs.archlinux.org/viewtopic.php?t=18127 Shadowhand's repository], as it has been patched to deal with this specific issue.<br />
<br />
==Installation==<br />
<br />
You can copy a working install of World of Warcraft from a windows partition or follow the instructions at this site:<br />
http://gentoo-wiki.com/HOWTO_Install_and_update_World_Of_Warcraft_with_wine#Normal_CD_Installation<br />
<br />
Please note you will need wine installed in order to run the install program. Refer to the instructions later in this article to install wine, the article linked above describes installing wine in Gentoo, which is different from Archlinux.<br />
<br />
==Post-Installation Tasks==<br />
<br />
===Updating World of Warcraft===<br />
<br />
''I had WoW already installed and patched on a Windows machine, so I simply copied the WoW folder to my Linux system to save me some time.''<br />
<br />
===No sound===<br />
Edit /path to your World of Warcraft folder/WTF/Config.wtf and add or change:<br />
<br />
SET SoundOutputSystem "1"<br />
SET SoundBufferSize "100"<br />
<br />
====OK, I have sound, but it's all crappy====<br />
I solved this by running<br />
<br />
# winecfg<br />
<br />
In the "Audio" tab, selected OSS as the sound driver, using "Standard" hardware acceleration and driver emulation enabled.<br />
<br />
===Running World of Warcraft===<br />
After patching and installing the wine package (see further down on this page) and fixed the sound, run the following command to play WoW:<br />
<br />
# wine /home/user/.wine/c_drive/Program\ Files/World\ of\ Warcraft/WoW.exe -opengl<br />
<br />
There was a bug that would prevent targetting circles from appearing below targeted mobs/players/NPCs, this bug was fixed by blizzard in patch 1.9. Any wine patches to correct the "Targeting circle bug" are no longer needed, and may cause graphics to display improperly.<br />
<br />
==Installing Wine==<br />
As said above, you need Wine. There are several ways to install Wine in Archlinux, you can install a precompiled version from Shadowhand's repository, or compile wine manually using makepkg. The standard wine package provided by pacman will not work with World of Warcraft due to graphical issues. There is a specially compiled version of wine provided by Shadowhand. If you choose to compile wine, you will need to patch it manually, this is described later.<br />
<br />
<br />
'''Installing from Shadowhand's repository:'''<br />
<br />
In order to install wine from Shadowhands repository, you will need to edit /etc/pacman.conf and add the following line:<br />
<br />
<pre><br />
[shadowhand]<br />
Server = http://arch.os-zen.net/pkg/shadowhand<br />
</pre><br />
<br />
As described [http://bbs.archlinux.org/viewtopic.php?t=18127 here].<br />
<br />
Once the repository in enabled, run these commands as root:<br />
<pre>pacman -Sy<br />
pacman -S wine-cvs<br />
</pre><br />
<br />
This will replace any existing copies of wine.<br />
<br />
<br />
'''Compiling wine from source:'''<br />
<br />
''This is an old section, it still needs to be updated. The recent versions of wine will not work with the patch below. If you wish to compile wine manually, use the files provided [http://aur.archlinux.org/packages.php?do_Details=1&ID=3515&O=0&L=0&C=0&K=wine&SB=&SO=&PP=25&do_MyPackages=0&do_Orphans=0&SeB=nd here].''<br />
<br />
<br />
First, we need the wine package from ArchLinux, which we get by running:<br />
<br />
# pacman -Sy cvsup<br />
# abs<br />
<br />
Then begin the creation of the new custom wine package.<br />
<br />
# cd /var/abs/local<br />
# mkdir wine<br />
# cd wine<br />
# cp ../../extra/x11/wine/PKGBUILD ../../extra/x11/wine/wine.install .<br />
<br />
Now we need the patch,<br />
<br />
0.9.4 Patch can be found at [http://polynomial-c.homelinux.net/pub/gentoo/portage/app-emulation/wine/files/wine-0.9.4-wow_fixes.patch Wine-0.9.4-wow_fixes.patch]<br />
<br />
Before we edit the PKGBUILD, get the md5 sums for the Wine 0.9.4 WoW Patch.<br />
<br />
# md5sum wine-0.9.4-wow_fixes.patch<br />
# 15bbfc8b6e205406c16d99fa39b05cd4 wine-0.9.4-wow_fixes.patch<br />
<br />
What you need to modify in your PKGBUILD (as we copied it from the ArchLinux abs tree) is the source & md5sums variables.<br />
<br />
The following edited PKGBUILD is based on the 0.9.4-1 package.<br />
<br />
# $Id: PKGBUILD,v 1.4 2005/12/23 18:51:45 dale Exp $<br />
# Maintainer: judd <jvinet@zeroflux.org><br />
# Contributor: Matt Smith (Majik) <darkknight@helpdesk.zaz.net><br />
pkgname=wine<br />
pkgver=0.9.4<br />
# ugh, have to use the force switch to work around the version format<br />
# change -- remove the force switch after an upgrade or two<br />
force=y<br />
pkgrel=1<br />
pkgdesc="Emulator of the Windows 3.x and Win32 APIs"<br />
url="http://www.winehq.com"<br />
depends=('x-server' 'libjpeg' 'libungif' 'alsa-lib' 'glut' 'arts' 'openldap' 'libxslt' 'lcms')<br />
makedepends=('alsa-lib')<br />
install=wine.install<br />
source=(http://ibiblio.org/pub/linux/system/emulators/wine/wine-$pkgver.tar.bz2 <br />
wine-0.9.4-wow_fixes.patch)<br />
md5sums=('73205d83a5612a43441a8532683c0434' \ '15bbfc8b6e205406c16d99fa39b05cd4')<br />
<br />
build() {<br />
cd $startdir/src/$pkgname-$pkgver<br />
./configure --prefix=/usr --sysconfdir=/etc --enable-opengl --with-x<br />
make depend<br />
make || return 1<br />
make prefix=$startdir/pkg/usr install<br />
# conflicts with textutils<br />
rm -f $startdir/pkg/usr/bin/expand<br />
mkdir -p $startdir/pkg/etc/wine<br />
mkdir -p $startdir/pkg/etc/profile.d<br />
#cp -r $startdir/src/$pkgname-$pkgver/documentation/samples $startdir/pkg/etc/wine<br />
}<br />
<br />
Now we run:<br />
<br />
# makepkg<br />
<br />
After the makepkg completes, if you have a previous installation of wine, best to remove it prior to installing the new patched version.<br />
<br />
# pacman -R wine<br />
<br />
Then to install the new patched version. For the above package build the final patched version of the file is wine-0.9.4-1.pkg.tar.gz. So to install, we use the following command.<br />
<br />
# pacman -A wine-0.9.4-1.pkg.tar.gz<br />
<br />
After this command completes, you have a 0.9.4-1 Wine patched for World of Warcraft installed!</div>Geeknerhttps://wiki.archlinux.org/index.php?title=World_of_Warcraft&diff=9999World of Warcraft2006-03-23T06:34:06Z<p>Geekner: /* Patching and Build Wine */</p>
<hr />
<div>[[Category:Games]][[Category:Installation]]<br />
<br />
{{stub}}<br />
<br />
World of Warcraft is a Massive Multiplayer Online Role-Playing Game (MMORPG) by Blizzard Entertainment taking place in the fictional world of Azeroth; The world that previous Blizzard titles in the real-time strategy Warcraft game series has presented to the players.<br />
<br />
This article will describe how to get it runing on Arch Linux, even though it's a Windows (Win32) game.<br />
<br />
Patches from the Gentoo forum thread<br />
http://forums.gentoo.org/viewtopic-t-246098.html<br />
<br />
This REQUIRES a bought copy of World of Warcraft (of course you need a copy of the game, duh!).<br />
<br />
==Introduction==<br />
As Blizzard so kindly also shipped World of Warcraft with OpenGL support, we don't need Transgaming's Cedega software (which is a implementation of the Microsoft DirectX libraries).<br />
Basically, we just need a out-of-the-box wine installation and run WoW with opengl<br />
<br />
NOTE: You may experience issues when installing patches if you use the stock wine package. If you have issues, install wine-cvs from [http://bbs.archlinux.org/viewtopic.php?t=18127 Shadowhand's repository], as it has been patched to deal with this specific issue.<br />
<br />
==Installation==<br />
<br />
You can copy a working install of World of Warcraft from a windows partition or follow the instructions at this site:<br />
http://gentoo-wiki.com/HOWTO_Install_and_update_World_Of_Warcraft_with_wine#Normal_CD_Installation<br />
<br />
Please note you will need wine installed in order to run the install program. Refer to the instructions later in this article to install wine, the article linked above describes installing wine in Gentoo, which is different from Archlinux.<br />
<br />
==Post-Installation Tasks==<br />
<br />
===Updating World of Warcraft===<br />
<br />
''I had WoW already installed and patched on a Windows machine, so I simply copied the WoW folder to my Linux system to save me some time.''<br />
<br />
===No sound===<br />
Edit /path to your World of Warcraft folder/WTF/Config.wtf and add or change:<br />
<br />
SET SoundOutputSystem "1"<br />
SET SoundBufferSize "100"<br />
<br />
====OK, I have sound, but it's all crappy====<br />
I solved this by running<br />
<br />
# winecfg<br />
<br />
In the "Audio" tab, selected OSS as the sound driver, using "Standard" hardware acceleration and driver emulation enabled.<br />
<br />
===Running World of Warcraft===<br />
After patching and installing my custom wine package (see further down on this page) and fixed the sound, run the following command to play WoW:<br />
<br />
# wine /home/user/.wine/c_drive/Program\ Files/World\ of\ Warcraft/WoW.exe -opengl<br />
<br />
There was a bug that would prevent targetting circles from appearing below targeted mobs/players/NPCs, this bug was fixed by blizzard in patch 1.9. Any wine patches to correct the "Targeting circle bug" are no longer needed, and may cause graphics to display improperly.<br />
<br />
==Installing Wine==<br />
As said above, you need Wine. There are several ways to install Wine in Archlinux, you can install a precompiled version from Shadowhand's repository, or compile wine manually using makepkg. The standard wine package provided by pacman will not work with World of Warcraft due to graphical issues. There is a specially compiled version of wine provided by Shadowhand. If you choose to compile wine, you will need to patch it manually, this is described later.<br />
<br />
<br />
'''Installing from Shadowhand's repository:'''<br />
<br />
In order to install wine from Shadowhands repository, you will need to edit /etc/pacman.conf and add the following line:<br />
<br />
<pre><br />
[shadowhand]<br />
Server = http://arch.os-zen.net/pkg/shadowhand<br />
</pre><br />
<br />
As described [http://bbs.archlinux.org/viewtopic.php?t=18127 here].<br />
<br />
Once the repository in enabled, run these commands as root:<br />
<pre>pacman -Sy<br />
pacman -S wine-cvs<br />
</pre><br />
<br />
This will replace any existing copies of wine.<br />
<br />
<br />
'''Compiling wine from source:'''<br />
<br />
''This is an old section, it still needs to be updated. The recent versions of wine will not work with the patch below. If you wish to compile wine manually, use the files provided [http://aur.archlinux.org/packages.php?do_Details=1&ID=3515&O=0&L=0&C=0&K=wine&SB=&SO=&PP=25&do_MyPackages=0&do_Orphans=0&SeB=nd here].''<br />
<br />
<br />
First, we need the wine package from ArchLinux, which we get by running:<br />
<br />
# pacman -Sy cvsup<br />
# abs<br />
<br />
Then begin the creation of the new custom wine package.<br />
<br />
# cd /var/abs/local<br />
# mkdir wine<br />
# cd wine<br />
# cp ../../extra/x11/wine/PKGBUILD ../../extra/x11/wine/wine.install .<br />
<br />
Now we need the patch,<br />
<br />
0.9.4 Patch can be found at [http://polynomial-c.homelinux.net/pub/gentoo/portage/app-emulation/wine/files/wine-0.9.4-wow_fixes.patch Wine-0.9.4-wow_fixes.patch]<br />
<br />
Before we edit the PKGBUILD, get the md5 sums for the Wine 0.9.4 WoW Patch.<br />
<br />
# md5sum wine-0.9.4-wow_fixes.patch<br />
# 15bbfc8b6e205406c16d99fa39b05cd4 wine-0.9.4-wow_fixes.patch<br />
<br />
What you need to modify in your PKGBUILD (as we copied it from the ArchLinux abs tree) is the source & md5sums variables.<br />
<br />
The following edited PKGBUILD is based on the 0.9.4-1 package.<br />
<br />
# $Id: PKGBUILD,v 1.4 2005/12/23 18:51:45 dale Exp $<br />
# Maintainer: judd <jvinet@zeroflux.org><br />
# Contributor: Matt Smith (Majik) <darkknight@helpdesk.zaz.net><br />
pkgname=wine<br />
pkgver=0.9.4<br />
# ugh, have to use the force switch to work around the version format<br />
# change -- remove the force switch after an upgrade or two<br />
force=y<br />
pkgrel=1<br />
pkgdesc="Emulator of the Windows 3.x and Win32 APIs"<br />
url="http://www.winehq.com"<br />
depends=('x-server' 'libjpeg' 'libungif' 'alsa-lib' 'glut' 'arts' 'openldap' 'libxslt' 'lcms')<br />
makedepends=('alsa-lib')<br />
install=wine.install<br />
source=(http://ibiblio.org/pub/linux/system/emulators/wine/wine-$pkgver.tar.bz2 <br />
wine-0.9.4-wow_fixes.patch)<br />
md5sums=('73205d83a5612a43441a8532683c0434' \ '15bbfc8b6e205406c16d99fa39b05cd4')<br />
<br />
build() {<br />
cd $startdir/src/$pkgname-$pkgver<br />
./configure --prefix=/usr --sysconfdir=/etc --enable-opengl --with-x<br />
make depend<br />
make || return 1<br />
make prefix=$startdir/pkg/usr install<br />
# conflicts with textutils<br />
rm -f $startdir/pkg/usr/bin/expand<br />
mkdir -p $startdir/pkg/etc/wine<br />
mkdir -p $startdir/pkg/etc/profile.d<br />
#cp -r $startdir/src/$pkgname-$pkgver/documentation/samples $startdir/pkg/etc/wine<br />
}<br />
<br />
Now we run:<br />
<br />
# makepkg<br />
<br />
After the makepkg completes, if you have a previous installation of wine, best to remove it prior to installing the new patched version.<br />
<br />
# pacman -R wine<br />
<br />
Then to install the new patched version. For the above package build the final patched version of the file is wine-0.9.4-1.pkg.tar.gz. So to install, we use the following command.<br />
<br />
# pacman -A wine-0.9.4-1.pkg.tar.gz<br />
<br />
After this command completes, you have a 0.9.4-1 Wine patched for World of Warcraft installed!</div>Geeknerhttps://wiki.archlinux.org/index.php?title=World_of_Warcraft&diff=9998World of Warcraft2006-03-23T06:06:13Z<p>Geekner: /* Installation */</p>
<hr />
<div>[[Category:Games]][[Category:Installation]]<br />
<br />
{{stub}}<br />
<br />
World of Warcraft is a Massive Multiplayer Online Role-Playing Game (MMORPG) by Blizzard Entertainment taking place in the fictional world of Azeroth; The world that previous Blizzard titles in the real-time strategy Warcraft game series has presented to the players.<br />
<br />
This article will describe how to get it runing on Arch Linux, even though it's a Windows (Win32) game.<br />
<br />
Patches from the Gentoo forum thread<br />
http://forums.gentoo.org/viewtopic-t-246098.html<br />
<br />
This REQUIRES a bought copy of World of Warcraft (of course you need a copy of the game, duh!).<br />
<br />
==Introduction==<br />
As Blizzard so kindly also shipped World of Warcraft with OpenGL support, we don't need Transgaming's Cedega software (which is a implementation of the Microsoft DirectX libraries).<br />
Basically, we just need a out-of-the-box wine installation and run WoW with opengl<br />
<br />
NOTE: You may experience issues when installing patches if you use the stock wine package. If you have issues, install wine-cvs from [http://bbs.archlinux.org/viewtopic.php?t=18127 Shadowhand's repository], as it has been patched to deal with this specific issue.<br />
<br />
==Installation==<br />
<br />
You can copy a working install of World of Warcraft from a windows partition or follow the instructions at this site:<br />
http://gentoo-wiki.com/HOWTO_Install_and_update_World_Of_Warcraft_with_wine#Normal_CD_Installation<br />
<br />
Please note you will need wine installed in order to run the install program. Refer to the instructions later in this article to install wine, the article linked above describes installing wine in Gentoo, which is different from Archlinux.<br />
<br />
==Post-Installation Tasks==<br />
<br />
===Updating World of Warcraft===<br />
<br />
''I had WoW already installed and patched on a Windows machine, so I simply copied the WoW folder to my Linux system to save me some time.''<br />
<br />
===No sound===<br />
Edit /path to your World of Warcraft folder/WTF/Config.wtf and add or change:<br />
<br />
SET SoundOutputSystem "1"<br />
SET SoundBufferSize "100"<br />
<br />
====OK, I have sound, but it's all crappy====<br />
I solved this by running<br />
<br />
# winecfg<br />
<br />
In the "Audio" tab, selected OSS as the sound driver, using "Standard" hardware acceleration and driver emulation enabled.<br />
<br />
===Running World of Warcraft===<br />
After patching and installing my custom wine package (see further down on this page) and fixed the sound, run the following command to play WoW:<br />
<br />
# wine /home/user/.wine/c_drive/Program\ Files/World\ of\ Warcraft/WoW.exe -opengl<br />
<br />
There was a bug that would prevent targetting circles from appearing below targeted mobs/players/NPCs, this bug was fixed by blizzard in patch 1.9. Any wine patches to correct the "Targeting circle bug" are no longer needed, and may cause graphics to display improperly.<br />
<br />
==Patching and Build Wine==<br />
Like said above, you need wine. Wich isn't that difficult to install, but currently (Thu 08 Dec 2005) there's some bugs in World of Warcraft (1.8.4) that requires us to patch and re-compile Wine. I was able to start WoW with the package in ArchLinux repo, but I was unable to select NPCs/Objects/players etc in-game.<br />
<br />
First, we need the wine package from ArchLinux, which we get by running:<br />
<br />
# pacman -Sy cvsup<br />
# abs<br />
<br />
Then begin the creation of the new custom wine package.<br />
<br />
# cd /var/abs/local<br />
# mkdir wine<br />
# cd wine<br />
# cp ../../extra/x11/wine/PKGBUILD ../../extra/x11/wine/wine.install .<br />
<br />
Now we need the patch,<br />
<br />
0.9.4 Patch can be found at [http://polynomial-c.homelinux.net/pub/gentoo/portage/app-emulation/wine/files/wine-0.9.4-wow_fixes.patch Wine-0.9.4-wow_fixes.patch]<br />
<br />
Before we edit the PKGBUILD, get the md5 sums for the Wine 0.9.4 WoW Patch.<br />
<br />
# md5sum wine-0.9.4-wow_fixes.patch<br />
# 15bbfc8b6e205406c16d99fa39b05cd4 wine-0.9.4-wow_fixes.patch<br />
<br />
What you need to modify in your PKGBUILD (as we copied it from the ArchLinux abs tree) is the source & md5sums variables.<br />
<br />
The following edited PKGBUILD is based on the 0.9.4-1 package.<br />
<br />
# $Id: PKGBUILD,v 1.4 2005/12/23 18:51:45 dale Exp $<br />
# Maintainer: judd <jvinet@zeroflux.org><br />
# Contributor: Matt Smith (Majik) <darkknight@helpdesk.zaz.net><br />
pkgname=wine<br />
pkgver=0.9.4<br />
# ugh, have to use the force switch to work around the version format<br />
# change -- remove the force switch after an upgrade or two<br />
force=y<br />
pkgrel=1<br />
pkgdesc="Emulator of the Windows 3.x and Win32 APIs"<br />
url="http://www.winehq.com"<br />
depends=('x-server' 'libjpeg' 'libungif' 'alsa-lib' 'glut' 'arts' 'openldap' 'libxslt' 'lcms')<br />
makedepends=('alsa-lib')<br />
install=wine.install<br />
source=(http://ibiblio.org/pub/linux/system/emulators/wine/wine-$pkgver.tar.bz2 <br />
wine-0.9.4-wow_fixes.patch)<br />
md5sums=('73205d83a5612a43441a8532683c0434' \ '15bbfc8b6e205406c16d99fa39b05cd4')<br />
<br />
build() {<br />
cd $startdir/src/$pkgname-$pkgver<br />
./configure --prefix=/usr --sysconfdir=/etc --enable-opengl --with-x<br />
make depend<br />
make || return 1<br />
make prefix=$startdir/pkg/usr install<br />
# conflicts with textutils<br />
rm -f $startdir/pkg/usr/bin/expand<br />
mkdir -p $startdir/pkg/etc/wine<br />
mkdir -p $startdir/pkg/etc/profile.d<br />
#cp -r $startdir/src/$pkgname-$pkgver/documentation/samples $startdir/pkg/etc/wine<br />
}<br />
<br />
Now we run:<br />
<br />
# makepkg<br />
<br />
After the makepkg completes, if you have a previous installation of wine, best to remove it prior to installing the new patched version.<br />
<br />
# pacman -R wine<br />
<br />
Then to install the new patched version. For the above package build the final patched version of the file is wine-0.9.4-1.pkg.tar.gz. So to install, we use the following command.<br />
<br />
# pacman -A wine-0.9.4-1.pkg.tar.gz<br />
<br />
After this command completes, you have a 0.9.4-1 Wine patched for World of Warcraft installed!</div>Geeknerhttps://wiki.archlinux.org/index.php?title=World_of_Warcraft&diff=9996World of Warcraft2006-03-23T05:55:04Z<p>Geekner: /* Running World of Warcraft */</p>
<hr />
<div>[[Category:Games]][[Category:Installation]]<br />
<br />
{{stub}}<br />
<br />
World of Warcraft is a Massive Multiplayer Online Role-Playing Game (MMORPG) by Blizzard Entertainment taking place in the fictional world of Azeroth; The world that previous Blizzard titles in the real-time strategy Warcraft game series has presented to the players.<br />
<br />
This article will describe how to get it runing on Arch Linux, even though it's a Windows (Win32) game.<br />
<br />
Patches from the Gentoo forum thread<br />
http://forums.gentoo.org/viewtopic-t-246098.html<br />
<br />
This REQUIRES a bought copy of World of Warcraft (of course you need a copy of the game, duh!).<br />
<br />
==Introduction==<br />
As Blizzard so kindly also shipped World of Warcraft with OpenGL support, we don't need Transgaming's Cedega software (which is a implementation of the Microsoft DirectX libraries).<br />
Basically, we just need a out-of-the-box wine installation and run WoW with opengl<br />
<br />
NOTE: You may experience issues when installing patches if you use the stock wine package. If you have issues, install wine-cvs from [http://bbs.archlinux.org/viewtopic.php?t=18127 Shadowhand's repository], as it has been patched to deal with this specific issue.<br />
<br />
==Installation==<br />
<br />
''I had WoW already installed and patched on a Windows machine, so I simply copied the WoW folder to my Linux system to save me some time. If you have installed WoW on ArchLinux from the retail CD/DVD copy, please add it to this article.''<br />
<br />
==Post-Installation Tasks==<br />
<br />
===Updating World of Warcraft===<br />
<br />
''I had WoW already installed and patched on a Windows machine, so I simply copied the WoW folder to my Linux system to save me some time.''<br />
<br />
===No sound===<br />
Edit /path to your World of Warcraft folder/WTF/Config.wtf and add or change:<br />
<br />
SET SoundOutputSystem "1"<br />
SET SoundBufferSize "100"<br />
<br />
====OK, I have sound, but it's all crappy====<br />
I solved this by running<br />
<br />
# winecfg<br />
<br />
In the "Audio" tab, selected OSS as the sound driver, using "Standard" hardware acceleration and driver emulation enabled.<br />
<br />
===Running World of Warcraft===<br />
After patching and installing my custom wine package (see further down on this page) and fixed the sound, run the following command to play WoW:<br />
<br />
# wine /home/user/.wine/c_drive/Program\ Files/World\ of\ Warcraft/WoW.exe -opengl<br />
<br />
There was a bug that would prevent targetting circles from appearing below targeted mobs/players/NPCs, this bug was fixed by blizzard in patch 1.9. Any wine patches to correct the "Targeting circle bug" are no longer needed, and may cause graphics to display improperly.<br />
<br />
==Patching and Build Wine==<br />
Like said above, you need wine. Wich isn't that difficult to install, but currently (Thu 08 Dec 2005) there's some bugs in World of Warcraft (1.8.4) that requires us to patch and re-compile Wine. I was able to start WoW with the package in ArchLinux repo, but I was unable to select NPCs/Objects/players etc in-game.<br />
<br />
First, we need the wine package from ArchLinux, which we get by running:<br />
<br />
# pacman -Sy cvsup<br />
# abs<br />
<br />
Then begin the creation of the new custom wine package.<br />
<br />
# cd /var/abs/local<br />
# mkdir wine<br />
# cd wine<br />
# cp ../../extra/x11/wine/PKGBUILD ../../extra/x11/wine/wine.install .<br />
<br />
Now we need the patch,<br />
<br />
0.9.4 Patch can be found at [http://polynomial-c.homelinux.net/pub/gentoo/portage/app-emulation/wine/files/wine-0.9.4-wow_fixes.patch Wine-0.9.4-wow_fixes.patch]<br />
<br />
Before we edit the PKGBUILD, get the md5 sums for the Wine 0.9.4 WoW Patch.<br />
<br />
# md5sum wine-0.9.4-wow_fixes.patch<br />
# 15bbfc8b6e205406c16d99fa39b05cd4 wine-0.9.4-wow_fixes.patch<br />
<br />
What you need to modify in your PKGBUILD (as we copied it from the ArchLinux abs tree) is the source & md5sums variables.<br />
<br />
The following edited PKGBUILD is based on the 0.9.4-1 package.<br />
<br />
# $Id: PKGBUILD,v 1.4 2005/12/23 18:51:45 dale Exp $<br />
# Maintainer: judd <jvinet@zeroflux.org><br />
# Contributor: Matt Smith (Majik) <darkknight@helpdesk.zaz.net><br />
pkgname=wine<br />
pkgver=0.9.4<br />
# ugh, have to use the force switch to work around the version format<br />
# change -- remove the force switch after an upgrade or two<br />
force=y<br />
pkgrel=1<br />
pkgdesc="Emulator of the Windows 3.x and Win32 APIs"<br />
url="http://www.winehq.com"<br />
depends=('x-server' 'libjpeg' 'libungif' 'alsa-lib' 'glut' 'arts' 'openldap' 'libxslt' 'lcms')<br />
makedepends=('alsa-lib')<br />
install=wine.install<br />
source=(http://ibiblio.org/pub/linux/system/emulators/wine/wine-$pkgver.tar.bz2 <br />
wine-0.9.4-wow_fixes.patch)<br />
md5sums=('73205d83a5612a43441a8532683c0434' \ '15bbfc8b6e205406c16d99fa39b05cd4')<br />
<br />
build() {<br />
cd $startdir/src/$pkgname-$pkgver<br />
./configure --prefix=/usr --sysconfdir=/etc --enable-opengl --with-x<br />
make depend<br />
make || return 1<br />
make prefix=$startdir/pkg/usr install<br />
# conflicts with textutils<br />
rm -f $startdir/pkg/usr/bin/expand<br />
mkdir -p $startdir/pkg/etc/wine<br />
mkdir -p $startdir/pkg/etc/profile.d<br />
#cp -r $startdir/src/$pkgname-$pkgver/documentation/samples $startdir/pkg/etc/wine<br />
}<br />
<br />
Now we run:<br />
<br />
# makepkg<br />
<br />
After the makepkg completes, if you have a previous installation of wine, best to remove it prior to installing the new patched version.<br />
<br />
# pacman -R wine<br />
<br />
Then to install the new patched version. For the above package build the final patched version of the file is wine-0.9.4-1.pkg.tar.gz. So to install, we use the following command.<br />
<br />
# pacman -A wine-0.9.4-1.pkg.tar.gz<br />
<br />
After this command completes, you have a 0.9.4-1 Wine patched for World of Warcraft installed!</div>Geekner