Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 23 Apr 1998 07:15:35 -0500 (CDT)
From:      "Paul T. Root" <proot@horton.iaces.com>
To:        dima@apc.net (Dima Dorfman)
Cc:        dwhite@resnet.uoregon.edu, freebsd-questions@FreeBSD.ORG
Subject:   Re: 2 simple questions
Message-ID:  <199804231215.HAA15929@horton.iaces.com>
In-Reply-To: <3.0.5.32.19980422190314.0098c810@mail.apc.net> from Dima Dorfman at "Apr 22, 98 07:03:14 pm"

next in thread | previous in thread | raw e-mail | index | archive | help

--ELM893333735-15900-0_
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit

In a previous message, Dima Dorfman said:
> I need to know how to create a boot disk.  Like, how do I create a kernel
> small enough to fit it and mount, rm, ls, cp, ... on a 1.44MB disk.

Here's the script I use. You'll want to adjust the kernel for your
hardware.





-- 
"We are here on earth to do good to others. What the others 
 are here for, I don't know."    --W.H. Auden 91907-1973)

--ELM893333735-15900-0_
Content-Type: application/x-sh
Content-Disposition: attachment; filename=create.sh
Content-Description: /home/proot/tmp/create.sh
Content-Transfer-Encoding: 7bit

#!/bin/sh
#
# create a restore floppy
#
# format the floppy
#
PATH=/bin:/sbin:/usr/sbin:/usr/bin

echo "Formatting fd0"
fdformat -q fd0
if [ $? -ne 0 ]
then
 echo "Bad floppy, please use a new one"
 exit 1
fi

# place boot blocks on the floppy
#
echo "Labeling fd0"
disklabel -w -B -b /usr/mdec/fdboot -s /usr/mdec/bootfd /dev/rfd0c fd1440

#
# newfs the one and only partition
#
echo "newfs fd0"
newfs -t 2 -u 18 -l 1 -c 40 -i 5120 -m 1 -o space /dev/rfd0a

#
# mount the new floppy
#
mount /dev/fd0a /mnt

#
# create required directories 
#
echo "Creating directories"
mkdir /mnt/dev
mkdir /mnt/bin
mkdir /mnt/sbin
mkdir /mnt/etc
mkdir /mnt/mnt			# for the root partition
mkdir /mnt/var
mkdir /mnt/cdrom
mkdir /mnt/usr
mkdir /mnt/usr/mdec

#
# populate the directories
#
echo "populate the directories"
if [ ! -x /sys/compile/MINI/kernel.kz ] 
then
if [ ! -f /sys/i386/conf/MINI ]; then
    CONFIG=MINI
else
    CONFIG=MINI2
fi
echo "The MINI kernel does not exist, creating one."

cat >/sys/i386/conf/$CONFIG << EOM
#
# MINI -- A kernel to get FreeBSD on onto a disk.
#
machine		"i386"
cpu		"I586_CPU"
cpu		"I686_CPU"
ident		MINI
maxusers	5

options		INET			
options		FFS			#Berkeley Fast File System
options		"CD9660"		#ISO 9660 Filesystems
options		"FAT_CURSOR"		#block cursor in syscons or pccons
options		"SCSI_DELAY=5"		#Be pessimistic about Joe SCSI device
options		"NCONS=2"		# virtual consoles
options		USERCONFIG		#Allow user configuration with -c

config		kernel	root on sd0 

controller	isa0
controller	pci0

controller	fdc0	at isa? port "IO_FD1" bio irq 6 drq 2 vector fdintr
disk		fd0	at fdc0 drive 0

controller	wdc0	at isa? port "IO_WD1" bio irq 14 vector wdintr
disk		wd0	at wdc0 drive 0
disk		wd1	at wdc0 drive 1

#controller	wdc1	at isa? port "IO_WD2" bio irq 15 vector wdintr
#disk		wd2	at wdc1 drive 0
#disk		wd3	at wdc1 drive 1

options		ATAPI		#Enable ATAPI support for IDE bus
options		ATAPI_STATIC	#Don't do it as an LKM
device		wcd0		#IDE CD-ROM

controller	ahc0
controller	scbus0

device		sc0	at isa? port "IO_KBD" tty irq 1 vector scintr
device		npx0	at isa? port "IO_NPX" irq 13 vector npxintr

device		sd0
device		st0
device		cd0

device	fxp0

pseudo-device	loop
pseudo-device	ether
pseudo-device	gzip
EOM

 cd /sys/i386/conf
 config $CONFIG
 cd ../../compile/$CONFIG
 make
 kzip kernel
else
    CONFIG=MINI
fi

