Sophie

Sophie

distrib > Mandriva > 8.1 > i586 > by-pkgid > 1d876fa8c1caf5809b8232d098efff65 > files > 48

howto-text-pl-8.1-1mdk.noarch.rpm

  Jak zmusiæ Linux-a, ¿eby korzysta³ z informacji DHCP od Win­
  dows 95
  Autor:Dan Halbert, halbert@world.std.com
  lub
  halbert@bbn.com
  6 Grudnia 1996
  WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@jjttzz..oorrgg..ppll
  v1.02, 26 Lipca 1997


  Dokument ten zosta³ napisany w standardzie ISO-8859-2.  Wersja orygi­
  nalna znajduje siê pod adresem ftp.icm.edu.pl
  <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/docs/HOWTO/mini/>.
  ______________________________________________________________________

  Spis tre¶ci


  1. Wprowadzenie.

  2. Metoda.

     2.1 Od t³umacza.


  ______________________________________________________________________

  11..  WWpprroowwaaddzzeenniiee..


  Mój Linux na PC-cie musi otrzymaæ IP oraz inne informacje o sieci z
  serwera DHCP. Ale nie mog³em znale¼æ takiego klienta, który dzia³a³by
  z moim serwerem.

  Mój PC-et normalnie startuje z Windows 95, a Linux jest rzadziej
  u¿ywany. Klient DHCP pod Windows 95 dzia³a u mnie dobrze. Mog³em
  skopiowaæ mój adres IP, "nameserver" itp. rêcznie do Linux-a, ale
  chcia³em zautomatyzowaæ ten proces.

  Windows 95 dostarcza program (\Windows\Winipcfg.exe), który wy¶wietla
  informacje DHCP w ³adny graficzny sposób. Po przejrzeniu pliku
  _w_i_n_i_p_c_f_g_._e_x_e odkry³em, ¿e ma on nieudokumentowan± opcjê, która pozwala
  zapisaæ informacje do pliku (domy¶lnie jest to _W_i_n_i_p_c_f_g_._o_u_t).
  Pozwoli³o mi to, na zrobienie takiego trick-u:


  1. Start Win95. Klient DHCP pobierze potrzebne informacje od serwera
     DHCP.

  2. Uruchomienie _W_i_n_i_p_c_f_g_._e_x_e i zapis wyniku do pliku.

  3. Start Linux-a.

  4. Zamontowaæ system plików Win95.

  5. Przeczytaæ plik utworzony przez _W_i_n_i_p_c_f_g.

  6. Dostarczyæ potrzebne informacje Linux-owi.

  Wersjê oryginaln± tego dokumentu mo¿esz znale¼æ na SUNSite Polska
  <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/docs/HOWTO/mini>. Na temat
  wersji t³umaczenia patrz sekcja ``Od t³umacza''.




  22..  MMeettooddaa..


  Teraz szczegó³y na temat tego jak to robiê:


  1. W moim folderze startowym Win95 uruchamiam to polecenie. Kiedy
     Win95 startuje, Winipcfg zapisuje otrzymane od serwera DHCP
     informacje:


             winipcfg -all -batch c:\winipcfg.out



  Opcje musz± byæ podane w podanym porz±dku. Nie podanie _-_a_l_l spowoduje
  brak niektórych informacji. Nie podanie ¶cie¿ki do pliku _w_i_n_i_p_c_f_g_._o_u_t
  spowoduje zapisanie tego pliku w katalogu bie¿±cym. Poni¿ej jest
  za³±czony przyk³adowy plik _w_i_n_i_p_c_f_g_._o_u_t.

  2. Natychmiast (albo jaki¶ czas pó¼niej) po starcie Win95, startujê
     Linux-a. U¿ywam _l_o_a_d_l_i_n_-_a uruchamianego z batch-a DOS-owego. Mo¿esz
     u¿yæ tego albo czego¶ innego.
     (Nie mo¿liwe jest po³±czenie loadlin-a i winipcfg w jednym batch-u
     poniewa¿ najprzypuszczalniej plik _w_i_n_i_p_c_f_g_._o_u_t nie zostanie
     przepisany z cache'u na dysk przed startem loadlin-a. Nie znalaz³em
     sposobu na zapisanie zawarto¶ci cache'u na dysk z wiersza poleceñ.)

  3. Podczas startu Linux-a wykonywany jest program napisany w Perlu
     (_w_i_n_i_p_c_f_g_._p_l) do³±czony na koñcu tego dokumentu. Program ten musi
     byæ wykonany ppoo zamontowaniu systemu plików Win95, a pprrzzeedd
     uruchomieniem skryptów sieciowych. Ja u¿ywam dystrybucji _D_e_b_i_a_n:
     poni¿ej za³±czony jest wyj±tek z pliku /etc/init.d/boot z
     zanotowanymi moimi dodatkami. Twoja dystrybucja mo¿e mieæ inne
     skrypty startowe, wiêc mo¿e bêdziesz musia³ to trochê zmieniæ.
     (aut. Patrz kilka linijek ni¿ej na temat innych
     dystrybucji).Program _w_i_n_i_p_c_f_g_._p_l zapisuje nowe wersje plików:
     /etc/hostname, /etc/resolv.conf oraz /etc/init.d/network. Skrypt
     _n_e_t_w_o_r_k wykonuje polecenie _i_f_c_o_n_f_i_g z podanymi parametrami.

  To tyle. Zapamiêtaj oczywi¶cie, ¿e nie powiniene¶ trzymaæ Linux-a
  uruchomionego d³u¿ej ni¿ pozwala na to DHCP. Ja startujê tylko na
  kilka godzin, wiêc nie ma u mnie tego problemu.

  Bêdziesz musia³ dopasowaæ program _w_i_n_i_p_c_f_g_._p_l je¶li masz wiêcej ni¿
  jeden adapter sieciowy albo pseudo-adapter. Na przyk³ad,
  oprogramowanie AOL ustawia udawany (fake) adapter sieciowy, i musisz
  zignorowaæ jego informacje.

  -------------------------------------------------------------------------------
  OOdd aauuttoorraa: Oto lokalizacje plików odpowiedzialnych za konfiguracjê
  sieci oraz plików inicjacyjnych:


  ·  RedHat: pliki odpowiadaj±ce za konfiguracjê sieci znajduj± siê w
     /etc/sysconfig/network-scripts natomiast montowanie odbywa siê w
     pliku /etc/rc.d/rc.sysinit

  ·  Slackware: plik sieciowy to /etc/rc.d/rc.inet1, a plik montuj±cy
     systemy, to /etc/rc.d/rc.S.

     -------------------------------------------------------------------------------

  Oto za³±czniki (jeden na stronê):


  ______________________________________________________________________

  ==============================================================================
  Przyk³adowy plik winipcfg.out zrobiony przez Win95 "winipcfg -all -batch"
  (adresy zosta³y zmienione ze wzglêdów bezpieczeñstwa)
  ==============================================================================
  Windows 95 IP Configuration

          Host Name . . . . . . . . . : foo.bar.com
          DNS Servers . . . . . . . . : 11.222.33.8
                                        11.222.33.9
          Node Type . . . . . . . . . : Broadcast
          NetBIOS Scope ID. . . . . . :
          IP Routing Enabled. . . . . : No
          WINS Proxy Enabled. . . . . : No
          NetBIOS Resolution Uses DNS : Yes

  Ethernet adapter :

          Description . . . . . . . . : ELNK3 Ethernet Adapter
          Physical Address. . . . . . : 00-AA-BB-99-88-77
          DHCP Enabled. . . . . . . . : Yes
          IP Address. . . . . . . . . : 11.222.33.222
          Subnet Mask . . . . . . . . : 255.255.255.0
          Default Gateway . . . . . . : 11.222.33.1
          DHCP Server . . . . . . . . : 11.222.33.10
          Primary WINS Server . . . . :
          Secondary WINS Server . . . :
          Lease Obtained. . . . . . . : Wed Oct 16 96 10:17:26 PM
          Lease Expires . . . . . . . : Wed Oct 30 96 10:17:26 PM
  ==============================================================================

  ==============================================================================
  Wyj±tek z pliku /etc/init.d/boot, z moimi dodatkami.
  ==============================================================================
  ...
  # Mount local file systems in /etc/fstab.
  echo "Mounting local file systems..."
  mount -avt nonfs

  # Execute swapon command again, in case we want to swap to
  # a file on a now mounted filesystem.
  swapon -a 2>/dev/null

  #### Dodatek o DHCP info ####################################################
  # Uaktualnij plik z informacjami sieciowymi wed³ug informacji z
  # klienta DHCP pod Win95
  if [ -f /c/winipcfg.out -a -x /usr/local/sbin/winipcfg.pl ]
  then
    echo "Setting network information from Windows 95 DHCP info."
    # To powoduje zapisanie nowszych wersji hostname, resolv.conf oraz
    # init.d/network.
    # Katalog /c to tam, gdzie montujê system plików Win95
    /usr/local/sbin/winipcfg.pl /c/winipcfg.out
    if [ $? != 0 ]
    then
      echo "Error getting network information. Using existing network info."
    fi
  else
    echo "** Windows 95 DHCP info not available. Using existing network info."
  fi
  #### koniec dodatku o DHCP info #############################################

  # Setup the network interfaces. Note that /var/run and /var/lock
  # are cleaned up after this, so don't put anything in the "network"
  # script that leave a pidfile or a lockfile.
  if [ -x /etc/init.d/network ]
  then
    /etc/init.d/network
  fi

  # Set hostname.
  hostname --file /etc/hostname

  # Now that TCP/IP is configured, mount the NFS file systems in /etc/fstab.
  echo "Mounting remote file systems..."
  mount -a -t nfs

  ...
  ==============================================================================

  ==============================================================================
  /usr/local/sbin/winipcfg.pl:
  To jest program perlowy wywo³ywany ze skryptu startowego.
  ==============================================================================
  #!/usr/bin/perl

  while (<>) {
      # Remove any trailing CR and LF.
      s/\r//g;
      s/\n//g;

      if (/^\tHost Name.*: (.*)$/i) {
          ($hostname, $domain) = split(/\./, $1, 2);
      } elsif (/^\tDNS Servers.*: *(.*)$/i) {
          push @nameservers, $1;
      } elsif (/^\t +([\.0-9]+)$/) {
          push @nameservers, $1;
      } elsif (/^\tIP Address.*: (.*)$/i) {
          $ip_address = $1;
      } elsif (/^\tSubnet Mask.*: (.*)$/i) {
          $netmask = $1;
      } elsif (/^\tDefault Gateway.*: (.*)$i/) {
          $gateway = $1;
      }
  }

  $hostname || die "Hostname not given";
  $domain || die "Domain not given";
  $ip_address || die "IP address not given";
  $netmask || die "Netmask not given";
  $gateway || die "Gateway not given";
  $#nameservers != -1 || die "No nameservers given";

  open(HOSTNAME, ">/etc/hostname") ||
      die "Could not open /etc/hostname for writing\n";
  open(RESOLV, ">/etc/resolv.conf") ||
      die "Could not open /etc/resolv.conf for writing\n";
  open(NETWORK, ">/etc/init.d/network") ||
      die "Could not open /etc/init.d/network for writing\n";
  chmod 0755, "/etc/init.d/network";

  print HOSTNAME "$hostname\n";
  print RESOLV "domain $domain\n";
  print RESOLV "search $domain\n";
  foreach (@nameservers) {
      print RESOLV "nameserver $_\n";
  }

  @ip_address = split(/\./, $ip_address, 4);
  @netmask = split(/\./, $netmask, 4);
  $network = join(".",
                  $ip_address[0]+0 & $netmask[0]+0,
                  $ip_address[1]+0 & $netmask[1]+0,
                  $ip_address[2]+0 & $netmask[2]+0,
                  $ip_address[3]+0 & $netmask[3]+0);
  $broadcast = join(".",
                    $ip_address[0]+0 | ~($netmask[0]+0) & 255,
                    $ip_address[1]+0 | ~($netmask[1]+0) & 255,
                    $ip_address[2]+0 | ~($netmask[2]+0) & 255,
                    $ip_address[3]+0 | ~($netmask[3]+0) & 255);
  print NETWORK
  "ifconfig eth0 $ip_address netmask $netmask broadcast $broadcast
  route add -net $network netmask $netmask
  route add default gw $gateway metric 1
  ";

  print
  "DHCP info: $hostname.$domain ($ip_address)
    netmask: $netmask broadcast: $broadcast gateway: $gateway
    nameservers: @nameservers
  ";
  exit(0);
  ==============================================================================
  ______________________________________________________________________




  22..11..  OOdd tt³³uummaacczzaa..


  T³umaczenie to jest chronione prawami autorskimi © Bartosza
  Maruszewskiego.  Dozwolone jest rozprowadzanie i dystrybucja na
  prawach takich samych jak dokument oryginalny.

  Je¶li znalaz³e¶ jakie¶ ra¿±ce b³êdy ortograficzne, gramatyczne,
  sk³adniowe, techniczne to pisz do mnie:

  B.Maruszewski@jtz.org.pl

  Oficjaln± stron± t³umaczeñ HOWTO jest http://www.jtz.org.pl/

  Aktualne wersje przet³umaczonych dokumentów znajduj± siê na tej¿e
  stronie. Dostêpne s± tak¿e poprzez anonimowe ftp pod adresem
  ftp.jtz.org.pl w katalogu HOWTO.

  Przet³umaczone przeze mnie dokumenty znajduj± siê tak¿e na mojej
  stronie WWW. <http://www.jtz.org.pl/bartek/tlumaczenie.html> S± tam
  te¿ odwo³ania do Polskiej Strony T³umaczeniowej.

  Kontakt z nasz± grup±, grup± t³umaczy mo¿esz uzyskaæ poprzez listê
  dyskusyjn± jtz@ippt.gov.pl. Je¶li chcesz siê na ni± zapisaæ, to wy¶lij
  list o tre¶ci subscribe jtz Imiê Nazwisko na adres
  majordomo@ippt.gov.pl

  Zmiany wprowadzone przez t³umacza, to dodatek o lokalizacji plików
  startowych w innych dystrybucjach.