个人工具

“UbuntuHelp:Installation/QuickNetboot”的版本间的差异

来自Ubuntu中文

跳转至: 导航, 搜索
第2行: 第2行:
 
{{Languages|UbuntuHelp:Installation/QuickNetboot}}
 
{{Languages|UbuntuHelp:Installation/QuickNetboot}}
 
There is more than one way to install Ubuntu via netboot, search for ''netboot'' in the Ubuntu wiki.
 
There is more than one way to install Ubuntu via netboot, search for ''netboot'' in the Ubuntu wiki.
 
 
This guide aims to give simple, complete and verifiable instructions to get netboot working in a matter of minutes. They are for installing Ubuntu 7.10, but with minor modifications in step 2 they should work for other Ubuntu releases as well.   
 
This guide aims to give simple, complete and verifiable instructions to get netboot working in a matter of minutes. They are for installing Ubuntu 7.10, but with minor modifications in step 2 they should work for other Ubuntu releases as well.   
 
 
== Before you begin ==
 
== Before you begin ==
 
 
There should be no other DHCP servers running in the subnet. You ''might'' succeed with two servers as well (as I did), but be warned.
 
There should be no other DHCP servers running in the subnet. You ''might'' succeed with two servers as well (as I did), but be warned.
 
 
== DHCP/TFTP server installation ==
 
== DHCP/TFTP server installation ==
 
 
=== Prepare ===
 
=== Prepare ===
* install required software
+
# install required software
 
<pre><nowiki>
 
<pre><nowiki>
 
sudo apt-get install dnsmasq atftp atftpd
 
sudo apt-get install dnsmasq atftp atftpd
 
</nowiki></pre>
 
</nowiki></pre>
 
+
1.#2 download and unpack the netboot tarball
*#2 download and unpack the netboot tarball
+
 
<pre><nowiki>
 
<pre><nowiki>
 
sudo mkdir /tftpboot
 
sudo mkdir /tftpboot
第25行: 第19行:
 
sudo chown -R nobody: .
 
sudo chown -R nobody: .
 
</nowiki></pre>
 
</nowiki></pre>
 
+
1.#3 tell ''dnsmasq'' to assign addresses starting from <BEGIN_IP_RANGE> until <END_IP_RANGE>, put the server's ip address in <SERVER_IP>, the default gateway must be put in <DEFAULT_GW>, and the dns server in <DNS_SERVER>. Append this to /etc/dnsmasq.conf with your favorite editor:
*#3 tell ''dnsmasq'' to assign addresses starting from <BEGIN_IP_RANGE> until <END_IP_RANGE>, put the server's ip address in <SERVER_IP>, the default gateway must be put in <DEFAULT_GW>, and the dns server in <DNS_SERVER>. Append this to /etc/dnsmasq.conf with your favorite editor:
+
 
<pre><nowiki>
 
<pre><nowiki>
 
dhcp-range=<BEGIN_IP_RANGE>,<END_IP_RANGE>,12h
 
dhcp-range=<BEGIN_IP_RANGE>,<END_IP_RANGE>,12h
第33行: 第26行:
 
dhcp-option=6,<DNS_SERVER>
 
dhcp-option=6,<DNS_SERVER>
 
</nowiki></pre>
 
</nowiki></pre>
 
 
An example append is shown here:
 
An example append is shown here:
 
 
<pre><nowiki>
 
<pre><nowiki>
 
dhcp-range=192.168.0.20,192.168.0.30,12h
 
dhcp-range=192.168.0.20,192.168.0.30,12h
第42行: 第33行:
 
dhcp-option=6,192.168.0.1
 
dhcp-option=6,192.168.0.1
 
</nowiki></pre>
 
</nowiki></pre>
 
 
Then restart dnsmasq with the following command:
 
Then restart dnsmasq with the following command:
 
 
<pre><nowiki>
 
<pre><nowiki>
 
sudo invoke-rc.d dnsmasq restart
 
sudo invoke-rc.d dnsmasq restart
 
</nowiki></pre>
 
</nowiki></pre>
 
+
1.#4 tell ''atftpd'' to run as a server directly, not through ''inetd''
*#4 tell ''atftpd'' to run as a server directly, not through ''inetd''
+
 