echo "Copying kernel"
cp -f /sys/compile/${CONFIG}/kernel.kz /mnt

echo "copy sbin programs"
gzip -c -best /sbin/init > /mnt/sbin/init
gzip -c -best /sbin/fsck > /mnt/sbin/fsck
gzip -c -best /sbin/mount > /mnt/sbin/mount
gzip -c -best /sbin/mount_cd9660 >/mnt/sbin/mount_cd9660
gzip -c -best /sbin/halt > /mnt/sbin/halt
gzip -c -best /sbin/restore > /mnt/sbin/restore
gzip -c -best /sbin/ifconfig > /mnt/sbin/ifconfig
cd /mnt/sbin
ln restore rrestore
gzip -c -best /sbin/fdisk >/mnt/sbin/fdisk
gzip -c -best /sbin/disklabel >/mnt/sbin/disklabel
gzip -c -best /sbin/newfs >/mnt/sbin/newfs
gzip -c -best /bin/sh > /mnt/bin/sh
gzip -c -best /bin/sync > /mnt/bin/sync
gzip -c -best /bin/[ >/mnt/bin/[

cp /usr/mdec/boot1 /mnt/usr/mdec/sdboot
cp /usr/mdec/boot2 /mnt/usr/mdec/bootsd
 
cp /root/.profile /mnt/root

cp -f /dev/MAKEDEV /mnt/dev
chmod 755 /mnt/dev/MAKEDEV
 
chmod 500 /mnt/sbin/init
chmod 555 /mnt/sbin/fsck /mnt/sbin/mount /mnt/sbin/halt
chmod 555 /mnt/bin/sh /mnt/bin/sync /mnt/bin/[
chmod 555 /mnt/sbin/ifconfig /mnt/sbin/mount_cd9660
chmod 555 /mnt/sbin/fdisk /mnt/sbin/newfs /mnt/sbin/disklabel
chmod 6555 /mnt/sbin/restore
 
#
# create the devices nodes 
#
echo "creating devices"
cd /mnt/dev
./MAKEDEV std
./MAKEDEV sd0
./MAKEDEV st0
./MAKEDEV pty0
#./MAKEDEV wd0
./MAKEDEV fd0
./MAKEDEV wcd0
cd /

echo "Create etc files"
#
# create minimum filesystem table
#
cat > /mnt/etc/fstab <<EOF
/dev/fd0a	/	ufs	rw 1 1
/dev/wcd0c	/cdrom	cd9660	ro,noauto	0	0
EOF

#
# put in fdisk config file
#
cat >/mnt/etc/fdisk.conf <<EOF
# Config for IBM IntelliStation Z Pro
# Run with fdisk -i -f configfile /dev/rsd0
# WARNING - THIS WIPES THE DISK CLEAN
# WITHOUT ASKING.
g c548 h255 s63
p 1 165 63 4192902
a 1
EOF

#
# put in  disklabel config file
#
cat >/mnt/etc/disklabel.conf <<EOF 
# /dev/rsd0c:
type: SCSI
disk: sd0s1
label: 
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 255
sectors/cylinder: 16065
cylinders: 260
sectors/unit: 4192902
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0		# milliseconds
track-to-track seek: 0	# milliseconds
drivedata: 0 

8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a:   204800        0    4.2BSD        0     0     0 	# (Cyl.    0 - 12*)
  b:   524288   204800      swap                    	# (Cyl.   12*- 45*)
  c:  4192902        0    unused        0     0       	# (Cyl.    0 - 260*)
  e:   524288   729088    4.2BSD        0     0     0 	# (Cyl.   45*- 78*)
  f:  2939526  1253376    4.2BSD        0     0     0 	# (Cyl.   78*- 260*)
EOF

# 
# create minimum passwd file
#
cat > /mnt/etc/master.passwd <<EOM
root::0:0::0:0:Charlie &:/root:/bin/sh
EOM
 
chmod 600 /mnt/etc/master.passwd
/usr/sbin/pwd_mkdb -d/mnt/etc /mnt/etc/master.passwd

#
# services for rrestore
#
cat >/mnt/etc/services <<EOF
shell	514/tcp	cmd	# no passwords used
EOF

#
# The RC script that should just do the
# install with just a couple of questions
#
cp ~proot/FreeBSD-install/auto-install/rc /mnt/etc/rc

#
# Create boot.config file
#
cat >/mnt/boot.config  <<EOF
0:fd(0,a)/kernel.kz
EOF


#
# create symbolic link for /tmp to /mnt
# and /tmp to /mnt
#
cd /mnt
ln -s /mnt /mnt/tmp
#
echo "Disk complete, umount and eject"

--ELM893333735-15900-0_--

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199804231215.HAA15929>