4 .
/lib
/upgrade
/common.sh
5 .
/usr
/share
/libubox
/jshn.sh
7 OWRT_VOLUMES
=owrt-volumes
12 json_load
"$(sfdisk -J "$dev" 2>/dev/null)"
13 json_select
"partitiontable" ||
return 1
17 get_partition_by_name_gpt
() {
18 local label part parts node name
20 [ "$label" = "gpt" ] ||
return
21 json_select
"partitions" ||
return
23 for part
in $parts; do
25 json_get_vars node name
26 if [ "$1" = "$name" ]; then
35 get_partition_by_type_mbr
() {
36 local label part parts node
type
38 [ "$label" = "dos" ] ||
return
39 json_select
"partitions" ||
return
41 for part
in $parts; do
43 json_get_vars node
type
44 if [ "$1" = "$type" ]; then
54 echo "write" | sfdisk
--force -q -w never
"$1" 1>/dev
/null
2>/dev
/null
59 sfdisk
--bytes -q -F "$1" 2>/dev
/null |
while read -r start end sectors size
; do
61 *"Unpartitioned"* |
*"Units:"* |
*"Sector"* |
*"Start"* )
65 [ "$size" -lt $
((100 * 1024 * 1024)) ] && continue
66 [ "$found" ] ||
echo "start=$start, size=$sectors"
77 freepart
="$(get_free_area "$disk")"
78 if [ "$freepart" ]; then
79 echo "$freepart, type=lvm, name=$OWRT_VOLUMES" | sfdisk
--force -w never
-a "$disk" ||
return 1
80 partx
-a "$disk" 1>/dev
/null
2>/dev
/null || true
89 lvm vgcreate
"$2" "$1"
96 local diskserial diskhash
98 export_bootdevice
&& export_partdevice diskdev
0
100 [ "$diskdev" ] ||
return
102 [ -e "/sys/class/block/$diskdev/device/serial" ] && diskserial
="$(cat "/sys
/class
/block
/$diskdev/device
/serial
")"
103 [ -e "/sys/class/block/$diskdev/device/cid" ] && diskserial
="$diskserial$(cat "/sys
/class
/block
/$diskdev/device
/cid
")"
104 [ "$diskserial" ] || diskserial
="$(cat /proc/sys/kernel/random/uuid)"
105 diskhash
="$(echo "$diskserial" | sha256sum | cut -d' ' -f1)"
107 part_fixup
"/dev/$diskdev"
108 create_lvm_part
"/dev/$diskdev" ||
return
109 load_partitions
"/dev/$diskdev" ||
return
110 lvmpart
="$(get_partition_by_name_gpt "$OWRT_VOLUMES")"
111 [ "$lvmpart" ] || lvmpart
="$(get_partition_by_type_mbr "8e
")"
112 [ "$lvmpart" ] ||
return
114 lvm_init
"$lvmpart" "${OWRT_VOLUMES}-${diskhash:0:16}"