From mboxrd@z Thu Jan 1 00:00:00 1970 From: Miguel Bolanos Subject: Re: Broken-up patch #11 Date: Tue, 01 Jun 2004 07:31:56 -0600 Sender: linux-8086-owner@vger.kernel.org Message-ID: <1086093185.3063.6.camel@talena.hsol.net> References: <20040528233504.68694.qmail@web51303.mail.yahoo.com> Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <20040528233504.68694.qmail@web51303.mail.yahoo.com> List-Id: Content-Type: text/plain; charset="us-ascii" To: Tommy McCabe Cc: linux-8086@vger.kernel.org Greetings, On Fri, 2004-05-28 at 17:35, Tommy McCabe wrote: > Interconnected patch to: > > 1. Incorporate a few files from bootblocks into the > source treeso linux-86 isn't necessary for compiling. > mm... I see a lot of "mkdir" lines which still require the -p option, > 2. Move MAKEDEV and MAKESET out of rootfs_template to > save 12KB of space. > > 3. Fix I-don't-know-how-many-bugs in MAKEDEV. > You do realize that in your changes to the tar creation you omitted the exclusion of "CVS" dirs? Do we really want MAKEDEV and MAKESET out of rootfs_template? Also, honestly it would be better to have a list of the bugs fixed better than a "Fix I-don't-know-how-many-bugs in ..." line, because we wouldn't know what you are doing. > 4. Change /mnt/elks to /mnt/test. > So what's the advantage of this? > diff -ruN ./elks-stuff/elkscmd/MAKEDEV > ./elks/elkscmd/MAKEDEV > --- ./elks-stuff/elkscmd/MAKEDEV 1969-12-31 > 19:00:00.000000000 -0500 > +++ ./elks/elkscmd/MAKEDEV 2004-05-28 > 15:31:49.000000000 -0400 > @@ -0,0 +1,266 @@ > +#!/bin/sh > + > +# Devices are generated by this script in the same > order that they are listed > +# in the Documentation/devices.txt file in the Linux > 2.4.18 and5.21 kernel > +# sources. This includes devices that are not > currently relevant to ELKS, to > +# encourage the use of common node numbers when these > devices are eventually > +# implemented. > +# > +# Where different node numbers are currently used by > ELKS, the current ELKS > +# node numbers are generated by lines labelled > "Currently" and the relevant > +# Linux node numbers are generated by lines labelled > "Ought to be". > +# > +# Refer to the MAKESET command, also in this > directory, for usage details. > + > +LINK=ln > +MKDEV=mknod > +MKSET=./MAKESET > +TARGET_MNT=/mnt/test > +DEVDIR=./$TARGET_MNT/dev > + > +############################################################################## > +# Ensure required auxilliary script is present. > + > +if ! test -f "$MKSET" > +then > + echo ERROR: \"$MKSET\" script missing, unable to > continue. > + exit 1 > +fi > + > +############################################################################## > +# Create memory devices. > + > + $MKDEV $DEVDIR/mem c 1 1 > + $MKDEV $DEVDIR/kmem c 1 2 > + $MKDEV $DEVDIR/null c 1 3 > +# $MKDEV $DEVDIR/port c 1 4 > + $MKDEV $DEVDIR/zero c 1 5 > +# $MKDEV $DEVDIR/core c 1 6 > + $MKDEV $DEVDIR/full c 1 7 > +# $MKDEV $DEVDIR/random c 1 8 > +# $MKDEV $DEVDIR/urandom c 1 9 > +# $MKDEV $DEVDIR/aio c 1 10 > + > +############################################################################## > +# RAM disks. > + > + $MKSET 0 7 $MKDEV $DEVDIR/ram b 1 > + > + $LINK $DEVDIR/ram1 $DEVDIR/ramdisk > + > +############################################################################## > +# Pseudo-TTY master devices. These are not yet > supported by the ELKS kernel. > + > +# $MKSET 0 15 $MKDEV $DEVDIR/ptyp x 2 > +# $MKSET 16 15 $MKDEV $DEVDIR/ptyq x 2 > +# $MKSET 32 15 $MKDEV $DEVDIR/ptyr x 2 > +# $MKSET 48 15 $MKDEV $DEVDIR/ptys x 2 > +# $MKSET 64 15 $MKDEV $DEVDIR/ptyt x 2 > +# $MKSET 80 15 $MKDEV $DEVDIR/ptyu x 2 > +# $MKSET 96 15 $MKDEV $DEVDIR/ptyv x 2 > +# $MKSET 112 15 $MKDEV $DEVDIR/ptyw x 2 > +# $MKSET 128 15 $MKDEV $DEVDIR/ptyx x 2 > +# $MKSET 144 15 $MKDEV $DEVDIR/ptyy x 2 > +# $MKSET 160 15 $MKDEV $DEVDIR/ptyz x 2 > +# $MKSET 176 15 $MKDEV $DEVDIR/ptya x 2 > +# $MKSET 192 15 $MKDEV $DEVDIR/ptyb x 2 > +# $MKSET 208 15 $MKDEV $DEVDIR/ptyc x 2 > +# $MKSET 224 15 $MKDEV $DEVDIR/ptyd x 2 > +# $MKSET 240 15 $MKDEV $DEVDIR/ptye x 2 > + > +############################################################################## > +# Floppy diskettes. Only the auto-detect nodes are > listed. > + > + $MKDEV $DEVDIR/fd0 b 3 128 # Currently. > + $MKDEV $DEVDIR/fd1 b 3 192 # Currently. > + > +# $MKSET 0 3 $MKDEV $DEVDIR/fd b 2 # Ought to be. > + > +############################################################################## > +# Pseudo-TTY master devices. These are not yet > supported by the ELKS kernel. > + > +# $MKSET 0 15 $MKDEV $DEVDIR/ttyp x 3 > +# $MKSET 16 15 $MKDEV $DEVDIR/ttyq x 3 > +# $MKSET 32 15 $MKDEV $DEVDIR/ttyr x 3 > +# $MKSET 48 15 $MKDEV $DEVDIR/ttys x 3 > +# $MKSET 64 15 $MKDEV $DEVDIR/ttyt x 3 > +# $MKSET 80 15 $MKDEV $DEVDIR/ttyu x 3 > +# $MKSET 96 15 $MKDEV $DEVDIR/ttyv x 3 > +# $MKSET 112 15 $MKDEV $DEVDIR/ttyw x 3 > +# $MKSET 128 15 $MKDEV $DEVDIR/ttyx x 3 > +# $MKSET 144 15 $MKDEV $DEVDIR/ttyy x 3 > +# $MKSET 160 15 $MKDEV $DEVDIR/ttyz x 3 > +# $MKSET 176 15 $MKDEV $DEVDIR/ttya x 3 > +# $MKSET 192 15 $MKDEV $DEVDIR/ttyb x 3 > +# $MKSET 208 15 $MKDEV $DEVDIR/ttyc x 3 > +# $MKSET 224 15 $MKDEV $DEVDIR/ttyd x 3 > +# $MKSET 240 15 $MKDEV $DEVDIR/ttye x 3 > + > +############################################################################## > +# Direct IDE disks, Primary channel. > + > + $MKSET 0 7 $MKDEV $DEVDIR/hda b 5 # Currently. > + $MKSET 8 7 $MKDEV $DEVDIR/hdb b 5 # Currently. > + > +# $MKSET 0 7 $MKDEV $DEVDIR/hda b 3 # Ought to be. > +# $MKSET 8 7 $MKDEV $DEVDIR/hdb b 3 # Ought to be. > + > +############################################################################## > +# Virtual consoles. Note that tty4 through tty7 can't > be enabled at this > +# time because of the possible conflict with ttyS0 > through ttyS3 which > +# used to use the node numbers these now use. > However, it is expected that > +# this restriction can be removed in the near future. > + > + $MKSET 0 3 $MKDEV $DEVDIR/tty c 4 # Currently > +# $MKSET 0 15 $MKDEV $DEVDIR/tty c 4 # Soon to be > + > +# Serial ports, as detected by the ROM BIOS. > + > + $MKSET 64 3 $MKDEV $DEVDIR/ttyS c 4 > + > +############################################################################## > +# Alternate TTY devices. These are not yet supported. > + > +# $MKDEV $DEVDIR/tty c 5 0 > +# $MKDEV $DEVDIR/console c 5 1 > +# $MKDEV $DEVDIR/ptmx c 5 2 > + > +############################################################################## > +# Parallel devices, as detected by the ROM BIOS. > + > + $MKSET 0 3 $MKDEV $DEVDIR/lp c 6 > + > +############################################################################## > +# Loopback devices. These are not yet supported. > + > +# $MKSET 0 15 $MKDEV $DEVDIR/loop c 7 > + > +############################################################################## > +# SCSI disks. These are not yet supported. > + > +# $MKSET 0 7 $MKDEV $DEVDIR/sda b 8 > +# $MKSET 8 7 $MKDEV $DEVDIR/sdb b 8 > +# $MKSET 16 7 $MKDEV $DEVDIR/sdc b 8 > +# $MKSET 24 7 $MKDEV $DEVDIR/sdd b 8 > +# $MKSET 32 7 $MKDEV $DEVDIR/sde b 8 > +# $MKSET 40 7 $MKDEV $DEVDIR/sdf b 8 > +# $MKSET 48 7 $MKDEV $DEVDIR/sdg b 8 > +# $MKSET 56 7 $MKDEV $DEVDIR/sdh b 8 > +# $MKSET 64 7 $MKDEV $DEVDIR/sdi b 8 > +# $MKSET 72 7 $MKDEV $DEVDIR/sdj b 8 > +# $MKSET 80 7 $MKDEV $DEVDIR/sdk b 8 > +# $MKSET 88 7 $MKDEV $DEVDIR/sdl b 8 > +# $MKSET 96 7 $MKDEV $DEVDIR/sdm b 8 > +# $MKSET 104 7 $MKDEV $DEVDIR/sdn b 8 > +# $MKSET 112 7 $MKDEV $DEVDIR/sdo b 8 > +# $MKSET 120 7 $MKDEV $DEVDIR/sdp b 8 > + > +############################################################################## > +# SCSI tapes. These are not yet supported. > + > +# $MKSET 0 31 $MKDEV $DEVDIR/st c 9 > +# $MKSET 32 31 $MKDEV $DEVDIR/st c 9 l > +# $MKSET 64 31 $MKDEV $DEVDIR/st c 9 m > +# $MKSET 96 31 $MKDEV $DEVDIR/st c 9 a > +# $MKSET 128 31 $MKDEV $DEVDIR/nst c 9 > +# $MKSET 160 31 $MKDEV $DEVDIR/nst c 9 l > +# $MKSET 192 31 $MKDEV $DEVDIR/nst c 9 m > +# $MKSET 224 31 $MKDEV $DEVDIR/nst c 9 a > + > +############################################################################## > +# Metadisk (RAID) devices. These are not yet > supported. > + > +# $MKSET 0 15 $MKDEV $DEVDIR/md b 9 > + > +############################################################################## > +# SCSI CD-ROM devices. These are not yet supported. > + > +# $MKDEV $DEVDIR/scd b 11 > + > +############################################################################## > +# MSCDEX CD-ROM devices. These are not yet supported. > + > +# $MKDEV $DEVDIR/doscd b 12 > + > +############################################################################## > +# 8-bit MFM/RLL controllers. These are not yet > supported. > + > +# $MKSET 0 7 $MKDEV $DEVDIR/xda b 13 > +# $MKSET 8 7 $MKDEV $DEVDIR/xdb b 13 > + > +############################################################################## > +# BIOS hard disks. > + > + $MKSET 0 7 $MKDEV $DEVDIR/bda b 3 # Currently > + $MKSET 8 7 $MKDEV $DEVDIR/bdb b 3 # Currently > + $MKSET 16 7 $MKDEV $DEVDIR/bdc b 3 # Currently > + $MKSET 24 7 $MKDEV $DEVDIR/bdd b 3 # Currently > + > +# $MKSET 0 7 $MKDEV $DEVDIR/bda b 14 # Ought to be > +# $MKSET 8 7 $MKDEV $DEVDIR/bdb b 14 # Ought to be > +# $MKSET 16 7 $MKDEV $DEVDIR/bdc b 14 # Ought to be > +# $MKSET 24 7 $MKDEV $DEVDIR/bdd b 14 # Ought to be > + > +############################################################################## > +# Joysticks. These are not yet supported. > + > +# $MKDEV $DEVDIR/js c 15 > +# $MKDEV $DEVDIR/djs c 15 > + > +############################################################################## > +# Generic SCSI devices. These are not yet supported. > + > +# $MKSET 0 15 $MKDEV $DEVDIR/sg c 21 > + > +############################################################################## > +# Direct IDE disks, Secondary channel. These are not > yet supported. > + > +# $MKSET 0 7 $MKDEV $DEVDIR/hdc b 22 > +# $MKSET 8 7 $MKDEV $DEVDIR/hdd b 22 > + > +############################################################################## > +# Direct IDE disks, Tertiary channel. These are not > yet supported. > + > +# $MKSET 0 7 $MKDEV $DEVDIR/hde b 33 > +# $MKSET 8 7 $MKDEV $DEVDIR/hdf b 33 > + > +############################################################################## > +# Z80-SIO devices. These are not yet supported. > + > +# $MKSET 0 7 $MKDEV $DEVDIR/scc c 34 > + > +############################################################################## > +# Direct IDE disks, Quaternary channel. These are not > yet supported. > + > +# $MKSET 0 7 $MKDEV $DEVDIR/hde b 34 > +# $MKSET 8 7 $MKDEV $DEVDIR/hdf b 34 > + > +############################################################################## > +# Direct IDE disks, Quinternary channel. These are > not yet supported. > + > +# $MKSET 0 7 $MKDEV $DEVDIR/hdg b 56 > +# $MKSET 8 7 $MKDEV $DEVDIR/hdh b 56 > + > +############################################################################## > +# Direct IDE disks, Septernary channel. These are not > yet supported. > + > +# $MKSET 0 7 $MKDEV $DEVDIR/hdi b 57 > +# $MKSET 8 7 $MKDEV $DEVDIR/hdj b 57 > + > +############################################################################## > +# SCSI Media Changer. These are not yet supported. > + > +# $MKSET 0 15 $MKDEV $DEVDIR/sch c 86 > + > +############################################################################## > +# I2C bus drivers. These are not yet supported. > + > +# $MKSET 0 7 $MKDEV $DEVDIR/i2c c 89 > + > +############################################################################## > +# Conrad Electronic Parallel Port Radio Clocks. These > are not yet supported. > + > +# $MKSET 0 1 $MKDEV $DEVDIR/pcfclock c 181 > + > +############################################################################## > +# EOF. > diff -ruN ./elks-stuff/elkscmd/MAKESET > ./elks/elkscmd/MAKESET > --- ./elks-stuff/elkscmd/MAKESET 1969-12-31 > 19:00:00.000000000 -0500 > +++ ./elks/elkscmd/MAKESET 2004-04-18 > 14:54:13.000000000 -0400 > @@ -0,0 +1,48 @@ > +#!/bin/sh > + > +if [ $# -lt 6 -o $# -gt 7 ]; then > + echo > + echo "Usage: makeset min count cmd prefix type > major [suffix]" > + echo > + echo "where min is the minor of the first > node to make," > + echo " count is the number of the last > node to make," > + echo " cmd is the command to make a > node," > + echo " prefix is the node name prefix," > + echo " type is the type selector for the > node," > + echo " major is the major number for the > node," > + echo " and suffix is a suffix to append to the > node names." > + echo > + echo "The following type selectors are > supported:" > + echo > + echo " b Block device, all nodes have > numeric suffix." > + echo " d Block device, first node is raw > device without numeric suffix." > + echo > + echo " c Character device with decimal > numeric suffix." > + echo " x Character device with hexadecimal > numeric suffix." > + echo > +else > + N=0 > + while [ $N -le $2 ]; do > + P=`expr $N + $1` > + case ".$5" in > + .b) eval $3 $4$N$7 $5 $6 $P > + ;; > + .c) eval $3 $4$N$7 $5 $6 $P > + ;; > + .d) if [ $N -gt 0 ]; then > + eval $3 $4$N$7 $5 $6 $P > + else > + eval $3 $4$7 $5 $6 $P > + fi > + ;; > + .x) if [ $N -gt 9 ]; then > + R=`echo 123456789abcdef | cut -b $N` > + eval $3 $4$R$7 c $6 $P > + else > + eval $3 $4$N$7 c $6 $P > + fi > + ;; > + esac > + N=`expr $N + 1` > + done > +fi > diff -ruN ./elks-stuff/elkscmd/Make.defs > ./elks/elkscmd/Make.defs > --- ./elks-stuff/elkscmd/Make.defs 2004-05-28 > 16:02:01.000000000 -0400 > +++ ./elks/elkscmd/Make.defs 2004-04-18 > 15:02:51.000000000 -0400 > @@ -147,7 +147,7 @@ > MKFS=/sbin/mkfs.minix > MKFS_OPTS=-n14 > > -MINIX_BOOT=$(DEV86_DIR)/bootblocks > +MINIX_BOOT=./bootblocks > > > ############################################################################## > # > @@ -159,7 +159,7 @@ > endif > > ifeq ($(TARGET_MODE),LOOP) > -TARGET_MNT=/mnt/elks > +TARGET_MNT=/mnt/test > LOOP=-o loop > endif > > diff -ruN ./elks-stuff/elkscmd/Makefile > ./elks/elkscmd/Makefile > --- ./elks-stuff/elkscmd/Makefile 2004-05-28 > 16:02:01.000000000 -0400 > +++ ./elks/elkscmd/Makefile 2004-05-28 > 15:30:59.000000000 -0400 > @@ -46,9 +46,10 @@ > $(FULL3_TARGET_FS) $(FULL5_TARGET_FS) || true > rm -f $(COMB_TARGET_FS) $(ROOT_TARGET_FS) > $(ROOT_NET_TARGET_FS) \ > $(FULL3_TARGET_FS) $(FULL5_TARGET_FS) boot > images.zip core > - rm -rf rootfs_template $(ROOTDIR) > + rm -rf ./rootfs_template $(ROOTDIR) > + rm -rf ./bootblocks/*s ./bootblocks/*bin > ./bootblocks/*v > @for i in $(DIRS); do make -C $$i clean ; done > - tar xf rootfs_template.tar > + tar xzf rootfs_template.tar.gz > > > ############################################################################### > # > @@ -119,10 +120,13 @@ > # Create relevant parts of other packages. > > $(FD_BSECT): > - make -C $(MINIX_BOOT) bin > + bcc -Mf -O -DTRY_FLOPPY -DDOTS -o > ./bootblocks/minix.s -S ./bootblocks/minix.c > + as86 -w- -0 -b ./bootblocks/minix.bin -s > ./bootblocks/minix.sym ./bootblocks/minix.s > > $(KHELPER): > - make -C $(MINIX_BOOT) > + as86_encap ./bootblocks/minix.s ./bootblocks/minix.v > minix_ -0 -w > + bcc -Mf -O -DDOTS -o ./bootblocks/minix_elks.s -S > ./bootblocks/minix_elks.c > + as86 -w- -0 -b ./bootblocks/minix_elks.bin -s > ./bootblocks/minix_elks.sym ./bootblocks/minix_elks.s > > > ############################################################################### > # > @@ -146,8 +150,8 @@ > $(SIBO_TARGET_FS): > dd if=/dev/zero of=$(SIBO_TARGET_FS) bs=1024 > count=$(SIBO_TARGET_BLKS) > > -$(ELKSCMD_DIR)/rootfs_template/etc/passwd: > rootfs_template.tar > - tar xpf rootfs_template.tar > +$(ELKSCMD_DIR)/rootfs_template/etc/passwd: > rootfs_template.tar.gz > + tar xzpf rootfs_template.tar.gz > > $(ELKSCMD_DIR)/rootfs_template/etc/issue: > $(ELKSCMD_DIR)/rootfs_template/etc/passwd > $(ELKS_DIR)/Makefile > $(ELKSCMD_DIR)/tools/ver.pl $(ELKS_DIR)/Makefile > > $(ELKSCMD_DIR)/rootfs_template/etc/issue > @@ -155,37 +159,37 @@ > mount_combfs: $(COMB_TARGET_FS) > $(ELKSCMD_DIR)/rootfs_template/etc/issue > $(MKFS) $(MKFS_OPTS) $(COMB_TARGET_FS) > $(COMB_TARGET_BLKS) > mount $(COMB_TARGET_FS) $(TARGET_MNT) $(LOOP) > - (cd $(ELKSCMD_DIR)/rootfs_template ; tar cf - > --exclude CVS *) | \ > - (cd $(TARGET_MNT) ; tar xpvf -) > - (cd $(TARGET_MNT)/dev ; ./MAKEDEV) > + cd $(ELKSCMD_DIR)/rootfs_template; tar cf test.tar > ./; cp ./test.tar $(TARGET_MNT) > + cd $(TARGET_MNT); tar -xpf ./test.tar; rm -rf > test.tar; cd $(ELKSCMD_DIR) > + rm -rf ./rootfs_template/test.tar; ./MAKEDEV > > mount_full3fs: $(FULL3_TARGET_FS) > $(ELKSCMD_DIR)/rootfs_template/etc/issue > $(MKFS) $(MKFS_OPTS) $(FULL3_TARGET_FS) > $(FULL3_TARGET_BLKS) > mount $(FULL3_TARGET_FS) $(TARGET_MNT) $(LOOP) > - (cd $(ELKSCMD_DIR)/rootfs_template ; tar cf - > --exclude CVS *) | \ > - (cd $(TARGET_MNT) ; tar xpvf -) > - (cd $(TARGET_MNT)/dev ; ./MAKEDEV) > + cd $(ELKSCMD_DIR)/rootfs_template; tar cf test.tar > ./; cp ./test.tar $(TARGET_MNT) > + cd $(TARGET_MNT); tar -xpf ./test.tar; rm -rf > test.tar; cd $(ELKSCMD_DIR) > + rm -rf ./rootfs_template/test.tar; ./MAKEDEV > > mount_full5fs: $(FULL5_TARGET_FS) > $(ELKSCMD_DIR)/rootfs_template/etc/issue > $(MKFS) $(MKFS_OPTS) $(FULL5_TARGET_FS) > $(FULL5_TARGET_BLKS) > mount $(FULL5_TARGET_FS) $(TARGET_MNT) $(LOOP) > - (cd $(ELKSCMD_DIR)/rootfs_template ; tar cf - > --exclude CVS *) | \ > - (cd $(TARGET_MNT) ; tar xpvf -) > - (cd $(TARGET_MNT)/dev ; ./MAKEDEV) > + cd $(ELKSCMD_DIR)/rootfs_template; tar cf test.tar > ./; cp ./test.tar $(TARGET_MNT) > + cd $(TARGET_MNT); tar -xpf ./test.tar; rm -rf > test.tar; cd $(ELKSCMD_DIR) > + rm -rf ./rootfs_template/test.tar; ./MAKEDEV > > mount_rootfs: $(ROOT_TARGET_FS) > $(ELKSCMD_DIR)/rootfs_template/etc/issue > - $(MKFS) $(MKFS_OPTS) $(ROOT_TARGET_FS) > $(ROOT_TARGET_BLKS) > + $(MKFS) -i 200 $(MKFS_OPTS) $(ROOT_TARGET_FS) > $(ROOT_TARGET_BLKS) > mount $(ROOT_TARGET_FS) $(TARGET_MNT) $(LOOP) > - (cd $(ELKSCMD_DIR)/rootfs_template ; tar cf - > --exclude CVS *) | \ > - (cd $(TARGET_MNT) ; tar xpvf -) > - (cd $(TARGET_MNT)/dev ; ./MAKEDEV) > + cd $(ELKSCMD_DIR)/rootfs_template; tar cf test.tar > ./; cp ./test.tar $(TARGET_MNT) > + cd $(TARGET_MNT); tar -xpf ./test.tar; rm -rf > test.tar; cd $(ELKSCMD_DIR) > + rm -rf ./rootfs_template/test.tar; ./MAKEDEV > > mount_rootnetfs: $(ROOT_NET_TARGET_FS) > $(ELKSCMD_DIR)/rootfs_template/etc/issue > $(MKFS) $(MKFS_OPTS) $(ROOT_NET_TARGET_FS) > $(ROOT_NET_TARGET_BLKS) > mount $(ROOT_NET_TARGET_FS) $(TARGET_MNT) $(LOOP) > - (cd $(ELKSCMD_DIR)/rootfs_template ; tar cf - > --exclude CVS *) | \ > - (cd $(TARGET_MNT) ; tar xpvf -) > - (cd $(TARGET_MNT)/dev ; ./MAKEDEV) > + cd $(ELKSCMD_DIR)/rootfs_template; tar cf test.tar > ./; cp ./test.tar $(TARGET_MNT) > + cd $(TARGET_MNT); tar -xpf ./test.tar; rm -rf > test.tar; cd $(ELKSCMD_DIR) > + rm -rf ./rootfs_template/test.tar; ./MAKEDEV > > mount_sibofs: $(SIBO_TARGET_FS) > $(ELKSCMD_DIR)/rootfs_template/etc/issue > $(MKFS) $(MKFS_OPTS) $(SIBO_TARGET_FS) > $(SIBO_TARGET_BLKS) > @@ -210,35 +214,42 @@ > > > comb: mount_combfs $(ELKS_DIR)/arch/i86/boot/Image > $(FD_BSECT) $(KHELPER) > + dd if=/dev/zero of=./flagfile bs=1k count=0 > @for i in $(DIRS); do make -C $$i min_rfs ; done > + mkdir $(TARGET_MNT)/boot > cp $(ELKS_DIR)/arch/i86/boot/Image > $(TARGET_MNT)/boot/linux > cp $(KHELPER) $(TARGET_MNT)/boot/boot > umount $(COMB_TARGET_FS) > dd if=$(FD_BSECT) of=$(COMB_TARGET_FS) bs=512 > count=2 conv=notrunc > > full3: mount_full3fs $(ELKS_DIR)/arch/i86/boot/Image > $(FD_BSECT) $(KHELPER) > + mkdir $(TARGET_MNT)/bin; cp -p -f > $(ELKSNET_DIR)/ktcp/ktcp $(TARGET_MNT)/bin > @for i in $(DIRS); do make -C $$i rfs ; done > + mkdir $(TARGET_MNT)/boot > cp $(ELKS_DIR)/arch/i86/boot/Image > $(TARGET_MNT)/boot/linux > cp $(KHELPER) $(TARGET_MNT)/boot/boot > umount $(FULL3_TARGET_FS) > dd if=$(FD_BSECT) of=$(FULL3_TARGET_FS) bs=512 > count=2 conv=notrunc > > -full5: mount_full3fs $(ELKS_DIR)/arch/i86/boot/Image > $(FD_BSECT) $(KHELPER) > +full5: mount_full5fs $(ELKS_DIR)/arch/i86/boot/Image > $(FD_BSECT) $(KHELPER) > @for i in $(DIRS); do make -C $$i rfs ; done > + mkdir $(TARGET_MNT)/boot > cp $(ELKS_DIR)/arch/i86/boot/Image > $(TARGET_MNT)/boot/linux > cp $(KHELPER) $(TARGET_MNT)/boot/boot > - umount $(FULL3_TARGET_FS) > - dd if=$(FD_BSECT) of=$(FULL3_TARGET_FS) bs=512 > count=2 conv=notrunc > + umount $(FULL5_TARGET_FS) > + dd if=$(FD_BSECT) of=$(FULL5_TARGET_FS) bs=512 > count=2 conv=notrunc > > root: mount_rootfs > + rm -rf ./flagfile > @for i in $(DIRS); do make -C $$i min_rfs ; done > umount $(ROOT_TARGET_FS) > > comb_net: mount_rootnetfs > $(ELKS_DIR)/arch/i86/boot/Image $(FD_BSECT) $(KHELPER) > cd $(ELKSNET_DIR)/ktcp ; \ > make ; \ > - cp -p -f ktcp $(TARGET_MNT)/bin > + mkdir $(TARGET_MNT)/bin; cp -p -f ktcp > $(TARGET_MNT)/bin > @for i in $(DIRS); do make -C $$i net_rfs ; done > + mkdir $(TARGET_MNT)/boot > cp $(ELKS_DIR)/arch/i86/boot/Image > $(TARGET_MNT)/boot/linux > cp $(KHELPER) $(TARGET_MNT)/boot/boot > umount $(ROOT_NET_TARGET_FS) > > diff -ruN ./elks-stuff/elkscmd/bootblocks/minix.c > ./elks/elkscmd/bootblocks/minix.c > --- ./elks-stuff/elkscmd/bootblocks/minix.c 1969-12-31 > 19:00:00.000000000 -0500 > +++ ./elks/elkscmd/bootblocks/minix.c 2004-04-18 > 15:00:49.000000000 -0400 > @@ -0,0 +1,943 @@ > +/* > + * This bootblock loads the linux-8086 executable in > the file 'boot' > + * from the root directory of a minix filesystem. > + * > + * Copyright (C) 1990-1998 Robert de Bath, > distributed under the GPL Version 2 > + * Based on minix filesystem definitions. > + * > + * TODO: > + * Alter nogood() to do a mov sp,... so the > helper program can override > + * the panic message. > + */ > + > +#include > +#include "minix.h" > + > +/* #define DOTS /* define to have dots printed */ > +/* #define HARDDISK /* Define for hard disk version > */ > +/* #define TRY_FLOPPY /* To do trial reads to find > floppy size */ > + > +/* #define MIN_SPACE */ > + > +#define zone_shift 0 /* for any < 32M (!= 0 not > supported yet, if ever) */ > +#define seg_at(k) ((k)*64) > +#define seg_of(p) ((unsigned int)p >>4) > +#define BOOTSEG (0x07c0) > +#define LOADSEG (0x1000) > +#define ORGADDR (0x0500) > + > +#ifdef HARDDISK > +#define get_now() > +#endif > + > +#ifdef zone_shift > +#if zone_shift == 0 > +#define load_zone load_block > +#endif > +#else > +static short zone_shift; > +#endif > + > +#asm > +BOOTADDR = 0x7c00 > + > +.text > +! Apparently on startup the only things we can assume > are that we start at > +! `start` (ABS addr $07C00) and the boot sector is in > the segment. > + > +! So first set CS=DS=ES=SS=0 > +! The we move this to $0500 and put the stack at the > top of the first 64k. > +! The directory 'file' is loaded $1500 and scanned > there. > +! The final executable will be loaded in the 2nd 64k > chunk. > +! > +org ORGADDR ! The lowest available address. > +start: > +#ifndef MIN_SPACE > + include sysboot.s > + > +org start ! The lowest available address, again. > + j skip_vars > + > +org dos_sysid > + .ascii "MINIXFS BOOT (C) 1990-1999, Robert de > Bath" > + > + org codestart > +#endif > + > +! A few variables we need to know the positions of > for patching, so export > +! them and as86_encaps will make some variables. Put > them here at the start > +! so they're in the same place for both Floppy and > harddisk versions as they > +! will be used by helper programs. > + > +export inode ! Inode to search > +inode: > +_inode: .word 1 ! ROOT_INODE > + > +#ifndef MIN_SPACE > +export dinode ! Inode of directory file was found > in. > +dinode: > +_dinode: .word 1 ! ROOT_INODE > +#endif > + > +export bootfile ! File to boot, make this whatever > you like, > +bootfile: ! 'boot' is good, 'linux' too. > +_bootfile: > + .ascii "boot" > + .byte 0,0,0,0,0,0,0,0,0,0 > + > +skip_vars: > +#ifdef HARDDISK > + mov bx,[si+8] ! Fetch the linear address of part > from DS:SI > + mov dh,[si+10] ! DL is drive number > +#endif > + > + xor ax,ax ! All segments are zero, first 64k of > mem. > + mov ds,ax > + mov es,ax > + mov ss,ax > + mov sp,ax > + > +#ifndef HARDDISK > +loopy: > + mov ax,#$0203 ! Read 3 sectors, code + superblock. > + mov bx,#start ! Where this _should_ be > + mov cx,#$0001 ! From sector 1 > + xor dx,dx ! Of the floppy drive head zero > + int $13 > + jc loopy > +#else > + > + mov cx,#$100 ! Move 256 words > + mov si,#BOOTADDR ! From default BB > + mov di,#ORGADDR ! To the correct address. > + rep > + movsw > + > + xchg dl,dh > + mov [bootpart],bx ! Save the partition sector > offset (and drive) > + mov [bootpart+2],dx > + > + ! Read next 2 sectors of hd. > + xor dx,dx > + mov cx,#1 > + mov bx,#ORGADDR+$200 > + mov al,#2 > + > + call load_sect > +#endif > + > + jmpi code,#0 > + > +#endasm > + > +/* /* */ > +/****************************************************************************/ > +/* Section cdef */ > +/****************************************************************************/ > + > +/* The name of the file and inode to start */ > +extern char bootfile[]; > +extern inode_nr inode; > +extern inode_nr dinode; > + > +/* For multi-sector reads */ > +extern sect_nr lastsect; > +extern sect_nr firstsect; > +extern unsigned loadaddr; > +extern unsigned loadcount; > + > +/* Keep track of zones to load */ > +extern zone_nr * next_zone; > +extern zone_nr * end_zone; > +extern zone_nr indirect; > + > +/* Where to load zones */ > +extern unsigned ldaddr; > + > +/* Directory reading */ > +extern dir_struct * dirptr; > +extern unsigned flength; > +extern unsigned dir_32; > + > +#ifndef HARDDISK > +/* The 'shape' of the floppy - intuit from superblock > or try to read max */ > +extern unsigned n_sectors; > +#endif > + > +extern struct super_block b_super; > +extern d_inode b_inode[INODES_PER_BLOCK]; > +extern zone_nr b_zone[NR_INDIRECTS]; > +extern dir_struct directory[]; > + > +/* /* */ > +/****************************************************************************/ > +/* Section adef */ > +/****************************************************************************/ > + > +#asm > +.text > + > +#ifdef HARDDISK > +bootpart: .long 0 > +#else > +_loadcount: .word 0 > +_firstsect: .word 0 > +_loadaddr: .word 0 > +_lastsect: .word 0 > +#endif > + > + block start+0x400 > +_b_super: .blkb 512 > + > +#ifndef MIN_SPACE > +export helper > +helper: .blkb 1024 > +export helper_end > +helper_end: > +#endif > + > +_b_inode: .blkb 1024 > +_b_zone: .blkb 1024 > + > +#ifdef MIN_SPACE > +temp_space: .blkb 512 > +#endif > +probe_buf: > +_directory: .blkb 32768 > + endb > + > +#endasm > + > +/* /* */ > +/****************************************************************************/ > +/* Section nogood */ > +/****************************************************************************/ > +/* #if defined(HARDDISK) && !defined(SKIPBOOT) */ > +#ifndef SKIPBOOT > +static > +nogood() > +{ > +#asm > + mov si,#fail_fs > +min_nextc: > + lodsb > + cmp al,#0 > + jz min_eos > + mov bx,#7 > + mov ah,#$E ! Can't use $13 cause that's AT+ only! > + int $10 > + jmp min_nextc > +min_eos: ! Wait for a key then reboot > + xor ax,ax > + int $16 > + jmpi $0,$FFFF ! Reboot. > + > +fail_fs: > + .byte 13,10 > +#if defined(HARDDISK) > + .asciz "Initial boot failed, press return to > reboot\r\n" > +#else > + .asciz "Boot failed:" > +#endif > +#endasm > +} > + > +#else > + > +static > +nogood() > +{ > +/* This didn't work, chain the boot sector of the HD > */ > +#asm > + push cs > + pop es > +hcode: > + mov ax,#$0201 ! Read 1 sector > + mov bx,#BOOTADDR ! In the boot area > + mov cx,#$0001 ! From sector 1 > + mov dx,#$0080 ! Of the hard drive head zero > + int $13 > + jc hcode ! Keep trying forever! > + jmpi BOOTADDR,0 > +#endasm > +} > +#endif > + > +/* /* */ > +/****************************************************************************/ > +/* Section hd_sect */ > +/****************************************************************************/ > +#ifdef HARDDISK > +#asm > +! > +! Load AL sectors from linear sector DX:CX into > location ES:BX > +! Linear sector zero is at [bootpart] > +! This loads one sector at a time, but that's OK > cause even in the _very_ > +! worst case it'll take no more that 5 seconds to > load a 16 bit executable. > +! > +load_sect: > + add cx,[bootpart] > + adc dx,[bootpart+2] > +moresect: > + cmp al,#0 > + jnz onesect > + clc > + ret > + > +! Load one sector... > +onesect: > + push ax ! Save lots > + push di > + push si > + push cx ! Drive and sector. > + push dx > + > + push es ! Load location > + push bx > + > + push cx ! Drive and sector again. > + push dx > + > + ! Fetch drive 'shape' > + mov ah,#8 > + mov dl,dh > + int $13 ! DX:CX = drive specification > + jc _nogood > + > + and cx,#$3F ! Get sector count => DI > + mov di,cx > + > + xor dl,dl ! Get head count => SI > + xchg dl,dh > + inc dx > + mov si,dx > + > + pop dx ! Get back drive and sector > + pop ax > + > + mov bl,dh ! Save drive > + xor dh,dh > + > + div di ! DX=sector, AX=track number > + mov cx,dx > + inc cl ! CL=sector number > + > + xor dx,dx > + div si ! DX=head, AX=cylinder > + > + mov dh,dl > + mov dl,bl ! DX for int 1302 > + > + xchg al,ah > + ror al,#1 > + ror al,#1 > + or cx,ax ! CX for int 1302 > + > + pop bx ! ES:BX for int 1302 > + pop es > + > + mov di,#5 ! Lots of retries for a hd > +retry: > + mov ax,#$0201 > + int $13 > + jnc got_hd_sect > + > + xor ax,ax ! Reset between each try. > + int $13 > + > + dec di > + jnz retry > + br _nogood > + > +got_hd_sect: > + pop dx > + pop cx > + pop si > + pop di > + pop ax > + > + dec al > + add cx,#1 > + adc dh,#0 > + add bh,#2 > + jmp moresect > +#endasm > +#endif > + > +/****************************************************************************/ > +/* This is the end of the parts that MUST be in the > first sector */ > +/* From here down the functions can safely be in any > order. */ > +/****************************************************************************/ > + > +/* /* */ > +/****************************************************************************/ > +/* Section fd_block */ > +/****************************************************************************/ > +#ifndef HARDDISK > +static > +load_block(address, blkno) > +unsigned address, blkno; > +{ > + register sect_nr sectno; > + if(blkno == 0) { zero_block(address); return; } > +#ifdef DOTS > + prt_dot(); > +#endif > + > + sectno = (sect_nr)blkno * 2; > + load_sect(address, sectno); > + load_sect(address+32, sectno+1); > +} > +#endif > + > +/****************************************************************************/ > +/* Section fd_bpb */ > +/****************************************************************************/ > +#ifndef HARDDISK > +#asm > +_set_bpb: > +#ifdef MIN_SPACE > +bios_tabl=temp_space ! Temp space. > +bios_disk=temp_space+4 ! > +#else > +bios_tabl=dosfs_stat ! Temp space. > +bios_disk=dosfs_stat+4 ! > +#endif > + > +#ifndef __CALLER_SAVES__ > + push si > + push di > +#endif > + > + mov di,#bios_disk > + mov bx,#0x78 > +! 0:bx is parameter table address > + > + push ds > + push di > + > + mov si,[bx] > + mov ax,[bx+2] > + mov [bios_tabl],si > + mov [bios_tabl+2],ax > + push ax > + > + pop ds > +! ds:si is source > + > +! copy 12 bytes > + mov cl,#6 > + cld > + rep > + movsw > + > + pop di > + pop ds > + mov ax,[_n_sectors] > + movb 4[di],al ! patch sector count > + > + mov [bx],di > + mov 2[bx],es > + > +#ifndef __CALLER_SAVES__ > + pop si > + pop di > +#endif > + ret > + > +_unset_bpb: > +! 0:0x78 is parameter table address > + > + mov ax,[bios_tabl] > + mov [0x78],ax > + mov ax,[bios_tabl+2] > + mov [0x78+2],ax > + ret > + > +#endasm > +#endif > + > +/****************************************************************************/ > +/* Section fd_get_now */ > +/****************************************************************************/ > +#ifndef HARDDISK > +static > +get_now() > +{ > +#asm > + mov si,#5 > +retry_get: > + xor dx,dx > + mov cx,[_firstsect] > + shr ch,#1 > + adc dh,#0 > + mov es,[_loadaddr] > + xor bx,bx > + mov ax,[_loadcount] > + test ax,ax > + jz no_load > + mov ah,#2 > + int $13 ! Try fetch > + jnc no_load > + xor ax,ax ! Bad, retry. > + int $13 > + dec si > + jnz retry_get > + br _nogood > +no_load: > + xor ax,ax > + mov [_loadcount],ax > +#endasm > +} > +#endif > + > +/****************************************************************************/ > +/* Section fd_probe */ > +/****************************************************************************/ > +#ifndef HARDDISK > +#ifdef TRY_FLOPPY > +#asm > +!-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- > +! > +! These are the number of sectors per track that will > be scanned for. > +! For 3.5 inch floppies 36 is 2.88 Mb, 18 is 1.44Mb, > 21 is 1.68Mb on > +! a 1.44Mb floppy drive. 15 and 9 are for 5.25 inch > floppies. > + > +disksizes: .byte 36,21,18,15,9 > + > +! It seems that there is no BIOS call to get the > number of sectors. Guess > +! 36 sectors if sector 36 can be read, 18 sectors if > sector 18 can be read, > +! 15 if sector 15 can be read. Otherwise guess 9. > + > +_probe_sectors: > + mov si,#disksizes ! table of sizes to try > + > +probe_loop: > + lodsb > + cbw ! extend to word > + mov _n_sectors, ax > + cmp al,#9 > + je got_sectors ! if all else fails, try 9 > + xchg ax, cx ! cx = track and sector > + xor dx, dx ! drive 0, head 0 > + mov bx,#probe_buf ! address after setup (es = cs) > + mov ax,#0x0201 ! service 2, 1 sector > + int 0x13 > + jc probe_loop ! try next value > +got_sectors: > + > + ret > +#endasm > +#else > +probe_sectors() > +{ > + /* Guess the number of sectors based on the size > of the file system */ > + if( (n_sectors = b_super.s_nzones / 40) > 11 ) > n_sectors /= 2; > +} > +#endif > +#endif > + > +/****************************************************************************/ > +/* Section fd_sect */ > +/****************************************************************************/ > +#ifndef HARDDISK > +static > +load_sect(address, sectno) > +unsigned address; > +sect_nr sectno; > +{ > + register sect_nr nsect; > + > + nsect = sectno%n_sectors +1; > + sectno /= n_sectors; > + nsect |= (sectno<<8); > + > + if( loadcount ) > + { > + lastsect++; > + if( ( address & 4095 ) && nsect == lastsect ) > + { > + loadcount++; > + return; > + } > + get_now(); > + } > + > + lastsect = firstsect = nsect; > + loadaddr = address; > + loadcount = 1; > +} > +#endif > + > +/****************************************************************************/ > +/* Section fd_zeroblk */ > +/****************************************************************************/ > +#ifndef HARDDISK > +static > +zero_block(address) > +{ > +#asm > +#if __FIRST_ARG_IN_AX__ > + mov es,ax > +#else > + mov bx,sp > + mov es,[bx+2] > +#endif > + push di > + mov cx,#512 > + xor ax,ax > + mov di,ax > + rep > + stosw > + pop di > +#endasm > +} > +#endif > + > +/****************************************************************************/ > +/* Section hd_block */ > +/****************************************************************************/ > +#ifdef HARDDISK > +/*----------------------------------*/ > +/* Hard disk block driver */ > +/*----------------------------------*/ > + > +#asm > +_load_block: > + push bp > + mov bp,sp > +#if __FIRST_ARG_IN_AX__ > + ! Fetch load location > + mov es,ax > + > + ! Test for block zero > + mov ax,4[bp] > +#else > + ! Fetch load location > + mov ax,[bp+4] > + mov es,ax > + > + ! Test for block zero > + mov ax,6[bp] > +#endif > + test ax,ax > + jne real_block > + > + ! Iff block zero, zap memory > + push di > + mov cx,#512 > + xor ax,ax > + mov di,ax > + rep > + stosw > + pop di > + > +func_exit: > + mov sp,bp > + pop bp > + ret > + > +real_block: > +#ifdef DOTS > + push ax > + call _prt_dot > + pop ax > +#endif > + > +! Load a real block. > + mov cx,ax > + xor dx,dx > + shl cx,#1 > + rcl dx,#1 > + > + xor bx,bx > + mov al,#2 > + call load_sect > + > + j func_exit > +#endasm > +#endif > + > +/****************************************************************************/ > +/* Section main */ > +/****************************************************************************/ > +#asm > +code: > + call _loadprog > + call _runprog > + br _nogood > + > +#endasm > + > +/****************************************************************************/ > +/* Section prt_dots */ > +/****************************************************************************/ > +#ifdef DOTS > +#asm > +_prt_crlf: > + mov al,#13 > + call outch > + mov al,#10 > + j outch > +_prt_dot: > + mov al,#'. > +outch: > + mov ah,#$0E > + mov bx,#7 > + int $10 > + ret > +#endasm > +#endif > + > +/****************************************************************************/ > +/* Section end_1 */ > +/****************************************************************************/ > +#if defined(HARDDISK) || !defined(MIN_SPACE) > +#asm > +end_of_part1: > +#ifdef HARDDISK > + if *>start+0x1FE ! Leave space for magic > +#else > + if *>start+0x200 > +#endif > + fail! Part 1 too large! > + endif > + .blkb 0x200+start-* > +#endasm > +#endif > + > +/****************************************************************************/ > +/* Section prog_load */ > +/****************************************************************************/ > + > +loadprog() > +{ > +#ifdef DOTS > + prt_dot(); > +#endif > + if( b_super.s_magic == SUPER_MAGIC2 ) > + dir_32 = 1; > + else if( b_super.s_magic == SUPER_MAGIC ) > + dir_32 = 0; > + else > + nogood(); > + > +#ifdef zone_shift > + if( zone_shift != b_super.s_log_zone_size) > nogood(); > +#else > + zone_shift = b_super.s_log_zone_size; > +#endif > + > +#ifndef HARDDISK > + probe_sectors(); > + > + /* if( (n_sectors = b_super.s_nzones / 40) > 11 ) > n_sectors /= 2; */ > + > + set_bpb(); > +#endif > + > +try_again:; > + inode--; > + load_block(seg_of(b_inode), inode/INODES_PER_BLOCK > + + b_super.s_imap_blocks > + + b_super.s_zmap_blocks > + + 2); > + get_now(); > + > + ldaddr = LOADSEG; /* Load at 64k mark */ > + > + { > + register d_inode * i_ptr; > + i_ptr = b_inode + inode%INODES_PER_BLOCK; > + next_zone = i_ptr->i_zone; > + flength = i_ptr->i_size; > + if( (i_ptr->i_mode & I_TYPE) == I_DIRECTORY ) > + { > + ldaddr = seg_of(directory); > +#ifndef MIN_SPACE > + dinode = inode+1; /* Remember current directory */ > +#endif > + inode = 0; /* Mark - we've no _file_ inode yet */ > + } > + } > + > + end_zone = next_zone+NR_DZONE_NUM; > + load_zone(seg_of(b_zone), (indirect = > next_zone[NR_DZONE_NUM])); > + get_now(); > + > + for(;;) > + { > + if( next_zone >= end_zone ) > + { > + if( indirect != 0 ) > + { > + next_zone = b_zone; > + end_zone = next_zone + NR_INDIRECTS; > + indirect = 0; > + continue; > + } > + break; > + } > + load_zone(ldaddr, *next_zone); > + next_zone++; > + ldaddr += (seg_at(1) << zone_shift); > + } > + get_now(); > + > +#ifdef DOTS > + prt_crlf(); > +#endif > + if(!inode) > + { > + dirptr = directory; > + while(flength > 0) > + { > +register char * s = bootfile; > +register char * p = dirptr->d_name; > + > + if( dirptr->d_inum ) > + { > + for(;;) > + { > + if( *s == '\0') > + { > + if(*p == '\0') > + { > + inode = dirptr->d_inum; > + goto try_again; > + } > + break; > + } > + if( *s++ != *p++ ) break; > + } > + } > + flength -= 16; > + dirptr++; > + if( dir_32 ) > + { > + flength -= 16; > + dirptr++; > + } > + } > + nogood(); > + } > +#ifndef HARDDISK > + unset_bpb(); > +#endif > +} > + > +/****************************************************************************/ > +/* Section prog_run */ > +/****************************************************************************/ > +static > +runprog() > +{ > +/* It all worked, run the loaded executable */ > +#asm > +#ifdef HARDDISK > + mov dx,[bootpart+2] > + xchg dh,dl ! DX => hard drive > + push [bootpart] ! CX => partition offset > + xor si,si > +#else > + xor dx,dx ! DX=0 => floppy drive > + push dx ! CX=0 => partition offset = 0 > + mov si,[_n_sectors] ! Save for monitor.out > +#endif > + > + mov bx,#LOADSEG > + mov ds,bx ! DS = loadaddress > + xor di,di ! Zero > + mov ax,[di] > + cmp ax,#0x0301 ! Right magic ? > + jnz binfile ! Yuk ... assume .SYS > + inc bx > + inc bx ! bx = initial CS > + mov ax,[di+2] > + and ax,#$20 ! Is it split I/D ? > + jz impure ! No ... > + mov cl,#4 > + mov ax,[di+8] > + shr ax,cl > +impure: > + pop cx > + add ax,bx > + mov ss,ax > + mov sp,[di+24] ! Chmem value > + mov ds,ax > +binfile: > + > + push bx > + push di ! jmpi 0,#LOADSEG+2 > + retf > +#endasm > +} > + > +/****************************************************************************/ > +/* Section sys_libs */ > +/****************************************************************************/ > +#asm > +! These functions are pulled from the C library. > +libstuff: > +imodu: > + xor dx,dx > + div bx > + mov ax,dx ! instruction queue full so xchg slower > + ret > +idiv_u: > + xor dx,dx > + div bx > + ret > +#ifndef zone_shift > +isl: > +islu: > + mov cl,bl > + shl ax,cl > + ret > +#endif > +libend: > +#endasm > + > +/****************************************************************************/ > +/* Section sys_vars */ > +/****************************************************************************/ > +#asm > +#ifdef MIN_SPACE > + block temp_space+64 > +#endif > +vars: > +#ifndef HARDDISK > +_n_sectors: .blkw 1 > +#endif > +_next_zone: .blkw 1 > +_end_zone: .blkw 1 > +_indirect: .blkw 1 > +_ldaddr: .blkw 1 > +_dirptr: .blkw 1 > +_flength: .blkw 1 > +_dir_32: .blkw 1 > +varend: > +#ifdef MIN_SPACE > + endb > +#endif > +#endasm > + > +/****************************************************************************/ > +/* Section end_2 */ > +/****************************************************************************/ > +#asm > +end_of_prog: > + if *>start+0x400 > + fail! Part 2 too large! > + endif > + > + if end_of_prog + .blkb 0x400+start-* > + else > + .blkb 0x3FF+start-* > + .byte 0xFF > + endif > + > +#endasm > + > +/****************************************************************************/ > diff -ruN ./elks-stuff/elkscmd/bootblocks/minix.h > ./elks/elkscmd/bootblocks/minix.h > --- ./elks-stuff/elkscmd/bootblocks/minix.h 1969-12-31 > 19:00:00.000000000 -0500 > +++ ./elks/elkscmd/bootblocks/minix.h 2004-04-18 > 15:00:59.000000000 -0400 > @@ -0,0 +1,104 @@ > +/****************************************************************************/ > +/* Super block table. The root file system and every > mounted file system > + * has an entry here. The entry holds information > about the sizes of the bit > + * maps and inodes. The s_ninodes field gives the > number of inodes available > + * for files and directories, including the root > directory. Inode 0 is > + * on the disk, but not used. Thus s_ninodes = 4 > means that 5 bits will be > + * used in the bit map, bit 0, which is always 1 and > not used, and bits 1-4 > + * for files and directories. The disk layout is: > + * > + * Item # blocks > + * boot block 1 > + * super block 1 > + * inode map s_imap_blocks > + * zone map s_zmap_blocks > + * inodes (s_ninodes + 1 + INODES_PER_BLOCK > - 1)/INODES_PER_BLOCK > + * unused whatever is needed to fill out > the current zone > + * data zones (s_nzones - s_firstdatazone) << > s_log_zone_size > + * > + * A super_block slot is free if s_dev == NO_DEV. > + */ > + > +#define BLOCK_SIZE 1024 /* # bytes in a disk > block */ > + > +/* Flag bits for i_mode in the inode. */ > +#define I_TYPE 0170000 /* this field gives > inode type */ > +#define I_REGULAR 0100000 /* regular file, not > dir or special */ > +#define I_BLOCK_SPECIAL 0060000 /* block special file > */ > +#define I_DIRECTORY 0040000 /* file is a > directory */ > +#define I_CHAR_SPECIAL 0020000 /* character special > file */ > +#define I_SET_UID_BIT 0004000 /* set effective uid > on exec */ > +#define I_SET_GID_BIT 0002000 /* set effective gid > on exec */ > +#define ALL_MODES 0006777 /* all bits for user, > group and others */ > +#define RWX_MODES 0000777 /* mode bits for RWX > only */ > +#define R_BIT 0000004 /* Rwx protection bit > */ > +#define W_BIT 0000002 /* rWx protection bit > */ > +#define X_BIT 0000001 /* rwX protection bit > */ > +#define I_NOT_ALLOC 0000000 /* this inode is free > */ > + > +/* Type definitions */ > +typedef unsigned short unshort; /* must be 16-bit > unsigned */ > +typedef unshort block_nr; /* block number */ > +typedef unshort inode_nr; /* inode number */ > +typedef unshort zone_nr; /* zone number */ > +typedef unshort bit_nr; /* if inode_nr & zone_nr > both unshort, > + then also unshort, else long */ > + > +typedef unshort sect_nr; > + > +typedef long zone_type; /* zone size */ > +typedef unshort mask_bits; /* mode bits */ > +typedef unshort dev_nr; /* major | minor device > number */ > +typedef char links; /* number of links to an inode > */ > +typedef long real_time; /* real time in seconds > since Jan 1, 1970 */ > +typedef long file_pos; /* position in, or length of, > a file */ > +typedef short uid; /* user id */ > +typedef char gid; /* group id */ > + > +/* Tables sizes */ > +#define NR_ZONE_NUMS 9 /* # zone numbers in an > inode */ > +#define NAME_SIZE 14 /* # bytes in a > directory component */ > + > +/* Miscellaneous constants */ > +#define SUPER_MAGIC 0x137F /* magic number > contained in super-block */ > +#define SUPER_MAGIC2 0x138F /* Secondary magic 30 > char names */ > + > +#define BOOT_BLOCK (block_nr)0 /* block number of > boot block */ > +#define SUPER_BLOCK (block_nr)1 /* block number of > super block */ > +#define ROOT_INODE (inode_nr)1 /* inode number for > root directory */ > + > +/* Derived sizes */ > +#define NR_DZONE_NUM (NR_ZONE_NUMS-2) /* # zones > in inode */ > +#define INODES_PER_BLOCK (BLOCK_SIZE/sizeof(d_inode)) > /* # inodes/disk blk */ > +#define NR_INDIRECTS (BLOCK_SIZE/sizeof(zone_nr)) > /* # zones/indir blk */ > +#define INTS_PER_BLOCK (BLOCK_SIZE/sizeof(int)) /* > # integers/blk */ > + > +struct super_block { > + inode_nr s_ninodes; /* # usable inodes on the > minor device */ > + zone_nr s_nzones; /* total device size, including > bit maps etc */ > + unshort s_imap_blocks; /* # of blocks used by inode > bit map */ > + unshort s_zmap_blocks; /* # of blocks used by zone > bit map */ > + zone_nr s_firstdatazone; /* number of first data > zone */ > + short s_log_zone_size; /* log2 of blocks/zone */ > + file_pos s_max_size; /* maximum file size on this > device */ > + short s_magic; /* magic number to recognize > super-blocks */ > + > +} ; > + > +/* Type definitions local to the File System. */ > +typedef struct { /* directory entry */ > + inode_nr d_inum; /* inode number */ > + char d_name[NAME_SIZE]; /* character string */ > +} dir_struct; > + > +/* Declaration of the disk inode used in rw_inode(). > */ > +typedef struct { /* disk inode. Memory inode is in > "inotab.h" */ > + mask_bits i_mode; /* file type, protection, etc. > */ > + uid i_uid; /* user id of the file's owner */ > + file_pos i_size; /* current file size in bytes */ > + real_time i_modtime; /* when was file data last > changed */ > + gid i_gid; /* group number */ > + links i_nlinks; /* how many links to this file */ > + zone_nr i_zone[NR_ZONE_NUMS]; /* block nums for > direct, ind, and dbl ind */ > +} d_inode; > + > diff -ruN ./elks-stuff/elkscmd/bootblocks/minix.sym > ./elks/elkscmd/bootblocks/minix.sym > --- ./elks-stuff/elkscmd/bootblocks/minix.sym > 1969-12-31 19:00:00.000000000 -0500 > +++ ./elks/elkscmd/bootblocks/minix.sym 2004-05-09 > 13:36:50.000000000 -0400 > @@ -0,0 +1,137 @@ > ++ 00000500 ----- $start > ++ 00000900 ----- $end > +0 FFFFFFFE ---A- ..FFFF > +0 000005B7 ---A- .1 > +0 000007A0 ---A- .10 > +0 0000078A ---A- .11 > +0 00000813 ---A- .12 > +0 00000811 ---A- .13 > +0 000007C6 ---A- .14 > +0 000007F2 ---A- .15 > +0 000007D0 ---A- .16 > +0 000007F0 ---A- .17 > +0 000007D7 ---A- .18 > +0 00000896 ---A- .19 > +0 00000823 ---A- .1A > +0 00000893 ---A- .1B > +0 0000088C ---A- .1C > +0 0000082B ---A- .1D > +0 00000869 ---A- .1E > +0 0000083F ---A- .1F > +0 000005AD ---A- .2 > +0 00000869 ---A- .20 > +0 00000867 ---A- .21 > +0 0000083F ---A- .22 > +0 0000085E ---A- .23 > +0 00000845 ---A- .24 > +0 0000085C ---A- .25 > +0 0000084B ---A- .26 > +0 00000867 ---A- .27 > +0 00000865 ---A- .28 > +0 0000088C ---A- .29 > +0 0000087E ---A- .2A > +0 00000893 ---A- .2B > +0 000006B7 ---A- .3 > +0 00000697 ---A- .4 > +0 000006B4 ---A- .5 > +0 000006AC ---A- .6 > +0 000006A3 ---A- .7 > +0 00000716 ---A- .8 > +0 0000070E ---A- .9 > +0 00000728 ---A- .A > +0 00000725 ---A- .B > +0 0000071E ---A- .C > +0 00000728 ---A- .D > +0 00000732 ---A- .E > +0 0000072F ---A- .F > +0 00000738 ---A- .FFFF > +0 00007C00 ---A- BOOTADDR > +0 00000F00 ---A- _b_inode > +0 00000900 ---A- _b_super > +0 00001300 ---A- _b_zone > +0 00000542 ---A- _bootfile > +0 00000540 ---A- _dinode > +0 000008E9 ---A- _dir_32 > +0 00001700 ---A- _directory > +0 000008E5 ---A- _dirptr > +0 000008DF ---A- _end_zone > +0 00000570 ---A- _firstsect > +0 000008E7 ---A- _flength > +0 00000615 ---A- _get_now > +0 000008E1 ---A- _indirect > +0 0000053E ---A- _inode > +0 00000574 ---A- _lastsect > +0 000008E3 ---A- _ldaddr > +0 000005A0 ---A- _load_block > +0 00000665 ---A- _load_sect > +0 00000572 ---A- _loadaddr > +0 0000056E ---A- _loadcount > +0 00000700 E--A- _loadprog > +0 000008DB ---A- _n_sectors > +0 000008DD ---A- _next_zone > +0 00000576 ---A- _nogood > +0 0000064B ---A- _probe_sectors > +0 000006E7 ---A- _prt_crlf > +0 000006F0 ---A- _prt_dot > +0 0000089B ---A- _runprog > +0 000005DF ---A- _set_bpb > +0 00000608 ---A- _unset_bpb > +0 000006D0 ---A- _zero_block > +0 000008CB ---A- binfile > +0 0000050F ---A- bios_disk > +0 0000050B ---A- bios_tabl > +0 000006FE E--A- bootblock_magic > +0 00000542 E--A- bootfile > +0 000006DE ---A- code > +0 0000053E E--A- codestart > +0 00000540 E--A- dinode > +0 00000646 ---A- disksizes > +0 00000536 ---A- dos4_fattype > +0 0000052B ---A- dos4_label > +0 00000520 ---A- dos4_maxsect > +0 00000524 ---A- dos4_phy_drive > +0 00000527 ---A- dos4_serial > +0 0000050D ---A- dos_clust > +0 00000516 ---A- dos_fatlen > +0 0000051A ---A- dos_heads > +0 0000051C ---A- dos_hidden > +0 00000513 ---A- dos_maxsect > +0 00000515 ---A- dos_media > +0 00000510 ---A- dos_nfat > +0 00000511 ---A- dos_nroot > +0 0000050E ---A- dos_resv > +0 0000050B ---A- dos_sect > +0 00000518 ---A- dos_spt > +0 00000503 ---A- dos_sysid > +0 0000050B E--A- dosfs_stat > +0 000006FA ---A- end_of_part1 > +0 000008EB ---A- end_of_prog > +0 00000590 ---A- fail_fs > +0 00000527 ---A- floppy_temp > +0 00000664 ---A- got_sectors > +0 00000B00 E--A- helper > +0 00000F00 E--A- helper_end > +0 000008D6 ---A- idiv_u > +0 000008CF ---A- imodu > +0 000008C1 ---A- impure > +0 0000053E E--A- inode > +0 000008DB ---A- libend > +0 000008CF ---A- libstuff > +0 0000055A ---A- loopy > +0 00000587 ---A- min_eos > +0 00000579 ---A- min_nextc > +0 00000640 ---A- no_load > +0 000006F2 ---A- outch > +0 000006BE ---A- partition_1 > +0 000006CE ---A- partition_2 > +0 000006DE ---A- partition_3 > +0 000006EE ---A- partition_4 > +0 00001700 ---A- probe_buf > +0 0000064E ---A- probe_loop > +0 00000618 ---A- retry_get > +0 00000550 ---A- skip_vars > +0 00000500 ---A- start > +0 00000000 ---R- sysboot.s > +0 00000500 ---A- sysboot_start > +0 000008EB ---A- varend > +0 000008DB ---A- vars > diff -ruN ./elks-stuff/elkscmd/bootblocks/minix_elks.c > ./elks/elkscmd/bootblocks/minix_elks.c > --- ./elks-stuff/elkscmd/bootblocks/minix_elks.c > 1969-12-31 19:00:00.000000000 -0500 > +++ ./elks/elkscmd/bootblocks/minix_elks.c 2004-04-18 > 15:04:37.000000000 -0400 > @@ -0,0 +1,152 @@ > + > +#define __ASSEMBLY__ > + > +#asm > +#include "minix.v" > + > +! Must match minix.c ... > +#define LOADSEG (0x1000) > + > +! Must match ELKS > +#define ELKS_INITSEG (0x0100) > +#define ELKS_SYSSEG (0x1000) > + > +org minix_helper > + > + push cs > + pop ds > + xor ax,ax > + mov es,ax > + mov ss,ax > + mov sp,ax > + > + mov cx,#$200 ! Move 512 words > + mov si,ax ! Current load address. > + mov di,#minix_helper ! To the correct address. > + rep > + movsw > + > + mov ds,ax > + jmpi code,0 > + > +msg_p2: > + .asciz "\r\nLoading ELKS kernel\r\n" > + > +msg_p3: > + .asciz "Starting ...\r\n" > + > +aint_elks: > + .asciz "Not an ELKS image!" > + > +elks_name: > + .asciz "linux" > + .byte 0,0,0,0,0,0,0,0,0 > + > +dispmsg: ! SI now has pointer to a message > + lodsb > + cmp al,#0 > + jz EOS > + mov bx,#7 > + mov ah,#$E ! Can't use $13 cause that's AT+ only! > + int $10 > + jmp dispmsg > +EOS: > + ret > + > +code: > + mov si,#msg_p2 > + call dispmsg > + > + mov ax,minix_dinode ! In the same directory. > + mov minix_inode,ax > + > + mov cx,#14 > + mov si,#elks_name > + mov di,#minix_bootfile > + rep > + movsb > + > + call minix__loadprog > + ! Ok, now loaded "boot/linux" (or so) > + mov si,#msg_p3 > + call dispmsg > + > + call kill_motor ! For kernels without a floppy > driver. > +! > + mov ax,#LOADSEG > + mov ds,ax > + > + mov ax,$1E6 ! Check for ELKS magic number > + cmp ax,#$4C45 > + jnz not_elks > + mov ax,$1E8 > + cmp ax,#$534B > + jz boot_it > +not_elks: > + xor ax,ax > + mov ds,ax > + mov si,#aint_elks > + call dispmsg > + xor ax,ax > + int $16 > + jmpi $0,$FFFF > + > +boot_it: > + mov ax,#ELKS_INITSEG > + mov es,ax > + > + mov bl,497 ! Fetch number of setup sects. > + xor bh,bh > + inc bx > + mov ax,500 ! Fetch system size > + mov cl,#5 > + add ax,#31 > + shr ax,cl > + mov dx,ax > + > +looping: ! Put the setup where it belongs > + call copy_sect > + dec bx > + jnz looping > + > + mov ax,#ELKS_SYSSEG > + mov es,ax > + > +looping2: ! Put the body code in the right place. > + call copy_sect > + dec dx > + jnz looping2 > + > + ! Ok, everything should be where it belongs call > it. > + mov ax,#ELKS_INITSEG > + mov ds,ax > + mov es,ax > + mov ss,ax > + mov sp,#0x4000-12 > + jmpi 0,ELKS_INITSEG+$20 > + > +copy_sect: > + mov cx,#256 > + xor si,si > + xor di,di > + rep > + movsw > + > + mov ax,ds > + add ax,#32 > + mov ds,ax > + mov ax,es > + add ax,#32 > + mov es,ax > + ret > + > +kill_motor: > + push dx > + mov dx,#0x3f2 > + xor al, al > + outb > + pop dx > + ret > + > +#endasm > + > diff -ruN > ./elks-stuff/elkscmd/bootblocks/minix_elks.sym > ./elks/elkscmd/bootblocks/minix_elks.sym > --- ./elks-stuff/elkscmd/bootblocks/minix_elks.sym > 1969-12-31 19:00:00.000000000 -0500 > +++ ./elks/elkscmd/bootblocks/minix_elks.sym > 2004-05-09 13:36:50.000000000 -0400 > @@ -0,0 +1,26 @@ > ++ 00000B00 ----- $start > ++ 00000C19 ----- $end > +0 00000B72 ---A- EOS > +0 00000B42 ---A- aint_elks > +0 00000BBE ---A- boot_it > +0 00000B73 ---A- code > +0 00000BF8 ---A- copy_sect > +0 00000B64 ---A- dispmsg > +0 00000B55 ---A- elks_name > +0 00000C10 ---A- kill_motor > +0 00000BD6 ---A- looping > +0 00000BE1 ---A- looping2 > +0 00000700 ---A- minix__loadprog > +0 000006FE ---A- minix_bootblock_magic > +0 00000542 ---A- minix_bootfile > +0 0000053E ---A- minix_codestart > +0 00000540 ---A- minix_dinode > +0 0000050B ---A- minix_dosfs_stat > +0 00000B00 ---A- minix_helper > +0 00000F00 ---A- minix_helper_end > +0 0000053E ---A- minix_inode > +0 00000400 ---A- minix_size > +0 00000500 ---A- minix_start > +0 00000B1B ---A- msg_p2 > +0 00000B33 ---A- msg_p3 > +0 00000BAB ---A- not_elks > > diff -ruN > ./elks-stuff/elkscmd/rootfs_template/dev/MAKEDEV > ./elks/elkscmd/rootfs_template/dev/MAKEDEV > --- ./elks-stuff/elkscmd/rootfs_template/dev/MAKEDEV > 2004-05-28 16:02:01.000000000 -0400 > +++ ./elks/elkscmd/rootfs_template/dev/MAKEDEV > 1969-12-31 19:00:00.000000000 -0500 > @@ -1,264 +0,0 @@ > -#!/bin/sh > - > -# Devices are generated by this script in the same > order that they are listed > -# in the Documentation/devices.txt file in the Linux > 2.4.18 and5.21 kernel > -# sources. This includes devices that are not > currently relevant to ELKS, to > -# encourage the use of common node numbers when these > devices are eventually > -# implemented. > -# > -# Where different node numbers are currently used by > ELKS, the current ELKS > -# node numbers are generated by lines labelled > "Currently" and the relevant > -# Linux node numbers are generated by lines labelled > "Ought to be". > -# > -# Refer to the MAKESET command, also in this > directory, for usage details. > - > -LINK=/bin/ln > -MKDEV=/bin/mknod > -MKSET=/dev/MAKESET > - > -############################################################################## > -# Ensure required auxilliary script is present. > - > -if ! /bin/test -f "$MKSET" > -then > - echo ERROR: \"$MKSET\" script missing, unable to > continue. > - exit 1 > -fi > - > -############################################################################## > -# Create memory devices. > - > - $MKDEV mem c 1 1 > - $MKDEV kmem c 1 2 > - $MKDEV null c 1 3 > -# $MKDEV port c 1 4 > - $MKDEV zero c 1 5 > -# $MKDEV core c 1 6 > - $MKDEV full c 1 7 > -# $MKDEV random c 1 8 > -# $MKDEV urandom c 1 9 > -# $MKDEV aio c 1 10 > - > -############################################################################## > -# RAM disks. > - > - $MKSET 0 7 $MKDEV ram b 1 > - > - $LINK ram1 ramdisk > - > -############################################################################## > -# Pseudo-TTY master devices. These are not yet > supported by the ELKS kernel. > - > -# $MKSET 0 15 $MKDEV ptyp x 2 > -# $MKSET 16 15 $MKDEV ptyq x 2 > -# $MKSET 32 15 $MKDEV ptyr x 2 > -# $MKSET 48 15 $MKDEV ptys x 2 > -# $MKSET 64 15 $MKDEV ptyt x 2 > -# $MKSET 80 15 $MKDEV ptyu x 2 > -# $MKSET 96 15 $MKDEV ptyv x 2 > -# $MKSET 112 15 $MKDEV ptyw x 2 > -# $MKSET 128 15 $MKDEV ptyx x 2 > -# $MKSET 144 15 $MKDEV ptyy x 2 > -# $MKSET 160 15 $MKDEV ptyz x 2 > -# $MKSET 176 15 $MKDEV ptya x 2 > -# $MKSET 192 15 $MKDEV ptyb x 2 > -# $MKSET 208 15 $MKDEV ptyc x 2 > -# $MKSET 224 15 $MKDEV ptyd x 2 > -# $MKSET 240 15 $MKDEV ptye x 2 > - > -############################################################################## > -# Floppy diskettes. Only the auto-detect nodes are > listed. > - > - $MKDEV fd0 b 3 128 # Currently. > - $MKDEV fd1 b 3 192 # Currently. > - > -# $MKSET 0 3 $MKDEV fd b 2 # Ought to be. > - > -############################################################################## > -# Pseudo-TTY master devices. These are not yet > supported by the ELKS kernel. > - > -# $MKSET 0 15 $MKDEV ttyp x 3 > -# $MKSET 16 15 $MKDEV ttyq x 3 > -# $MKSET 32 15 $MKDEV ttyr x 3 > -# $MKSET 48 15 $MKDEV ttys x 3 > -# $MKSET 64 15 $MKDEV ttyt x 3 > -# $MKSET 80 15 $MKDEV ttyu x 3 > -# $MKSET 96 15 $MKDEV ttyv x 3 > -# $MKSET 112 15 $MKDEV ttyw x 3 > -# $MKSET 128 15 $MKDEV ttyx x 3 > -# $MKSET 144 15 $MKDEV ttyy x 3 > -# $MKSET 160 15 $MKDEV ttyz x 3 > -# $MKSET 176 15 $MKDEV ttya x 3 > -# $MKSET 192 15 $MKDEV ttyb x 3 > -# $MKSET 208 15 $MKDEV ttyc x 3 > -# $MKSET 224 15 $MKDEV ttyd x 3 > -# $MKSET 240 15 $MKDEV ttye x 3 > - > -############################################################################## > -# Direct IDE disks, Primary channel. > - > - $MKSET 0 63 $MKDEV hda d 5 # Currently. > - $MKSET 64 63 $MKDEV hdb d 5 # Currently. > - > -# $MKSET 0 63 $MKDEV hda d 3 # Ought to be. > -# $MKSET 64 63 $MKDEV hdb d 3 # Ought to be. > - > -############################################################################## > -# Virtual consoles. Note that tty4 through tty7 can't > be enabled at this > -# time because of the possible conflict with ttyS0 > through ttyS3 which > -# used to use the node numbers these now use. > However, it is expected that > -# this restriction can be removed in the near future. > - > - $MKSET 0 3 $MKDEV tty c 4 # Currently > -# $MKSET 0 15 $MKDEV tty c 4 # Soon to be > - > -# Serial ports, as detected by the ROM BIOS. > - > - $MKSET 64 3 $MKDEV ttyS c 4 > - > -############################################################################## > -# Alternate TTY devices. These are not yet supported. > - > -# $MKDEV tty c 5 0 > -# $MKDEV console c 5 1 > -# $MKDEV ptmx c 5 2 > - > -############################################################################## > -# Parallel devices, as detected by the ROM BIOS. > - > - $MKSET 0 3 $MKDEV lp c 6 > - > -############################################################################## > -# Loopback devices. These are not yet supported. > - > -# $MKSET 0 15 $MKDEV loop c 7 > - > -############################################################################## > -# SCSI disks. These are not yet supported. > - > -# $MKSET 0 15 $MKDEV sda d 8 > -# $MKSET 16 15 $MKDEV sdb d 8 > -# $MKSET 32 15 $MKDEV sdc d 8 > -# $MKSET 48 15 $MKDEV sdd d 8 > -# $MKSET 64 15 $MKDEV sde d 8 > -# $MKSET 80 15 $MKDEV sdf d 8 > -# $MKSET 96 15 $MKDEV sdg d 8 > -# $MKSET 112 15 $MKDEV sdh d 8 > -# $MKSET 128 15 $MKDEV sdi d 8 > -# $MKSET 144 15 $MKDEV sdj d 8 > -# $MKSET 160 15 $MKDEV sdk d 8 > -# $MKSET 176 15 $MKDEV sdl d 8 > -# $MKSET 192 15 $MKDEV sdm d 8 > -# $MKSET 208 15 $MKDEV sdn d 8 > -# $MKSET 224 15 $MKDEV sdo d 8 > -# $MKSET 240 15 $MKDEV sdp d 8 > - > -############################################################################## > -# SCSI tapes. These are not yet supported. > - > -# $MKSET 0 31 $MKDEV st c 9 > -# $MKSET 32 31 $MKDEV st c 9 l > -# $MKSET 64 31 $MKDEV st c 9 m > -# $MKSET 96 31 $MKDEV st c 9 a > -# $MKSET 128 31 $MKDEV nst c 9 > -# $MKSET 160 31 $MKDEV nst c 9 l > -# $MKSET 192 31 $MKDEV nst c 9 m > -# $MKSET 224 31 $MKDEV nst c 9 a > - > -############################################################################## > -# Metadisk (RAID) devices. These are not yet > supported. > - > -# $MKSET 0 15 $MKDEV md b 9 > - > -############################################################################## > -# SCSI CD-ROM devices. These are not yet supported. > - > -# $MKSET 0 15 $MKDEV scd b 11 > - > -############################################################################## > -# MSCDEX CD-ROM devices. These are not yet supported. > - > -# $MKSET 0 15 $MKDEV doscd b 12 > - > -############################################################################## > -# 8-bit MFM/RLL controllers. These are not yet > supported. > - > -# $MKSET 0 63 $MKDEV xda b 13 > -# $MKSET 64 63 $MKDEV xdb b 13 > - > -############################################################################## > -# BIOS hard disks. > - > - $MKSET 0 63 $MKDEV bda d 3 # Currently > - $MKSET 64 63 $MKDEV bdb d 3 # Currently > - $MKSET 128 63 $MKDEV bdc d 3 # Currently > - $MKSET 192 63 $MKDEV bdd d 3 # Currently > - > -# $MKSET 0 63 $MKDEV bda d 14 # Ought to be > -# $MKSET 64 63 $MKDEV bdb d 14 # Ought to be > -# $MKSET 128 63 $MKDEV bdc d 14 # Ought to be > -# $MKSET 192 63 $MKDEV bdd d 14 # Ought to be > - > -############################################################################## > -# Joysticks. These are not yet supported. > - > -# $MKSET 0 15 $MKDEV js c 15 > -# $MKSET 128 15 $MKDEV djs c 15 > - > -############################################################################## > -# Generic SCSI devics. These are not yet supported. > - > -# $MKSET 0 15 $MKDEV sg c 21 > - > -############################################################################## > -# Direct IDE disks, Secondary channel. These are not > yet supported. > - > -# $MKSET 0 63 $MKDEV hdc d 22 > -# $MKSET 64 63 $MKDEV hdd d 22 > - > -############################################################################## > -# Direct IDE disks, Tertiary channel. These are not > yet supported. > - > -# $MKSET 0 63 $MKDEV hde d 33 > -# $MKSET 64 63 $MKDEV hdf d 33 > - > -############################################################################## > -# Z80-SIO devices. These are not yet supported. > - > -# $MKSET 0 7 $MKDEV scc c 34 > - > -############################################################################## > -# Direct IDE disks, Quaternary channel. These are not > yet supported. > - > -# $MKSET 0 63 $MKDEV hde d 34 > -# $MKSET 64 63 $MKDEV hdf d 34 > - > -############################################################################## > -# Direct IDE disks, Quinternary channel. These are > not yet supported. > - > -# $MKSET 0 63 $MKDEV hdg d 56 > -# $MKSET 64 63 $MKDEV hdh d 56 > - > -############################################################################## > -# Direct IDE disks, Quaternary channel. These are not > yet supported. > - > -# $MKSET 0 63 $MKDEV hdi d 57 > -# $MKSET 64 63 $MKDEV hdj d 57 > - > -############################################################################## > -# SCSI Media Changer. These are not yet supported. > - > -# $MKSET 0 15 $MKDEV sch c 86 > - > -############################################################################## > -# I2C bus drivers. These are not yet supported. > - > -# $MKSET 0 7 $MKDEV i2c c 89 > - > -############################################################################## > -# Conrad Electronic Parallel Port Radio Clocks. These > are not yet supported. > - > -# $MKSET 0 1 $MKDEV pcfclock c 181 > - > -############################################################################## > -# EOF. > > diff -ruN > ./elks-stuff/elkscmd/rootfs_template/dev/MAKESET > ./elks/elkscmd/rootfs_template/dev/MAKESET > --- ./elks-stuff/elkscmd/rootfs_template/dev/MAKESET > 2004-05-28 16:02:01.000000000 -0400 > +++ ./elks/elkscmd/rootfs_template/dev/MAKESET > 1969-12-31 19:00:00.000000000 -0500 > @@ -1,48 +0,0 @@ > -#!/bin/sh > - > -if [ $# -lt 6 -o $# -gt 7 ]; then > - echo > - echo "Usage: makeset min count cmd prefix type > major [suffix]" > - echo > - echo "where min is the minor of the first > node to make," > - echo " count is the number of the last > node to make," > - echo " cmd is the command to make a > node," > - echo " prefix is the node name prefix," > - echo " type is the type selector for the > node," > - echo " major is the major number for the > node," > - echo " and suffix is a suffix to append to the > node names." > - echo > - echo "The following type selectors are > supported:" > - echo > - echo " b Block device, all nodes have > numeric suffix." > - echo " d Block device, first node is raw > device without numeric suffix." > - echo > - echo " c Character device with decimal > numeric suffix." > - echo " x Character device with hexadecimal > numeric suffix." > - echo > -else > - N=0 > - while [ $N -le $2 ]; do > - P=`expr $N + $1` > - case ".$5" in > - .b) eval $3 $4$N$7 $5 $6 $P > - ;; > - .c) eval $3 $4$N$7 $5 $6 $P > - ;; > - .d) if [ $N -gt 0 ]; then > - eval $3 $4$N$7 $5 $6 $P > - else > - eval $3 $4$7 $5 $6 $P > - fi > - ;; > - .x) if [ $N -gt 9 ]; then > - R=`echo 123456789abcdef | cut -b $N` > - eval $3 $4$R$7 c $6 $P > - else > - eval $3 $4$N$7 c $6 $P > - fi > - ;; > - esac > - N=`expr $N + 1` > - done > -fi > > diff -ruN ./elks-stuff/elkscmd/sysboot.s > ./elks/elkscmd/sysboot.s > --- ./elks-stuff/elkscmd/sysboot.s 1969-12-31 > 19:00:00.000000000 -0500 > +++ ./elks/elkscmd/sysboot.s 2004-04-19 > 21:56:00.000000000 -0400 > @@ -0,0 +1,82 @@ > + > +! The master boot sector will have setup a stack, > +! this is normally at 0:7c00 down. > +! DS, SS, CS and ES will all have value 0 so the > execution address is 0:7c00 > +! On entry the register SI will be pointer to the > partition entry that > +! this sector was loaded from, DL is the drive. > + > +! Also if it's a standard Master boot DH will be the > head, CX will be the > +! sector and cylinder, BX=7C00, AX=1, DI=7DFE, BP=SI. > There's a reasonable > +! chance that this isn't true though. > + > +! The Master boot itself will have been loaded and > run at $07c00 > +! The BIOS must have setup a stack because interrupts > are enabled > +! Little else can be assumed because DOS doesn`t > assume anything either > + > +sysboot_start: > +j codestart > +nop ! DOS appears to _require_ this to identify an > MSDOS disk!! > + > +.blkb sysboot_start+3-* > +public dosfs_stat > +dos_sysid: .ascii "LINUX" ! System ID > + .byte 0,0,0 > +dosfs_stat: > +dos_sect: .blkw 1 ! Sector size > +dos_clust: .blkb 1 ! Cluster size > +dos_resv: .blkw 1 ! Res-sector > +dos_nfat: .blkb 1 ! FAT count > +dos_nroot: .blkw 1 ! Root dir entries > +dos_maxsect: .blkw 1 ! Sector count (=0 if large FS) > +dos_media: .blkb 1 ! Media code > +dos_fatlen: .blkw 1 ! FAT length > +dos_spt: .blkw 1 ! Sect/Track > +dos_heads: .blkw 1 ! Heads > +dos_hidden: .blkw 2 ! Hidden sectors > + > +! Here down is DOS 4+ and probably not needed for > floppy boots. > + > +dos4_maxsect: .blkw 2 ! Large FS sector count > +dos4_phy_drive: .blkb 1 ! Phys drive > +.blkb 1 ! Reserved > +.blkb 1 ! DOS 4 > + > +floppy_temp: > +dos4_serial: .blkw 2 ! Serial number > +dos4_label: .blkb 11 ! Disk Label (DOS 4+) > +dos4_fattype: .blkb 8 ! FAT type > + > +! > +! This is where the code will be overlaid, the > default is a hang > +.blkb sysboot_start+0x3E-* > +public codestart > +codestart: > + j codestart > + > +! Partition table > +public bootblock_magic > + > +.blkb sysboot_start+0x1BE-* > +partition_1: > +.blkb 8 ! IN,SH,SS,ST,OS,EH,ES,ET > +.blkw 2 ! Linear position (0 based) > +.blkw 2 ! Linear length > +.blkb sysboot_start+0x1CE-* > +partition_2: > +.blkb 8 ! IN,SH,SS,ST,OS,EH,ES,ET > +.blkw 2 ! Linear position (0 based) > +.blkw 2 ! Linear length > +.blkb sysboot_start+0x1DE-* > +partition_3: > +.blkb 8 ! IN,SH,SS,ST,OS,EH,ES,ET > +.blkw 2 ! Linear position (0 based) > +.blkw 2 ! Linear length > +.blkb sysboot_start+0x1EE-* > +partition_4: > +.blkb 8 ! IN,SH,SS,ST,OS,EH,ES,ET > +.blkw 2 ! Linear position (0 based) > +.blkw 2 ! Linear length > + > +.blkb sysboot_start+0x1FE-* > +bootblock_magic: > +.word 0xAA55 > > > > > __________________________________ > Do you Yahoo!? > Friends. Fun. Try the all-new Yahoo! Messenger. > http://messenger.yahoo.com/ > - > To unsubscribe from this list: send the line "unsubscribe linux-8086" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html >