usr.sbin/installboot: Synchronize on NetBSD-current (30/03/2021 16:09 UTC)

This commit is contained in:
Marcelo Alencar 2021-03-31 18:44:04 -03:00
parent ba797217b8
commit b63e576677
42 changed files with 3639 additions and 300 deletions

View File

@ -2956,6 +2956,11 @@
./usr/share/i18n/iconv base-sysutil-share
./usr/share/i18n/iconv/iconv.dir base-sysutil-share nls
./usr/share/info base-texinfo-share
./usr/share/installboot base-sysutil-share
./usr/share/installboot/evbarm base-sysutil-share
./usr/share/installboot/evbarm/boards.plist base-sysutil-share
./usr/share/installboot/evbmips base-sysutil-share
./usr/share/installboot/evbmips/boards.plist base-sysutil-share
./usr/share/keymaps base-sys-share
./usr/share/keymaps/amiga base-sys-share
./usr/share/keymaps/atari base-sys-share

View File

@ -1115,7 +1115,7 @@
./usr/sbin/groupmod minix-base
./usr/sbin/i2cscan minix-base
./usr/sbin/inetd minix-base
./usr/sbin/installboot_nbsd minix-base
./usr/sbin/installboot minix-base
./usr/sbin/kernel minix-base
./usr/sbin/link minix-base
./usr/sbin/lwresd minix-base
@ -2011,6 +2011,11 @@
./usr/share/info/ld.info minix-base binutils
./usr/share/info/texinfo.info minix-base
./usr/share/info/vi.info minix-base
./usr/share/installboot minix-base
./usr/share/installboot/evbarm minix-base
./usr/share/installboot/evbarm/boards.plist minix-base
./usr/share/installboot/evbmips minix-base
./usr/share/installboot/evbmips/boards.plist minix-base
./usr/share/keymaps minix-base
./usr/share/legal minix-base
./usr/share/legal/COPYRIGHT minix-base

View File

@ -637,7 +637,7 @@
./usr/libdata/debug/usr/sbin/fbdctl.debug minix-debug debug
./usr/libdata/debug/usr/sbin/i2cscan.debug minix-debug debug
./usr/libdata/debug/usr/sbin/inetd.debug minix-debug debug
./usr/libdata/debug/usr/sbin/installboot_nbsd.debug minix-debug debug
./usr/libdata/debug/usr/sbin/installboot.debug minix-debug debug
./usr/libdata/debug/usr/sbin/kernel.debug minix-debug debug
./usr/libdata/debug/usr/sbin/link.debug minix-debug debug
./usr/libdata/debug/usr/sbin/makefs.debug minix-debug debug

View File

@ -3514,7 +3514,7 @@
./usr/man/man8/inet.8 minix-man obsolete
./usr/man/man8/inetd.8 minix-man
./usr/man/man8/init.8 minix-man
./usr/man/man8/installboot_nbsd.8 minix-man
./usr/man/man8/installboot.8 minix-man
./usr/man/man8/intr.8 minix-man
./usr/man/man8/irdpd.8 minix-man obsolete
./usr/man/man8/link.8 minix-man

View File

@ -250,6 +250,9 @@
./usr/share/i18n/esdb/UTF
./usr/share/i18n/iconv
./usr/share/info
./usr/share/installboot
./usr/share/installboot/evbarm
./usr/share/installboot/evbmips
./usr/share/keymaps
./usr/share/kyua-atf-compat
./usr/share/kyua-cli

View File

@ -73,7 +73,7 @@ check_mbr()
read ok
if [ "$ok" = Y -o "$ok" = y -o "$ok" = "" ]
then
installboot_nbsd -m "$disk" /usr/mdec/mbr >/dev/null
installboot -m "$disk" /usr/mdec/mbr >/dev/null
fi
fi
rm temp_mbr_netbsd
@ -547,7 +547,7 @@ test -n "$keymap" && cp -p "/usr/lib/keymaps/$keymap.map" /mnt/etc/keymap
# XXX we have to use "-f" here, because installboot worries about BPB, which
# we don't have...
installboot_nbsd -f /dev/$primary /usr/mdec/bootxx_minixfs3 >/dev/null || exit
installboot -f /dev/$primary /usr/mdec/bootxx_minixfs3 >/dev/null || exit
# give the install the boot loader
cp /usr/mdec/boot_monitor /mnt/
minixdir=/mnt/boot/minix_default

View File

@ -35,6 +35,6 @@ then
fi
echo "Installing bootxx_minixfs3 into $disk."
installboot_nbsd "$disk" "$MDEC/bootxx_minixfs3"
installboot "$disk" "$MDEC/bootxx_minixfs3"
sync

View File

@ -12,7 +12,7 @@ make_hdimage()
# installboot -m needs at least 1KB
dd < /dev/zero >tmpimage count=2
partition -fm tmpimage 2 81:$rootsects* 0:0 81:$usrsects
installboot_nbsd -m tmpimage /usr/mdec/mbr
installboot -m tmpimage /usr/mdec/mbr
dd < tmpimage > subpart count=1
primsects=`expr 1 + $rootsects + $usrsects`
@ -26,7 +26,7 @@ make_hdimage()
dd < /dev/zero count=$padsects
} > hdimage
partition -m hdimage 81:`expr $primsects + $padsects`*
installboot_nbsd -m hdimage /usr/mdec/mbr
installboot -m hdimage /usr/mdec/mbr
}
retrieve()

View File

@ -336,7 +336,7 @@ isosects=`expr $isosects + $isopad`
dd if=$TMPDISKUSR bs=$BS count=$USRBLOCKS ) >m
mv m $IMG
# Make CD partition table
installboot_nbsd -m $IMG /usr/mdec/mbr
installboot -m $IMG /usr/mdec/mbr
# Make sure there is no hole..! Otherwise the ISO format is
# unreadable.
partition -m $IMG 0 81:$isosects 81:$ROOTSECTS 81:$USRSECTS

View File

@ -1,21 +1,29 @@
# $NetBSD: Makefile,v 1.33 2014/08/08 09:34:10 apb Exp $
# $NetBSD: Makefile,v 1.36 2019/05/07 05:02:42 thorpej Exp $
# from @(#)Makefile 8.1 (Berkeley) 6/5/93
# Missing: ms
.include <bsd.own.mk>
#__MINIX: dict doc examples me \
#__MINIX: dict examples me \
# tabset tmac wscons xml
.if ${MKSHARE} != "no" || \
make(clean) || make(cleandir) || make(distclean) || make(obj)
SUBDIR= legal man misc mk \
SUBDIR= installboot legal man misc mk \
terminfo
#__MINIX:
#.if ${MKGROFF} != "no"
#SUBDIR+=doc
#.endif
.if ${MKNLS} != "no"
SUBDIR+=i18n locale nls
.endif
.endif
#__MINIX:
#SUBDIR.roff+= doc
# Speedup stubs for some subtrees that don't need to run these rules
includes-examples includes-man:
@true

View File

@ -0,0 +1,9 @@
# $NetBSD: Makefile,v 1.2 2020/06/21 17:15:51 thorpej Exp $
.include <bsd.own.mk>
.if ${MKSHARE} != "no"
SUBDIR= evbarm evbmips
.endif
.include <bsd.subdir.mk>

View File

@ -0,0 +1,12 @@
# $NetBSD: Makefile,v 1.1 2019/05/07 05:02:42 thorpej Exp $
NOOBJ= # defined
.include <bsd.own.mk>
.if ${MKSHARE} != "no"
FILES= boards.plist
FILESDIR= /usr/share/installboot/evbarm
.endif
.include <bsd.prog.mk>

View File

