Up to [cvs.NetBSD.org] / src / usr.sbin / installboot
Request diff between arbitrary revisions
Keyword substitution: kv
Default branch: MAIN
Pull up following revision(s) (requested by tsutsui in ticket #722): sys/fs/cd9660/cd9660_util.c: revision 1.16 sys/arch/hp300/stand/common/clock.c: revision 1.14 sys/arch/hp300/stand/common/scsireg.h: revision 1.5 sys/arch/hp300/stand/common/scsireg.h: revision 1.6 sys/arch/hp300/stand/Makefile.buildboot: revision 1.38 sys/arch/hp300/include/bus.h: revision 1.23 sys/arch/hp300/stand/Makefile.buildboot: revision 1.39 sys/arch/hp300/stand/common/sd.c: revision 1.12 sys/arch/hp300/stand/common/prf.c: revision 1.6 sys/arch/hp300/stand/common/sd.c: revision 1.13 usr.sbin/installboot/installboot.8: revision 1.106 usr.sbin/installboot/Makefile: revision 1.59 sys/arch/hp300/stand/common/devopen.c: revision 1.14 usr.sbin/installboot/installboot.8: revision 1.107 sys/arch/hp300/stand/common/ite_dumb.c: revision 1.2 sys/arch/hp300/stand/common/devopen.c: revision 1.15 usr.sbin/installboot/installboot.8: revision 1.108 sys/fs/cd9660/cd9660_extern.h: revision 1.29 usr.sbin/installboot/installboot.8: revision 1.109 tools/Makefile.nbincludes: revision 1.11 (patch) sys/arch/hp300/dev/rboxreg.h: revision 1.3 sys/arch/hp300/stand/common/scsivar.h: revision 1.5 sys/arch/hp300/dev/dnkbd.c: revision 1.14 sys/arch/hp300/hp300/trap.c: revision 1.156 sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.12 sys/arch/hp300/dev/frodoreg.h: revision 1.6 sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.13 sys/arch/hp300/stand/common/ite_sti.c: revision 1.2 sys/arch/hp300/stand/common/hil.c: revision 1.15 usr.sbin/installboot/arch/hp300.c: revision 1.18 sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.14 sys/arch/hp300/dev/rbox.c: revision 1.4 usr.sbin/installboot/arch/hp300.c: revision 1.19 sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.15 sys/sys/bootblock.h: revision 1.59 sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.16 usr.sbin/installboot/installboot.h: revision 1.44 sys/arch/hp300/stand/mkboot/volhdr.h: file removal sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.17 sys/arch/hp300/dev/hpib.c: revision 1.45 usr.sbin/installboot/installboot.h: revision 1.45 usr.sbin/installboot/cd9660.c: revision 1.1 sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.18 sys/arch/hp300/dev/topcatreg.h: revision 1.3 usr.sbin/installboot/cd9660.c: revision 1.2 sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.19 sys/arch/hp300/stand/inst/inst.c: revision 1.25 sys/arch/hp300/stand/uboot/Makefile: revision 1.12 sys/arch/hp300/dev/dvbox.c: revision 1.4 sys/arch/hp300/dev/dma.c: revision 1.45 sys/arch/hp300/stand/uboot/Makefile: revision 1.13 sys/arch/hp300/stand/common/rd.c: revision 1.16 sys/arch/hp300/stand/inst/Makefile: revision 1.12 distrib/hp300/cdroms/installcd/Makefile: revision 1.4 sys/arch/hp300/stand/mkboot/volhdr.h: revision 1.6 sys/arch/hp300/stand/common/machdep.c: revision 1.16 usr.sbin/installboot/fstypes.c: revision 1.14 sys/arch/hp300/hp300/machdep.c: revision 1.238 sys/arch/hp300/include/cpu.h: revision 1.73 sys/arch/hp300/dev/diofbreg.h: revision 1.4 sys/arch/hp300/stand/common/scsi.c: revision 1.12 sys/arch/hp300/stand/common/netio.c: revision 1.19 sys/arch/hp300/stand/common/scsi.c: revision 1.13 sys/arch/hp300/dev/sti_sgc.c: revision 1.8 sys/arch/hp300/dev/rtc.c: revision 1.22 sys/arch/hp300/stand/mkboot/mkboot.c: revision 1.20 sys/arch/hp300/stand/common/conf.h: revision 1.4 sys/arch/hp300/hp300/autoconf.c: revision 1.111 sys/arch/hp300/stand/common/conf.c: revision 1.15 sys/arch/hp300/stand/mkboot/Makefile: revision 1.12 sys/arch/hp300/stand/mkboot/Makefile: revision 1.13 sys/arch/hp300/hp300/autoconf.c: revision 1.114 sys/arch/hp300/dev/dcmreg.h: revision 1.11 sys/arch/hp300/dev/diofbvar.h: revision 1.4 sys/arch/hp300/dev/dcm.c: revision 1.91 sys/fs/cd9660/cd9660_util.c: revision 1.15 sys/arch/hp300/dev/mcclock_frodo.c: revision 1.2 TAB/space cleanup. installboot(8): formatting improvements Use Ar foo instead of <foo>; this is mdoc. Other formatting tweaks. installboot(8): fix up markup Don't overuse .Sy - when everything is highlighted, nothing is. Use .Ic for options &c to get correct PostScript output (both are bold in plain text). Use Aq Ar inside .Pa, as both Pa and Ar are rendered as underscored text in plain text output, and the distinction is lost. Don't set examples in bold, but give them .Pp space around - they are much easier to read this way. Use consistent -width in FILES. document how to use installboot on netbsd/vax. PR/57909: Jan-Benedict Glaw: Don't include (build) timestamp when doing a reproducible build fix usage string, improve error handling. add missing chunk for repro-build. fix gcc warnings. avoid stringop truncation, fix copyright string to prevent assembler warnings. Fix build as a tool (Jan-Benedict Glaw) Fix integer overflow of strtol(3) for "loadpoint" address on ILP32 hosts. This strtol(3) was introduced in rev 1.12 for PR/57909 after netbsd-10, but it returns LONG_MAX (0x7FFFFFFF) for 0xFFF00000 on ILP32 hosts and the wrong loadpoint causes "NOT ENOUGH MEMORY" error by the BOOTROMs on loading uboot.lif on (at least) my 9000/360 and 9000/425t. Misc cosmetic changes for mostly readability. - KNF and add some newlines per blocks - define and use proper bintobcd() macro - make local functions and variables static The same uboot.lif binaries are generated. Rename ${PROGAOUT} -> ${PROGELF} to reflect reality. Use proper signedness for the LIF file system data structures. Ancient 4.3BSD used short and int for location, file size, file type, and addresses etc. but all of them should be unsigned. Also rename several variables and add comments for readability. The LIF file system info can be found in "The HPDir Project" page: https://www.hp9845.net/9845/projects/hpdir/ The same uboot.lif binaries are generated. Add a preliminary CD boot support to uboot for preparation of PR/54455. Briefly tested on mame, but not enalbed yet. Recognize SCSI CD-ROM devices as a booted device properly. Necessary for PR port-hp300/54455, to boot an md root root RAMDISK kernel from CD-ROM without "WARNING: can't find match for bootdev:" prompt. Sync with src/sys/arch/hp300/stand/mkboot/volhdr.h rev 1.6. https://mail-index.netbsd.org/source-changes/2024/05/07/msg151195.html Use proper signedness for the LIF file system data structures. mkboot should use this MI <sys/bootblock.h> and volhdr.h should be removed soon. Use MI <sys/bootblock.h> to refer LIF filesystem structures. This should have been done when LIF definitions were initially added to <sys/bootblock.h> for MI installboot(8). Enable SUPPORT_CD on uboot. Make cd9660_util.c usable in userland tools like installboot(8). This was partially done for src/distrib/cdrom/macppc_installboot, but more strict prototypes are necessary for native binary builds. Install cd9660 related system headers for tools installboot(8) builds. Reorder function prototypes per source files. Add cd9660 support to search a bootloader file in the target file system. Also add CD boot support for hp300, using a bootloader file in cd9660 fs. This is a tool's part to close PR/54455. HP 9000/300 machines read LIF directory entry allocated after the LIF volume header at the top of the boot disk during bootstrap, and a bootstrap file must be contiguously allocated on the disk due to limitation of the LIF specification. Current NetBSD/hp300's bootloader is larger than ~80KB so we have to prepare a special 'boot' partition for FFS (that has only 8KB (ffsv1) or 32KB (ffsv2) spaces) disks to put such a large bootloader. On the other hand, on ISO9660 fs all files are allocated contiguously so we can specify a bootloader file in the target ISO9660 directly in the LIF directory entry. Note we can simply use the existing "append" option to create bootable CD ISO for hp300, but it looks some emulators (at leaset MAME) reject such non-standard ISO files, i.e. with an appended bootloader file at the end of the image. Put a RAMDISK kernel and SYS_UBOOT into hp300 installcd to make it bootable. This should finally close PR/54455. Fix tools build errors on Cygwin. Appease warnings on building tools/installboot on Cygwin.
Remove no-op emips stuff. It seems blindly copied and modified from pmax, but emips bootloader can be specified by "Ml40x_2ace.plx" config file on the Giano simulator. (not sure what on the real Xilinx ML401 board, but maybe hardcoded)
Add cd9660 support to search a bootloader file in the target file system. Also add CD boot support for hp300, using a bootloader file in cd9660 fs. This is a tool's part to close PR/54455. HP 9000/300 machines read LIF directory entry allocated after the LIF volume header at the top of the boot disk during bootstrap, and a bootstrap file must be contiguously allocated on the disk due to limitation of the LIF specification. Current NetBSD/hp300's bootloader is larger than ~80KB so we have to prepare a special 'boot' partition for FFS (that has only 8KB (ffsv1) or 32KB (ffsv2) spaces) disks to put such a large bootloader. On the other hand, on ISO9660 fs all files are allocated contiguously so we can specify a bootloader file in the target ISO9660 directly in the LIF directory entry. Note we can simply use the existing "append" option to create bootable CD ISO for hp300, but it looks some emulators (at leaset MAME) reject such non-standard ISO files, i.e. with an appended bootloader file at the end of the image.
Reorder function prototypes per source files.
usr.sbin/installboot: Add a command line option (-u) to set U-Boot search paths Installboot can install U-Boot boot blocks directly into a system image. Normally, the U-Boot files are searched for in /usr/pkg/share/u-boot, under the expectation that most people will build them with pkgsrc. However, it is also possible to set an environment variable (INSTALLBOOT_UBOOT_PATHS) to a colon-separated search path to accommodate other situations. This commit adds a command line option (-u) to set the search path; if present, it overrides the environment and default.
Pull up following revision(s) (requested by mrg in ticket #1678): bin/pax/options.c: revision 1.119 usr.bin/config/scan.l: revision 1.32 usr.bin/make/main.c: revision 1.274 bin/pax/extern.h: revision 1.60 usr.bin/config/defs.h: revision 1.106 usr.bin/make/make.h: revision 1.105 sbin/newfs_udf/udf_create.c: revision 1.27 (patch) sbin/newfs_udf/newfs_udf.h: revision 1.7 (patch) usr.bin/config/main.c: revision 1.100 usr.sbin/installboot/Makefile: revisions 1.53,1.54 (patch) usr.sbin/installboot/installboot.h: revision 1.41 (patch) usr.sbin/installboot/machines.c: revisisons 1.41,1.42 (patch) Avoid depending on common symbols.
Add evbmips support for u-boot handling.
Mostly merge changes from HEAD upto 20200411
Pull up following revision(s) (requested by kamil in ticket #67): usr.sbin/installboot/installboot.h: revision 1.41 Add missing extern declaration of ib_mach_emips in installboot Change added for the consistency with the existing code.
Add missing extern declaration of ib_mach_emips in installboot Change added for the consistency with the existing code.
Sync with HEAD
Add installboot(8) support for evbarm (and, in the future, other evb*) boards that use u-boot. A known board database lists boards and their respective u-boot packages. u-boot packages are discovered at run-time (in /usr/pkg/share/u-boot, by default). These packages contain board database overlays that describe u-boot installation procedure that's specific for that board. Support this as a native tool and as a host tool. The native tool will attempt to determine the running board type using OpenFirmware calls. Host tool and native tool alike may also specify a board type directly using the "-o board=xxx option" or have installboot(8) determine the board type from a device tree blob using "-o dtb=/path/to/board.dtb". A "-o media=xxx" option is provided for boards that have different u-boot binaries and/or installation procedures for different media types (e.g. SDMMC, eMMC, or USB). This is trivial to extend to other evb* platforms that use u-boot, even if they don't use FDT for autoconfiguration.
Rebase to HEAD as of a few days ago.
sync with head. for a reference, the tree before this commit was tagged as yamt-pagecache-tag8. this commit was splitted into small chunks to avoid a limitation of cvs. ("Protocol error: too many arguments")
Rename NetBSD/hp700 to NetBSD/hppa. Unfortunately our VCS isn't very helpful here.
Catchup with rmind-uvmplock merge.
A small bit of constification
On i386/amd64, define two flag bits in the boot parameters which control whether modules are loaded and whether boot.cfg is evaluated, and set both to "off" per default in the PXE bootloader. Extend "installboot" to toggle the bits. This way, pxeboot works with existing dhcp server setups (and as described in the manpage) out of the box. Also, boot.cfg reading involves a stat() call which is horribly inefficient with the TFTP pseudo file system.
Add a sectorsize parameter member in struct ib_params and use it where sector size (disk block size) is required, instead of DEV_BSIZE constant which means device I/O block size. "Looks reasonable" from dholland@, and fixes tools installboot(8) on Cygwin where DEV_BSIZE != 512 as mentioned in PR toolchain/42555.
sync with head.
Remove clause 3 and 4 from TNF licenses
sync with HEAD
Add a findstage2 function (which returns block numbers where the secondary boot is stored to embed them into the primary bootxx) for ext2fs. Currently disabled because there is no primary boot block which supports ext2fs, but it might help someone in some day.
Add a -f (force) parameter to installboot(8). If specified then checks on the disks BPB are not done, and any existing BPB is deleted. This is needed soince newfs(8) doesn't overwrite the BPB - which is basically the FAT superblock. Update documentation and add an example of using bootxx_fat16.
Pull up following revision(s) (requested by bad in ticket #1524): usr.sbin/installboot/installboot.8: revision 1.54 via patch usr.sbin/installboot/installboot.h: revision 1.31 usr.sbin/installboot/fstypes.c: revision 1.9 usr.sbin/installboot/ffs.c: revision 1.19 Add support for finding files on RAID partitions. This allows us to add the block list of the 2nd stage boot loader to the 1st stage boot loader when the partition is a RAID partition. Tested on sparc. Reviewed by gdt.
NetBSD/landisk support.
Add support for finding files on RAID partitions. This allows us to add the block list of the 2nd stage boot loader to the 1st stage boot loader when the partition is a RAID partition. Tested on sparc. Reviewed by gdt.
Best to declare these structures 'extern' ...
Move the MD definitions into the MD files, leaving machines.c with just a list of the supported machines.
Add ews4800mips support.
Add a -e (edit) option to allow the bootstrap options of an installed bootstrap or a file containing such a bootstrap to be changed/displayed. In particular this will (soon) let you modify the parameters for pxeboot.
add hp700 support.
Add an option to set bp_consaddr (serial console IO port address) Only complain about small patch area if we would write something non-zero there.
Add a -o keymap=zyz option that will set the boot keymap. If a character in the map is typed, it gets replaced by the one following.
First cut of hp300 installboot, seems to DTRT on i386. Maybe this code ought to know how to add a file to the LIF filesystem.
add next68k support to installboot
Overhaul how `build.sh tools' are used: * Rename "config.h" to "nbtool_config.h" and HAVE_CONFIG_H to HAVE_NBTOOL_CONFIG_H. This makes in more obvious in the source when we're using tools/compat/config.h versus "standard autoconf" config.h * Consistently move the inclusion of nbtool_config.h to before <sys/cdefs.h> so that the former can provide __RCSID() (et al), and there's no need to protect those macros any more. These changes should make it easier to "tool-ify" a program by adding: #if HAVE_NBTOOL_CONFIG_H #include "nbtool_config.h" #endif to the top of the source files (for the general case).
Explicitly pull in <sys/endian.h> #if !defined(HAVE_CONFIG_H). (I prefer to be explicit about this, since installboot uses the endian macros a lot)
Change the way -o options are parsed, now done in MI code with a check after all the options have been processed that they are supported my the specific system. Add i386 MD options (console, password, speed and timeout) (Approved by christos and lukem)
Add support for i386 boot code - for new bootxx stuff
Add support for UFS2. UFS2 is an enhanced FFS, adding support for 64 bit block pointers, extended attribute storage, and a few other things. This commit does not yet include the code to manipulate the extended storage (for e.g. ACLs), this will be done later. Originally written by Kirk McKusick and Network Associates Laboratories for FreeBSD.
Add support for amiga.
correct comment
Add x68k stuff.
- use uint8_t instead of char for boot block blobs - bbinfo_params: - replace "int littleendian" with "bbinfo_endian endian" - add comments - shared_bbinfo_clearboot(): - add callback method to shared_bbinfo_clearboot() - don't clear from 0..headeroffset; use a callback to do that - add news68k and newsmips support. From Izumi Tsutsui <tsutsui@ceres.dti.ne.jp>, with a rework by me to take advantage of the new shared_bbinfo_clearboot() callback. (XXX: untested yet)
bootblock.h: - unify sparc_bbinfo (1064 bytes, with 256 block entries) and sun68k_bbinfo (296 byte, with 64 block entries) into shared_bbinfo (512 bytes, with 118 block entries), which will be also shared by future bbinfo-using platforms (including macppc) - add datestamp to *_BBINFO_MAGIC strings, to prevent installboot vs bootxx version skew. - add macppc support */bootxx.c: - migrate to new shared_bbinfo structure installboot: - add macppc support (still needs applepartmap support and testing) - improve and add some more warnings & errors to installboot - implement shared_bbinfo_clearboot() and shared_bbinfo_setboot(), which perform the majority of the work for bbinfo-using back-ends (rather than replicating that across multiple back-ends).
- add fsstat (fstat(2) on fsfd) and s1stat (fstat(2) on s1fd) in ib_params, and use instead of replicating the effort in various locations - if filesystem is not a regular file, use sync(2) instead of fsync(2) after the bootstrap has been written - move <sys/stat.h> and <stdint.h> into "installboot.h"
pull in <sys/bootblock.h> in "installboot.h" instead of in arch/*.c (and remove <dev/dec/dec_boot.h>, since <sys/bootblock.h> has that stuff now)
user visible stuff: - add `-B s2bno', to provide the starting block for the secondary bootstrap. intended for use on platforms where the blocks of the stage2 bootstrap are hardcoded into the stage1 bootstrap (currently: sparc, sun2) - don't support `-b s1bno' for sparc or sun2, since the primary is always at a fixed location on the disk. - if `filesystem' is a regular file, use fsync(2) instead of sync(2) code changes: - add hardcode_stage2(), which uses -B s2bno and the size of the provided secondary bootstrap (as an actual file, not as part of the `filesystem' argument) to provide a sequential list of blocks from s2bno, each block being the appropriate file system size (from params->fstype->blocksize) - add blocksize and needswap run-time parameters to ib_fs - in *_match(), set params->fstype->blocksize to the underlying block size (8KB for raw), and params->fstype->needswap as appropriate - rename IB_STARTBLOCK to IB_STAGE1START, and add IB_STAGE2START - use hardcode_stage2() to implement raw_findstage2() and IB_STAGE2BLOCK support for ffs_findstage2() - improve some comments, add some prototypes, ...
Add sparc module.
implement "raw" file system type. this can be used when the primary bootstrap is being installed at a particular block offset and the underlying filesystem doesn't matter (e.g, alpha ustarboot in ustar floppies)
Add sun2 backend from Matthew Fredette. (Implemented with "sun68k.c" as it should eventually support "sun3" as well.)
- Add code from Matt Fredette <fredette@theory.lcs.mit.edu> to implement fstype checking, and back-end "ffs" support. - Consistently use at least uint32_t for blocknumbers (vs. int / long / ...) - Consistently use uintXX_t instead of u_intXX_t. - Move various duplicated prototypes into "installboot.h"
- support optional secondary bootstrap arg for install (unused by existing backends, but future ones need it) - use "bootstrap" instead of "boot block" in various messages where appropriate - rename some members of ib_params
- add no_parseopt(), no_setboot() and no_clearboot() methods for back-ends to use when they don't support a particular method - don't automatically generate machines.c anymore - add entries for i386 (temporarily unsupported) and shark (permanently unsupported)
Pull in config.h as necessary to get byte-order macros etc.
Machine independent "unified" installboot(8). Currently only supports vax, with more MD back-ends to be added RSN.