  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
  Wersja polska: Bartosz Maruszewski
  B.Maruszewski@zsmeie.torun.pl
  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&nbsp;treci


  1. Wprowadzenie.

  2. Metoda.

     2.1 Od tumacza.


  ______________________________________________________________________

  1.  Wprowadzenie.


  Mj Linux na PC-cie musi otrzyma IP oraz inne informacje o sieci z
  sewera DHCP. Ale nie mogem znale takiego klienta, ktry dziaaby z
  moim serwerem.

  Mj PC-et normalnie startuje z Windows 95, a Linux jest rzadziej
  uywany. Klient DHCP pod Windows 95 dziaa u mnie dobrze. Mogem
  skopiowa mj adres IP, "nameserver" itp. rcznie do Linux-a, ale
  chciaem zautomatyzowa ten proces.

  Windows 95 dostarcza program (\Windows\Winipcfg.exe), ktry wywietla
  informacje DHCP w adny graficzny sposb. Po przejrzeniu pliku
  winipcfg.exe odkryem, e ma on nieudokumentowan opcj, ktra pozwala
  zapisa informacje do pliku (domylnie jest to Winipcfg.out).
  Pozwolio mi to, na zrobienie takiego trick-u:


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

  2. Uruchomienie Winipcfg.exe i zapis wyniku do pliku.

  3. Start Linux-a.

  4. Zamontowa system plikw Win95.

  5. Przeczyta plik utworzony przez Winipcfg.

  6. Dostarczy potrzebne informacje Linux-owi.

  Wersj oryginaln tego dokumentu moesz znale na SUNSite Polska
  <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/docs/HOWTO/mini>. Na temat
  wersji tumaczenia patrz sekcja ``Od tumacza''.



  2.  Metoda.


  Teraz szczegy 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 porzdku. Nie podanie -all spowoduje
  brak niektrych informacji. Nie podanie cieki do pliku winipcfg.out
  spowoduje zapisanie tego pliku w katalogu biecym. Poniej jest
  zaczony przykadowy plik winipcfg.out.

  2. Natychmiast (albo jaki czas pniej) po starcie Win95, startuj
     Linux-a. Uywam loadlin-a uruchamianego z batch-a DOS-owego. Moesz
     uy tego albo czego innego.
     (Nie moliwe jest poczenie loadlin-a i winipcfg w jednym batch-u
     poniewa najprzypuszczalniej plik winipcfg.out nie zostanie
     przepisany z cache'u na dysk przed startem loadlin-a. Nie znalazem
     sposobu na zapisanie zawartoci cache'u na dysk z wiersza polece.)

  3. Podczas startu Linux-a wykonywany jest program napisany w Perlu
     (winipcfg.pl) doczony na kocu tego dokumentu. Program ten musi
     by wykonany po zamontowaniu systemu plikw Win95, a przed
     uruchomieniem skryptw sieciowych. Ja uywam dystrybucji Debian:
     poniej zaczony jest wyjtek z pliku /etc/init.d/boot z
     zanotowanymi moimi dodatkami. Twoja dystrybucja moe mie inne
     skrypty startowe, wic moe bdziesz musia to troch zmieni.
     (aut. Patrz kilka linijek niej na temat innych
     dystrybucji).Program winipcfg.pl zapisuje nowe wersje plikw:
     /etc/hostname, /etc/resolv.conf oraz /etc/init.d/network. Skrypt
     network wykonuje polecenie ifconfig z podanymi parametrami.

  To tyle. Zapamitaj oczywicie, e nie powiniene trzyma Linux-a
  uruchomionego duej ni pozwala na to DHCP. Ja startuj tylko na
  kilka godzin, wic nie ma u mnie tego problemu.

  Bdziesz musia dopasowa program winipcfg.pl jeli masz wicej ni
  jeden adapter sieciowy albo pseudo-adapter. Na przykad,
  oprogramowanie AOL ustawia udawany (fake) adapter sieciowy, i musisz
  zignorowa jego informacje.

  -------------------------------------------------------------------------------
  Od autora: Oto lokalizacje plikw odpowiedzialnych za konfiguracj
  sieci oraz plikw incjacyjnych:


    RedHat: pliki odpowiadajce 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 montujcy
     systemy, to /etc/rc.d/rc.S.

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

  Oto zaczniki (jeden na stron):


  ______________________________________________________________________

  ==============================================================================
  Przykadowy plik winipcfg.out zrobiony przez Win95 "winipcfg -all -batch"
  (adresy zostay zmienione ze wzgldw bezpieczestwa)
  ==============================================================================
  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
  ==============================================================================

  ==============================================================================
  Wyjtek 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 wedug 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 plikw 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 wywoywany 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);
  ==============================================================================
  ______________________________________________________________________




  2.1.  Od tumacza.


  Tumaczenie to jest chronione prawami autorskimi (C) Bartosza
  Maruszewskiego.  Dozwolone jest rozprowadzanie i dystrybucja na
  prawach takich samych jak dokument oryginalny.

  Jeli znalaze jakie race bdy ortograficzne, gramatyczne,
  skadniowe, techniczne to pisz do mnie:

  B.Maruszewski@zsmeie.torun.pl

  Oficjaln stron tumacze HOWTO jest http://www.jtz.org.pl/

  Aktualne wersje przetumaczonych dokumentw znajduj si na teje
  stronie. Dostpne s take poprzez anonimowe ftp pod adresem
  ftp.ippt.gov.pl w katalogu /pub/Linux/JTZ/.

  Przetumaczone przeze mnie dokumenty znajduj si take na mojej
  stronie WWW. <http://www.zsmeie.torun.pl/~bart/tlumaczenie.html> S
  tam te odwoania do Polskiej Strony Tumaczeniowej.

  Kontakt z nasz grup, grup tumaczy moesz uzyska poprzez list
  dyskusyjn jtz@ippt.gov.pl. Jeli chcesz sie na ni zapisa, to wylij
  list o treci subscribe jtz Imi Nazwisko na adres
  listproc@ippt.gov.pl

  Zmiany wprowadzone przez tumacza, to dodatek o lokalizacji plikw
  startowych w innych dystrybucjach.










