ventoy-hook.sh 5.83 KB
Newer Older
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
#!/ventoy/busybox/sh
#************************************************************************************
# Copyright (c) 2021, longpanda <admin@ventoy.net>
# 
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 3 of the
# License, or (at your option) any later version.
# 
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program; if not, see <http://www.gnu.org/licenses/>.
# 
#************************************************************************************

. /ventoy/hook/ventoy-hook-lib.sh

vtlog "####### $0 $* ########"

VTPATH_OLD=$PATH; PATH=$BUSYBOX_PATH:$VTOY_PATH/tool:$PATH

mkdir /sys
mount -t sysfs sys /sys
mdev -s
sleep 2

while [ -n "Y" ]; do
    usb_disk=$(get_ventoy_disk_name)
    
    if echo $usb_disk | egrep -q "nvme|mmc|nbd"; then
        vtpart2=${usb_disk}p2
    else
        vtpart2=${usb_disk}2
    fi
    
    if [ -e "${vtpart2}" ]; then
        break
    else
        sleep 2
        mdev -s
    fi
done

vtdiskname=$(get_ventoy_disk_name)
if [ "$vtdiskname" = "unknown" ]; then
    vtlog "ventoy disk not found"
    PATH=$VTPATH_OLD
    exit 0
fi

ventoy_udev_disk_common_hook "${vtdiskname#/dev/}2" "noreplace"

blkdev_num=$($VTOY_PATH/tool/dmsetup ls | grep ventoy | sed 's/.*(\([0-9][0-9]*\),.*\([0-9][0-9]*\).*/\1:\2/')
vtDM=$(ventoy_find_dm_id ${blkdev_num})
echo -n $vtDM > /ventoy/vtDM

longpanda's avatar
longpanda committed
61
ventoy_create_chromeos_ventoy_part 3
62
63
64
mdev -s

vtlog "copy out the e2fsck program ..."
longpanda's avatar
longpanda committed
65
66
67
68
69
70

copy_lib() {
    cp -a /ventoy_rdroot/usr/lib64/$1 /usr/lib64/
    cp -a /ventoy_rdroot/lib64/$1 /lib64/
}

71
72
73
74
75
mkdir /ventoy_rdroot
mkdir -p /lib /lib64 /usr/lib64 /sbin

mount -o ro /dev/ventoy3 /ventoy_rdroot >>$VTLOG 2>&1
cp -a /ventoy_rdroot/sbin/e2fsck /sbin/
longpanda's avatar
longpanda committed
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
cp -a /ventoy_rdroot/sbin/dmsetup /sbin/

copy_lib libext2fs*
copy_lib libcom_err*
copy_lib libe2p*
copy_lib libblk*
copy_lib libuuid*
copy_lib libdl.*
copy_lib libdl-*
copy_lib libc.*
copy_lib libc-*
copy_lib libpthread*
copy_lib ld-*
copy_lib libdevmapper*
copy_lib libudev*
copy_lib libm.*
copy_lib libm-*
copy_lib librt*
copy_lib libpopt*
copy_lib libgpg-error*
copy_lib libselinux*
copy_lib libsepol*
copy_lib libpcre*
copy_lib libcap*
copy_lib libdw*
copy_lib libgcc_s*
copy_lib libattr*
copy_lib libelf*
copy_lib libz.*
copy_lib libbz2*
copy_lib libgcrypt*
copy_lib liblvm*

ln -s /lib64/libdevmapper.so.1.02 /lib64/libdevmapper.so.1.02.1
110
111
112
113
114
115

umount /ventoy_rdroot

vtlog "========================================="
vtlog "===== e2fsck -y -v /dev/ventoy1 ====="
e2fsck -y -v /dev/ventoy1 >>$VTLOG 2>&1
longpanda's avatar
longpanda committed
116
117
#vtlog "===== e2fsck -y -v /dev/ventoy3 ====="
#e2fsck -y -v /dev/ventoy3 >>$VTLOG 2>&1
118
119
120
121
vtlog "===== e2fsck -y -v /dev/ventoy8 ====="
e2fsck -y -v /dev/ventoy8 >>$VTLOG 2>&1
vtlog "========================================="

