]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/shared/gpt.h
Add SPDX license identifiers to source files under the LGPL
[thirdparty/systemd.git] / src / shared / gpt.h
CommitLineData
53e1b683 1/* SPDX-License-Identifier: LGPL-2.1+ */
0ef6f454
LP
2#pragma once
3
e48fdd84
LP
4/***
5 This file is part of systemd.
6
7 Copyright 2014 Lennart Poettering
8
9 systemd is free software; you can redistribute it and/or modify it
10 under the terms of the GNU Lesser General Public License as published by
11 the Free Software Foundation; either version 2.1 of the License, or
12 (at your option) any later version.
13
14 systemd is distributed in the hope that it will be useful, but
15 WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 Lesser General Public License for more details.
18
19 You should have received a copy of the GNU Lesser General Public License
20 along with systemd; If not, see <http://www.gnu.org/licenses/>.
21***/
22
6017365a
LP
23#include <endian.h>
24
e48fdd84
LP
25#include "sd-id128.h"
26
f827e09f 27/* We only support root disk discovery for x86, x86-64, Itanium and ARM for
a86eae57
LP
28 * now, since EFI for anything else doesn't really exist, and we only
29 * care for root partitions on the same disk as the EFI ESP. */
cbd353ce
LP
30
31#define GPT_ROOT_X86 SD_ID128_MAKE(44,47,95,40,f2,97,41,b2,9a,f7,d1,31,d5,f0,45,8a)
32#define GPT_ROOT_X86_64 SD_ID128_MAKE(4f,68,bc,e3,e8,cd,4d,b1,96,e7,fb,ca,f9,84,b7,09)
a86eae57
LP
33#define GPT_ROOT_ARM SD_ID128_MAKE(69,da,d7,10,2c,e4,4e,3c,b1,6c,21,a1,d4,9a,be,d3)
34#define GPT_ROOT_ARM_64 SD_ID128_MAKE(b9,21,b0,45,1d,f0,41,c3,af,44,4c,6f,28,0d,3f,ae)
f827e09f 35#define GPT_ROOT_IA64 SD_ID128_MAKE(99,3d,8d,3d,f8,0e,42,25,85,5a,9d,af,8e,d7,ea,97)
cbd353ce
LP
36#define GPT_ESP SD_ID128_MAKE(c1,2a,73,28,f8,1f,11,d2,ba,4b,00,a0,c9,3e,c9,3b)
37#define GPT_SWAP SD_ID128_MAKE(06,57,fd,6d,a4,ab,43,c4,84,e5,09,33,c8,4b,4f,4f)
38#define GPT_HOME SD_ID128_MAKE(93,3a,c7,e1,2e,b4,4f,13,b8,44,0e,14,e2,ae,f9,15)
39#define GPT_SRV SD_ID128_MAKE(3b,8f,84,25,20,e0,4f,3b,90,7f,1a,25,a7,6f,98,e8)
40
4623e8e6
LP
41/* Verity partitions for the root partitions above (we only define them for the root partitions, because only they are
42 * are commonly read-only and hence suitable for verity). */
43#define GPT_ROOT_X86_VERITY SD_ID128_MAKE(d1,3c,5d,3b,b5,d1,42,2a,b2,9f,94,54,fd,c8,9d,76)
44#define GPT_ROOT_X86_64_VERITY SD_ID128_MAKE(2c,73,57,ed,eb,d2,46,d9,ae,c1,23,d4,37,ec,2b,f5)
45#define GPT_ROOT_ARM_VERITY SD_ID128_MAKE(73,86,cd,f2,20,3c,47,a9,a4,98,f2,ec,ce,45,a2,d6)
46#define GPT_ROOT_ARM_64_VERITY SD_ID128_MAKE(df,33,00,ce,d6,9f,4c,92,97,8c,9b,fb,0f,38,d8,20)
47#define GPT_ROOT_IA64_VERITY SD_ID128_MAKE(86,ed,10,d5,b6,07,45,bb,89,57,d3,50,f2,3d,05,71)
48
49
cbd353ce
LP
50#if defined(__x86_64__)
51# define GPT_ROOT_NATIVE GPT_ROOT_X86_64
1b9e5b12 52# define GPT_ROOT_SECONDARY GPT_ROOT_X86
4623e8e6
LP
53# define GPT_ROOT_NATIVE_VERITY GPT_ROOT_X86_64_VERITY
54# define GPT_ROOT_SECONDARY_VERITY GPT_ROOT_X86_VERITY
cbd353ce
LP
55#elif defined(__i386__)
56# define GPT_ROOT_NATIVE GPT_ROOT_X86
4623e8e6 57# define GPT_ROOT_NATIVE_VERITY GPT_ROOT_X86_VERITY
cbd353ce 58#endif
cca1dfdd 59
f827e09f
AW
60#if defined(__ia64__)
61# define GPT_ROOT_NATIVE GPT_ROOT_IA64
4623e8e6 62# define GPT_ROOT_NATIVE_VERITY GPT_ROOT_IA64_VERITY
f827e09f
AW
63#endif
64
4f4b92ba 65#if defined(__aarch64__) && (__BYTE_ORDER != __BIG_ENDIAN)
a86eae57
LP
66# define GPT_ROOT_NATIVE GPT_ROOT_ARM_64
67# define GPT_ROOT_SECONDARY GPT_ROOT_ARM
4623e8e6
LP
68# define GPT_ROOT_NATIVE_VERITY GPT_ROOT_ARM_64_VERITY
69# define GPT_ROOT_SECONDARY_VERITY GPT_ROOT_ARM_VERITY
4f4b92ba 70#elif defined(__arm__) && (__BYTE_ORDER != __BIG_ENDIAN)
a86eae57 71# define GPT_ROOT_NATIVE GPT_ROOT_ARM
4623e8e6 72# define GPT_ROOT_NATIVE_VERITY GPT_ROOT_ARM_VERITY
a86eae57
LP
73#endif
74
a48dd347
LP
75#define GPT_FLAG_NO_BLOCK_IO_PROTOCOL (1ULL << 1)
76
cca1dfdd
LP
77/* Flags we recognize on the root, swap, home and srv partitions when
78 * doing auto-discovery. These happen to be identical to what
79 * Microsoft defines for its own Basic Data Partitions, but that's
80 * just because we saw no point in defining any other values here. */
81#define GPT_FLAG_READ_ONLY (1ULL << 60)
82#define GPT_FLAG_NO_AUTO (1ULL << 63)
f6c51a81
LP
83
84#define GPT_LINUX_GENERIC SD_ID128_MAKE(0f,c6,3d,af,84,83,47,72,8e,79,3d,69,d8,47,7d,e4)