From owner-freebsd-stable Tue Jan 22 9:22: 1 2002 Delivered-To: freebsd-stable@freebsd.org Received: from fem.uniag.sk (fem.uniag.sk [193.87.97.7]) by hub.freebsd.org (Postfix) with ESMTP id 9AD5237B417 for ; Tue, 22 Jan 2002 09:21:09 -0800 (PST) Received: from localhost (lk01@localhost) by fem.uniag.sk (8.10.2+Sun/8.10.2) with ESMTP id g0MHJgJ17134; Tue, 22 Jan 2002 18:19:42 +0100 (MET) Date: Tue, 22 Jan 2002 18:19:42 +0100 (MET) From: Ladislav Kostal To: "Jason K. Fritcher" Cc: Ladislav Kostal , Subject: Re: pxeboot btx halted problem In-Reply-To: <20020121114039.C45041-100000@outreach.wolfnet.org> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-stable@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG On Mon, 21 Jan 2002, Jason K. Fritcher wrote: > That would be cool to look at. Thanks. 1. /usr/ports/net/isc-dhcp3 dhcpd.conf: allow booting; allow bootp; ddns-update-style none; authoritative; option domain-name "your-domain.org"; option routers 192.168.1.2; option broadcast-address 192.168.1.255; option domain-name-servers 192.168.1.3; server-name "myserver"; server-identifier 192.168.1.1; default-lease-time 7200; max-lease-time 7200; subnet 192.168.1.0 netmask 255.255.255.0 { filename "pxeboot"; use-host-decl-names on; host tc1 { hardware ethernet 00:50:da:e0:bd:4f; fixed-address 192.168.1.10; } } 2. tftp server tftp dgram udp wait nobody /usr/libexec/tftpd tftpd /tftp 3. place /boot/pxeroot to /tftp 4. /etc/exports /pxeroot -maproot=0 192.168.1.10 /usr -ro 192.168.1.10 5. enable nfs server in /etc/rc.conf nfs_reserved_port_only="YES" nfs_server_enable="YES" portmap_enable="YES" 6. compile DISKLESS kernel and put it to /pxeroot (can gzip -9 for faster loading from server) machine i386 cpu I686_CPU ident DISKLESS maxusers 0 options INET options FFS options SOFTUPDATES options UFS_DIRHASH options MFS options NFS options NFS_ROOT options NO_SWAPPING options NULLFS options MSDOSFS options CD9660 options PROCFS options COMPAT_43 options UCONSOLE options USERCONFIG options VISUAL_USERCONFIG options KTRACE options SYSVSHM options SYSVMSG options SYSVSEM options P1003_1B options _KPOSIX_PRIORITY_SCHEDULING options ICMP_BANDLIM options KBD_INSTALL_CDEV options CPU_ENABLE_SSE options VESA options USER_LDT device isa device pci device atkbdc0 at isa? port IO_KBD device atkbd0 at atkbdc? irq 1 flags 0x1 device psm0 at atkbdc? irq 12 device vga0 at isa? pseudo-device splash device sc0 at isa? flags 0x100 device npx0 at nexus? port IO_NPX irq 13 device miibus device xl # place your card's driver here device pcm pseudo-device loop pseudo-device ether pseudo-device tun pseudo-device pty pseudo-device md pseudo-device bpf 7. populate /pxeroot tree using script in /usr/share/examples/diskless/clone_root (change DEST to /pxeroot) 8. edit /pxeroot/etc/rc appropriatelly if necessary. I make one file from rc.diskless1 and 2 (this is just ugly hack, but working properly:): chkerr() { case $1 in 0) ;; *) echo "$2 failed: dropping into /bin/sh" /bin/sh # RESUME ;; esac } # Figure out our interface and IP. bootp_ifc="" bootp_ipa="" bootp_ipbca="" iflist=`ifconfig -l` for i in ${iflist} ; do set `ifconfig ${i}` while [ $# -ge 1 ] ; do if [ "${bootp_ifc}" = "" -a "$1" = "inet" ] ; then bootp_ifc=${i} ; bootp_ipa=${2} ; shift fi if [ "${bootp_ipbca}" = "" -a "$1" = "broadcast" ] ; then bootp_ipbca=$2; shift fi shift done if [ "${bootp_ifc}" != "" ] ; then break fi done mount_md() { if [ -n "$4" ]; then bpi="-i $4" fi /sbin/mount_mfs -c 104 -s $1 -T qp120at $bpi dummy $2 } # If there is a global system configuration file, suck it in. if [ -r /etc/defaults/rc.conf ]; then . /etc/defaults/rc.conf source_rc_confs elif [ -r /etc/rc.conf ]; then . /etc/rc.conf fi mount_md 4096 /var 1 /bin/mkdir /var/db /bin/mkdir /var/spool /bin/mkdir /var/spool/output /bin/mkdir /var/spool/lock /bin/mkdir /var/log /bin/mkdir /var/at /bin/mkdir /var/at/jobs /bin/mkdir /var/run /bin/mkdir /var/cron /bin/mkdir /var/cron/tabs /bin/chmod 0700 /var/cron/tabs mount /usr set `/usr/bin/grep ${bootp_ipa} /etc/hosts` hostname $2 LOGFILES=`/usr/bin/awk '$1 != "#" { printf "%s ", $1 } ' /etc/newsyslog.conf` if [ -n "$LOGFILES" ]; then /usr/bin/touch $LOGFILES fi /usr/bin/touch /var/log/lastlog mount -a # chown and chgrp are in /usr /bin/mkdir /tmp/vi.recover /bin/chmod 1777 /tmp/vi.recover /bin/ln -s /tmp /var/tmp # extract a list of device entries, then copy them to a writable fs (cd /; find -x dev | cpio -o -H newc) > /tmp/dev.tmp mount_md 4096 /dev 3 512 (cd /; cpio -i -H newc -d < /tmp/dev.tmp) 9. edit /pxeroot/boot/loader.rc: echo Loading kernel... load /kernel echo Booting... set vfs.root.mountfrom="nfs:" boot 10. Enable PXE on your card and boot. 11. I had some problem with out NBASE switch, which doesn't like DHCP or so. Switching connection to Baystack enabled booting... I don't know why. Maybe I forgot some step, so I you will have some problems, write me. Ladislav Kostal To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-stable" in the body of the message