]>
git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blob - src/installer/hw.h
1 /*#############################################################################
3 # IPFire - An Open Source Firewall Distribution #
4 # Copyright (C) 2014 IPFire development team #
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. #
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. #
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/>. #
19 #############################################################################*/
26 #define DESTINATION_MOUNT_PATH "/harddisk"
27 #define SOURCE_MOUNT_PATH "/cdrom"
28 #define SOURCE_TEST_FILE SOURCE_MOUNT_PATH "/" DISTRO_SNAME "-" DISTRO_VERSION ".media"
30 #define HW_MAX_DISKS 32
31 #define STRING_SIZE 1024
34 #define HW_PATH_BOOT "/boot"
35 #define HW_PATH_BOOT_EFI "/boot/efi"
36 #define HW_PATH_DATA "/var"
38 #define HW_PART_TYPE_NORMAL 0
39 #define HW_PART_TYPE_RAID1 1
41 #define HW_PART_TABLE_MSDOS 0
42 #define HW_PART_TABLE_GPT 1
46 #define HW_FS_EXT4_WO_JOURNAL 2
50 #define HW_FS_DEFAULT HW_FS_EXT4
52 #define RAID_METADATA "1.0"
54 #define SERIAL_BAUDRATE 115200
56 #define BYTES2MB(x) ((x) / 1024 / 1024)
57 #define MB2BYTES(x) ((unsigned long long)(x) * 1024 * 1024)
61 char arch
[STRING_SIZE
];
63 // Enabled if we should install in EFI mode
69 unsigned long long size
;
71 char description
[STRING_SIZE
];
72 char vendor
[STRING_SIZE
];
73 char model
[STRING_SIZE
];
79 struct hw_destination
{
84 const struct hw_disk
* disk1
;
85 const struct hw_disk
* disk2
;
88 char part_bootldr
[DEV_SIZE
];
89 char part_boot
[DEV_SIZE
];
90 char part_boot_efi
[DEV_SIZE
];
91 char part_swap
[DEV_SIZE
];
92 char part_root
[DEV_SIZE
];
94 int part_boot_efi_idx
;
98 unsigned long long size
;
99 unsigned long long size_bootldr
;
100 unsigned long long size_boot
;
101 unsigned long long size_boot_efi
;
102 unsigned long long size_swap
;
103 unsigned long long size_root
;
106 struct hw
* hw_init();
107 void hw_free(struct hw
* hw
);
109 int hw_mount(const char* source
, const char* target
, const char* fs
, int flags
);
110 int hw_umount(const char* source
, const char* prefix
);
112 char* hw_find_source_medium(struct hw
* hw
);
114 struct hw_disk
** hw_find_disks(struct hw
* hw
, const char* sourcedrive
);
115 void hw_free_disks(struct hw_disk
** disks
);
116 unsigned int hw_count_disks(const struct hw_disk
** disks
);
117 struct hw_disk
** hw_select_disks(struct hw_disk
** disks
, int* selection
);
118 struct hw_disk
** hw_select_first_disk(const struct hw_disk
** disks
);
120 struct hw_destination
* hw_make_destination(struct hw
* hw
, int part_type
, struct hw_disk
** disks
,
123 unsigned long long hw_memory();
125 int hw_create_partitions(struct hw_destination
* dest
, const char* output
);
126 int hw_create_filesystems(struct hw_destination
* dest
, const char* output
);
128 int hw_mount_filesystems(struct hw_destination
* dest
, const char* prefix
);
129 int hw_umount_filesystems(struct hw_destination
* dest
, const char* prefix
);
131 int hw_destroy_raid_superblocks(const struct hw_destination
* dest
, const char* output
);
132 int hw_setup_raid(struct hw_destination
* dest
, const char* output
);
133 int hw_stop_all_raid_arrays(const char* output
);
135 int hw_install_bootloader(struct hw
* hw
, struct hw_destination
* dest
, const char* output
);
136 int hw_write_fstab(struct hw_destination
* dest
);
138 char* hw_find_backup_file(const char* output
, const char* search_path
);
139 int hw_restore_backup(const char* output
, const char* backup_path
, const char* destination
);
141 int hw_start_networking(const char* output
);
145 #endif /* HEADER_HW_H */