Commit Graph

31 Commits

Author SHA1 Message Date
John Baldwin
f9a0145857 Allow boot0cfg to force a PXE boot via boot0 on the next boot.
- Fix boot0 to check for PXE when using the pre-set setting for the
  preferred slice.
- Update boot0cfg to use slice 6 to select PXE.  Accept a 'pxe' argument
  instead of a number for the 's' option as a way to select PXE as well.

Submitted by:	Andrew Boyer  aboyer averesystems
MFC after:	2 weeks
2011-12-20 15:19:29 +00:00
Kevin Lo
de028133d4 Plug fd leaks 2011-11-23 10:27:18 +00:00
Andrey V. Elsukov
7411f128dd Reorganize write_mbr() function to be able write bootcode with different
ways. Improve error reporting and also fix indenting.
Now we are trying to write bootcode:
 1. Directly to provider (if we can open it for writing);
 2. Via GEOM_PART (if it is available);
 3. Via GEOM_MBR.

MFC after:	2 weeks
2011-11-07 09:21:18 +00:00
Ed Schouten
e052b60b87 Mark global functions and/or variables in boot0cfg(8) static where possible.
This allows compilers and static analyzers to do more thorough analysis.
2011-11-06 19:01:35 +00:00
Andrey V. Elsukov
9f772ce219 Fix argument name. This fixes EINVAL when boot0cfg uses GEOM_PART'
control interface.

MFC after:	3 days
2011-10-25 04:15:45 +00:00
Rebecca Cran
20016815e5 Revert r209469: it causes the rest of the function to be bypassed.
Reported by: ae
2010-12-06 11:37:24 +00:00
Rebecca Cran
fdf78c2272 If a device can't be opened, don't keep going but display the error
returned from open() and quit.

PR: bin/81035
Submitted by: Peter Schuller <peter.schuller at infidyne.com>
Approved by: rrs (mentor)
2010-06-23 14:28:08 +00:00
Marcel Moolenaar
a565cc2897 Write the MBR by using the bootcode verb of the gpart class.
The "write MBR" verb is kept for backward compatibility, but
the DIOCSMBR ioctl has been removed.
2009-03-02 04:35:52 +00:00
Luigi Rizzo
ae3096705c Another, hopefully final set of changes to boot0 and boot0cfg.
boot0.S changes:

+ import a patch from Christoph Mallon to rearrange the various
  print functions and save another couple of bytes;

+ implement the suggestion in PR 70531 to enable booting from
  any valid partition because even the extended partitions that
  were previously in our kill list may contain a valid boot loader.
  This simplifies the code and saves some bytes;

+ followwing up PR 127764, implement conditional code to preserve
  the 'Volume ID' which might be used by other OS (NT, XP, Vista)
  and is located at offset 0x1b8. This requires a relocation of the
  parameter block within the boot sector -- there is no other
  possible workaround.
  To address this, boot0cfg has been updated to handle both
  versions of the boot code;

+ slightly rearrange the strings printed in the menus to make
  the code buildable with all options. Given the tight memory
  budget, this means that with certain options we need to
  shrink or remove certain labels.

and especially:

	make -DVOLUME_LABEL -DPXE the default options.

  This means that the newly built boot0 block will preserve the
  Volume ID, and has the (hidden) option F6 to boot from INT18/PXE.
  I think the extra functionality is well worth the change.

  The most visible difference here is that the 'Default: ' string
  now becomes 'Boot: ' (it can be reverted to the old value
  but then we need to nuke 1/2 partition name or entries to
  make up for the extra room).

boot0cfg changes:

+ modify the code to recognise the new boot0 structure (with the
  relocated options block to make room for the Volume id).

+ add two options, '-i xxxx-xxxx' to set the volume ID, -e c
  to modify the character printed in case of bad input

PR:		127764 70531
Submitted by:	Christoph Mallon (portions)
MFC after:	4 weeks
2008-12-03 14:53:59 +00:00
Ulf Lilleengen
bd5add5884 - Improve error message given on g_providername call failure.
- While there, make error messages consistent with the rest.

Approved by:	kib (mentor)
2008-09-30 07:18:49 +00:00
Ulf Lilleengen
b31e5ae243 - Make use of the new and g_device_path utility function in libgeom to avoid
duplication of code in fdisk and boot0cfg. Also make use of g_providername to
  fix an issue with fdisk and boot0cfg not using the correct provider when
  writing the MBR.

