Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/usr.sbin/bsdinstall/partedit/partedit_efi.c
104817 views
1
/*
2
* Copyright (C) 2016 Cavium Inc.
3
* All rights reserved.
4
*
5
* Developed by Semihalf.
6
* Based on work by Nathan Whitehorn.
7
*
8
* Redistribution and use in source and binary forms, with or without
9
* modification, are permitted provided that the following conditions
10
* are met:
11
* 1. Redistributions of source code must retain the above copyright
12
* notice, this list of conditions and the following disclaimer.
13
* 2. Redistributions in binary form must reproduce the above copyright
14
* notice, this list of conditions and the following disclaimer in the
15
* documentation and/or other materials provided with the distribution.
16
*
17
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27
* SUCH DAMAGE.
28
*/
29
30
#include <sys/types.h>
31
#include <string.h>
32
33
#include "partedit.h"
34
35
/*
36
* partedit implementation for platforms on which the installer only offers
37
* UEFI-based boot. Currently, this includes arm64 and RISC-V.
38
*/
39
40
/* EFI partition size in bytes */
41
#define EFI_BOOTPART_SIZE (260 * 1024 * 1024)
42
43
const char *
44
default_scheme(void)
45
{
46
47
return ("GPT");
48
}
49
50
int
51
is_scheme_bootable(const char *part_type)
52
{
53
54
if (strcmp(part_type, "GPT") == 0)
55
return (1);
56
57
return (0);
58
}
59
60
int
61
is_fs_bootable(const char *part_type, const char *fs)
62
{
63
64
if (strcmp(fs, "freebsd-ufs") == 0)
65
return (1);
66
67
return (0);
68
}
69
70
size_t
71
bootpart_size(const char *scheme)
72
{
73
74
/* We only support GPT with EFI */
75
if (strcmp(scheme, "GPT") != 0)
76
return (0);
77
78
return (EFI_BOOTPART_SIZE);
79
}
80
81
const char *
82
bootpart_type(const char *scheme, const char **mountpoint)
83
{
84
85
/* Only EFI is supported as boot partition */
86
*mountpoint = "/boot/efi";
87
return ("efi");
88
}
89
90
const char *
91
bootcode_path(const char *part_type)
92
{
93
94
return (NULL);
95
}
96
97
const char *
98
partcode_path(const char *part_type, const char *fs_type)
99
{
100
101
/* No boot partition data. */
102
return (NULL);
103
}
104
105
106