]> git.ipfire.org Git - ipfire-2.x.git/blame - src/install+setup/install/hw.h
installer: Pass partition sizes to parted in bytes.
[ipfire-2.x.git] / src / install+setup / install / hw.h
CommitLineData
f0fa1795
MT
1/*#############################################################################
2# #
3# IPFire - An Open Source Firewall Distribution #
4# Copyright (C) 2014 IPFire development team #
5# #
6# This program is free software: you can redistribute it and/or modify #
7# it under the terms of the GNU General Public License as published by #
8# the Free Software Foundation, either version 3 of the License, or #
9# (at your option) any later version. #
10# #
11# This program is distributed in the hope that it will be useful, #
12# but WITHOUT ANY WARRANTY; without even the implied warranty of #
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
14# GNU General Public License for more details. #
15# #
16# You should have received a copy of the GNU General Public License #
17# along with this program. If not, see <http://www.gnu.org/licenses/>. #
18# #
19#############################################################################*/
20
21#ifndef HEADER_HW_H
22#define HEADER_HW_H
23
24#include <libudev.h>
25
25fcce25 26#define DESTINATION_MOUNT_PATH "/harddisk"
f0fa1795
MT
27#define SOURCE_MOUNT_PATH "/cdrom"
28#define SOURCE_TEST_FILE SOURCE_MOUNT_PATH "/" VERSION ".media"
29
d7dd283b
MT
30#define HW_MAX_DISKS 32
31#define STRING_SIZE 1024
32#define DEV_SIZE 128
33
25fcce25
MT
34#define HW_PATH_BOOT "/boot"
35#define HW_PATH_DATA "/var"
36
d7dd283b
MT
37#define HW_PART_TYPE_NORMAL 0
38#define HW_PART_TYPE_RAID1 1
39
25fcce25
MT
40#define HW_PART_TABLE_MSDOS 0
41#define HW_PART_TABLE_GPT 1
42
43#define HW_FS_SWAP 0
44#define HW_FS_REISERFS 1
45#define HW_FS_EXT4 2
46#define HW_FS_EXT4_WO_JOURNAL 3
47
48#define HW_FS_DEFAULT HW_FS_EXT4
49
50#define BYTES2MB(x) ((x) / 1024 / 1024)
51#define MB2BYTES(x) ((unsigned long long)(x) * 1024 * 1024)
52
f0fa1795
MT
53struct hw {
54 struct udev *udev;
55};
56
d7dd283b
MT
57struct hw_disk {
58 char path[DEV_SIZE];
59 unsigned long long size;
60
61 char description[STRING_SIZE];
62 char vendor[STRING_SIZE];
63 char model[STRING_SIZE];
64
65 // Reference counter
66 int ref;
67};
68
69struct hw_destination {
70 char path[DEV_SIZE];
d7dd283b
MT
71
72 int is_raid;
4a0d9bef 73 int raid_level;
d7dd283b
MT
74 const struct hw_disk* disk1;
75 const struct hw_disk* disk2;
76
25fcce25 77 int part_table;
48d6a112 78 char part_bootldr[DEV_SIZE];
d7dd283b
MT
79 char part_boot[DEV_SIZE];
80 char part_swap[DEV_SIZE];
81 char part_root[DEV_SIZE];
82 char part_data[DEV_SIZE];
25fcce25
MT
83 int part_boot_idx;
84
85 int filesystem;
86
87 unsigned long long size;
48d6a112 88 unsigned long long size_bootldr;
25fcce25
MT
89 unsigned long long size_boot;
90 unsigned long long size_swap;
91 unsigned long long size_root;
92 unsigned long long size_data;
d7dd283b
MT
93};
94
f0fa1795
MT
95struct hw* hw_init();
96void hw_free(struct hw* hw);
97
25fcce25 98int hw_mount(const char* source, const char* target, const char* fs, int flags);
f0fa1795
MT
99int hw_umount(const char* target);
100
101char* hw_find_source_medium(struct hw* hw);
102
d7dd283b
MT
103struct hw_disk** hw_find_disks(struct hw* hw);
104void hw_free_disks(struct hw_disk** disks);
105unsigned int hw_count_disks(struct hw_disk** disks);
106struct hw_disk** hw_select_disks(struct hw_disk** disks, int* selection);
107
25fcce25
MT
108struct hw_destination* hw_make_destination(int part_type, struct hw_disk** disks);
109
c4e96674
MT
110unsigned long long hw_memory();
111
25fcce25
MT
112int hw_create_partitions(struct hw_destination* dest);
113int hw_create_filesystems(struct hw_destination* dest);
114
115int hw_mount_filesystems(struct hw_destination* dest, const char* prefix);
116int hw_umount_filesystems(struct hw_destination* dest, const char* prefix);
117
4a0d9bef
MT
118int hw_setup_raid(struct hw_destination* dest);
119int hw_stop_all_raid_arrays();
120
f5007e9c
MT
121int hw_install_bootloader(struct hw_destination* dest);
122
f0fa1795 123#endif /* HEADER_HW_H */