<pre><nowiki>
 
<pre><nowiki>
 
sudo sed -e '/USE_INETD=/s/true/false/' -i /etc/default/atftpd
 
sudo sed -e '/USE_INETD=/s/true/false/' -i /etc/default/atftpd
 
 
sudo invoke-rc.d inetd stop
 
sudo invoke-rc.d inetd stop
 
sudo invoke-rc.d xinetd stop
 
sudo invoke-rc.d xinetd stop
 
sudo invoke-rc.d atftpd restart
 
sudo invoke-rc.d atftpd restart
 
</nowiki></pre>  
 
</nowiki></pre>  
 
+
1.#5 check that your firewall is not blocking DHCP/TFTP traffic (UDP) or, alternatively, just turn off the firewall altogether
*#5 check that your firewall is not blocking DHCP/TFTP traffic (UDP) or, alternatively, just turn off the firewall altogether
+
 
<pre><nowiki>
 
<pre><nowiki>
 
sudo iptables -F
 
sudo iptables -F
第70行: 第56行:
 
sudo iptables -t nat -X 2>/dev/null
 
sudo iptables -t nat -X 2>/dev/null
 
</nowiki></pre>
 
</nowiki></pre>
 
+
1.#6 everything is ready to run now. Time to verify if everything really works.
*#6 everything is ready to run now. Time to verify if everything really works.
+
 
+
 
=== Verify ===
 
=== Verify ===
 
+
# check ''iptables'', if you turned it off, there should be no rules and the policy should be ''ACCEPT''  
* check ''iptables'', if you turned it off, there should be no rules and the policy should be ''ACCEPT''  
+
 
<pre><nowiki>
 
<pre><nowiki>
 
sudo iptables -L
 
sudo iptables -L
第81行: 第64行:
 
sudo iptables -t mangle -L
 
sudo iptables -t mangle -L
 
</nowiki></pre>  
 
</nowiki></pre>  
 
+
1.#2 check if ''dnsmasq'' is listening on the ''bootp'' port 67
*#2 check if ''dnsmasq'' is listening on the ''bootp'' port 67
+
 
<pre><nowiki>
 
<pre><nowiki>
 
sudo netstat -nulp | grep '67.*dnsmasq' # should display udp  0  0 0.0.0.0:67  0.0.0.0:*  <some num>/dnsmasq
 
sudo netstat -nulp | grep '67.*dnsmasq' # should display udp  0  0 0.0.0.0:67  0.0.0.0:*  <some num>/dnsmasq
 
</nowiki></pre>
 
</nowiki></pre>
 
+
1.#3 check if ''atftpd'' is listening on the ''tftp'' port 69
*#3 check if ''atftpd'' is listening on the ''tftp'' port 69
+
 
<pre><nowiki>
 
<pre><nowiki>
 
sudo netstat -nulp | grep atftpd # should display udp  0  0 0.0.0.0:69  0.0.0.0:*  <some num>/atftpd
 
sudo netstat -nulp | grep atftpd # should display udp  0  0 0.0.0.0:69  0.0.0.0:*  <some num>/atftpd
 
</nowiki></pre>
 
</nowiki></pre>
 
+
1.#4 test if you can get the PXE boot kernel via tftp, replace SERVER_IP with your own ip address.
*#4 test if you can get the PXE boot kernel via tftp, replace SERVER_IP with your own ip address.
+
 
<pre><nowiki>
 
<pre><nowiki>
 
cd /tmp
 
cd /tmp
 
echo 'get pxelinux.0' | atftp SERVER_IP
 
echo 'get pxelinux.0' | atftp SERVER_IP
 
 
ls -l pxelinux.0 # should display a ~14kB file
 
ls -l pxelinux.0 # should display a ~14kB file
 
</nowiki></pre>
 
</nowiki></pre>
 
 
=== Boot the client ===
 
=== Boot the client ===
 
 
Enable PXE boot in BIOS or use Ethertool or whatever makes your client boot off the net. See e.g. http://syslinux.zytor.com/pxe.php .
 
