blob: 3a56d32ba8a06e8657751ac04c20ffbc44a50c90 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
source "$(dirname "${BASH_SOURCE[0]}")/rebash/core.sh"
core.import logging
function utils_compile_nbd() {
# Downloads and compiles nbd.
#
# Examples:
#
# >>> utils_compile_nbd path/to/nbd/directory/
# ...
# Provides the following file:
# "$1/nbd.ko"
pushd "$1"
logging.info 'Compile the nbd kernel module.'
make
popd
return $?
}
function utils_clean_nbd() {
# Cleans nbd specific generated files
#
# Examples:
#
# >>> utils_clean_nbd path/to/nbd/directory/
# ...
# Removes the following file:
# "$1/nbd.ko"
pushd "$1"
make clean
popd
return $?
}
function utils_compile_dnbd3() {
# Downloads and compiles dnbd3.
#
# Examples:
#
# >>> utils_compile_dnbd3 path/to/dnbd3/directory/
# ...
# Provides the following file:
# "$1/build/dnbd3.ko"
pushd "$1/.."
rm --recursive --force "$1"
git clone git://git.openslx.org/dnbd3.git
cd dnbd3
./build.sh
popd
return $?
}
function utils_clean_dnbd3() {
# Removes generated dnbd3 specific files.
#
# Examples:
#
# >>> utils_clean_dnbd3 path/to/dnbd3/directory/
# ...
# Removes the following directory:
# "$1/build"
rm --recursive --force "$1/build"
return $?
}
function utils_compile_systemd_preserve_process_marker() {
# Compiles simple c program.
#
# Examples:
#
# >>> utils_compile_systemd_preserve_process_marker path/to/program/folder
pushd "$1"
make
popd
return $?
}
function utils_clean_systemd_preserve_process_marker() {
# Removes compiled simple c program.
#
# Examples:
#
# >>> utils_clean_systemd_preserve_process_marker path/to/program/folder
pushd "$1"
make clean
popd
return $?
}
function utils_dependency_check() {
# This function check if all given dependencies are present.
#
# Examples:
#
# >>> utils_dependency_check "mkdir pacstrap mktemp"
# ...
local dependenciesToCheck="$1"
local result=0
local dependency
for dependency in ${dependenciesToCheck[*]}; do
if ! hash "$dependency" 2>/dev/null; then
build_initramfs_log 'critical' \
"Needed dependency \"$dependency\" isn't available."
result=1
fi
done
return $result
}
function utils_mount_partition() {
# Mounts a partition at given offset.
#
# Examples:
#
# >>> utils_mount_partition /dev/DEVICE_NAME PARTITION_IDENTIFIER
# ...
local device="$1"
local partition_identifier="$2"
local loop_device="$(losetup --find)"
local sector_size="$(blockdev --getbsz "$device")"
local partition_info="(partx --raw --noheadings --output START,NAME,UUID \
"$device" 2>/dev/null| grep part)"
local offset_sectors="$(echo "$partition_identifier" | \
cut --delimiter=' ' --fields=1)"
if [ -z "$offset_sectors" ]; then
logging.warn "could not find partition with identifier \"$partition_identifier\" on device $device"
return 1
fi
# NOTE: Could overflow on 32bit systems
# logging.warn "$(("$offset_sectors"*512))"
local offset_bytes="$(echo | awk -v x="$offset_sectors" -v y="$sector_size" '{print x * y}')"
# NOTE: Test if mount works directly (problem with btrfs device id).
# mount --verbose --options loop,offset="$offset_bytes" "$device" "$mount_point"
losetup --verbose --offset "$offset_bytes" "$loop_device" "$device"
echo "$loop_device"
}
|