longpanda's avatar
longpanda committed
122
123
124
/sbin/dmsetup --version >>$VTLOG 2>&1
veritysetup --version >>$VTLOG 2>&1

125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
vtlog "proc devtmpfs ..."
mkdir /newdev
mount -t devtmpfs dev /newdev

cp -a /dev/mapper/ventoy* /newdev/mapper/
cp -a /dev/ventoy* /newdev/


vtshortname="${vtdiskname#/dev/}"
mv /newdev/${vtshortname} /newdev/backup_${vtshortname}
cp -a /dev/ventoy /newdev/${vtshortname}

for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do
    if [ -e /dev/ventoy${i} ]; then
        if echo $vtdiskname | egrep -q "nvme|mmc|nbd"; then
            vtpart=p$i
        else
            vtpart=$i
        fi
        
        if [ -e /newdev/${vtshortname}${vtpart} ]; then
            mv /newdev/${vtshortname}${vtpart} /newdev/backup_${vtshortname}${vtpart}
        fi

        cp -a /dev/ventoy${i} /newdev/${vtshortname}${vtpart}
        
        if [ $i -eq 3 ]; then
            [ -e /dev/${vtshortname}${vtpart} ] && rm -f /dev/${vtshortname}${vtpart}
            cp -a /dev/ventoy${i} /dev/${vtshortname}${vtpart}            
            vt_root_dev="/dev/${vtshortname}${vtpart}"            
            vtlog "vt_root_dev=$vt_root_dev"
        fi
    fi
done


longpanda's avatar
longpanda committed
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
# if grep -q 'DM=' /proc/cmdline; then
    # vtlog "Boot verified image ..."
    
    # dmP1=$(sed "s/.*\(0 [0-9]* verity\).*/\1/" /proc/cmdline)
    # alg=$(sed "s/.*alg=\([^ ]*\).*/\1/" /proc/cmdline)
    # hexdigest=$(sed "s/.*root_hexdigest=\([0-9a-fA-F][0-9a-fA-F]*\).*/\1/" /proc/cmdline)
    # salt=$(sed "s/.*salt=\([0-9a-fA-F][0-9a-fA-F]*\).*/\1/" /proc/cmdline)
    # hashstart=$(sed "s/.*hashstart=\([0-9][0-9]*\).*/\1/" /proc/cmdline)
    
    #512 to 4096
    # blocknum=$(expr $hashstart / 8)
    # hashoffset=$(expr $hashstart \* 512)
    
    # vtlog "veritysetup create vroot $vt_root_dev $vt_root_dev $hexdigest --data-block-size=4096 --hash-block-size=4096 --data-blocks=$blocknum --hash-offset=$hashoffset --salt=$salt --hash=$alg --no-superblock --format=0"
    # veritysetup create vroot $vt_root_dev $vt_root_dev $hexdigest --data-block-size=4096 --hash-block-size=4096 --data-blocks=$blocknum --hash-offset=$hashoffset --salt=$salt --hash=$alg --no-superblock --format=0
    # sleep 1
    # mdev -s

    # blkdev_num=$(dmsetup ls | grep vroot | sed 's/.*(\([0-9][0-9]*\),[^0-9]*\([0-9][0-9]*\).*/\1:\2/')
    # vtDM=$(ventoy_find_dm_id ${blkdev_num})
    # vtlog "blkdev_num=$blkdev_num vtDM=$vtDM"

    # if [ -b /dev/$vtDM ]; then
        # veritysetup status vroot >> $VTLOG 2>&1
        # mount -o ro /dev/$vtDM /ventoy_rdroot
    # else
        # mount -o ro $vt_root_dev /ventoy_rdroot
    # fi
# else
    # vtlog "Boot normal image ..."
    # mount -o ro $vt_root_dev /ventoy_rdroot
# fi

vtlog "Boot normal image ..."
195
mount -o ro $vt_root_dev /ventoy_rdroot
longpanda's avatar
longpanda committed
196
197
198

cp -a $VTLOG /newdev/ventoy.log
umount /newdev
199
200
201
mount -t devtmpfs dev /ventoy_rdroot/dev

PATH=$VTPATH_OLD