Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/distrib/utils/embedded Add GPT support to mkimage.
details: https://anonhg.NetBSD.org/src/rev/4f4556e5858f
branches: trunk
changeset: 933313:4f4556e5858f
user: jmcneill <jmcneill%NetBSD.org@localhost>
date: Sun May 24 14:45:49 2020 +0000
description:
Add GPT support to mkimage.
diffstat:
distrib/utils/embedded/conf/evbarm.conf | 29 ++++++++++++--
distrib/utils/embedded/files/resize_gpt | 37 +++++++++++++++++++
distrib/utils/embedded/mkimage | 64 +++++++++++++++++++++-----------
3 files changed, 103 insertions(+), 27 deletions(-)
diffs (209 lines):
diff -r 8756fb0e734f -r 4f4556e5858f distrib/utils/embedded/conf/evbarm.conf
--- a/distrib/utils/embedded/conf/evbarm.conf Sun May 24 14:44:11 2020 +0000
+++ b/distrib/utils/embedded/conf/evbarm.conf Sun May 24 14:45:49 2020 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: evbarm.conf,v 1.34 2019/12/01 15:07:04 jmcneill Exp $
+# $NetBSD: evbarm.conf,v 1.35 2020/05/24 14:45:49 jmcneill Exp $
# evbarm shared config
#
image=$HOME/${board}.img
@@ -13,6 +13,12 @@
size=0 # autocompute
msdosid=12
+if $gpt; then
+ partition_type="gpt"
+else
+ partition_type="disklabel"
+fi
+
mkdir -p ${mnt}/boot
make_label_evbarm() {
@@ -59,6 +65,19 @@
EOF
}
+make_fstab_evbarm_gpt() {
+ cat > ${mnt}/etc/fstab << EOF
+# NetBSD /etc/fstab
+# See /usr/share/examples/fstab/ for more examples.
+NAME=${gpt_label_ffs:-netbsd-root} / ffs rw,noatime 1 1
+NAME=${gpt_label_efi:-EFI} /boot msdos rw 1 1
+kernfs /kern kernfs rw
+ptyfs /dev/pts ptyfs rw
+procfs /proc procfs rw
+tmpfs /var/shm tmpfs rw,-m1777,-sram%25
+EOF
+}
+
make_fstab_evbarm_normal() {
cat > ${mnt}/etc/fstab << EOF
# NetBSD /etc/fstab
@@ -96,7 +115,9 @@
}
make_fstab_evbarm() {
- if $minwrites; then
+ if $gpt; then
+ make_fstab_evbarm_gpt
+ elif $minwrites; then
make_fstab_evbarm_minwrites
else
make_fstab_evbarm_normal
@@ -143,7 +164,7 @@
if $resize; then
cat >> ${mnt}/etc/rc.conf << EOF
-resize_disklabel=YES
+resize_${partition_type}=YES
resize_root=YES
resize_root_flags="-p"
resize_root_postcmd="/sbin/reboot -n"
@@ -154,7 +175,7 @@
>> "$tmp/selected_sets"
mkdir ${mnt}/etc/rc.d
- for _f in resize_disklabel creds_msdos; do
+ for _f in resize_${partition_type} creds_msdos; do
cp ${DIR}/files/${_f} ${mnt}/etc/rc.d/${_f}
echo "./etc/rc.d/${_f} type=file uname=root gname=wheel mode=0555" \
>> "$tmp/selected_sets"
diff -r 8756fb0e734f -r 4f4556e5858f distrib/utils/embedded/files/resize_gpt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/distrib/utils/embedded/files/resize_gpt Sun May 24 14:45:49 2020 +0000
@@ -0,0 +1,37 @@
+#!/bin/sh
+#
+# $NetBSD: resize_gpt,v 1.1 2020/05/24 14:45:49 jmcneill Exp $
+#
+
+# PROVIDE: resize_gpt
+# REQUIRE: fsck_root
+# BEFORE: resize_root
+
+$_rc_subr_loaded . /etc/rc.subr
+
+name="resize_gpt"
+rcvar=$name
+start_cmd="resize_gpt_start"
+stop_cmd=":"
+
+resize_gpt_start()
+{
+ ROOT_DEVICE=$(sysctl -n kern.root_device)
+ case ${ROOT_DEVICE} in
+ dk*)
+ ;;
+ *)
+ # Root device is not a wedge, bail out.
+ exit 0
+ ;;
+ esac
+
+ BLOCK_DEVICE=$(dkctl ${ROOT_DEVICE} getwedgeinfo | head -1 | sed 's/://' | awk '{ print $3; }')
+
+ gpt resizedisk -q ${BLOCK_DEVICE}
+ gpt resize -a 4m -i 2 -q ${BLOCK_DEVICE}
+ return
+}
+
+load_rc_config $name
+run_rc_command "$1"
diff -r 8756fb0e734f -r 4f4556e5858f distrib/utils/embedded/mkimage
--- a/distrib/utils/embedded/mkimage Sun May 24 14:44:11 2020 +0000
+++ b/distrib/utils/embedded/mkimage Sun May 24 14:45:49 2020 +0000
@@ -1,5 +1,5 @@
#!/bin/sh
-# $NetBSD: mkimage,v 1.72 2020/05/18 21:19:34 jmcneill Exp $
+# $NetBSD: mkimage,v 1.73 2020/05/24 14:45:49 jmcneill Exp $
#
# Copyright (c) 2013, 2014 The NetBSD Foundation, Inc.
# All rights reserved.
@@ -54,6 +54,7 @@
MAKE=${TOOL_MAKE:-make}
DISKLABEL=${TOOL_DISKLABEL:-disklabel}
FDISK=${TOOL_FDISK:-fdisk}
+GPT=${TOOL_GPT:-gpt}
MAKEFS=${TOOL_MAKEFS:-makefs}
MTREE=${TOOL_MTREE:-mtree}
INSTALLBOOT=${TOOL_INSTALLBOOT:-installboot}
@@ -147,6 +148,7 @@
fi
resize=false
+gpt=false
. "${DIR}/conf/${h}.conf"
release="/usr/obj/${MACHINE}/release"
@@ -268,32 +270,48 @@
compare="$((${newsize} * 2 * 1024))"
done
-if [ -n "${msdosid}" ]; then
- echo ${bar} Running fdisk ${bar}
+if $gpt; then
initsecs=$((${init} * 1024))
bootsecs=$((${boot} * 1024))
- ${FDISK} -f -i ${image}
- ${FDISK} -f -a -u -0 -s ${msdosid}/${initsecs}/${bootsecs} -F ${image}
- if [ -z "${bootonly}" ]; then
- ffsstart="$(getsectors ${ffsoffset})"
- imagesize="$(getsize "${image}")"
- imagesecs="$(getsectors ${imagesize})"
- ffssize="$(expr ${imagesecs} - ${ffsstart})"
- ${FDISK} -f -u -1 -s 169/${ffsstart}/${ffssize} -F ${image}
- fi
+ ffsstart="$(getsectors ${ffsoffset})"
+
+ echo ${bar} Clearing existing partitions ${bar}
+ ${GPT} ${image} destroy || true
- echo ${bar} Adding label ${bar}
- make_label > ${tmp}/label
- ${DISKLABEL} -R -F ${image} ${tmp}/label
-elif [ -n "${netbsdid}" ]; then
- echo ${bar} Adding label ${bar}
- make_label > ${tmp}/label
- ${DISKLABEL} -R -F ${image} ${tmp}/label
+ echo ${bar} Creating partitions ${bar}
+ ${GPT} ${image} create ${gpt_create_flags}
+ ${GPT} ${image} add -b ${initsecs} -s ${bootsecs} -l ${gpt_label_efi:-EFI} -t efi
+ ${GPT} ${image} set -a required -i 1
+ ${GPT} ${image} add -a 4m -b ${ffsstart} -l ${gpt_label_ffs:-netbsd-root} -t ffs
+ ${GPT} ${image} show
+else
+ if [ -n "${msdosid}" ]; then
+ echo ${bar} Running fdisk ${bar}
+ initsecs=$((${init} * 1024))
+ bootsecs=$((${boot} * 1024))
+ ${FDISK} -f -i ${image}
+ ${FDISK} -f -a -u -0 -s ${msdosid}/${initsecs}/${bootsecs} -F ${image}
+ if [ -z "${bootonly}" ]; then
+ ffsstart="$(getsectors ${ffsoffset})"
+ imagesize="$(getsize "${image}")"
+ imagesecs="$(getsectors ${imagesize})"
+ ffssize="$(expr ${imagesecs} - ${ffsstart})"
+ ${FDISK} -f -u -1 -s 169/${ffsstart}/${ffssize} -F ${image}
+ fi
- echo ${bar} Running fdisk ${bar}
- ${FDISK} -f -i ${image}
- ${FDISK} -f -a -u -0 -s 169/${init} ${image}
- ${INSTALLBOOT} -f -v ${image} ${release}/usr/mdec/bootxx_ffsv1
+ echo ${bar} Adding label ${bar}
+ make_label > ${tmp}/label
+ ${DISKLABEL} -R -F ${image} ${tmp}/label
+ elif [ -n "${netbsdid}" ]; then
+ echo ${bar} Adding label ${bar}
+ make_label > ${tmp}/label
+ ${DISKLABEL} -R -F ${image} ${tmp}/label
+
+ echo ${bar} Running fdisk ${bar}
+ ${FDISK} -f -i ${image}
+ ${FDISK} -f -a -u -0 -s 169/${init} ${image}
+ ${INSTALLBOOT} -f -v ${image} ${release}/usr/mdec/bootxx_ffsv1
+ fi
fi
if $compress; then
Home |
Main Index |
Thread Index |
Old Index