summaryrefslogtreecommitdiff
path: root/host-tools/refactory_system_img.sh
blob: fac906351f33fdd9fbd14e0ca11053573325104e (plain)
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
#!/bin/bash

parent_dir=$(cd $(dirname $0); pwd)
cur_dir=$(pwd)
f_unpack_pl="${parent_dir}/unpack.pl"
f_simg2img="${parent_dir}/simg2img"
f_make_ext4fs="${parent_dir}/make_ext4fs"

f_boot_img="${1}"
if [ ! -f "${f_boot_img}" ]; then
    echo "The boot image file specified does not exist: ${f_boot_img}"
    exit 1
fi
f_boot_img_basename=$(basename ${f_boot_img})
f_boot_img_dirname=$(cd $(dirname ${f_boot_img}); pwd)
f_boot_img="${f_boot_img_dirname}/${f_boot_img_basename}"

f_system_img_old="${2}"
if [ ! -f "${f_system_img_old}" ]; then
    echo "The system image file specified does not exist: ${f_system_img_old}"
    exit 1
fi
f_system_img_basename=$(basename ${f_system_img_old})
f_system_img_dirname=$(cd $(dirname ${f_system_img_old}); pwd)
f_system_img_old="${f_system_img_dirname}/${f_system_img_basename}"

f_system_img_new="${cur_dir}/system_new.img"
d_system="${cur_dir}/system"
f_raw_img="${cur_dir}/raw.img"
d_raw="${cur_dir}/raw"
system_size="685768704"

function extract_file_contexts(){
    perl "${f_unpack_pl}" "${f_boot_img}"

    f_file_contexts="${cur_dir}/file_contexts"
    rm -f "${f_file_contexts}"
    cp -uvf "${f_boot_img}-ramdisk/file_contexts" "${f_file_contexts}"
    rm -vfr "${f_boot_img}-ramdisk" "${f_boot_img}-ramdisk.cpio.gz" "${f_boot_img}-kernel.gz"
}

function refactory_sys_img(){
    sudo rm -fr "${f_raw_img}" "${d_raw}" "${d_system}"
    "${f_simg2img}" "${f_system_img_old}" "${f_raw_img}"
    mkdir -p "${d_system}" "${d_raw}"
    sudo mount -t ext4 "${f_raw_img}" "${d_raw}"
    sudo cp -ruf ${d_raw}/* ${d_system}/
    #sudo rm -fr ${d_raw}/priv-app/SetupWizard
    sudo umount "${d_raw}"
    rm -fr "${d_raw}" "${f_raw_img}"
    #mv "${f_raw_img}" ${f_system_img_new}
    sed -i /ro.setupwizard.enterprise_mode=1/d "${d_system}/build.prop"
    sed -i 's/ro.setupwizard.network_required=true/ro.setupwizard.network_required=false/' "${d_system}/build.prop"

    sudo ${f_make_ext4fs} -l ${system_size} -s -T -1 -S ${f_file_contexts} -J -a system "${f_system_img_new}" "${d_system}"

    #sudo rm -fr ${d_system}/priv-app/SetupWizard
    #rm -fr "${d_system}" ${f_file_contexts}
}

extract_file_contexts
refactory_sys_img