@ -0,0 +1,507 @@
<!-- $NetBSD: boards.plist,v 1.9 2020/06/21 19:39:11 thorpej Exp $ -->
<!--
Copyright (c) 2019 The NetBSD Foundation, Inc.
All rights reserved.
This code is derived from software contributed to The NetBSD Foundation
by Jason R. Thorpe.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
-->
<plist>
<dict>
<!--
-- altera boards
-->
<key>terasic,de0-atlas</key>
<dict>
<key>description</key>
<string>Terasic DE-0(Atlas)</string>
<key>u-boot-pkg</key>
<string>de0-nanosoc</string>
</dict>
<!--
-- amlogic boards
-->
<key>hardkernel,odroid-c2</key>
<dict>
<key>description</key>
<string>Hardkernel ODROID-C2</string>
<key>u-boot-pkg</key>
<string>odroid-c2</string>
</dict>
<key>libretech,cc</key>
<dict>
<key>description</key>
<string>Libre Computer Board AML-S905X-CC</string>
<key>u-boot-pkg</key>
<string>libretech-cc</string>
</dict>
<!--
-- exynos boards
-->
<key>hardkernel,odroid-xu3</key>
<dict>
<key>description</key>
<string>Hardkernel Odroid XU3</string>
<key>u-boot-pkg</key>
<string>odroid-xu3</string>
</dict>
<!--
-- rockchip boards
-->
<key>pine64,rock64</key>
<dict>
<key>description</key>
<string>Pine64 Rock64</string>
<key>u-boot-pkg</key>
<string>rock64</string>
</dict>
<key>pine64,rockpro64</key>
<dict>
<key>description</key>
<string>Pine64 RockPro64</string>
<key>u-boot-pkg</key>
<string>rockpro64</string>
</dict>
<key>pine64,pinebook-pro</key>
<dict>
<key>description</key>
<string>Pine64 Pinebook Pro</string>
<key>u-boot-pkg</key>
<string>pinebook-pro</string>
</dict>
<key>asus,rk3288-tinker</key>
<dict>
<key>description</key>
<string>Rockchip RK3288 Asus Tinker Board</string>
<key>u-boot-pkg</key>
<string>tinker</string>
</dict>
<!--
-- mediatek boards
-->
<key>bananapi,bpi-r2</key>
<dict>
<key>description</key>
<string>Bananapi BPI-R2</string>
<key>u-boot-pkg</key>
<string>bananapi-r2</string>
</dict>
<!--
-- nvidia boards
-->
<key>nvidia,jetson-tk1</key>
<dict>
<key>description</key>
<string>NVIDIA Tegra124 Jetson TK1</string>
<key>u-boot-pkg</key>
<string>jetson-tk1</string>
</dict>
<key>nvidia,p2371-2180</key>
<dict>
<key>description</key>
<string>NVIDIA Jetson TX1 Developer Kit</string>
<key>u-boot-pkg</key>
<string>jetson-tx1</string>
</dict>
<key>nvidia,p2771-0000</key>
<dict>
<key>description</key>
<string>NVIDIA Jetson TX2 Developer Kit</string>
<key>u-boot-pkg</key>
<string>jetson-tx2</string>
</dict>
<key>nvidia,p3450-0000</key>
<dict>
<key>description</key>
<string>NVIDIA Jetson Nano Developer Kit</string>
<key>u-boot-pkg</key>
<string>jetson-nano</string>
</dict>
<!--
-- omap boards
-->
<key>ti,omap3-beagle</key>
<dict>
<key>description</key>
<string>TI OMAP3 BeagleBoard</string>
<key>u-boot-pkg</key>
<string>beagleboard</string>
</dict>
<key>ti,am335x-bone</key>
<dict>
<key>description</key>
<string>TI AM335x BeagleBone</string>
<key>u-boot-pkg</key>
<string>beaglebonewhite</string>
</dict>
<key>ti,am335x-bone-black</key>
<dict>
<key>description</key>
<string>TI AM335x BeagleBone Black</string>
<key>u-boot-pkg</key>
<string>beagleboneblack</string>
</dict>
<key>ti,omap4-panda</key>
<dict>
<key>description</key>
<string>TI OMAP4 PandaBoard</string>
<key>u-boot-pkg</key>
<string>pandaboard</string>
</dict>
<key>ti,omap4-panda-es</key>
<dict>
<key>description</key>
<string>TI OMAP4 PandaBoard-ES</string>
<key>u-boot-pkg</key>
<string>pandaboard</string>
</dict>
<!--
-- sunxi boards
-->
<!-- Banana Pi-branded board "compatible" strings are a mess.
We will just keep them all together here. -->
<key>lamobo,lamobo-r1</key>
<dict>
<key>description</key>
<string>Lamobo R1</string>
<key>u-boot-pkg</key>
<string>lamobo-r1</string>
</dict>
<key>lemaker,bananapi</key>
<dict>
<key>description</key>
<string>LeMaker Banana Pi</string>
<key>u-boot-pkg</key>
<string>bananapi</string>
</dict>
<key>lemaker,bananapro</key>
<dict>
<key>description</key>
<string>LeMaker Banana Pro</string>
<key>u-boot-pkg</key>
<string>bananapro</string>
</dict>
<key>sinovoip,bpi-m2-zero</key>
<dict>
<key>description</key>
<string>Banana Pi BPI-M2 Zero</string>
<key>u-boot-pkg</key>
<string>bananapi-m2-zero</string>
</dict>
<key>sinovoip,bpi-m3</key>
<dict>
<key>description</key>
<string>Banana Pi BPI-M3</string>
<key>u-boot-pkg</key>
<string>bananapi-m3</string>
</dict>
<key>sinovoip,bpi-p2-zero</key>
<dict>
<key>description</key>
<string>Banana Pi BPI-P2 Zero</string>
<key>u-boot-pkg</key>
<string>bananapi-p2-zero</string>
</dict>
<key>cubietech,cubieboard2</key>
<dict>
<key>description</key>
<string>Cubietech Cubieboard2</string>
<key>u-boot-pkg</key>
<string>cubieboard2</string>
</dict>
<key>cubietech,a80-cubieboard4</key>
<dict>
<key>description</key>
<string>Cubietech Cubieboard4</string>
<key>u-boot-pkg</key>
<string>cubieboard4</string>
</dict>
<key>cubietech,cubietruck</key>
<dict>
<key>description</key>
<string>Cubietech Cubietruck</string>
<key>u-boot-pkg</key>
<string>cubietruck</string>
</dict>
<key>cubietech,cubietruck-plus</key>
<dict>
<key>description</key>
<string>Cubietech Cubietruck Plus</string>
<key>u-boot-pkg</key>
<string>cubietruck-plus</string>
</dict>
<key>friendlyarm,nanopi-m1</key>
<dict>
<key>description</key>
<string>FriendlyArm NanoPi M1</string>
<key>u-boot-pkg</key>
<string>nanopi-m1</string>
</dict>
<key>friendlyarm,nanopi-neo</key>
<dict>
<key>description</key>
<string>FriendlyARM NanoPi NEO</string>
<key>u-boot-pkg</key>
<string>nanopi-neo</string>
</dict>
<key>friendlyarm,nanopi-neo-plus2</key>
<dict>
<key>description</key>
<string>FriendlyARM NanoPi NEO Plus2</string>
<key>u-boot-pkg</key>
<string>nanopi-neo-plus2</string>
</dict>
<key>friendlyarm,nanopi-neo2</key>
<dict>
<key>description</key>
<string>FriendlyARM NanoPi NEO 2</string>
<key>u-boot-pkg</key>
<string>nanopi-neo2</string>
</dict>
<key>friendlyarm,nanopi-r1</key>
<dict>
<key>description</key>
<string>FriendlyARM NanoPi R1</string>
<key>u-boot-pkg</key>
<string>nanopi-r1</string>
</dict>
<key>libretech,all-h3-cc-h2-plus</key>
<dict>
<key>description</key>
<string>Libre Computer Board ALL-H3-CC H2+</string>
<key>u-boot-pkg</key>
<string>libretech-all-h3-cc-h2-plus</string>
</dict>
<key>libretech,all-h3-cc-h3</key>
<dict>
<key>description</key>
<string>Libre Computer Board ALL-H3-CC H3</string>
<key>u-boot-pkg</key>
<string>libretech-all-h3-cc-h3</string>
</dict>
<key>libretech,all-h3-cc-h5</key>
<dict>
<key>description</key>
<string>Libre Computer Board ALL-H3-CC H5</string>
<key>u-boot-pkg</key>
<string>libretech-all-h3-cc-h5</string>
</dict>
<key>merrii,a31-hummingbird</key>
<dict>
<key>description</key>
<string>Merrii A31 Hummingbird</string>
<key>u-boot-pkg</key>
<string>hummingbird-a31</string>
</dict>
<key>nextthing,chip</key>
<dict>
<key>description</key>
<string>NextThing C.H.I.P.</string>
<key>u-boot-pkg</key>
<string>chip</string>
</dict>
<key>nextthing,pocketchip</key>
<dict>
<key>description</key>
<string>NextThing PocketC.H.I.P.</string>
<key>u-boot-pkg</key>
<string>pocketchip</string>
</dict>
<key>nextthing,chip-pro</key>
<dict>
<key>description</key>
<string>NextThing C.H.I.P. Pro</string>
<key>u-boot-pkg</key>
<string>chip-pro</string>
</dict>
<key>olimex,a10-olinuxino-lime</key>
<dict>
<key>description</key>
<string>Olimex A10-OLinuXino-LIME</string>
<key>u-boot-pkg</key>
<string>a10-olinuxino-lime</string>
</dict>
<key>olimex,a20-olinuxino-lime2</key>
<dict>
<key>description</key>
<string>Olimex A20-OLinuXino-LIME2</string>
<key>u-boot-pkg</key>
<string>a20-olinuxino-lime2</string>
</dict>
<key>olimex,a20-olinuxino-lime2-emmc</key>
<dict>
<key>description</key>
<string>Olimex A20-OLinuXino-LIME2-eMMC</string>
<key>u-boot-pkg</key>
<string>a20-olinuxino-lime2-emmc</string>
</dict>
<key>olimex,a20-olinuxino-micro</key>
<dict>
<key>description</key>
<string>Olimex A20-OLinuXino-MICRO</string>
<key>u-boot-pkg</key>
<string>a20-olinuxino-micro-emmc</string>
</dict>
<key>olimex,a20-olinuxino-micro-emmc</key>
<dict>
<key>description</key>
<string>Olimex A20-OLinuXino-MICRO-eMMC</string>
<key>u-boot-pkg</key>
<string>a20-olinuxino-micro-emmc</string>
</dict>
<key>pine64,pine64-plus</key>
<dict>
<key>description</key>
<string>Pine64+</string>
<key>u-boot-pkg</key>
<string>pine64-plus</string>
</dict>
<key>pine64,pine64</key>
<dict>
<key>description</key>
<string>Pine64</string>
<key>u-boot-pkg</key>
<string>pine64</string>
</dict>
<key>pine64,pinebook</key>
<dict>
<key>description</key>
<string>Pinebook</string>
<key>u-boot-pkg</key>
<string>pinebook</string>
</dict>
<key>pine64,sopine-baseboard</key>
<dict>
<key>description</key>
<string>SoPine with baseboard</string>
<key>u-boot-pkg</key>
<string>sopine-baseboard</string>
</dict>
<key>pine64,pine64-lts</key>
<dict>
<key>description</key>
<string>Pine64 LTS</string>
<!-- Same u-boot as sopine-baseboard. -->
<key>u-boot-pkg</key>
<string>sopine-baseboard</string>
</dict>
<key>pine64,pine-h64</key>
<dict>
<key>description</key>
<string>Pine H64</string>
<key>u-boot-pkg</key>
<string>pine-h64</string>
</dict>
<key>terasic,de0-atlas</key>
<dict>
<key>description</key>
<string>Terasic DE-0(Atlas)</string>
<key>u-boot-pkg</key>
<string>de0-nanosoc</string>
</dict>
<key>xunlong,orangepi-2</key>
<dict>
<key>description</key>
<string>Xunlong Orange Pi 2</string>
<key>u-boot-pkg</key>
<string>orangepi-2</string>
</dict>
<key>xunlong,orangepi-one</key>
<dict>
<key>description</key>
<string>Xunlong Orange Pi One</string>
<key>u-boot-pkg</key>
<string>orangepi-one</string>
</dict>
<key>xunlong,orangepi-lite</key>
<dict>
<key>description</key>
<string>Xunlong Orange Pi Lite</string>
<key>u-boot-pkg</key>
<string>orangepi-lite</string>
</dict>
<key>xunlong,orangepi-lite2</key>
<dict>
<key>description</key>
<string>Xunlong Orange Pi Lite2</string>
<key>u-boot-pkg</key>
<string>orangepi-lite2</string>
</dict>
<key>xunlong,orangepi-plus2e</key>
<dict>
<key>description</key>
<string>Xunlong Orange Pi Plus 2E</string>
<key>u-boot-pkg</key>
<string>orangepi-plus2e</string>
</dict>
<key>xunlong,orangepi-zero</key>
<dict>
<key>description</key>
<string>Xunlong Orange Pi Zero</string>
<key>u-boot-pkg</key>
<string>orangepi-zero</string>
</dict>
<key>xunlong,orangepi-zero-plus</key>
<dict>
<key>description</key>
<string>Xunlong Orange Pi Zero Plus</string>
<key>u-boot-pkg</key>
<string>orangepi-zero-plus</string>
</dict>
<!--
-- xilinx boards
-->
<key>digilent,zynq-zybo</key>
<dict>
<key>description</key>
<string>Digilent Zybo board</string>
<key>u-boot-pkg</key>
<string>zynq-zybo</string>
</dict>
<key>digilent,zynq-zybo-z7</key>
<dict>
<key>description</key>
<string>Digilent Zybo Z7 board</string>
<key>u-boot-pkg</key>
<string>zynq-zybo-z7</string>
</dict>
</dict>
</plist>

View File

@ -0,0 +1,12 @@
# $NetBSD: Makefile,v 1.1 2020/06/22 03:15:48 rin Exp $
NOOBJ= # defined
.include <bsd.own.mk>
.if ${MKSHARE} != "no"
FILES= boards.plist
FILESDIR= /usr/share/installboot/evbmips
.endif
.include <bsd.prog.mk>

View File

@ -0,0 +1,43 @@
<!-- $NetBSD: boards.plist,v 1.1 2020/06/21 17:15:51 thorpej Exp $ -->
<!--
Copyright (c) 2020 The NetBSD Foundation, Inc.
All rights reserved.
This code is derived from software contributed to The NetBSD Foundation
by Jason R. Thorpe.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
-->
<plist>
<dict>
<!--
-- ingenic boards
-->
<key>img,ci20</key>
<dict>
<key>description</key>
<string>MIPS Creator CI20</string>
<key>u-boot-pkg</key>
<string>ci20</string>
</dict>
</dict>
</plist>

View File

@ -1,11 +1,40 @@
# $NetBSD: Makefile,v 1.11 2011/03/06 18:15:30 bouyer Exp $
# $NetBSD: Makefile,v 1.13 2020/06/21 17:17:01 thorpej Exp $
.include <bsd.hostinit.mk>
HOSTPROGNAME= ${_TOOL_PREFIX}installboot
HOST_SRCDIR= usr.sbin/installboot
LIBPROP_INC= ${.CURDIR}/../../common/include
HOST_CPPFLAGS+= -I${LIBPROP_INC}
HOST_CPPFLAGS+= -I. -I${.CURDIR} -I${.CURDIR}/../mips-elf2ecoff
HOST_CPPFLAGS+= -I${TOOLDIR}/include/nbinclude
HOST_CPPFLAGS+= -DEVBOARDS_PLIST_BASE=\"${TOOLDIR}\"
LIBPROP_OBJ!= cd ${.CURDIR}/../libprop && ${PRINTOBJDIR}
LDADD+= -L${LIBPROP_OBJ} -lprop
SHARE_SRCDIR= ${.CURDIR}/../../share
HOST_SHAREDIR= ${TOOLDIR}/share
BOARDDB_SRCDIR= ${SHARE_SRCDIR}/installboot
BOARDDB_DSTDIR= ${HOST_SHAREDIR}/installboot
BOARDDBS= evbarm evbmips
.for _d in ${BOARDDBS}
install: .PHONY install.${_d}.boards.plist
install.${_d}.boards.plist: .PHONY ${BOARDDB_DSTDIR}/${_d}/boards.plist
${BOARDDB_DSTDIR}/${_d}/boards.plist: ${BOARDDB_SRCDIR}/${_d}/boards.plist
${_MKTARGET_INSTALL}
${HOST_INSTALL_DIR} ${HOST_SHAREDIR}
${HOST_INSTALL_DIR} ${BOARDDB_DSTDIR}
${HOST_INSTALL_DIR} ${BOARDDB_DSTDIR}/${_d}
${HOST_INSTALL_FILE} -m ${NONBINMODE} ${.ALLSRC} ${.TARGET}
.endfor
.include "${.CURDIR}/../Makefile.nbincludes"
.include "${.CURDIR}/../Makefile.host"

View File

