Module Name:    src
Committed By:   martin
Date:           Wed Aug 14 12:49:38 UTC 2019

Added Files:
        src/usr.sbin/sysinst: README.md_defs

Log Message:
Provide some documentation for macros / defines used in the machine
dependent backend parts of sysinst.


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 src/usr.sbin/sysinst/README.md_defs

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Added files:

Index: src/usr.sbin/sysinst/README.md_defs
diff -u /dev/null src/usr.sbin/sysinst/README.md_defs:1.1
--- /dev/null	Wed Aug 14 12:49:38 2019
+++ src/usr.sbin/sysinst/README.md_defs	Wed Aug 14 12:49:37 2019
@@ -0,0 +1,85 @@
+/* $NetBSD: README.md_defs,v 1.1 2019/08/14 12:49:37 martin Exp $ */
+
+The following is trying to document the most important machine dependent
+defines used in the sysinst code.
+
+
+If HAVE_GPT is true, the MD code may limit the space used for the
+GPT at the beginning of the disk to allow e.g. a bootloader
+being added after it (see evbarm on allwinner SoCs, u-boot is
+copied at 8k into the image).
+
+/* Size limit for the initial GPT part, in bytes */
+#define	MD_GPT_INITIAL_SIZE		(8*1024)
+
+
+The default installation description is created as a static array using
+lots of conditionals. It may be overriden / replaced in the MD code
+(see below), an example for that is arch/i386/md.c when we have been
+booted from UEFI firmware.
+
+Name		Value / example		Description
+PART_BOOT	(8*MEG) (undefined)	if defined, a boot partition
+					of this size (in bytes, rounded)
+					will be part of the default partition
+					suggestions. Must be compile time
+					const! Use MD_PART_DEFAULTS if
+					runtime adjustment is needed.
+PART_BOOT_MOUNT	"/boot" (undefined)	Add boot partition to fstab for
+					this mount point
+PART_BOOT_TYPE	FS_BSDFS		Kind of filesystem used
+PART_BOOT_SUBT	MBR_PTYPE_FAT12		File system specific sub type
+
+
+The boot partition is always inserted at the front of the suggested default
+partitions, to cope with firmwares that may not be able to load from the
+whole disk.
+
+If multiple boot partitions are required (see ofppc, where various schemes
+are supported, depending on exact model), the variables above can all be
+repeated with _BOOT1_ or _BOOT2_ name instead of _BOOT_.
+
+
+ATTENTION:
+	PART_BOOT	is in BYTE (not MB), while most other sizes
+			(DEFROOTSIZE, DEFSWAP, ...) are in MB!
+
+
+The following macros provide optional MD hooks:
+
+MD_PART_DEFAULTS	may be undefined
+
+used like:
+
+	void MD_PART_DEFAULTS(struct pm_dev*, struct part_usage_info*,
+	    size_t num_usage_infos),
+
+Called before any of the partition usage defaults is ever used, can be used
+to adjust e.g. partition sizes to actual system requirements (align boot
+partition with cylindersize), or (since it is a macro and all params are
+by references) to completely swap the defaults (e.g. EFI vs. biosboot).
+If swapping, make sure allocation and num_usage_infos stays consistent,
+old allocation is done by calloc(3), use free(3) to release.
+
+
+MD_NEED_BOOTBLOCK	may be undefined
+
+used like:
+
+	bool MD_NEED_BOOTBLOCK(struct install_partition_desc *install)
+
+returns true if this setup needs boot blocks. Used for example on x86
+when UEFI installs do not need any bootblocks, but BIOS ones do.
+
+
+HAVE_PLAIN_DISKLABEL_BOOT	may be undefined, only used on architectures
+				that have MBR as primary with disklabel as
+				secondary partitioning scheme (RAW_PART != 2)
+
+used like:
+
+	bool HAVE_PLAIN_DISKLABEL_BOOT(const char *disk)
+
+returns true if the disk could be made bootable with only a disklabel
+(and no MBR).
+

Reply via email to