Enable PXE boot in BIOS or use Ethertool or whatever makes your client boot off the net. See e.g. http://syslinux.zytor.com/pxe.php .
 
 
=== Problems? ===
 
=== Problems? ===
 
+
# check syslog (''/var/log/syslog'')
* check syslog (''/var/log/syslog'')
+
# use ''ethereal'' (wireshark) to inspect network traffic
* use ''ethereal'' (wireshark) to inspect network traffic
+
  
 
[[category:UbuntuHelp]]
 
[[category:UbuntuHelp]]

2007年11月30日 (五) 17:59的版本

There is more than one way to install Ubuntu via netboot, search for netboot in the Ubuntu wiki. This guide aims to give simple, complete and verifiable instructions to get netboot working in a matter of minutes. They are for installing Ubuntu 7.10, but with minor modifications in step 2 they should work for other Ubuntu releases as well.

Before you begin

There should be no other DHCP servers running in the subnet. You might succeed with two servers as well (as I did), but be warned.

DHCP/TFTP server installation

Prepare

  1. install required software
sudo apt-get install dnsmasq atftp atftpd

1.#2 download and unpack the netboot tarball

sudo mkdir /tftpboot
cd /tftpboot
sudo wget http://archive.ubuntu.com/ubuntu/dists/gutsy/main/installer-i386/current/images/netboot/netboot.tar.gz
sudo tar zxf netboot.tar.gz
sudo chown -R nobody: .

1.#3 tell dnsmasq to assign addresses starting from <BEGIN_IP_RANGE> until <END_IP_RANGE>, put the server's ip address in <SERVER_IP>, the default gateway must be put in <DEFAULT_GW>, and the dns server in <DNS_SERVER>. Append this to /etc/dnsmasq.conf with your favorite editor:

dhcp-range=<BEGIN_IP_RANGE>,<END_IP_RANGE>,12h
dhcp-boot=pxelinux.0,<SERVER_IP>
dhcp-option=3,<DEFAULT_GW>
dhcp-option=6,<DNS_SERVER>

An example append is shown here:

dhcp-range=192.168.0.20,192.168.0.30,12h
dhcp-boot=pxelinux.0,192.168.0.10
dhcp-option=3,192.168.0.1
dhcp-option=6,192.168.0.1

Then restart dnsmasq with the following command:

sudo invoke-rc.d dnsmasq restart

1.#4 tell atftpd to run as a server directly, not through inetd

sudo sed -e '/USE_INETD=/s/true/false/' -i /etc/default/atftpd
sudo invoke-rc.d inetd stop
sudo invoke-rc.d xinetd stop
sudo invoke-rc.d atftpd restart

1.#5 check that your firewall is not blocking DHCP/TFTP traffic (UDP) or, alternatively, just turn off the firewall altogether

sudo iptables -F
sudo iptables -X
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -t mangle -F 2>/dev/null
sudo iptables -t mangle -X 2>/dev/null
sudo iptables -t nat -F 2>/dev/null
sudo iptables -t nat -X 2>/dev/null

1.#6 everything is ready to run now. Time to verify if everything really works.

Verify

  1. check iptables, if you turned it off, there should be no rules and the policy should be ACCEPT
sudo iptables -L
sudo iptables -t nat -L
sudo iptables -t mangle -L

1.#2 check if dnsmasq is listening on the bootp port 67

sudo netstat -nulp | grep '67.*dnsmasq' # should display udp  0  0 0.0.0.0:67  0.0.0.0:*  <some num>/dnsmasq

1.#3 check if atftpd is listening on the tftp port 69

sudo netstat -nulp | grep atftpd # should display udp  0  0 0.0.0.0:69  0.0.0.0:*  <some num>/atftpd

1.#4 test if you can get the PXE boot kernel via tftp, replace SERVER_IP with your own ip address.

cd /tmp
echo 'get pxelinux.0' | atftp SERVER_IP
ls -l pxelinux.0 # should display a ~14kB file

Boot the client

Enable PXE boot in BIOS or use Ethertool or whatever makes your client boot off the net. See e.g. http://syslinux.zytor.com/pxe.php .

Problems?

  1. check syslog (/var/log/syslog)
  2. use ethereal (wireshark) to inspect network traffic