Reviewed by:	phk
Approved by:	pjd (mentor)
2008-09-07 13:58:35 +00:00
Poul-Henning Kamp
dfa5ad9421 Attempt gctl verb "write MBR" when updating.
This should solve the problem of modifying the MBR while running.
2005-07-15 08:04:32 +00:00
Poul-Henning Kamp
5679e1ac37 Open device R/W for ioctl modifications. 2004-12-18 11:04:10 +00:00
Tor Egge
03234cabb7 Correct polarity of packet mode bit.
Problem discovered when 'boot0cfg -B -v -o packet -s 2 ad4' turned off
packet mode while reporting it as being enabled.
2004-09-14 21:58:30 +00:00
David E. O'Brien
3d862ddd11 Enable packet mode by default. Disk drives have gotten so large now,
it is often the case the partition one wants to boot is above cylinder 1023.
2004-08-03 15:20:55 +00:00
Stefan Farfeleder
a752604477 Remove spurious semicolons. Outside of functions they are actually errors but
GCC doesn't warn about them without -pedantic.

Approved by:	das (mentor)
PR:		56649
Reviewed by:	md5
2004-05-16 22:08:17 +00:00
David E. O'Brien
b728350ee6 Use __FBSDID over rcsid[]. Protect copyright[] where needed. 2003-05-03 21:06:42 +00:00
Poul-Henning Kamp
23db6b2998 Use the new sector0 munging ioctls to make boot0cfg work under GEOM. 2002-12-29 15:01:58 +00:00
Poul-Henning Kamp
3bb24c35f2 Split MBR and PC98 on-disk sliceformats out from disklabel.h, step 1:
Peter had repocopied sys/disklabel.h to sys/diskpc98.h and sys/diskmbr.h.

These two new copies are still intact copies of disklabel.h and
therefore protected by #ifndef _SYS_DISKLABEL_H_ so #including them
in programs which already include <sys.disklabel.h> is currently a
no-op.

This commit adds a number of such #includes.

Once I have verified that I have fixed all the places which need fixing,
I will commit the updated versions of the three #include files.

Sponsored by:   DARPA & NAI Labs.
2002-10-01 07:24:55 +00:00
Mike Heffner
50483cb4b4 WARNS=2 cleanup.
Submitted by:	Maxime Henrion <mux@qualys.com>
MFC after:	2 weeks
2001-12-11 06:44:29 +00:00
Ian Dowse
bae528bab5 Add missing specification of the `-s' option to the usage line.
PR:		bin/26004
Submitted by:	ushida@msa.biglobe.ne.jp
Reviewed by:	rnordier
2001-03-22 22:55:13 +00:00
David Malone
81e309b71b Allow people to set the default boot slice with boot0cfg.
PR:		18923
Submitted by:	Ian Dowse <iedowse@maths.tcd.ie>
Reviewed by:	jhb
Approved by:	rnordier
2000-08-17 18:42:13 +00:00
John Baldwin
c5dc421f98 - When we save the existing MBR to a file, check to see if the MBR we are
saving is boot0.  If it is, use its version number so that we can grab
  all of boot0 (1024 bytes with version 1.1 for example) when we save it
  to a file via the 'f' option.  Otherwise, we just save the first sector.
- Cleanup this code a bit by splitting some functionality out into separate
  functions.

Suggested by:	Patrick Bihan-Faou <patrick@mindstep.com> (1)
2000-07-13 23:05:05 +00:00
John Baldwin
226ae6ffd3 Update boot0cfg to handle the new boot0:
- Allow for boot0 to be more than one sector long.  However, ensure that it
  its length is a multiple of the sector length.
- Change the signatures used to determine a valid boot0 as some of the
  signature code changed.
- Use the old signature to detect version 1.0 of boot0, otherwise read the
  version number from boot0 itself.
2000-07-12 18:15:06 +00:00
Peter Wemm
97d92980a9 $Id$ -> $FreeBSD$ 1999-08-28 01:35:59 +00:00
Robert Nordier
d1306cd89d Check that we really have a boot0 mbr before treating it as one.
Suggested by: peter

Also add a few comments.
1999-06-22 18:57:49 +00:00
Robert Nordier
0fdf16a301 Ensure that an update takes place when the -m option is used. 1999-06-21 14:40:59 +00:00
Robert Nordier
5868a099d9 Implement -m option to enable/disable slices. 1999-06-19 21:44:43 +00:00
Robert Nordier
ee6fb785cd Finish implementing "setdrv" option. This is intended to be used
(with care) in those instances where boot0 is not passed the
correct drive number by the PC BIOS.  (The symptoms are a
"F5   Drive 0" line, even though the current drive is drive 0.)
1999-02-26 14:57:17 +00:00
Robert Nordier
ed720ec3dc Make various minor corrections. 1999-02-22 09:36:54 +00:00
Robert Nordier
0b654f60a9 Add boot0cfg: this installs/configures the `boot0' boot manager. A
CLI utility to do this has been requested by a few people.
1999-02-21 21:23:42 +00:00