@ -1,13 +1,12 @@
# $NetBSD: Makefile,v 1.50 2015/06/06 15:45:47 joerg Exp $
# $NetBSD: Makefile,v 1.56 2020/09/06 07:20:31 mrg Exp $
#
.include <bsd.own.mk>
PROG= installboot_nbsd
MAN= installboot_nbsd.8
PROG= installboot
MAN= installboot.8
SRCS= installboot.c sum.c machines.c fstypes.c install_master.c
.if !defined(__MINIX)
ARCH_XLAT= amd64-i386.c news68k-news.c newsmips-news.c
ARCH_XLAT+= sun2-sun68k.c sun3-sun68k.c
@ -17,24 +16,55 @@ ARCH_XLAT= amd64-i386.c
.if !defined(SMALLPROG) && !defined(ARCH_FILES)
.if !defined(__MINIX)
ARCH_FILES= alpha.c amiga.c emips.c ews4800mips.c hp300.c hppa.c i386.c
ARCH_FILES+= landisk.c macppc.c news.c next68k.c pmax.c
ARCH_FILES+= sparc.c sparc64.c sun68k.c vax.c x68k.c
ARCH_FILES= alpha.c amiga.c
ARCH_FILES+= emips.c evbarm.c evbmips.c ews4800mips.c
ARCH_FILES+= hp300.c hppa.c
ARCH_FILES+= i386.c
ARCH_FILES+= landisk.c
ARCH_FILES+= macppc.c
ARCH_FILES+= news.c next68k.c
ARCH_FILES+= pmax.c
ARCH_FILES+= sparc.c sparc64.c sun68k.c
ARCH_FILES+= vax.c
ARCH_FILES+= x68k.c
.else
ARCH_FILES= i386.c
ARCH_FILES+= i386.c
.endif # !defined(__MINIX)
.else
ARCH_FILES?= ${ARCH_XLAT:M${MACHINE}-*:S/${MACHINE}-//}
.if empty(ARCH_FILES)
ARCH_FILES= ${MACHINE}.c
.endif
COPTS.machines.c+= -DSINGLE_ARCH=ib_mach_${MACHINE}
.endif
SRCS+=${ARCH_FILES}
.if !empty(ARCH_FILES:C/(evbarm|evbmips)/evboard/:Mevboard.c)
SRCS+=evboards.c
.endif
.if !empty(ARCH_FILES:C/(evbarm|evbmips)/fdt/:Mfdt.c)
FDTDIR= ${.CURDIR}/../../sys/external/bsd/libfdt/dist
.PATH: ${FDTDIR}
CPPFLAGS+= -DSUPPORT_FDT -I${FDTDIR}
SRCS+=fdt.c fdt_ro.c fdt_strerror.c
# XXX libfdt has some sign-comparison issues
COPTS.fdt.c+= -Wno-error=sign-compare
COPTS.fdt_ro.c+= -Wno-error=sign-compare
COPTS.fdt_strerror.c+= -Wno-error=sign-compare
.endif
.if !defined(HOSTPROGNAME)
.if !empty(ARCH_FILES:C/(evbarm|evbmips)/ofw/:Mofw.c)
CPPFLAGS+= -DSUPPORT_OPENFIRMWARE
.endif
.endif
.if !defined(__MINIX)
.if empty(ARCH_FILES:C/(macppc|news|sparc|sun68k|x68k)/stg2/:Mstg2.c)
CPPFLAGS += -DNO_STAGE2
CPPFLAGS+= -DNO_STAGE2
.else
SRCS+= bbinfo.c
@ -63,8 +93,18 @@ CPPFLAGS+= -I${.CURDIR} -I.
COPTS.${f}.c+= -Wno-pointer-sign
.endfor
.if !empty(SRCS:Mevboards.c)
LDADD+= -lprop
DPADD+= ${LIBPROP}
.endif
LDADD+= -lutil
DPADD+= ${LIBUTIL}
.endif
.if !defined(__MINIX)
CWARNFLAGS.clang+= -Wno-error=address-of-packed-member
.endif # !defined(__MINIX)
CWARNFLAGS.gcc+= ${GCC_NO_ADDR_OF_PACKED_MEMBER}
.include <bsd.prog.mk>

View File

@ -1,4 +1,4 @@
/* $NetBSD: alpha.c,v 1.21 2011/08/14 17:50:17 christos Exp $ */
/* $NetBSD: alpha.c,v 1.22 2019/05/07 04:35:31 thorpej Exp $ */
/*-
* Copyright (c) 2002 The NetBSD Foundation, Inc.
@ -95,7 +95,7 @@
#include <sys/cdefs.h>
#if !defined(__lint)
__RCSID("$NetBSD: alpha.c,v 1.21 2011/08/14 17:50:17 christos Exp $");
__RCSID("$NetBSD: alpha.c,v 1.22 2019/05/07 04:35:31 thorpej Exp $");
#endif /* !__lint */
#include <sys/param.h>
@ -121,9 +121,14 @@ static void check_sparc(const struct alpha_boot_block * const,
static int alpha_clearboot(ib_params *);
static int alpha_setboot(ib_params *);
struct ib_mach ib_mach_alpha =
{ "alpha", alpha_setboot, alpha_clearboot, no_editboot,
IB_STAGE1START | IB_ALPHASUM | IB_APPEND | IB_SUNSUM };
struct ib_mach ib_mach_alpha = {
.name = "alpha",
.setboot = alpha_setboot,
.clearboot = alpha_clearboot,
.editboot = no_editboot,
.valid_flags = IB_STAGE1START | IB_ALPHASUM | IB_APPEND |
IB_SUNSUM,
};
static int
alpha_clearboot(ib_params *params)

View File

@ -1,4 +1,4 @@
/* $NetBSD: amiga.c,v 1.9 2015/06/05 05:02:48 mlelstv Exp $ */
/* $NetBSD: amiga.c,v 1.10 2019/05/07 04:35:31 thorpej Exp $ */
/*-
* Copyright (c) 1999, 2002 The NetBSD Foundation, Inc.
@ -38,7 +38,7 @@
#include <sys/cdefs.h>
#if !defined(__lint)
__RCSID("$NetBSD: amiga.c,v 1.9 2015/06/05 05:02:48 mlelstv Exp $");
__RCSID("$NetBSD: amiga.c,v 1.10 2019/05/07 04:35:31 thorpej Exp $");
#endif /* !__lint */
#include <sys/param.h>
@ -64,9 +64,13 @@ u_int32_t chksum(u_int32_t *, int);
static int amiga_setboot(ib_params *);
struct ib_mach ib_mach_amiga =
{ "amiga", amiga_setboot, no_clearboot, no_editboot,
IB_STAGE1START | IB_STAGE2START | IB_COMMAND };
struct ib_mach ib_mach_amiga = {
.name = "amiga",
.setboot = amiga_setboot,
.clearboot = no_clearboot,
.editboot = no_editboot,
.valid_flags = IB_STAGE1START | IB_STAGE2START | IB_COMMAND,
};
static int
amiga_setboot(ib_params *params)

View File

@ -1,4 +1,4 @@
/* $NetBSD: emips.c,v 1.1 2011/01/26 01:18:55 pooka Exp $ */
/* $NetBSD: emips.c,v 1.2 2019/05/07 04:35:31 thorpej Exp $ */
/*-
* Copyright (c) 1999, 2002 The NetBSD Foundation, Inc.
@ -105,7 +105,7 @@
#include <sys/cdefs.h>
#if !defined(__lint)
__RCSID("$NetBSD: emips.c,v 1.1 2011/01/26 01:18:55 pooka Exp $");
__RCSID("$NetBSD: emips.c,v 1.2 2019/05/07 04:35:31 thorpej Exp $");
#endif /* !__lint */
#include <sys/param.h>
@ -125,10 +125,13 @@ __RCSID("$NetBSD: emips.c,v 1.1 2011/01/26 01:18:55 pooka Exp $");
static int emips_clearboot(ib_params *);
static int emips_setboot(ib_params *);
struct ib_mach ib_mach_emips =
{ "emips", emips_setboot, emips_clearboot, no_editboot,
IB_STAGE1START | IB_APPEND | IB_SUNSUM };
struct ib_mach ib_mach_emips = {
.name = "emips",
.setboot = emips_setboot,
.clearboot = emips_clearboot,
.editboot = no_editboot,
.valid_flags = IB_STAGE1START | IB_APPEND | IB_SUNSUM,
};
static int
emips_clearboot(ib_params *params)

View File

@ -0,0 +1,119 @@
/* $NetBSD: evbarm.c,v 1.1 2019/05/07 05:02:42 thorpej Exp $ */
/*-
* Copyright (c) 2019 The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
* by Jason R. Thorpe.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#if HAVE_NBTOOL_CONFIG_H
#include "nbtool_config.h"
#endif
#include <sys/cdefs.h>
#if !defined(__lint)
__RCSID("$NetBSD: evbarm.c,v 1.1 2019/05/07 05:02:42 thorpej Exp $");
#endif /* !__lint */
#include <err.h>
#include <stdio.h>
#include <string.h>
#include <limits.h>
#include "installboot.h"
#include "evboards.h"
static int evbarm_setboot(ib_params *);
static int evbarm_clearboot(ib_params *);
static int evbarm_editboot(ib_params *);
static void evbarm_usage(ib_params *);
struct ib_mach ib_mach_evbarm = {
.name = "evbarm",
.setboot = evbarm_setboot,
.clearboot = evbarm_clearboot,
.editboot = evbarm_editboot,
.usage = evbarm_usage,
.valid_flags = IB_BOARD | IB_DTB | IB_MEDIA,
.mach_flags = MF_UBOOT,
};
static int
evbarm_setboot(ib_params *params)
{
evb_board board;
int rv = 0;
if (!evb_db_load(params)) {
warnx("Unable to load board db.");
return 0;
}
board = evb_db_get_board(params);
if (board == NULL)
goto out;
rv = evb_uboot_setboot(params, board);
out:
if (params->mach_data) {
prop_object_release(params->mach_data);
params->mach_data = NULL;
}
return rv;
}
static int
evbarm_clearboot(ib_params *params)
{
return no_clearboot(params);
}
static int
evbarm_editboot(ib_params *params)
{
return no_editboot(params);
}
static void
evbarm_usage(ib_params *params)
{
if (!evb_db_load(params)) {
warnx("Unable to load board db.");
return;
}
fprintf(stderr, "Known boards (for -o board=...) are:\n");
evb_db_list_boards(params, stderr);
if (params->mach_data) {
prop_object_release(params->mach_data);
params->mach_data = NULL;
}
}

View File

@ -0,0 +1,119 @@
/* $NetBSD: evbmips.c,v 1.1 2020/06/21 17:17:02 thorpej Exp $ */
/*-
* Copyright (c) 2019 The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
* by Jason R. Thorpe.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#if HAVE_NBTOOL_CONFIG_H
#include "nbtool_config.h"
#endif
#include <sys/cdefs.h>
#if !defined(__lint)
__RCSID("$NetBSD: evbmips.c,v 1.1 2020/06/21 17:17:02 thorpej Exp $");
#endif /* !__lint */
#include <err.h>
#include <stdio.h>
#include <string.h>
#include <limits.h>
#include "installboot.h"
#include "evboards.h"
static int evbmips_setboot(ib_params *);
static int evbmips_clearboot(ib_params *);
static int evbmips_editboot(ib_params *);
static void evbmips_usage(ib_params *);
struct ib_mach ib_mach_evbmips = {
.name = "evbmips",
.setboot = evbmips_setboot,
.clearboot = evbmips_clearboot,
.editboot = evbmips_editboot,
.usage = evbmips_usage,
.valid_flags = IB_BOARD | IB_DTB | IB_MEDIA,
.mach_flags = MF_UBOOT,
};
static int
evbmips_setboot(ib_params *params)
{
evb_board board;
int rv = 0;
if (!evb_db_load(params)) {
warnx("Unable to load board db.");
return 0;
}
board = evb_db_get_board(params);
if (board == NULL)
goto out;
rv = evb_uboot_setboot(params, board);
out:
if (params->mach_data) {
prop_object_release(params->mach_data);
params->mach_data = NULL;
}
return rv;
}
static int
evbmips_clearboot(ib_params *params)
{
return no_clearboot(params);
}
static int
evbmips_editboot(ib_params *params)
{
return no_editboot(params);
}
static void
evbmips_usage(ib_params *params)
{
if (!evb_db_load(params)) {
warnx("Unable to load board db.");
return;
}
fprintf(stderr, "Known boards (for -o board=...) are:\n");
evb_db_list_boards(params, stderr);
if (params->mach_data) {
prop_object_release(params->mach_data);
params->mach_data = NULL;
}
}

View File

@ -5,7 +5,7 @@
#include <sys/cdefs.h>
#if !defined(__lint)
__RCSID("$NetBSD: ews4800mips.c,v 1.2 2006/02/18 10:08:07 dsl Exp $");
__RCSID("$NetBSD: ews4800mips.c,v 1.3 2019/05/07 04:35:31 thorpej Exp $");
#endif /* !__lint */
#include <sys/param.h>
@ -16,8 +16,12 @@ __RCSID("$NetBSD: ews4800mips.c,v 1.2 2006/02/18 10:08:07 dsl Exp $");
static int ews4800mips_setboot(ib_params *);
struct ib_mach ib_mach_ews4800mips =
{ "ews4800mips", ews4800mips_setboot, no_clearboot, no_editboot, 0};
struct ib_mach ib_mach_ews4800mips = {
.name = "ews4800mips",
.setboot = ews4800mips_setboot,
.clearboot = no_clearboot,
.editboot = no_editboot,
};
struct bbinfo_params ews4800mips_bbparams = {
EWS4800MIPS_BBINFO_MAGIC,

View File

@ -1,4 +1,4 @@
/* $NetBSD: hp300.c,v 1.15 2013/06/14 03:54:43 msaitoh Exp $ */
/* $NetBSD: hp300.c,v 1.16 2019/05/07 04:35:31 thorpej Exp $ */
/*-
* Copyright (c) 2003 The NetBSD Foundation, Inc.
@ -35,7 +35,7 @@
#include <sys/cdefs.h>
#if !defined(__lint)
__RCSID("$NetBSD: hp300.c,v 1.15 2013/06/14 03:54:43 msaitoh Exp $");
__RCSID("$NetBSD: hp300.c,v 1.16 2019/05/07 04:35:31 thorpej Exp $");
#endif /* !__lint */
/* We need the target disklabel.h, not the hosts one..... */
@ -64,8 +64,13 @@ __RCSID("$NetBSD: hp300.c,v 1.15 2013/06/14 03:54:43 msaitoh Exp $");
static int hp300_setboot(ib_params *);
struct ib_mach ib_mach_hp300 =
{ "hp300", hp300_setboot, no_clearboot, no_editboot, IB_APPEND };
struct ib_mach ib_mach_hp300 = {
.name = "hp300",
.setboot = hp300_setboot,
.clearboot = no_clearboot,
.editboot = no_editboot,
.valid_flags = IB_APPEND,
};
static int
hp300_setboot(ib_params *params)

View File

@ -1,4 +1,4 @@
/* $NetBSD: hppa.c,v 1.1 2014/02/24 07:23:44 skrll Exp $ */
/* $NetBSD: hppa.c,v 1.2 2019/05/07 04:35:31 thorpej Exp $ */
/*-
* Copyright (c) 2002 The NetBSD Foundation, Inc.
@ -35,7 +35,7 @@
#include <sys/cdefs.h>
#if !defined(__lint)
__RCSID("$NetBSD: hppa.c,v 1.1 2014/02/24 07:23:44 skrll Exp $");
__RCSID("$NetBSD: hppa.c,v 1.2 2019/05/07 04:35:31 thorpej Exp $");
#endif /* !__lint */
/* We need the target disklabel.h, not the hosts one..... */
@ -65,8 +65,12 @@ __RCSID("$NetBSD: hppa.c,v 1.1 2014/02/24 07:23:44 skrll Exp $");
static int hppa_clearboot(ib_params *);
static int hppa_setboot(ib_params *);
struct ib_mach ib_mach_hppa =
{ "hppa", hppa_setboot, hppa_clearboot, no_editboot, 0};
struct ib_mach ib_mach_hppa = {
.name = "hppa",
.setboot = hppa_setboot,
.clearboot = hppa_clearboot,
.editboot = no_editboot,
};
static int
hppa_clearboot(ib_params *params)

View File

@ -1,4 +1,4 @@
/* $NetBSD: i386.c,v 1.40 2013/06/14 03:54:43 msaitoh Exp $ */
/* $NetBSD: i386.c,v 1.42 2019/05/07 04:35:31 thorpej Exp $ */
/*-
* Copyright (c) 2003 The NetBSD Foundation, Inc.
@ -35,7 +35,7 @@
#include <sys/cdefs.h>
#if !defined(__lint)
__RCSID("$NetBSD: i386.c,v 1.40 2013/06/14 03:54:43 msaitoh Exp $");
__RCSID("$NetBSD: i386.c,v 1.42 2019/05/07 04:35:31 thorpej Exp $");
#endif /* !__lint */
#include <sys/param.h>
@ -75,27 +75,37 @@ static const struct console_name {
static int i386_setboot(ib_params *);
static int i386_editboot(ib_params *);
struct ib_mach ib_mach_i386 =
{ "i386", i386_setboot, no_clearboot, i386_editboot,
IB_RESETVIDEO | IB_CONSOLE | IB_CONSPEED | IB_CONSADDR |
IB_KEYMAP | IB_PASSWORD | IB_TIMEOUT |
struct ib_mach ib_mach_i386 = {
.name = "i386",
.setboot = i386_setboot,
.clearboot = no_clearboot,
.editboot = i386_editboot,
.valid_flags = IB_RESETVIDEO | IB_CONSOLE | IB_CONSPEED |
IB_CONSADDR | IB_KEYMAP | IB_PASSWORD |
IB_TIMEOUT |
#if !defined(__minix)
IB_MODULES | IB_BOOTCONF |
IB_STAGE1START };
IB_MODULES | IB_BOOTCONF |
IB_STAGE1START
#else
IB_MODULES | IB_BOOTCONF };
IB_MODULES | IB_BOOTCONF
#endif /* !defined(__minix) */
};
struct ib_mach ib_mach_amd64 =
{ "amd64", i386_setboot, no_clearboot, i386_editboot,
IB_RESETVIDEO | IB_CONSOLE | IB_CONSPEED | IB_CONSADDR |
IB_KEYMAP | IB_PASSWORD | IB_TIMEOUT |
struct ib_mach ib_mach_amd64 = {
.name = "amd64",
.setboot = i386_setboot,
.clearboot = no_clearboot,
.editboot = i386_editboot,
.valid_flags = IB_RESETVIDEO | IB_CONSOLE | IB_CONSPEED |
IB_CONSADDR | IB_KEYMAP | IB_PASSWORD |
IB_TIMEOUT |
#if !defined(__minix)
IB_MODULES | IB_BOOTCONF |
IB_STAGE1START };
IB_MODULES | IB_BOOTCONF |
IB_STAGE1START
#else
IB_MODULES | IB_BOOTCONF };
IB_MODULES | IB_BOOTCONF
#endif /* !defined(__minix) */
};
/*
* Attempting to write the 'labelsector' (or a sector near it - within 8k?)
@ -426,8 +436,19 @@ i386_setboot(ib_params *params)
return 0;
}
/* Find size of old BPB, and copy into new bootcode */
if (!is_zero(disk_buf.b + 3 + 8, disk_buf.b[1] - 1 - 8)) {
/*
* Find size of old BPB, and copy into new bootcode
*
* The 2nd byte (b[1]) contains jmp short relative offset.
* If it is zero or some invalid input that is smaller than 9,
* it will cause overflow and call is_zero() with enormous size.
* Add a paranoid check to prevent this scenario.
*
* Verify that b[0] contains JMP (0xeb) and b[2] NOP (0x90).
*/
if (disk_buf.b[0] == 0xeb && disk_buf.b[1] >= 9 &&
disk_buf.b[2] == 0x90 &&
!is_zero(disk_buf.b + 3 + 8, disk_buf.b[1] - 1 - 8)) {
struct mbr_bpbFAT16 *bpb = (void *)(disk_buf.b + 3 + 8);
/* Check enough space before the FAT for the bootcode */
u = le16toh(bpb->bpbBytesPerSec)

View File

@ -1,4 +1,4 @@
/* $NetBSD: landisk.c,v 1.6 2013/10/19 17:08:15 christos Exp $ */
/* $NetBSD: landisk.c,v 1.8 2019/05/07 04:35:31 thorpej Exp $ */
/*-
* Copyright (c) 2003 The NetBSD Foundation, Inc.
@ -35,7 +35,7 @@
#include <sys/cdefs.h>
#if !defined(__lint)
__RCSID("$NetBSD: landisk.c,v 1.6 2013/10/19 17:08:15 christos Exp $");
__RCSID("$NetBSD: landisk.c,v 1.8 2019/05/07 04:35:31 thorpej Exp $");
#endif /* !__lint */
#include <sys/param.h>
@ -53,9 +53,13 @@ __RCSID("$NetBSD: landisk.c,v 1.6 2013/10/19 17:08:15 christos Exp $");
static int landisk_setboot(ib_params *);
struct ib_mach ib_mach_landisk =
{ "landisk", landisk_setboot, no_clearboot, no_editboot,
IB_TIMEOUT };
struct ib_mach ib_mach_landisk = {
.name = "landisk",
.setboot = landisk_setboot,
.clearboot = no_clearboot,
.editboot = no_editboot,
.valid_flags = IB_TIMEOUT,
};
static int
landisk_setboot(ib_params *params)
@ -100,12 +104,18 @@ landisk_setboot(ib_params *params)
goto done;
}
if (mbr.mbr_magic != le16toh(MBR_MAGIC)) {
if (params->flags & IB_VERBOSE) {
printf(
"Ignoring MBR with invalid magic in sector 0 of `%s'\n",
params->filesystem);
const char *p = (const char *)&mbr;
const char *e = p + sizeof(mbr);
while (p < e && !*p)
p++;
if (p != e) {
if (params->flags & IB_VERBOSE) {
printf(
"Ignoring MBR with invalid magic in sector 0 of `%s'\n",
params->filesystem);
}
memset(&mbr, 0, sizeof(mbr));
}
memset(&mbr, 0, sizeof(mbr));
}
/*

View File

@ -1,4 +1,4 @@
/* $NetBSD: macppc.c,v 1.11 2008/05/24 19:15:21 tsutsui Exp $ */
/* $NetBSD: macppc.c,v 1.12 2019/05/07 04:35:31 thorpej Exp $ */
/*-
* Copyright (c) 2002 The NetBSD Foundation, Inc.
@ -35,7 +35,7 @@
#include <sys/cdefs.h>
#if !defined(__lint)
__RCSID("$NetBSD: macppc.c,v 1.11 2008/05/24 19:15:21 tsutsui Exp $");
__RCSID("$NetBSD: macppc.c,v 1.12 2019/05/07 04:35:31 thorpej Exp $");
#endif /* !__lint */
#include <sys/param.h>
@ -67,9 +67,13 @@ static int writeapplepartmap(ib_params *, struct bbinfo_params *, uint8_t *);
static int macppc_clearboot(ib_params *);
static int macppc_setboot(ib_params *);
struct ib_mach ib_mach_macppc =
{ "macppc", macppc_setboot, macppc_clearboot, no_editboot,
IB_STAGE2START };
struct ib_mach ib_mach_macppc = {
.name = "macppc",
.setboot = macppc_setboot,
.clearboot = macppc_clearboot,
.editboot = no_editboot,
.valid_flags = IB_STAGE2START,
};
static int
macppc_clearboot(ib_params *params)

View File

@ -1,4 +1,4 @@
/* $NetBSD: news.c,v 1.7 2008/04/28 20:24:16 martin Exp $ */
/* $NetBSD: news.c,v 1.8 2019/05/07 04:35:31 thorpej Exp $ */
/*-
* Copyright (c) 2002 The NetBSD Foundation, Inc.
@ -35,7 +35,7 @@
#include <sys/cdefs.h>
#if !defined(__lint)
__RCSID("$NetBSD: news.c,v 1.7 2008/04/28 20:24:16 martin Exp $");
__RCSID("$NetBSD: news.c,v 1.8 2019/05/07 04:35:31 thorpej Exp $");
#endif /* !__lint */
#include <sys/param.h>
@ -57,13 +57,21 @@ static int news68k_setboot(ib_params *);
static int newsmips_clearboot(ib_params *);
static int newsmips_setboot(ib_params *);
struct ib_mach ib_mach_news68k =
{ "news68k", news68k_setboot, news68k_clearboot, no_editboot,
IB_STAGE2START };
struct ib_mach ib_mach_news68k = {
.name = "news68k",
.setboot = news68k_setboot,
.clearboot = news68k_clearboot,
.editboot = no_editboot,
.valid_flags = IB_STAGE2START,
};
struct ib_mach ib_mach_newsmips =
{ "newsmips", newsmips_setboot, newsmips_clearboot, no_editboot,
IB_STAGE2START };
struct ib_mach ib_mach_newsmips = {
.name = "newsmips",
.setboot = newsmips_setboot,
.clearboot = newsmips_clearboot,
.editboot = no_editboot,
.valid_flags = IB_STAGE2START,
};
/*
* news68k specific support

View File

@ -1,4 +1,4 @@
/* $NetBSD: next68k.c,v 1.8 2013/06/14 03:54:43 msaitoh Exp $ */
/* $NetBSD: next68k.c,v 1.9 2019/05/07 04:35:31 thorpej Exp $ */
/*-
* Copyright (c) 2003 The NetBSD Foundation, Inc.
@ -35,7 +35,7 @@
#include <sys/cdefs.h>
#if !defined(__lint)
__RCSID("$NetBSD: next68k.c,v 1.8 2013/06/14 03:54:43 msaitoh Exp $");
__RCSID("$NetBSD: next68k.c,v 1.9 2019/05/07 04:35:31 thorpej Exp $");
#endif /* !__lint */
#include <sys/param.h>
@ -54,8 +54,12 @@ __RCSID("$NetBSD: next68k.c,v 1.8 2013/06/14 03:54:43 msaitoh Exp $");
static uint16_t nextstep_checksum(const void *, const void *);
static int next68k_setboot(ib_params *);
struct ib_mach ib_mach_next68k =
{ "next68k", next68k_setboot, no_clearboot, no_editboot, 0};
struct ib_mach ib_mach_next68k = {
.name = "next68k",
.setboot = next68k_setboot,
.clearboot = no_clearboot,
.editboot = no_editboot,
};
static uint16_t
nextstep_checksum(const void *vbuf, const void *vlimit)

View File

@ -1,4 +1,4 @@
/* $NetBSD: pmax.c,v 1.15 2013/10/21 15:37:46 christos Exp $ */
/* $NetBSD: pmax.c,v 1.16 2019/05/07 04:35:31 thorpej Exp $ */
/*-
* Copyright (c) 1999, 2002 The NetBSD Foundation, Inc.
@ -98,7 +98,7 @@
#include <sys/cdefs.h>
#if !defined(__lint)
__RCSID("$NetBSD: pmax.c,v 1.15 2013/10/21 15:37:46 christos Exp $");
__RCSID("$NetBSD: pmax.c,v 1.16 2019/05/07 04:35:31 thorpej Exp $");
#endif /* !__lint */
#include <sys/param.h>
@ -121,9 +121,13 @@ static int load_bootstrap(ib_params *, char **,
static int pmax_clearboot(ib_params *);
static int pmax_setboot(ib_params *);
struct ib_mach ib_mach_pmax =
{ "pmax", pmax_setboot, pmax_clearboot, no_editboot,
IB_STAGE1START | IB_APPEND | IB_SUNSUM };
struct ib_mach ib_mach_pmax = {
.name = "pmax",
.setboot = pmax_setboot,
.clearboot = pmax_clearboot,
.editboot = no_editboot,
.valid_flags = IB_STAGE1START | IB_APPEND | IB_SUNSUM,
};
static int

View File

@ -1,4 +1,4 @@
/* $NetBSD: sparc.c,v 1.11 2008/04/28 20:24:16 martin Exp $ */
/* $NetBSD: sparc.c,v 1.12 2019/05/07 04:35:31 thorpej Exp $ */
/*-
* Copyright (c) 1998, 2002 The NetBSD Foundation, Inc.
@ -35,7 +35,7 @@
#include <sys/cdefs.h>
#if !defined(__lint)
__RCSID("$NetBSD: sparc.c,v 1.11 2008/04/28 20:24:16 martin Exp $");
__RCSID("$NetBSD: sparc.c,v 1.12 2019/05/07 04:35:31 thorpej Exp $");
#endif /* !__lint */
#include <sys/param.h>
@ -65,9 +65,13 @@ static int sparc_setheader(ib_params *, struct bbinfo_params *, uint8_t *);
static int sparc_clearboot(ib_params *);
static int sparc_setboot(ib_params *);
struct ib_mach ib_mach_sparc =
{ "sparc", sparc_setboot, sparc_clearboot, no_editboot,
IB_STAGE2START };
struct ib_mach ib_mach_sparc = {
.name = "sparc",
.setboot = sparc_setboot,
.clearboot = sparc_clearboot,
.editboot = no_editboot,
.valid_flags = IB_STAGE2START,
};
static int
sparc_clearboot(ib_params *params)

View File

@ -1,4 +1,4 @@
/* $NetBSD: sparc64.c,v 1.18 2010/01/14 16:27:49 tsutsui Exp $ */
/* $NetBSD: sparc64.c,v 1.19 2019/05/07 04:35:31 thorpej Exp $ */
/*-
* Copyright (c) 2002 The NetBSD Foundation, Inc.
@ -61,7 +61,7 @@
#include <sys/cdefs.h>
#if !defined(__lint)
__RCSID("$NetBSD: sparc64.c,v 1.18 2010/01/14 16:27:49 tsutsui Exp $");
__RCSID("$NetBSD: sparc64.c,v 1.19 2019/05/07 04:35:31 thorpej Exp $");
#endif /* !__lint */
#include <sys/param.h>
@ -79,8 +79,12 @@ __RCSID("$NetBSD: sparc64.c,v 1.18 2010/01/14 16:27:49 tsutsui Exp $");
static int sparc64_clearboot(ib_params *);
static int sparc64_setboot(ib_params *);
struct ib_mach ib_mach_sparc64 =
{ "sparc64", sparc64_setboot, sparc64_clearboot, no_editboot, 0};
struct ib_mach ib_mach_sparc64 = {
.name = "sparc64",
.setboot = sparc64_setboot,
.clearboot = sparc64_clearboot,
.editboot = no_editboot,
};
static int
sparc64_clearboot(ib_params *params)

View File

@ -1,4 +1,4 @@
/* $NetBSD: sun68k.c,v 1.21 2008/04/28 20:24:16 martin Exp $ */
/* $NetBSD: sun68k.c,v 1.22 2019/05/07 04:35:31 thorpej Exp $ */
/*-
* Copyright (c) 2002 The NetBSD Foundation, Inc.
@ -35,7 +35,7 @@
#include <sys/cdefs.h>
#if !defined(__lint)
__RCSID("$NetBSD: sun68k.c,v 1.21 2008/04/28 20:24:16 martin Exp $");
__RCSID("$NetBSD: sun68k.c,v 1.22 2019/05/07 04:35:31 thorpej Exp $");
#endif /* !__lint */
#include <sys/param.h>
@ -49,13 +49,21 @@ __RCSID("$NetBSD: sun68k.c,v 1.21 2008/04/28 20:24:16 martin Exp $");
static int sun68k_clearboot(ib_params *);
static int sun68k_setboot(ib_params *);
struct ib_mach ib_mach_sun2 =
{ "sun2", sun68k_setboot, sun68k_clearboot, no_editboot,
IB_STAGE2START };
struct ib_mach ib_mach_sun2 = {
.name = "sun2",
.setboot = sun68k_setboot,
.clearboot = sun68k_clearboot,
.editboot = no_editboot,
.valid_flags = IB_STAGE2START,
};
struct ib_mach ib_mach_sun3 =
{ "sun3", sun68k_setboot, sun68k_clearboot, no_editboot,
IB_STAGE2START };
struct ib_mach ib_mach_sun3 = {
.name = "sun3",
.setboot = sun68k_setboot,
.clearboot = sun68k_clearboot,
.editboot = no_editboot,
.valid_flags = IB_STAGE2START,
};
static struct bbinfo_params bbparams = {
SUN68K_BBINFO_MAGIC,

View File

@ -1,4 +1,4 @@
/* $NetBSD: vax.c,v 1.18 2014/11/13 16:02:25 christos Exp $ */
/* $NetBSD: vax.c,v 1.19 2019/05/07 04:35:31 thorpej Exp $ */
/*-
* Copyright (c) 1999, 2002 The NetBSD Foundation, Inc.
@ -68,7 +68,7 @@
#include <sys/cdefs.h>
#if !defined(__lint)
__RCSID("$NetBSD: vax.c,v 1.18 2014/11/13 16:02:25 christos Exp $");
__RCSID("$NetBSD: vax.c,v 1.19 2019/05/07 04:35:31 thorpej Exp $");
#endif /* !__lint */
#include <sys/param.h>
@ -100,9 +100,13 @@ static int load_bootstrap(ib_params *, char **,
static int vax_clearboot(ib_params *);
static int vax_setboot(ib_params *);
struct ib_mach ib_mach_vax =
{ "vax", vax_setboot, vax_clearboot, no_editboot,
IB_STAGE1START | IB_APPEND | IB_SUNSUM };
struct ib_mach ib_mach_vax = {
.name = "vax",
.setboot = vax_setboot,
.clearboot = vax_clearboot,
.editboot = no_editboot,
.valid_flags = IB_STAGE1START | IB_APPEND | IB_SUNSUM,
};
static int
vax_clearboot(ib_params *params)

View File

@ -1,4 +1,4 @@
/* $NetBSD: x68k.c,v 1.4 2008/04/28 20:24:16 martin Exp $ */
/* $NetBSD: x68k.c,v 1.5 2019/05/07 04:35:31 thorpej Exp $ */
/*-
* Copyright (c) 2002 The NetBSD Foundation, Inc.
@ -35,7 +35,7 @@
#include <sys/cdefs.h>
#if !defined(__lint)
__RCSID("$NetBSD: x68k.c,v 1.4 2008/04/28 20:24:16 martin Exp $");
__RCSID("$NetBSD: x68k.c,v 1.5 2019/05/07 04:35:31 thorpej Exp $");
#endif /* !__lint */
#include <sys/param.h>
@ -59,9 +59,13 @@ static int x68k_clearheader(ib_params *, struct bbinfo_params *, uint8_t *);
static int x68k_clearboot(ib_params *);
static int x68k_setboot(ib_params *);
struct ib_mach ib_mach_x68k =
{ "x68k", x68k_setboot, x68k_clearboot, no_editboot,
IB_STAGE1START | IB_STAGE2START };
struct ib_mach ib_mach_x68k = {
.name = "x68k",
.setboot = x68k_setboot,
.clearboot = x68k_clearboot,
.editboot = no_editboot,
.valid_flags = IB_STAGE1START | IB_STAGE2START,
};
static struct bbinfo_params bbparams = {
X68K_BBINFO_MAGIC,

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,69 @@
/* $NetBSD: evboards.h,v 1.2 2019/09/19 01:25:29 thorpej Exp $ */
/*-
* Copyright (c) 2019 The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
* by Jason R. Thorpe.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef installboot_evboards_h_included
#define installboot_evboards_h_included
#include <stdio.h>
#include <prop/proplib.h>
typedef prop_dictionary_t evb_board;
typedef prop_array_t evb_ubinstall;
typedef prop_object_iterator_t evb_ubsteps;
typedef prop_dictionary_t evb_ubstep;
bool evb_db_load(ib_params *);
evb_board evb_db_get_board(ib_params *);
void evb_db_list_boards(ib_params *, FILE *);
const char * evb_board_get_description(ib_params *, evb_board);
const char * evb_board_get_uboot_pkg(ib_params *, evb_board);
const char * evb_board_get_uboot_path(ib_params *, evb_board);
evb_ubinstall evb_board_get_uboot_install(ib_params *, evb_board);
prop_array_t evb_board_copy_uboot_media(ib_params *, evb_board);
evb_ubsteps evb_ubinstall_get_steps(ib_params *, evb_ubinstall);
evb_ubstep evb_ubsteps_next_step(ib_params *, evb_ubsteps);
const char * evb_ubstep_get_file_name(ib_params *, evb_ubstep);
uint64_t evb_ubstep_get_file_offset(ib_params *, evb_ubstep);
uint64_t evb_ubstep_get_file_size(ib_params *, evb_ubstep);
uint64_t evb_ubstep_get_image_offset(ib_params *, evb_ubstep);
uint64_t evb_ubstep_get_input_block_size(ib_params *, evb_ubstep);
uint64_t evb_ubstep_get_input_pad_size(ib_params *, evb_ubstep);
uint64_t evb_ubstep_get_output_size(ib_params *, evb_ubstep);
uint64_t evb_ubstep_get_output_block_size(ib_params *, evb_ubstep);
bool evb_ubstep_preserves_partial_block(ib_params *, evb_ubstep);
int evb_uboot_setboot(ib_params *, evb_board);
#endif /* installboot_evboards_h_included */

View File

@ -1,6 +1,6 @@
.\" $NetBSD: installboot_nbsd.8,v 1.79 2011/11/03 20:09:18 martin Exp $
.\" $NetBSD: installboot.8,v 1.101 2021/02/25 03:44:27 rin Exp $
.\"
.\" Copyright (c) 2002-2009 The NetBSD Foundation, Inc.
.\" Copyright (c) 2002-2019 The NetBSD Foundation, Inc.
.\" All rights reserved.
.\"
.\" This code is derived from software contributed to The NetBSD Foundation
@ -27,11 +27,11 @@
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
.Dd August 3, 2011
.Dd February 25, 2021
.Dt INSTALLBOOT 8
.Os
.Sh NAME
.Nm installboot_nbsd
.Nm installboot
.Nd install disk bootstrap software
.
.Sh SYNOPSIS
@ -39,6 +39,7 @@
.Op Fl fnv
.Op Fl B Ar s2bno
.Op Fl b Ar s1bno
.Op Fl m Ar machine
.Op Fl o Ar options
.Op Fl t Ar fstype
.Ar filesystem
@ -47,18 +48,16 @@
.Nm
.Fl c
.Op Fl fnv
.Op Fl m Ar machine
.Op Fl o Ar options
.Op Fl t Ar fstype
.Ar filesystem
.Nm
.Fl e
.Op Fl fnv
.Op Fl m Ar machine
.Op Fl o Ar options
.Ar bootstrap
.Nm
.Fl m(aster)
.Ar device
.Ar masterboot
.
.Sh DESCRIPTION
The
@ -105,7 +104,6 @@ Copy the secondary bootstrap (usually
or
.Pa /usr/mdec/boot )
to the root directory of the target file system.
.Pp
.
.It
Use
@ -132,9 +130,30 @@ single bootstrap file is used.
The single bootstrap is installed like the primary bootstrap on
other platforms:
.Sy next68k .
.Pp
.El
.Pp
Some platforms, typically embedded system platforms, are umbrella platforms
that support many different individual board types, each with their own
boot loader binary and installation procedure requirements.
On these platforms, it may be necessary to provide specific board type
information to
.Nm .
Information about known boards and their requirements is loaded from a
database at run-time.
Sometimes these platforms also require the use of 3rd-party boot loader
software, such as
.Sy U-boot .
To support these platforms,
.Nm
scans known locations for these 3rd-party boot loader packages for
database overlays that contain additional board-specific boot loader
installation information in a file called
.Sq installboot.plist .
.Pp
The following platforms have this requirement and utilize this database
overlay feature:
.Sy evbarm .
.Pp
The options and arguments recognized by
.Nm
are as follows:
@ -166,6 +185,7 @@ at block number
.Ar s1bno
instead of the default location for the machine and file system type.
.Sy [ alpha ,
.Sy i386/amd64 (bootxx_fat16 only) ,
.Sy pmax ,
.Sy vax ]
.
@ -174,7 +194,7 @@ Clear (remove) any existing bootstrap instead of installing one.
.
.It Fl e
Edit the options of an existing bootstrap.
This can be use to change the options in bootxx_xxxfs files,
This can be used to change the options in bootxx_xxxfs files,
raw disk partitions, and the
.Pa pxeboot_ia32.bin
file.
@ -190,6 +210,40 @@ Forces
.Nm
to ignore some errors.
.
.It Fl m Ar machine
Use
.Ar machine
as the target machine type.
The default machine is determined from
.Xr uname 3
and then
.Ev MACHINE .
The following machines are currently supported by
.Nm :
.Bd -ragged -offset indent
.Sy alpha ,
.Sy amd64 ,
.Sy amiga ,
.Sy evbarm ,
.Sy ews4800mips ,
.Sy hp300 ,
.Sy hppa ,
.Sy i386 ,
.Sy landisk ,
.Sy macppc ,
.Sy news68k ,
.Sy newsmips ,
.Sy next68k ,
.Sy pmax ,
.Sy sparc ,
.Sy sparc64 ,
.Sy sun2 ,
.Sy sun3 ,
.Sy vax ,
.Sy x68k
.Ed
.
.
.It Fl n
Do not write to
.Ar filesystem .
@ -207,7 +261,7 @@ Supported options are (with the machines for they are valid in brackets):
.Sy [ alpha ]
Recalculate and restore the Alpha checksum.
This is the default for
.Nx Ns Tn /alpha .
.Nx Ns /alpha .
.
.It Sy append
.Sy [ alpha ,
@ -219,6 +273,15 @@ to the end of
.Ar filesystem ,
which must be a regular file in this case.
.
.It Sy board=<board name>
.Sy [ evbarm ]
Specify the board type used to determine the correct boot loader image
and installation procedure.
If omitted,
.Nm
will attempt to guess the board type based on system information if run
natively.
.
.It Sy bootconf
.Sy [ amd64 ,
.Sy i386 ]
@ -226,27 +289,40 @@ which must be a regular file in this case.
.Dq boot.cfg
file.
.
.It Sy command=\*[Lt]boot command\*[Gt]
.It Sy command=<boot command>
.Sy [ amiga ]
Modify the default boot command line.
.
.It Sy console=\*[Lt]console name\*[Gt]
.It Sy console=<console name>
.Sy [ amd64 ,
.Sy i386 ]
Set the console device, \*[Lt]console name\*[Gt] must be one of:
pc, com0, com1, com2, com3, com0kbd, com1kbd, com2kbd or com3kbd.
Set the console device, <console name> must be one of:
pc, com0, com1, com2, com3, com0kbd, com1kbd, com2kbd, com3kbd or auto.
.
.It Sy ioaddr=\*[Lt]ioaddr\*[Gt]
.It Sy dtb=/path/to/dtb/file
.Sy [ evbarm ]
Attempt to determine the board type from information in the device tree
blob file at
.Pa /path/to/dtb/file .
If both
.Sy board
and
.Sy dtb
options are specified,
.Sy board
takes precendence.
.
.It Sy ioaddr=<ioaddr>
.Sy [ amd64 ,
.Sy i386 ]
Set the IO address to be used for the console serial port.
Defaults to the IO address used by the system BIOS for the specified port.
.
.It Sy keymap=\*[Lt]keymap\*[Gt]
.It Sy keymap=<keymap>
.Sy [ amd64 ,
.Sy i386 ]
Set a boot time keyboard translation map.
Each character in \*[Lt]keymap\*[Gt] will be replaced by the one following it.
Each character in <keymap> will be replaced by the one following it.
For example, an argument of
.Dq zyz
would swap the lowercase letters
@ -254,12 +330,22 @@ would swap the lowercase letters
and
.Sq z .
.
.It Sy media=<media type>
.Sy [ evbarm ]
Some boards require a different boot loader binary and/or installation
procedure depending on what type of media will be used to boot the system.
For such boards, this option is required, and omitting it will display a
usage message that lists the valid media types for the board.
For boards that do not require special media handling, this option is
not allowed.
Common values: sdmmc, emmc, usb.
.
.It Sy modules
.Sy [ amd64 ,
.Sy i386 ]
(Don't) load kernel modules.
.
.It Sy password=\*[Lt]password\*[Gt]
.It Sy password=<password>
.Sy [ amd64 ,
.Sy i386 ]
Set the password which must be entered before the boot menu can be accessed.
@ -269,7 +355,7 @@ Set the password which must be entered before the boot menu can be accessed.
.Sy i386 ]
Reset the video before booting.
.
.It Sy speed=\*[Lt]baud rate\*[Gt]
.It Sy speed=<baud rate>
.Sy [ amd64 ,
.Sy i386 ]
Set the baud rate for the serial console.
@ -281,14 +367,14 @@ BIOS) will be used.
.Sy pmax ,
.Sy vax ]
Recalculate and restore the Sun and
.Nx Ns Tn /sparc
.Nx Ns /sparc
compatible checksum.
.Em Note :
The existing
.Nx Ns Tn /sparc
.Nx Ns /sparc
disklabel should use no more than 4 partitions.
.
.It Sy timeout=\*[Lt]seconds\*[Gt]
.It Sy timeout=<seconds>
.Sy [ amd64 ,
.Sy i386 ]
Set the timeout before the automatic boot begins to the given number of seconds.
@ -379,7 +465,7 @@ These are:
.El
.Pp
.Nm
exits 0 on success, and \*[Gt]0 if an error occurs.
exits 0 on success, and >0 if an error occurs.
.
.Sh ENVIRONMENT
.Nm
@ -387,6 +473,21 @@ uses the following environment variables:
.
.Bl -tag -width "MACHINE"
.
.It Ev INSTALLBOOT_UBOOT_PATHS
A colon-separated list of search paths to scan for
.Sy U-boot
packages with
.Nm installboot
installation overlays.
If multiple overlays are found, overlays from paths closer to the front
of the list take precedence.
If not specified, the default path is
.Pa /usr/pkg/share/u-boot .
This environment variable is only used on platforms that support
using
.Sy U-boot :
.Sy evbarm .
.
.It Ev MACHINE
Default value for
.Ar machine ,
@ -399,7 +500,6 @@ overriding the result from
Most
.Nx
ports will contain variations of the following files:
.Pp
.Bl -tag -width /usr/mdec/bootxx_ustarfs
.
.It Pa /usr/mdec/bootxx_ Ns Sy FSTYPE
@ -409,8 +509,7 @@ Installed into the bootstrap area of the file system by
.Nm .
.
.It Pa /usr/mdec/bootxx_fat16
Primary bootstrap for
.Tn MS-DOS
Primary bootstrap for MS-DOS
.Sy FAT16
file systems.
This differs from
@ -421,14 +520,21 @@ any
It also uses the information in the
.Ql Boot Parameter Block
to get the media and filesytem properties.
The
.Ql hidden sectors
field of the BPB must be the offset of the partition in the disk.
This can be set using the
.Fl b Ar s1bno
option.
.
.It Pa /usr/mdec/bootxx_ffsv1
Primary bootstrap for
.Sy FFSv1
file systems
(the "traditional"
.Nx
file system).
(the
.Ql traditional
file system prior to
.Nx 6.0 ) .
Use
.Xr dumpfs 8
to confirm the file system format is
@ -437,7 +543,8 @@ to confirm the file system format is
.It Pa /usr/mdec/bootxx_ffsv2
Primary bootstrap for
.Sy FFSv2
file systems.
file systems (the default file system for some platforms as of
.Nx 6.0 ) .
Use
.Xr dumpfs 8
to confirm the file system format is
@ -455,8 +562,7 @@ file systems
(the default LFS version).
.
.It Pa /usr/mdec/bootxx_msdos
Primary bootstrap for
.Tn MS-DOS
Primary bootstrap for MS-DOS
.Sy FAT
file systems.
.
@ -489,50 +595,126 @@ is not found.
.
.El
.
.Ss Nx Ns Tn /macppc files
.Ss Nx Ns /evbarm files
The
.Nx Ns /evbarm
platform covers a wide variety of board types, many of which use
.Sy U-boot .
Running
.Nm
with no options will display a list of known boards.
Using the verbose option will also display information about which
.Sy U-boot
package needs to be installed to support that board, and if the required
.Sy U-boot
package is installed, the path at which it is located.
.Bl -tag -width /usr/pkg/share/u-boot
.It Pa /usr/pkg/share/u-boot
The default location scanned for
.Sy U-boot
packages with installation overlays.
.It Pa /usr/share/installboot/evbarm/boards.plist
Base board database, used to provide information about which
.Sy U-boot
package is required for a given board.
.El
.
.Ss Nx Ns /evbmips files
.
The
.Nx Ns /evbmips
bootstrap files currently only apply to the SBMIPS kernels for the
SiByte/Broadcom BCM1250 and BCM1480 CPUs.
.Bl -tag -width /usr/mdec/sbmips/bootxx_cd9660
.
.It Pa /usr/mdec/sbmips/boot
.Nx Ns /evbmips
secondary bootstrap for
.Sy FFSv1 ,
.Sy FFSv2 ,
.Sy LFSv1 ,
and
.Sy LFSv2 .
.It Pa /usr/mdec/sbmips/bootxx_cd9660
SBMIPS primary bootstrap for ISO 9660 file system.
.It Pa /usr/mdec/sbmips/bootxx_ffs
SBMIPS primary bootstrap for FFSv1 and FFSv2 file system.
.It Pa /usr/mdec/sbmips/bootxx_lfs
SBMIPS primary bootstrap for LFSv1 and LFSv2 file system.
.It Pa /usr/mdec/sbmips/netboot
SBMIPS primary bootstrap for network root.
.Pp
Note that
.Nm
does not currently support evbmips directly.
.
.El
.
.Ss Nx Ns /hppa files
.
.Bl -tag -width /usr/mdec/bootxx_ustarfs
.
.It Pa /usr/mdec/xxboot
.Nx Ns /hppa
primary bootstrap for
.Sy FFSv1 ,
.Sy FFSv2 ,
.Sy LFSv1 ,
and
.Sy LFSv2 .
.It Pa /usr/mdec/cdboot
.Nx Ns /hppa
primary bootstrap for ISO 9660 file system.
.It Pa /usr/mdec/sdboot
Synonym for
.Pa /usr/mdec/xxboot
.
.El
.
.Ss Nx Ns /macppc files
.
.Bl -tag -width /usr/mdec/bootxx_ustarfs
.
.It Pa /usr/mdec/bootxx
.Nx Ns Tn /macppc
.Nx Ns /macppc
primary bootstrap.
.
.It Pa /usr/mdec/ofwboot
.Nx Ns Tn /macppc
.Nx Ns /macppc
secondary bootstrap.
.
.It Pa /ofwboot
Installed copy of
.Nx Ns Tn /macppc
.Nx Ns /macppc
secondary bootstrap.
.
.El
.
.Ss Nx Ns Tn /next68k files
.Ss Nx Ns /next68k files
.
.Bl -tag -width /usr/mdec/bootxx_ustarfs
.
.It Pa /usr/mdec/boot
.Nx Ns Tn /next68k
.Nx Ns /next68k
bootstrap.
.
.El
.
.Ss Nx Ns Tn /sparc64 files
.Ss Nx Ns /sparc64 files
.
.Bl -tag -width /usr/mdec/bootxx_ustarfs
.
.It Pa /usr/mdec/bootblk
.Nx Ns Tn /sparc64
.Nx Ns /sparc64
primary bootstrap.
.
.It Pa /usr/mdec/ofwboot
.Nx Ns Tn /sparc64
.Nx Ns /sparc64
secondary bootstrap.
.
.It Pa /ofwboot
Installed copy of
.Nx Ns Tn /sparc64
.Nx Ns /sparc64
secondary bootstrap.
.
.El
@ -542,7 +724,7 @@ secondary bootstrap.
.Ss common
Verbosely install the Berkeley Fast File System primary bootstrap on to disk
.Sq sd0 :
.Dl Ic installboot_nbsd -v /dev/rsd0c /usr/mdec/bootxx_ffs
.Dl Ic installboot -v /dev/rsd0c /usr/mdec/bootxx_ffs
Note: the
.Dq whole disk
partition (c on some ports, d on others) is used here, since the a partition
@ -554,37 +736,85 @@ would not be able to access it.
.Pp
Remove the primary bootstrap from disk
.Sq sd1 :
.Dl Ic installboot_nbsd -c /dev/rsd1c
.Dl Ic installboot -c /dev/rsd1c
.
.Ss Nx Ns Tn /amiga
.Ss Nx Ns /amiga
Modify the command line to change the default from "netbsd -ASn2" to
"netbsd -S":
.Dl Ic installboot_nbsd -m amiga -o command="netbsd -S" /dev/rsd0a /usr/mdec/bootxx_ffs
.Dl Ic installboot -m amiga -o command="netbsd -S" /dev/rsd0a /usr/mdec/bootxx_ffsv1
.
.Ss Nx Ns Tn /ews4800mips
.Ss Nx Ns /evbarm
Install the
.Sy U-boot
boot loader for a Pinebook into an image that will be written to
an SDMMC card:
.Dl Ic installboot -m evbarm -o board=pine64,pinebook arm64.img
.Pp
Install / update the
.Sy U-boot
boot loader for the current running system on the eMMC device
.Sq ld0
and display verbose information about the procedure:
.Dl Ic installboot -v /dev/rld0c
.Pp
Install a specific
.Sy U-boot
package for a BeagleBone Black into an image that will be written
to an SDMMC card:
.Dl Ic installboot -m evbarm -o board=ti,am335x-bone-black armv7.img \
/path/to/experimental/u-boot/package
.
.Ss Nx Ns /ews4800mips
Install the System V Boot File System primary bootstrap on to disk
.Sq sd0 ,
with the secondary bootstrap
.Sq Pa /boot
already present in the SysVBFS partition on the disk:
.Dl Ic installboot_nbsd /dev/rsd0c /usr/mdec/bootxx_bfs
.
.Ss Nx Ns Tn /i386 and Nx Ns Tn /amd64
Install new boot blocks on an existing mounted root file system on
.Dl Ic installboot /dev/rsd0p /usr/mdec/bootxx_bfs
.Bd -ragged -offset indent-two -compact
.Em Note :
On
.Nx Ns /ews4800mips
the p partition is the
.Dq whole disk
(i.e., raw) partition.
.Ed
.Ss Nx Ns /i386 and Nx Ns /amd64
Install new boot blocks on an existing
.Sy FFSv2
mounted root file system on
.Sq wd0 ,
setting the timeout to five seconds, after copying a new secondary
bootstrap:
setting the timeout to five seconds, after installing an MBR bootcode and
copying a new secondary bootstrap:
.Dl Ic fdisk -c /usr/mdec/mbr /dev/rwd0d
.Bd -ragged -offset indent-two -compact
.Em Note :
See
.Xr fdisk 8
and
.Xr x86/mbr 8
for more details.
.Ed
.Dl Ic cp /usr/mdec/boot /boot
.Dl Ic installboot_nbsd -v -o timeout=5 /dev/rwd0a /usr/mdec/bootxx_ffsv1
.
.Dl Ic installboot -v -o timeout=5 /dev/rwd0a /usr/mdec/bootxx_ffsv2
.Bd -ragged -offset indent-two -compact
.Em Note :
Pre
.Nx 6.0
systems used
.Sy FFSv1
file systems on these platforms; double check with
.Xr dumpfs 8
to be sure to use the correct secondary bootstrap.
.Ed
.Pp
Create a bootable CD-ROM with an ISO9660
Create a bootable CD-ROM with an ISO 9660
file system for an i386 system with a serial console:
.Dl Ic mkdir cdrom
.Dl Ic cp sys/arch/i386/compile/mykernel/netbsd cdrom/netbsd
.Dl Ic cp /usr/mdec/boot cdrom/boot
.Dl Ic cp /usr/mdec/bootxx_cd9660 bootxx
.Dl Ic installboot_nbsd -o console=com0,speed=19200 -m i386 -e bootxx
.Dl Ic installboot -o console=com0,speed=19200 -m i386 -e bootxx
.Dl Ic makefs -t cd9660 -o 'bootimage=i386;bootxx,no-emul-boot' boot.iso \
cdrom
.
@ -602,9 +832,9 @@ which is not a problem for a floppy disk.
.Ed
.Dl Ic mount /dev/fd0a /mnt
.Dl Ic cp /usr/mdec/boot /mnt/boot
.Dl Ic gzip -9 \*[Lt] sys/arch/i386/compile/mykernel/netbsd \*[Gt] /mnt/netbsd.gz
.Dl Ic gzip -9 < sys/arch/i386/compile/mykernel/netbsd > /mnt/netbsd.gz
.Dl Ic umount /mnt
.Dl Ic installboot_nbsd -v /dev/rfd0a /usr/mdec/bootxx_ffsv1
.Dl Ic installboot -v /dev/rfd0a /usr/mdec/bootxx_ffsv1
.
.Pp
Create a bootable FAT file system on
@ -632,7 +862,7 @@ changed to this value.
.Dl Ic cp /usr/mdec/boot /mnt/boot
.Dl Ic cp path/to/kernel /mnt/netbsd
.Dl Ic umount /mnt
.Dl Ic installboot_nbsd -t raw /dev/rwd1a /usr/mdec/bootxx_msdos
.Dl Ic installboot -t raw /dev/rwd1a /usr/mdec/bootxx_msdos
.Pp
Make the existing FAT16 filesystem on
.Sq sd0e
@ -643,7 +873,7 @@ sectors and that the manufacturer correctly initialised the file system.
.Dl Ic cp /usr/mdec/boot /mnt/boot
.Dl Ic cp path/to/kernel /mnt/netbsd
.Dl Ic umount /mnt
.Dl Ic installboot_nbsd /dev/rsd0e /usr/mdec/bootxx_fat16
.Dl Ic installboot /dev/rsd0e /usr/mdec/bootxx_fat16
It may also be necessary to use
.Nm fdisk
to make the device itself bootable.
@ -651,8 +881,8 @@ to make the device itself bootable.
.Pp
Switch the existing installed bootstrap to use a serial console without
reinstalling or altering other options such as timeout.
.Dl Ic installboot_nbsd -e -o console=com0 /dev/rwd0a
.Ss Nx Ns Tn /macppc
.Dl Ic installboot -e -o console=com0 /dev/rwd0a
.Ss Nx Ns /macppc
Note the
.Nm
utility is only required for macppc machines with OpenFirmware version 2
@ -662,10 +892,10 @@ map.
.Pp
Install the Berkeley Fast File System primary bootstrap on to disk
.Sq wd0 :
.Dl Ic installboot_nbsd /dev/rwd0c /usr/mdec/bootxx /ofwboot
.Dl Ic installboot /dev/rwd0c /usr/mdec/bootxx /ofwboot
.Pp
The secondary
.Nx Ns Tn /macppc
.Nx Ns /macppc
bootstrap is located in
.Pa /usr/mdec/ofwboot .
.Pp
@ -674,23 +904,22 @@ The primary bootstrap requires the raw
for the secondary bootstrap, not
.Pa ofwboot.xcf ,
which is used for the OpenFirmware to load kernels.
.Ss Nx Ns Tn /next68k
.Ss Nx Ns /next68k
Install the bootstrap on to disk
.Sq sd0 :
.Dl Ic installboot_nbsd /dev/rsd0c /usr/mdec/boot
.Pp
.Dl Ic installboot /dev/rsd0c /usr/mdec/boot
.
.Ss Nx Ns Tn /pmax
.Ss Nx Ns /pmax
Install the Berkeley Fast File System primary bootstrap on to disk
.Sq sd0 :
.Dl Ic installboot_nbsd /dev/rsd0c /usr/mdec/bootxx_ffs
.Dl Ic installboot /dev/rsd0c /usr/mdec/bootxx_ffs
.Pp
.Nx Ns Tn /pmax
.Nx Ns /pmax
requires that this file system starts at block 0 of the disk.
.Pp
Install the ISO 9660 primary bootstrap in the file
.Pa /tmp/cd-image :
.Dl Ic installboot_nbsd -m pmax /tmp/cd-image /usr/mdec/bootxx_cd9660
.Dl Ic installboot -m pmax /tmp/cd-image /usr/mdec/bootxx_cd9660
.Pp
Make an ISO 9660 filesystem in the file
.Pa /tmp/cd-image
@ -704,33 +933,33 @@ and the secondary bootstrap
.Dl ...
.Dl 48 51 iso-source-dir/bootxx_cd9660
.Dl ...
.Dl Ic installboot_nbsd -b `expr 48 \e* 4` /tmp/cd-image /usr/mdec/bootxx_cd9660
.Dl Ic installboot -b `expr 48 \e* 4` /tmp/cd-image /usr/mdec/bootxx_cd9660
.
.Ss Nx Ns Tn /sparc
.Ss Nx Ns /sparc
Install the Berkeley Fast File System primary bootstrap on to disk
.Sq sd0 ,
with the secondary bootstrap
.Sq Pa /boot
already present:
.Dl Ic installboot_nbsd /dev/rsd0c /usr/mdec/bootxx /boot
.Dl Ic installboot /dev/rsd0c /usr/mdec/bootxx /boot
.
.Ss Nx Ns Tn /sparc64
.Ss Nx Ns /sparc64
Install the primary bootstrap on to disk
.Sq sd0 :
.Dl Ic installboot_nbsd /dev/rsd0c /usr/mdec/bootblk
.Dl Ic installboot /dev/rsd0c /usr/mdec/bootblk
.Pp
The secondary
.Nx Ns Tn /sparc64
.Nx Ns /sparc64
bootstrap is located in
.Pa /usr/mdec/ofwboot .
.
.Ss Nx Ns Tn /sun2 and Nx Ns Tn /sun3
.Ss Nx Ns /sun2 and Nx Ns /sun3
Install the Berkeley Fast File System primary bootstrap on to disk
.Sq sd0 ,
with the secondary bootstrap
.Sq Pa /boot
already present:
.Dl Ic installboot_nbsd /dev/rsd0c /usr/mdec/bootxx /boot
.Dl Ic installboot /dev/rsd0c /usr/mdec/bootxx /boot
.
.Sh SEE ALSO
.Xr uname 3 ,
@ -738,7 +967,8 @@ already present:
.Xr disklabel 8 ,
.Xr dumpfs 8 ,
.Xr fdisk 8 ,
.Xr pxeboot 8
.Xr x86/mbr 8 ,
.Xr x86/pxeboot 8
.
.Sh HISTORY
This implementation of
@ -747,25 +977,40 @@ appeared in
.Nx 1.6 .
.
.Sh AUTHORS
.An -nosplit
The machine independent portion of this implementation of
.Nm
was written by Luke Mewburn.
was written by
.An Luke Mewburn .
The following people contributed to the various machine dependent
back-ends:
Simon Burge (pmax),
Chris Demetriou (alpha),
Matthew Fredette (sun2, sun3),
Matthew Green (sparc64),
Ross Harvey (alpha),
Michael Hitch (amiga),
Paul Kranenburg (sparc),
David Laight (i386),
Christian Limpach (next68k),
Luke Mewburn (macppc),
Matt Thomas (vax),
Izumi Tsutsui (news68k, newsmips),
.An Simon Burge
(pmax),
.An Chris Demetriou
(alpha),
.An Matthew Fredette
(sun2, sun3),
.An Matthew Green
(sparc64),
.An Ross Harvey
(alpha),
.An Michael Hitch
(amiga),
.An Paul Kranenburg
(sparc),
.An David Laight
(i386),
.An Christian Limpach
(next68k),
.An Luke Mewburn
(macppc),
.An Matt Thomas
(vax),
.An Izumi Tsutsui
(news68k, newsmips),
and
UCHIYAMA Yasushi (ews4800mips).
.An UCHIYAMA Yasushi
(ews4800mips).
.
.Sh BUGS
There are not currently primary bootstraps to support all file systems
@ -784,9 +1029,9 @@ In this case, the
.Fl t Ar raid
option must be provided.
.
.Ss Nx Ns Tn /alpha
.Ss Nx Ns /alpha
The
.Nx Ns Tn /alpha
.Nx Ns /alpha
primary bootstrap program can only load the secondary bootstrap program
from file systems starting at the beginning (block 0) of disks.
Similarly, the secondary bootstrap program can only load kernels from
@ -796,11 +1041,11 @@ The size of primary bootstrap programs is restricted to 7.5KB, even
though some file systems (e.g., ISO 9660) are able to accommodate larger
ones.
.
.Ss Nx Ns Tn /hp300
.Ss Nx Ns /hp300
The disk must have a boot partition large enough to hold the bootstrap code.
Currently the primary bootstrap must be a LIF format file.
.
.Ss Nx Ns Tn /i386 and Nx Ns Tn /amd64
.Ss Nx Ns /i386 and Nx Ns /amd64
The bootstrap must be installed in the
.Nx
partition that starts at the beginning of the mbr partition.
@ -814,7 +1059,7 @@ The size of primary bootstrap programs is restricted to 8KB, even
though some file systems (e.g., ISO 9660) are able to accommodate larger
ones.
.
.Ss Nx Ns Tn /macppc
.Ss Nx Ns /macppc
Due to restrictions in
.Nm
and the secondary bootstrap implementation, file systems where kernels exist
@ -826,17 +1071,17 @@ doesn't recognize an existing Apple partition map on the disk
and always writes a faked map to make disks bootable.
.Pp
The
.Nx Ns Tn /macppc
.Nx Ns /macppc
bootstrap program can't load kernels from
.Sy FFSv2
partitions.
.Ss Nx Ns Tn /next68k
.Ss Nx Ns /next68k
The size of bootstrap programs is restricted to the free space before
the file system at the beginning of the disk minus 8KB.
.
.Ss Nx Ns Tn /pmax
.Ss Nx Ns /pmax
The
.Nx Ns Tn /pmax
.Nx Ns /pmax
secondary bootstrap program can only load kernels from file
systems starting at the beginning of disks.
.Pp
@ -844,17 +1089,17 @@ The size of primary bootstrap programs is restricted to 7.5KB, even
though some file systems (e.g., ISO 9660) are able to accommodate larger
ones.
.
.Ss Nx Ns Tn /sun2 and Nx Ns Tn /sun3
.Ss Nx Ns /sun2 and Nx Ns /sun3
The
.Nx Ns Tn /sun2
.Nx Ns /sun2
and
.Nx Ns Tn /sun3
.Nx Ns /sun3
secondary bootstrap program can only load kernels from file
systems starting at the beginning of disks.
.
.Ss Nx Ns Tn /vax
.Ss Nx Ns /vax
The
.Nx Ns Tn /vax
.Nx Ns /vax
secondary bootstrap program can only load kernels from file systems
starting at the beginning of disks.
.Pp

View File

@ -1,4 +1,4 @@
/* $NetBSD: installboot.c,v 1.39 2015/07/25 10:37:22 mlelstv Exp $ */
/* $NetBSD: installboot.c,v 1.40 2019/05/07 05:02:42 thorpej Exp $ */
/*-
* Copyright (c) 2002 The NetBSD Foundation, Inc.
@ -35,7 +35,7 @@
#include <sys/cdefs.h>
#if !defined(__lint)
__RCSID("$NetBSD: installboot.c,v 1.39 2015/07/25 10:37:22 mlelstv Exp $");
__RCSID("$NetBSD: installboot.c,v 1.40 2019/05/07 05:02:42 thorpej Exp $");
#endif /* !__lint */
#include <sys/param.h>
@ -56,6 +56,7 @@ __RCSID("$NetBSD: installboot.c,v 1.39 2015/07/25 10:37:22 mlelstv Exp $");
#endif
#include "installboot.h"
#include "evboards.h"
static void getmachine(ib_params *, const char *, const char *);
static void getfstype(ib_params *, const char *, const char *);
@ -92,6 +93,9 @@ const struct option {
{ "timeout", IB_TIMEOUT, OPT_INT, OFFSET(timeout) },
{ "modules", IB_MODULES, OPT_BOOL, 0 },
{ "bootconf", IB_BOOTCONF, OPT_BOOL, 0 },
{ "board", IB_BOARD, OPT_STRING, OFFSET(board) },
{ "dtb", IB_DTB, OPT_STRING, OFFSET(dtb) },
{ "media", IB_MEDIA, OPT_WORD, OFFSET(media) },
{ .name = NULL },
};
#undef OFFSET
@ -302,16 +306,32 @@ main(int argc, char *argv[])
}
}
assert(params->machine != NULL);
if (argc >= 2) {
if ((params->s1fd = open(argv[1], O_RDONLY, 0600)) == -1)
err(1, "Opening primary bootstrap `%s'", argv[1]);
if (fstat(params->s1fd, &params->s1stat) == -1)
err(1, "Examining primary bootstrap `%s'", argv[1]);
if (!S_ISREG(params->s1stat.st_mode))
errx(1, "`%s' must be a regular file", argv[1]);
if (!S_ISREG(params->s1stat.st_mode)) {
/*
* If the platform uses u-boot, then the stage1
* spec might be the directory where the u-boot
* binaries for the system are located.
*/
if (params->machine->mach_flags & MF_UBOOT) {
if (!S_ISDIR(params->s1stat.st_mode)) {
errx(1, "`%s' must be a regular file "
"or a directory", argv[1]);
}
(void) close(params->s1fd);
params->s1fd = -1;
} else {
errx(1, "`%s' must be a regular file", argv[1]);
}
}
params->stage1 = argv[1];
}
assert(params->machine != NULL);
if (params->flags & IB_VERBOSE) {
printf("File system: %s\n", params->filesystem);
@ -321,9 +341,11 @@ main(int argc, char *argv[])
params->fstype->name, params->fstype->blocksize,
params->fstype->needswap);
if (!(params->flags & IB_EDIT))
printf("Primary bootstrap: %s\n",
printf("Primary bootstrap: %s%s\n",
(params->flags & IB_CLEAR) ? "(to be cleared)"
: params->stage1 ? params->stage1 : "(none)" );
: params->stage1 ? params->stage1 : "(none)",
S_ISDIR(params->s1stat.st_mode) ? " (directory)"
: "");
if (params->stage2 != NULL)
printf("Secondary bootstrap: %s\n", params->stage2);
}
@ -335,9 +357,18 @@ main(int argc, char *argv[])
op = "Clear";
rv = params->machine->clearboot(params);
} else {
if (argc < 2)
errx(EXIT_FAILURE, "Please specify the primary "
"bootstrap file");
if (argc < 2) {
/*
* If the platform uses u-boot, then the stage1 spec is
* optional iff they specified a board (because we can
* infer a default location for u-boot binaries if the
* board type is given).
*/
if (!(params->machine->mach_flags & MF_UBOOT)) {
errx(EXIT_FAILURE,
"Please specify the primary bootstrap file");
}
}
op = "Set";
rv = params->machine->setboot(params);
}
@ -354,7 +385,7 @@ main(int argc, char *argv[])
}
if (close(params->fsfd) == -1)
err(1, "Closing file system `%s'", params->filesystem);
if (argc == 2)
if (params->s1fd != -1)
if (close(params->s1fd) == -1)
err(1, "Closing primary bootstrap `%s'",
params->stage1);
@ -607,5 +638,8 @@ usage(void)
machine_usage();
fstype_usage();
options_usage();
if (installboot_params.machine != NULL &&
installboot_params.machine->usage != NULL)
installboot_params.machine->usage(&installboot_params);
exit(1);
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: installboot.h,v 1.39 2014/02/24 07:23:44 skrll Exp $ */
/* $NetBSD: installboot.h,v 1.42 2020/06/21 17:17:02 thorpej Exp $ */
/*-
* Copyright (c) 2002 The NetBSD Foundation, Inc.
@ -67,8 +67,19 @@ typedef enum {
IB_CONSADDR = 1<<20, /* i386 console io address */
IB_MODULES = 1<<21, /* i386: load modules */
IB_BOOTCONF = 1<<22, /* i386: read boot.conf */
IB_BOARD = 1<<23, /* evb*: board specification */
IB_DTB= 1<<24, /* evb*: device tree blob */
/* IB_MEDIA is required for some evb*, but not all. */
IB_MEDIA = 1<<25, /* evb*: boot media type */
} ib_flags;
typedef enum {
MF_UBOOT = 1<<0, /* platform (maybe) uses u-boot */
} m_flags;
typedef struct {
ib_flags flags; /* flags (see above) */
struct ib_mach *machine; /* machine details (see below) */
@ -91,6 +102,12 @@ typedef struct {
const char *password; /* boot password */
int timeout; /* interactive boot timeout */
const char *keymap; /* keyboard translations */
const char *board; /* board specification */
const char *dtb; /* dtb specification */
const char *media; /* boot media type */
/* temporary working data */
void *mach_data; /* platform-specific data */
} ib_params;
typedef struct {
@ -103,7 +120,9 @@ struct ib_mach {
int (*setboot) (ib_params *);
int (*clearboot) (ib_params *);
int (*editboot) (ib_params *);
void (*usage) (ib_params *);
ib_flags valid_flags;
m_flags mach_flags;
};
struct ib_fs {
@ -166,14 +185,17 @@ void install_master(const char *device, char *masterboot, char **guide);
int isoption(const char *option, const char *test);
/* minixfs3.c */
int minixfs3_is_minix_partition(ib_params *params);
int minixfs3_has_bootblock_space(ib_params *params);
int minixfs3_is_minix_partition(ib_params *params);
int minixfs3_has_bootblock_space(ib_params *params);
/* machines.c */
#if !defined(__minix)
extern struct ib_mach ib_mach_alpha;
extern struct ib_mach ib_mach_amd64;
extern struct ib_mach ib_mach_amiga;
extern struct ib_mach ib_mach_emips;
extern struct ib_mach ib_mach_evbarm;
extern struct ib_mach ib_mach_evbmips;
extern struct ib_mach ib_mach_ews4800mips;
extern struct ib_mach ib_mach_hp300;
extern struct ib_mach ib_mach_hppa;
@ -190,5 +212,9 @@ extern struct ib_mach ib_mach_sun2;
extern struct ib_mach ib_mach_sun3;
extern struct ib_mach ib_mach_vax;
extern struct ib_mach ib_mach_x68k;
#else
extern struct ib_mach ib_mach_amd64;
extern struct ib_mach ib_mach_i386;
#endif /* !defined(__minix) */
#endif /* _INSTALLBOOT_H */

View File

@ -1,4 +1,4 @@
/* $NetBSD: machines.c,v 1.39 2014/02/24 07:23:44 skrll Exp $ */
/* $NetBSD: machines.c,v 1.43 2020/06/21 17:17:02 thorpej Exp $ */
/*-
* Copyright (c) 2002-2005 The NetBSD Foundation, Inc.
@ -35,60 +35,40 @@
#include <sys/cdefs.h>
#if !defined(__lint)
__RCSID("$NetBSD: machines.c,v 1.39 2014/02/24 07:23:44 skrll Exp $");
__RCSID("$NetBSD: machines.c,v 1.43 2020/06/21 17:17:02 thorpej Exp $");
#endif /* !__lint */
#include <sys/types.h>
#include "installboot.h"
/*
* Define these here so they end up as zero-filled bss if installboot
* isn't built with all the architectures defined.
* A lot simpler that conditionally including the definitions themselves.
*/
struct ib_mach
ib_mach_alpha,
ib_mach_amd64,
ib_mach_amiga,
ib_mach_emips,
ib_mach_ews4800mips,
ib_mach_hp300,
ib_mach_hppa,
ib_mach_i386,
ib_mach_landisk,
ib_mach_macppc,
ib_mach_news68k,
ib_mach_newsmips,
ib_mach_next68k,
ib_mach_pmax,
ib_mach_sparc,
ib_mach_sparc64,
ib_mach_sun2,
ib_mach_sun3,
ib_mach_vax,
ib_mach_x68k;
struct ib_mach * const machines[] = {
&ib_mach_alpha,
#ifdef SINGLE_ARCH
&SINGLE_ARCH,
#else
//__MINIX
// &ib_mach_alpha,
&ib_mach_amd64,
&ib_mach_amiga,
&ib_mach_emips,
&ib_mach_ews4800mips,
&ib_mach_hp300,
&ib_mach_hppa,
// &ib_mach_amiga,
// &ib_mach_emips,
// &ib_mach_evbarm,
// &ib_mach_evbmips,
// &ib_mach_ews4800mips,
// &ib_mach_hp300,
// &ib_mach_hppa,
&ib_mach_i386,
&ib_mach_landisk,
&ib_mach_macppc,
&ib_mach_news68k,
&ib_mach_newsmips,
&ib_mach_next68k,
&ib_mach_pmax,
&ib_mach_sparc,
&ib_mach_sparc64,
&ib_mach_sun2,
&ib_mach_sun3,
&ib_mach_vax,
&ib_mach_x68k,
// &ib_mach_landisk,
// &ib_mach_macppc,
// &ib_mach_news68k,
// &ib_mach_newsmips,
// &ib_mach_next68k,
// &ib_mach_pmax,
// &ib_mach_sparc,
// &ib_mach_sparc64,
// &ib_mach_sun2,
// &ib_mach_sun3,
// &ib_mach_vax,
// &ib_mach_x68k,
#endif
NULL
};