Date: Wed, 03 Jul 1996 21:42:35 -0500 From: Randy Terbush <randy@zyzzyva.com> To: Julian Elischer <julian@ref.tfs.com> Cc: hackers@freebsd.org Subject: Re: New (BIOS) bootblock ?feature? Message-ID: <199607040242.VAA25101@sierra.zyzzyva.com> In-Reply-To: julian's message of Wed, 03 Jul 1996 14:14:03 -0700. <199607032114.OAA01694@ref.tfs.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Sounds like these would be very useful additions. > > do we want to integrate this? > Since I originally ported the bootblocks to freeBSD, I haven't done much > with them.. This is my first real return to the area.. > > I have been askled to make the following patches to the bootblocks, > together with a user-level program to control it...... > > The patches are now complete and working, so I want to know if the gang > thinks I should integrate them to our sources or whether my client should > just keep them separate.. > > Programmable one-time bootstring.. (or many time) > > block 2 (usually untouched if you are using an fdisk block and have not used > the first cylinder (as DOS does) is examined for a magic number, > and if it matches, is examined for the default bootstring > e.g. 2:sd(1,d)/kernel.goofy > > if the "WRITEBACK" option is used, then this string is zero'd out > of block 2 after being read, meaning that should this boot fail, > it will not be tried again the same. > > the second block can contain as many strings (zero separated, each with > a 2 byte magic header ('D','N' ) as can be fit in, with a '0xff' > indicating the end of the strings. > > thus: > > nextboot -f /dev/rwd0 kernel kernel kernel kernel.bak \ > wd(0,d)/kernel wd(0,d)/kernel \ > wd(0,d)/kernel.bak wd(1,a)/kernel > > will try successively each of those kernels on each successive boot. > note: they are NOT tried successively if they do not exist within the > same boot.. > if a kernel does not exist, then after one attempt, > the bootblock will revert to /kernel, as it does now. > > if the WRITEBACK feature is not enabled, then the first entry is used > only, as the system doesn't know it has already used it. > > reason for existance..: > > > 1/ remote booting an experimental kernel.. > 2/ upgrading to a different (newer) root partition, but with a fallback > if the install was bad. > 3/ place a dummy bsd part on wd0 and redirect the default boot to sd2 > where the real bsd part is? > > The theory is that the rc script writes the new block back again if and only > if the boot succeeded.. if it didn't then the rc will not have been able to > touch it, and the next string will be used when the system reboots. > > anyway, the install program will not normally install on a block that doesn't > have the magic number already, and will require a special flag > to pre-place the magic number on block 2. It will (possibly) > examing block 1 to ensure that there are no fdisk partitions using block 2. > > thoughts? > > julian
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199607040242.VAA25101>