Switch to using the portable partition scheme headers.
This commit is contained in:
parent
50875ed2c1
commit
8d249f5e2f
@ -11,6 +11,7 @@ mkimg.o: Makefile
|
||||
|
||||
CFLAGS+=-DMKIMG_VERSION=${MKIMG_VERSION}
|
||||
CFLAGS+=-DSPARSE_WRITE
|
||||
CFLAGS+=-I${.CURDIR:H:H}/sys
|
||||
|
||||
# List of formats to support
|
||||
SRCS+= \
|
||||
|
@ -33,20 +33,13 @@ __FBSDID("$FreeBSD$");
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <sys/apm.h>
|
||||
#include <sys/disk/apm.h>
|
||||
|
||||
#include "endian.h"
|
||||
#include "image.h"
|
||||
#include "mkimg.h"
|
||||
#include "scheme.h"
|
||||
|
||||
#ifndef APM_ENT_TYPE_APPLE_BOOT
|
||||
#define APM_ENT_TYPE_APPLE_BOOT "Apple_Bootstrap"
|
||||
#endif
|
||||
#ifndef APM_ENT_TYPE_FREEBSD_NANDFS
|
||||
#define APM_ENT_TYPE_FREEBSD_NANDFS "FreeBSD-nandfs"
|
||||
#endif
|
||||
|
||||
static struct mkimg_alias apm_aliases[] = {
|
||||
{ ALIAS_FREEBSD, ALIAS_PTR2TYPE(APM_ENT_TYPE_FREEBSD) },
|
||||
{ ALIAS_FREEBSD_BOOT, ALIAS_PTR2TYPE(APM_ENT_TYPE_APPLE_BOOT) },
|
||||
|
@ -33,17 +33,13 @@ __FBSDID("$FreeBSD$");
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <sys/disklabel.h>
|
||||
#include <sys/disk/bsd.h>
|
||||
|
||||
#include "endian.h"
|
||||
#include "image.h"
|
||||
#include "mkimg.h"
|
||||
#include "scheme.h"
|
||||
|
||||
#ifndef FS_NANDFS
|
||||
#define FS_NANDFS 30
|
||||
#endif
|
||||
|
||||
static struct mkimg_alias bsd_aliases[] = {
|
||||
{ ALIAS_FREEBSD_NANDFS, ALIAS_INT2TYPE(FS_NANDFS) },
|
||||
{ ALIAS_FREEBSD_SWAP, ALIAS_INT2TYPE(FS_SWAP) },
|
||||
@ -58,7 +54,7 @@ bsd_metadata(u_int where, lba_t blk)
|
||||
{
|
||||
|
||||
if (where == SCHEME_META_IMG_START)
|
||||
blk += BBSIZE / secsz;
|
||||
blk += BSD_BOOTBLOCK_SIZE / secsz;
|
||||
else if (where == SCHEME_META_IMG_END)
|
||||
blk = round_cylinder(blk);
|
||||
else
|
||||
@ -76,21 +72,21 @@ bsd_write(lba_t imgsz, void *bootcode)
|
||||
int bsdparts, error, n;
|
||||
uint16_t checksum;
|
||||
|
||||
buf = malloc(BBSIZE);
|
||||
buf = malloc(BSD_BOOTBLOCK_SIZE);
|
||||
if (buf == NULL)
|
||||
return (ENOMEM);
|
||||
if (bootcode != NULL) {
|
||||
memcpy(buf, bootcode, BBSIZE);
|
||||
memcpy(buf, bootcode, BSD_BOOTBLOCK_SIZE);
|
||||
memset(buf + secsz, 0, sizeof(struct disklabel));
|
||||
} else
|
||||
memset(buf, 0, BBSIZE);
|
||||
memset(buf, 0, BSD_BOOTBLOCK_SIZE);
|
||||
|
||||
bsdparts = nparts + 1; /* Account for c partition */
|
||||
if (bsdparts < MAXPARTITIONS)
|
||||
bsdparts = MAXPARTITIONS;
|
||||
if (bsdparts < BSD_NPARTS_MIN)
|
||||
bsdparts = BSD_NPARTS_MIN;
|
||||
|
||||
d = (void *)(buf + secsz);
|
||||
le32enc(&d->d_magic, DISKMAGIC);
|
||||
le32enc(&d->d_magic, BSD_MAGIC);
|
||||
le32enc(&d->d_secsize, secsz);
|
||||
le32enc(&d->d_nsectors, nsecs);
|
||||
le32enc(&d->d_ntracks, nheads);
|
||||
@ -98,14 +94,14 @@ bsd_write(lba_t imgsz, void *bootcode)
|
||||
le32enc(&d->d_secpercyl, nsecs * nheads);
|
||||
le32enc(&d->d_secperunit, imgsz);
|
||||
le16enc(&d->d_rpm, 3600);
|
||||
le32enc(&d->d_magic2, DISKMAGIC);
|
||||
le32enc(&d->d_magic2, BSD_MAGIC);
|
||||
le16enc(&d->d_npartitions, bsdparts);
|
||||
le32enc(&d->d_bbsize, BBSIZE);
|
||||
le32enc(&d->d_bbsize, BSD_BOOTBLOCK_SIZE);
|
||||
|
||||
dp = &d->d_partitions[RAW_PART];
|
||||
dp = &d->d_partitions[BSD_PART_RAW];
|
||||
le32enc(&dp->p_size, imgsz);
|
||||
TAILQ_FOREACH(part, &partlist, link) {
|
||||
n = part->index + ((part->index >= RAW_PART) ? 1 : 0);
|
||||
n = part->index + ((part->index >= BSD_PART_RAW) ? 1 : 0);
|
||||
dp = &d->d_partitions[n];
|
||||
le32enc(&dp->p_size, part->size);
|
||||
le32enc(&dp->p_offset, part->block);
|
||||
@ -121,7 +117,7 @@ bsd_write(lba_t imgsz, void *bootcode)
|
||||
checksum ^= le16dec(p);
|
||||
le16enc(&d->d_checksum, checksum);
|
||||
|
||||
error = image_write(0, buf, BBSIZE / secsz);
|
||||
error = image_write(0, buf, BSD_BOOTBLOCK_SIZE / secsz);
|
||||
free(buf);
|
||||
return (error);
|
||||
}
|
||||
@ -132,8 +128,8 @@ static struct mkimg_scheme bsd_scheme = {
|
||||
.aliases = bsd_aliases,
|
||||
.metadata = bsd_metadata,
|
||||
.write = bsd_write,
|
||||
.nparts = 19,
|
||||
.bootcode = BBSIZE,
|
||||
.nparts = BSD_NPARTS_MAX - 1,
|
||||
.bootcode = BSD_BOOTBLOCK_SIZE,
|
||||
.maxsecsz = 512
|
||||
};
|
||||
|
||||
|
@ -33,22 +33,15 @@ __FBSDID("$FreeBSD$");
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <sys/diskmbr.h>
|
||||
#include <sys/disk/mbr.h>
|
||||
|
||||
#include "endian.h"
|
||||
#include "image.h"
|
||||
#include "mkimg.h"
|
||||
#include "scheme.h"
|
||||
|
||||
#ifndef DOSPTYP_FAT16B
|
||||
#define DOSPTYP_FAT16B 0x06
|
||||
#endif
|
||||
#ifndef DOSPTYP_FAT32
|
||||
#define DOSPTYP_FAT32 0x0b
|
||||
#endif
|
||||
|
||||
static struct mkimg_alias ebr_aliases[] = {
|
||||
{ ALIAS_FAT16B, ALIAS_INT2TYPE(DOSPTYP_FAT16B) },
|
||||
{ ALIAS_FAT16B, ALIAS_INT2TYPE(DOSPTYP_FAT16) },
|
||||
{ ALIAS_FAT32, ALIAS_INT2TYPE(DOSPTYP_FAT32) },
|
||||
{ ALIAS_FREEBSD, ALIAS_INT2TYPE(DOSPTYP_386BSD) },
|
||||
{ ALIAS_NONE, 0 }
|
||||
|
@ -35,19 +35,14 @@ __FBSDID("$FreeBSD$");
|
||||
#include <unistd.h>
|
||||
#include <uuid.h>
|
||||
|
||||
#include <sys/diskmbr.h>
|
||||
#include <sys/gpt.h>
|
||||
#include <sys/disk/gpt.h>
|
||||
#include <sys/disk/mbr.h>
|
||||
|
||||
#include "endian.h"
|
||||
#include "image.h"
|
||||
#include "mkimg.h"
|
||||
#include "scheme.h"
|
||||
|
||||
#ifndef GPT_ENT_TYPE_FREEBSD_NANDFS
|
||||
#define GPT_ENT_TYPE_FREEBSD_NANDFS \
|
||||
{0x74ba7dd9,0xa689,0x11e1,0xbd,0x04,{0x00,0xe0,0x81,0x28,0x6a,0xcf}}
|
||||
#endif
|
||||
|
||||
static uuid_t gpt_uuid_efi = GPT_ENT_TYPE_EFI;
|
||||
static uuid_t gpt_uuid_freebsd = GPT_ENT_TYPE_FREEBSD;
|
||||
static uuid_t gpt_uuid_freebsd_boot = GPT_ENT_TYPE_FREEBSD_BOOT;
|
||||
|
@ -33,30 +33,17 @@ __FBSDID("$FreeBSD$");
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <sys/diskmbr.h>
|
||||
#include <sys/disk/mbr.h>
|
||||
|
||||
#include "endian.h"
|
||||
#include "image.h"
|
||||
#include "mkimg.h"
|
||||
#include "scheme.h"
|
||||
|
||||
#ifndef DOSPTYP_FAT16B
|
||||
#define DOSPTYP_FAT16B 0x06
|
||||
#endif
|
||||
#ifndef DOSPTYP_FAT32
|
||||
#define DOSPTYP_FAT32 0x0b
|
||||
#endif
|
||||
#ifndef DOSPTYP_PPCBOOT
|
||||
#define DOSPTYP_PPCBOOT 0x41
|
||||
#endif
|
||||
#ifndef DOSPTYP_EFI
|
||||
#define DOSPTYP_EFI 0xef
|
||||
#endif
|
||||
|
||||
static struct mkimg_alias mbr_aliases[] = {
|
||||
{ ALIAS_EBR, ALIAS_INT2TYPE(DOSPTYP_EXT) },
|
||||
{ ALIAS_EFI, ALIAS_INT2TYPE(DOSPTYP_EFI) },
|
||||
{ ALIAS_FAT16B, ALIAS_INT2TYPE(DOSPTYP_FAT16B) },
|
||||
{ ALIAS_FAT16B, ALIAS_INT2TYPE(DOSPTYP_FAT16) },
|
||||
{ ALIAS_FAT32, ALIAS_INT2TYPE(DOSPTYP_FAT32) },
|
||||
{ ALIAS_FREEBSD, ALIAS_INT2TYPE(DOSPTYP_386BSD) },
|
||||
{ ALIAS_NTFS, ALIAS_INT2TYPE(DOSPTYP_NTFS) },
|
||||
|
@ -33,26 +33,13 @@ __FBSDID("$FreeBSD$");
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <sys/diskpc98.h>
|
||||
#include <sys/disk/pc98.h>
|
||||
|
||||
#include "endian.h"
|
||||
#include "image.h"
|
||||
#include "mkimg.h"
|
||||
#include "scheme.h"
|
||||
|
||||
#ifndef PC98_MAGIC
|
||||
#define PC98_MAGIC 0xaa55
|
||||
#endif
|
||||
#ifndef PC98_MAGICOFS
|
||||
#define PC98_MAGICOFS 510
|
||||
#endif
|
||||
#ifndef PC98_NPARTS
|
||||
#define PC98_NPARTS 16
|
||||
#endif
|
||||
#ifndef PC98_PTYP_386BSD
|
||||
#define PC98_PTYP_386BSD 0xc494
|
||||
#endif
|
||||
|
||||
#define PC98_BOOTCODESZ 8192
|
||||
|
||||
static struct mkimg_alias pc98_aliases[] = {
|
||||
|
@ -34,17 +34,13 @@ __FBSDID("$FreeBSD$");
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <sys/vtoc.h>
|
||||
#include <sys/disk/vtoc.h>
|
||||
|
||||
#include "endian.h"
|
||||
#include "image.h"
|
||||
#include "mkimg.h"
|
||||
#include "scheme.h"
|
||||
|
||||
#ifndef VTOC_TAG_FREEBSD_NANDFS
|
||||
#define VTOC_TAG_FREEBSD_NANDFS 0x0905
|
||||
#endif
|
||||
|
||||
static struct mkimg_alias vtoc8_aliases[] = {
|
||||
{ ALIAS_FREEBSD_NANDFS, ALIAS_INT2TYPE(VTOC_TAG_FREEBSD_NANDFS) },
|
||||
{ ALIAS_FREEBSD_SWAP, ALIAS_INT2TYPE(VTOC_TAG_FREEBSD_SWAP) },
|
||||
|
Loading…
Reference in New Issue
Block a user