Diff
checker
テキスト
テキスト
画像
ドキュメント
Excel
フォルダ
Legal
Enterprise
デスクトップ
料金
ログイン
Diffchecker デスクトップのダウンロード
テキスト比較
2 つのテキスト ファイルの違いを見つける
ツール
履歴
ライブエディター
未変更行を折りたたむ
折り返しなし
レイアウト
分割
統合
比較精度
スマート
単語
文字
シンタックスハイライト
構文を選択
無視
テキスト変換
最初の差分へ移動
入力を編集
Diffchecker Desktop
Diffcheckerを実行する最も安全な方法。Diffchecker Desktopアプリを入手:あなたの差分はコンピューターから出ることはありません!
Desktopを入手
Untitled diff
作成日
3 年前
差分は期限切れになりません
クリア
エクスポート
共有
説明
28 削除
行
合計
削除
文字
合計
削除
この機能を引き続き使用するには、アップグレードしてください
Diff
checker
Pro
価格を見る
259 行
すべてコピー
13 追加
行
合計
追加
文字
合計
追加
この機能を引き続き使用するには、アップグレードしてください
Diff
checker
Pro
価格を見る
237 行
すべてコピー
#!/system/bin/sh
#!/system/bin/sh
#######################################################################################
#######################################################################################
# Magisk Boot Image Patcher
# Magisk Boot Image Patcher
#######################################################################################
#######################################################################################
#
#
# Usage: boot_patch.sh <bootimage>
# Usage: boot_patch.sh <bootimage>
#
#
# The following environment variables can configure the installation:
# The following environment variables can configure the installation:
# KEEPVERITY, KEEPFORCEENCRYPT, PATCHVBMETAFLAG, RECOVERYMODE, LEGACYSAR
# KEEPVERITY, KEEPFORCEENCRYPT, PATCHVBMETAFLAG, RECOVERYMODE, LEGACYSAR
#
#
# This script should be placed in a directory with the following files:
# This script should be placed in a directory with the following files:
#
#
# File name Type Description
# File name Type Description
#
#
# boot_patch.sh script A script to patch boot image for Magisk.
# boot_patch.sh script A script to patch boot image for Magisk.
# (this file) The script will use files in its same
# (this file) The script will use files in its same
# directory to complete the patching process.
# directory to complete the patching process.
# util_functions.sh script A script which hosts all functions required
# util_functions.sh script A script which hosts all functions required
# for this script to work properly.
# for this script to work properly.
コピー
コピー済み
コピー
コピー済み
# magiskinit binary The binary to replace /init.
# magisk(32/64) binary The magisk binaries.
# magiskboot binary A tool to manipulate boot images.
# magiskboot binary A tool to manipulate boot images.
コピー
コピー済み
コピー
コピー済み
# stub.apk binary The stub Magisk app to embed into ramdisk.
# chromeos folder This folder includes the utility and keys to sign
# chromeos folder This folder includes the utility and keys to sign
# (optional) chromeos boot images. Only used for Pixel C.
# (optional) chromeos boot images. Only used for Pixel C.
#
#
#######################################################################################
#######################################################################################
############
############
# Functions
# Functions
############
############
# Pure bash dirname implementation
# Pure bash dirname implementation
getdir() {
getdir() {
case "$1" in
case "$1" in
*/*)
*/*)
dir=${1%/*}
dir=${1%/*}
if [ -z $dir ]; then
if [ -z $dir ]; then
echo "/"
echo "/"
else
else
echo $dir
echo $dir
fi
fi
;;
;;
*) echo "." ;;
*) echo "." ;;
esac
esac
}
}
#################
#################
# Initialization
# Initialization
#################
#################
if [ -z $SOURCEDMODE ]; then
if [ -z $SOURCEDMODE ]; then
# Switch to the location of the script file
# Switch to the location of the script file
cd "$(getdir "${BASH_SOURCE:-$0}")"
cd "$(getdir "${BASH_SOURCE:-$0}")"
# Load utility functions
# Load utility functions
. ./util_functions.sh
. ./util_functions.sh
# Check if 64-bit
# Check if 64-bit
api_level_arch_detect
api_level_arch_detect
fi
fi
BOOTIMAGE="$1"
BOOTIMAGE="$1"
[ -e "$BOOTIMAGE" ] || abort "$BOOTIMAGE does not exist!"
[ -e "$BOOTIMAGE" ] || abort "$BOOTIMAGE does not exist!"
# Dump image for MTD/NAND character device boot partitions
# Dump image for MTD/NAND character device boot partitions
if [ -c "$BOOTIMAGE" ]; then
if [ -c "$BOOTIMAGE" ]; then
nanddump -f boot.img "$BOOTIMAGE"
nanddump -f boot.img "$BOOTIMAGE"
BOOTNAND="$BOOTIMAGE"
BOOTNAND="$BOOTIMAGE"
BOOTIMAGE=boot.img
BOOTIMAGE=boot.img
fi
fi
# Flags
# Flags
[ -z $KEEPVERITY ] && KEEPVERITY=false
[ -z $KEEPVERITY ] && KEEPVERITY=false
[ -z $KEEPFORCEENCRYPT ] && KEEPFORCEENCRYPT=false
[ -z $KEEPFORCEENCRYPT ] && KEEPFORCEENCRYPT=false
[ -z $PATCHVBMETAFLAG ] && PATCHVBMETAFLAG=false
[ -z $PATCHVBMETAFLAG ] && PATCHVBMETAFLAG=false
[ -z $RECOVERYMODE ] && RECOVERYMODE=false
[ -z $RECOVERYMODE ] && RECOVERYMODE=false
[ -z $LEGACYSAR ] && LEGACYSAR=false
[ -z $LEGACYSAR ] && LEGACYSAR=false
export KEEPVERITY
export KEEPVERITY
export KEEPFORCEENCRYPT
export KEEPFORCEENCRYPT
export PATCHVBMETAFLAG
export PATCHVBMETAFLAG
chmod -R 755 .
chmod -R 755 .
#########
#########
# Unpack
# Unpack
#########
#########
CHROMEOS=false
CHROMEOS=false
ui_print "- Unpacking boot image"
ui_print "- Unpacking boot image"
./magiskboot unpack "$BOOTIMAGE"
./magiskboot unpack "$BOOTIMAGE"
case $? in
case $? in
0 ) ;;
0 ) ;;
1 )
1 )
abort "! Unsupported/Unknown image format"
abort "! Unsupported/Unknown image format"
;;
;;
2 )
2 )
ui_print "- ChromeOS boot image detected"
ui_print "- ChromeOS boot image detected"
CHROMEOS=true
CHROMEOS=true
;;
;;
* )
* )
abort "! Unable to unpack boot image"
abort "! Unable to unpack boot image"
;;
;;
esac
esac
###################
###################
# Ramdisk Restores
# Ramdisk Restores
###################
###################
# Test patch status and do restore
# Test patch status and do restore
ui_print "- Checking ramdisk status"
ui_print "- Checking ramdisk status"
if [ -e ramdisk.cpio ]; then
if [ -e ramdisk.cpio ]; then
./magiskboot cpio ramdisk.cpio test
./magiskboot cpio ramdisk.cpio test
STATUS=$?
STATUS=$?
SKIP_BACKUP=""
SKIP_BACKUP=""
else
else
# Stock A only legacy SAR, or some Android 13 GKIs
# Stock A only legacy SAR, or some Android 13 GKIs
STATUS=0
STATUS=0
SKIP_BACKUP="#"
SKIP_BACKUP="#"
fi
fi
case $((STATUS & 3)) in
case $((STATUS & 3)) in
0 ) # Stock boot
0 ) # Stock boot
ui_print "- Stock boot image detected"
ui_print "- Stock boot image detected"
コピー
コピー済み
コピー
コピー済み
SHA1=$(./magiskboot sha1 "$BOOTIMAGE" 2>/dev/null)
abort "! Please install Magisk first"
cat $BOOTIMAGE > stock_boot.img
cp -af ramdisk.cpio ramdisk.cpio.orig 2>/dev/null
;;
;;
1 ) # Magisk patched
1 ) # Magisk patched
ui_print "- Magisk patched boot image detected"
ui_print "- Magisk patched boot image detected"
コピー
コピー済み
コピー
コピー済み
./magiskboot cpio ramdisk.cpio \
#
./magiskboot cpio ramdisk.cpio \
"extract .backup/.magisk config.orig" \
#
"extract .backup/.magisk config.orig" \
"restore"
#
"restore"
cp -af ramdisk.cpio ramdisk.cpio.orig
#
cp -af ramdisk.cpio ramdisk.cpio.orig
rm -f stock_boot.img
#
rm -f stock_boot.img
;;
;;
2 ) # Unsupported
2 ) # Unsupported
ui_print "! Boot image patched by unsupported programs"
ui_print "! Boot image patched by unsupported programs"
abort "! Please restore back to stock boot image"
abort "! Please restore back to stock boot image"
;;
;;
esac
esac
# Workaround custom legacy Sony /init -> /(s)bin/init_sony : /init.real setup
# Workaround custom legacy Sony /init -> /(s)bin/init_sony : /init.real setup
INIT=init
INIT=init
if [ $((STATUS & 4)) -ne 0 ]; then
if [ $((STATUS & 4)) -ne 0 ]; then
INIT=init.real
INIT=init.real
fi
fi
if [ -f config.orig ]; then
if [ -f config.orig ]; then
# Read existing configs
# Read existing configs
chmod 0644 config.orig
chmod 0644 config.orig
SHA1=$(grep_prop SHA1 config.orig)
SHA1=$(grep_prop SHA1 config.orig)
if ! $BOOTMODE; then
if ! $BOOTMODE; then
# Do not inherit config if not in recovery
# Do not inherit config if not in recovery
PREINITDEVICE=$(grep_prop PREINITDEVICE config.orig)
PREINITDEVICE=$(grep_prop PREINITDEVICE config.orig)
fi
fi
rm config.orig
rm config.orig
fi
fi
##################
##################
# Ramdisk Patches
# Ramdisk Patches
##################
##################
ui_print "- Patching ramdisk"
ui_print "- Patching ramdisk"
コピー
コピー済み
コピー
コピー済み
# Compress to save precious ramdisk space
SKIP32="#"
SKIP64="#"
if [ -f magisk64 ]; then
$BOOTMODE && [ -z "$PREINITDEVICE" ] && PREINITDEVICE=$(./magisk64 --preinit-device)
./magiskboot compress=xz magisk64 magisk64.xz
unset SKIP64
fi
if [ -f magisk32 ]; then
$BOOTMODE && [ -z "$PREINITDEVICE" ] && PREINITDEVICE=$(./magisk32 --preinit-device)
./magiskboot compress=xz magisk32 magisk32.xz
unset SKIP32
fi
./magiskboot compress=xz stub.apk stub.xz
echo "KEEPVERITY=$KEEPVERITY" > config
echo "KEEPVERITY=$KEEPVERITY" > config
echo "KEEPFORCEENCRYPT=$KEEPFORCEENCRYPT" >> config
echo "KEEPFORCEENCRYPT=$KEEPFORCEENCRYPT" >> config
echo "RECOVERYMODE=$RECOVERYMODE" >> config
echo "RECOVERYMODE=$RECOVERYMODE" >> config
if [ -n "$PREINITDEVICE" ]; then
if [ -n "$PREINITDEVICE" ]; then
ui_print "- Pre-init storage partition: $PREINITDEVICE"
ui_print "- Pre-init storage partition: $PREINITDEVICE"
echo "PREINITDEVICE=$PREINITDEVICE" >> config
echo "PREINITDEVICE=$PREINITDEVICE" >> config
fi
fi
[ -n "$SHA1" ] && echo "SHA1=$SHA1" >> config
[ -n "$SHA1" ] && echo "SHA1=$SHA1" >> config
./magiskboot cpio ramdisk.cpio \
./magiskboot cpio ramdisk.cpio \
コピー
コピー済み
コピー
コピー済み
"add 0750 $INIT magiskinit" \
"mkdir 0750 overlay.d" \
"mkdir 0750 overlay.d" \
"mkdir 0750 overlay.d/sbin" \
"mkdir 0750 overlay.d/sbin" \
コピー
コピー済み
コピー
コピー済み
"
$SKIP32
add
0644
overlay.d/
sbin/magisk32.xz magisk32.xz" \
"
add
0750
overlay.d/
init.autoboot.rc files/init.autoboot.rc" \
"$SKIP64 add 0644 overlay.d/sbin/magisk64.xz magisk64.xz" \
"add
0750
overlay.d/sbin/
autoboot.sh files/autoboot.sh
" \
"add
0644
overlay.d/sbin/
stub.xz stub.xz
" \
"patch" \
"patch" \
コピー
コピー済み
コピー
コピー済み
"
$SKIP_BACKUP backup ramdisk.cpio.orig" \
"
#
$SKIP_BACKUP backup ramdisk.cpio.orig" \
"
mkdir 000 .backup" \
"
#
mkdir 000 .backup" \
"
add 000 .backup/.magisk config" \
"
#
add 000 .backup/.magisk config" \
|| abort "! Unable to patch ramdisk"
|| abort "! Unable to patch ramdisk"
rm -f ramdisk.cpio.orig config magisk*.xz stub.xz
rm -f ramdisk.cpio.orig config magisk*.xz stub.xz
#################
#################
# Binary Patches
# Binary Patches
#################
#################
for dt in dtb kernel_dtb extra; do
for dt in dtb kernel_dtb extra; do
if [ -f $dt ]; then
if [ -f $dt ]; then
if ! ./magiskboot dtb $dt test; then
if ! ./magiskboot dtb $dt test; then
ui_print "! Boot image $dt was patched by old (unsupported) Magisk"
ui_print "! Boot image $dt was patched by old (unsupported) Magisk"
abort "! Please try again with *unpatched* boot image"
abort "! Please try again with *unpatched* boot image"
fi
fi
if ./magiskboot dtb $dt patch; then
if ./magiskboot dtb $dt patch; then
ui_print "- Patch fstab in boot image $dt"
ui_print "- Patch fstab in boot image $dt"
fi
fi
fi
fi
done
done
if [ -f kernel ]; then
if [ -f kernel ]; then
PATCHEDKERNEL=false
PATCHEDKERNEL=false
# Remove Samsung RKP
# Remove Samsung RKP
./magiskboot hexpatch kernel \
./magiskboot hexpatch kernel \
49010054011440B93FA00F71E9000054010840B93FA00F7189000054001840B91FA00F7188010054 \
49010054011440B93FA00F71E9000054010840B93FA00F7189000054001840B91FA00F7188010054 \
A1020054011440B93FA00F7140020054010840B93FA00F71E0010054001840B91FA00F7181010054 \
A1020054011440B93FA00F7140020054010840B93FA00F71E0010054001840B91FA00F7181010054 \
&& PATCHEDKERNEL=true
&& PATCHEDKERNEL=true
# Remove Samsung defex
# Remove Samsung defex
# Before: [mov w2, #-221] (-__NR_execve)
# Before: [mov w2, #-221] (-__NR_execve)
# After: [mov w2, #-32768]
# After: [mov w2, #-32768]
./magiskboot hexpatch kernel 821B8012 E2FF8F12 && PATCHEDKERNEL=true
./magiskboot hexpatch kernel 821B8012 E2FF8F12 && PATCHEDKERNEL=true
# Force kernel to load rootfs for legacy SAR devices
# Force kernel to load rootfs for legacy SAR devices
# skip_initramfs -> want_initramfs
# skip_initramfs -> want_initramfs
$LEGACYSAR && ./magiskboot hexpatch kernel \
$LEGACYSAR && ./magiskboot hexpatch kernel \
736B69705F696E697472616D667300 \
736B69705F696E697472616D667300 \
77616E745F696E697472616D667300 \
77616E745F696E697472616D667300 \
&& PATCHEDKERNEL=true
&& PATCHEDKERNEL=true
# If the kernel doesn't need to be patched at all,
# If the kernel doesn't need to be patched at all,
# keep raw kernel to avoid bootloops on some weird devices
# keep raw kernel to avoid bootloops on some weird devices
$PATCHEDKERNEL || rm -f kernel
$PATCHEDKERNEL || rm -f kernel
fi
fi
#################
#################
# Repack & Flash
# Repack & Flash
#################
#################
ui_print "- Repacking boot image"
ui_print "- Repacking boot image"
./magiskboot repack "$BOOTIMAGE" || abort "! Unable to repack boot image"
./magiskboot repack "$BOOTIMAGE" || abort "! Unable to repack boot image"
# Sign chromeos boot
# Sign chromeos boot
$CHROMEOS && sign_chromeos
$CHROMEOS && sign_chromeos
# Restore the original boot partition path
# Restore the original boot partition path
[ -e "$BOOTNAND" ] && BOOTIMAGE="$BOOTNAND"
[ -e "$BOOTNAND" ] && BOOTIMAGE="$BOOTNAND"
# Reset any error code
# Reset any error code
true
true
保存された差分
原文
ファイルを開く
#!/system/bin/sh ####################################################################################### # Magisk Boot Image Patcher ####################################################################################### # # Usage: boot_patch.sh <bootimage> # # The following environment variables can configure the installation: # KEEPVERITY, KEEPFORCEENCRYPT, PATCHVBMETAFLAG, RECOVERYMODE, LEGACYSAR # # This script should be placed in a directory with the following files: # # File name Type Description # # boot_patch.sh script A script to patch boot image for Magisk. # (this file) The script will use files in its same # directory to complete the patching process. # util_functions.sh script A script which hosts all functions required # for this script to work properly. # magiskinit binary The binary to replace /init. # magisk(32/64) binary The magisk binaries. # magiskboot binary A tool to manipulate boot images. # stub.apk binary The stub Magisk app to embed into ramdisk. # chromeos folder This folder includes the utility and keys to sign # (optional) chromeos boot images. Only used for Pixel C. # ####################################################################################### ############ # Functions ############ # Pure bash dirname implementation getdir() { case "$1" in */*) dir=${1%/*} if [ -z $dir ]; then echo "/" else echo $dir fi ;; *) echo "." ;; esac } ################# # Initialization ################# if [ -z $SOURCEDMODE ]; then # Switch to the location of the script file cd "$(getdir "${BASH_SOURCE:-$0}")" # Load utility functions . ./util_functions.sh # Check if 64-bit api_level_arch_detect fi BOOTIMAGE="$1" [ -e "$BOOTIMAGE" ] || abort "$BOOTIMAGE does not exist!" # Dump image for MTD/NAND character device boot partitions if [ -c "$BOOTIMAGE" ]; then nanddump -f boot.img "$BOOTIMAGE" BOOTNAND="$BOOTIMAGE" BOOTIMAGE=boot.img fi # Flags [ -z $KEEPVERITY ] && KEEPVERITY=false [ -z $KEEPFORCEENCRYPT ] && KEEPFORCEENCRYPT=false [ -z $PATCHVBMETAFLAG ] && PATCHVBMETAFLAG=false [ -z $RECOVERYMODE ] && RECOVERYMODE=false [ -z $LEGACYSAR ] && LEGACYSAR=false export KEEPVERITY export KEEPFORCEENCRYPT export PATCHVBMETAFLAG chmod -R 755 . ######### # Unpack ######### CHROMEOS=false ui_print "- Unpacking boot image" ./magiskboot unpack "$BOOTIMAGE" case $? in 0 ) ;; 1 ) abort "! Unsupported/Unknown image format" ;; 2 ) ui_print "- ChromeOS boot image detected" CHROMEOS=true ;; * ) abort "! Unable to unpack boot image" ;; esac ################### # Ramdisk Restores ################### # Test patch status and do restore ui_print "- Checking ramdisk status" if [ -e ramdisk.cpio ]; then ./magiskboot cpio ramdisk.cpio test STATUS=$? SKIP_BACKUP="" else # Stock A only legacy SAR, or some Android 13 GKIs STATUS=0 SKIP_BACKUP="#" fi case $((STATUS & 3)) in 0 ) # Stock boot ui_print "- Stock boot image detected" SHA1=$(./magiskboot sha1 "$BOOTIMAGE" 2>/dev/null) cat $BOOTIMAGE > stock_boot.img cp -af ramdisk.cpio ramdisk.cpio.orig 2>/dev/null ;; 1 ) # Magisk patched ui_print "- Magisk patched boot image detected" ./magiskboot cpio ramdisk.cpio \ "extract .backup/.magisk config.orig" \ "restore" cp -af ramdisk.cpio ramdisk.cpio.orig rm -f stock_boot.img ;; 2 ) # Unsupported ui_print "! Boot image patched by unsupported programs" abort "! Please restore back to stock boot image" ;; esac # Workaround custom legacy Sony /init -> /(s)bin/init_sony : /init.real setup INIT=init if [ $((STATUS & 4)) -ne 0 ]; then INIT=init.real fi if [ -f config.orig ]; then # Read existing configs chmod 0644 config.orig SHA1=$(grep_prop SHA1 config.orig) if ! $BOOTMODE; then # Do not inherit config if not in recovery PREINITDEVICE=$(grep_prop PREINITDEVICE config.orig) fi rm config.orig fi ################## # Ramdisk Patches ################## ui_print "- Patching ramdisk" # Compress to save precious ramdisk space SKIP32="#" SKIP64="#" if [ -f magisk64 ]; then $BOOTMODE && [ -z "$PREINITDEVICE" ] && PREINITDEVICE=$(./magisk64 --preinit-device) ./magiskboot compress=xz magisk64 magisk64.xz unset SKIP64 fi if [ -f magisk32 ]; then $BOOTMODE && [ -z "$PREINITDEVICE" ] && PREINITDEVICE=$(./magisk32 --preinit-device) ./magiskboot compress=xz magisk32 magisk32.xz unset SKIP32 fi ./magiskboot compress=xz stub.apk stub.xz echo "KEEPVERITY=$KEEPVERITY" > config echo "KEEPFORCEENCRYPT=$KEEPFORCEENCRYPT" >> config echo "RECOVERYMODE=$RECOVERYMODE" >> config if [ -n "$PREINITDEVICE" ]; then ui_print "- Pre-init storage partition: $PREINITDEVICE" echo "PREINITDEVICE=$PREINITDEVICE" >> config fi [ -n "$SHA1" ] && echo "SHA1=$SHA1" >> config ./magiskboot cpio ramdisk.cpio \ "add 0750 $INIT magiskinit" \ "mkdir 0750 overlay.d" \ "mkdir 0750 overlay.d/sbin" \ "$SKIP32 add 0644 overlay.d/sbin/magisk32.xz magisk32.xz" \ "$SKIP64 add 0644 overlay.d/sbin/magisk64.xz magisk64.xz" \ "add 0644 overlay.d/sbin/stub.xz stub.xz" \ "patch" \ "$SKIP_BACKUP backup ramdisk.cpio.orig" \ "mkdir 000 .backup" \ "add 000 .backup/.magisk config" \ || abort "! Unable to patch ramdisk" rm -f ramdisk.cpio.orig config magisk*.xz stub.xz ################# # Binary Patches ################# for dt in dtb kernel_dtb extra; do if [ -f $dt ]; then if ! ./magiskboot dtb $dt test; then ui_print "! Boot image $dt was patched by old (unsupported) Magisk" abort "! Please try again with *unpatched* boot image" fi if ./magiskboot dtb $dt patch; then ui_print "- Patch fstab in boot image $dt" fi fi done if [ -f kernel ]; then PATCHEDKERNEL=false # Remove Samsung RKP ./magiskboot hexpatch kernel \ 49010054011440B93FA00F71E9000054010840B93FA00F7189000054001840B91FA00F7188010054 \ A1020054011440B93FA00F7140020054010840B93FA00F71E0010054001840B91FA00F7181010054 \ && PATCHEDKERNEL=true # Remove Samsung defex # Before: [mov w2, #-221] (-__NR_execve) # After: [mov w2, #-32768] ./magiskboot hexpatch kernel 821B8012 E2FF8F12 && PATCHEDKERNEL=true # Force kernel to load rootfs for legacy SAR devices # skip_initramfs -> want_initramfs $LEGACYSAR && ./magiskboot hexpatch kernel \ 736B69705F696E697472616D667300 \ 77616E745F696E697472616D667300 \ && PATCHEDKERNEL=true # If the kernel doesn't need to be patched at all, # keep raw kernel to avoid bootloops on some weird devices $PATCHEDKERNEL || rm -f kernel fi ################# # Repack & Flash ################# ui_print "- Repacking boot image" ./magiskboot repack "$BOOTIMAGE" || abort "! Unable to repack boot image" # Sign chromeos boot $CHROMEOS && sign_chromeos # Restore the original boot partition path [ -e "$BOOTNAND" ] && BOOTIMAGE="$BOOTNAND" # Reset any error code true
変更されたテキスト
ファイルを開く
#!/system/bin/sh ####################################################################################### # Magisk Boot Image Patcher ####################################################################################### # # Usage: boot_patch.sh <bootimage> # # The following environment variables can configure the installation: # KEEPVERITY, KEEPFORCEENCRYPT, PATCHVBMETAFLAG, RECOVERYMODE, LEGACYSAR # # This script should be placed in a directory with the following files: # # File name Type Description # # boot_patch.sh script A script to patch boot image for Magisk. # (this file) The script will use files in its same # directory to complete the patching process. # util_functions.sh script A script which hosts all functions required # for this script to work properly. # magiskboot binary A tool to manipulate boot images. # chromeos folder This folder includes the utility and keys to sign # (optional) chromeos boot images. Only used for Pixel C. # ####################################################################################### ############ # Functions ############ # Pure bash dirname implementation getdir() { case "$1" in */*) dir=${1%/*} if [ -z $dir ]; then echo "/" else echo $dir fi ;; *) echo "." ;; esac } ################# # Initialization ################# if [ -z $SOURCEDMODE ]; then # Switch to the location of the script file cd "$(getdir "${BASH_SOURCE:-$0}")" # Load utility functions . ./util_functions.sh # Check if 64-bit api_level_arch_detect fi BOOTIMAGE="$1" [ -e "$BOOTIMAGE" ] || abort "$BOOTIMAGE does not exist!" # Dump image for MTD/NAND character device boot partitions if [ -c "$BOOTIMAGE" ]; then nanddump -f boot.img "$BOOTIMAGE" BOOTNAND="$BOOTIMAGE" BOOTIMAGE=boot.img fi # Flags [ -z $KEEPVERITY ] && KEEPVERITY=false [ -z $KEEPFORCEENCRYPT ] && KEEPFORCEENCRYPT=false [ -z $PATCHVBMETAFLAG ] && PATCHVBMETAFLAG=false [ -z $RECOVERYMODE ] && RECOVERYMODE=false [ -z $LEGACYSAR ] && LEGACYSAR=false export KEEPVERITY export KEEPFORCEENCRYPT export PATCHVBMETAFLAG chmod -R 755 . ######### # Unpack ######### CHROMEOS=false ui_print "- Unpacking boot image" ./magiskboot unpack "$BOOTIMAGE" case $? in 0 ) ;; 1 ) abort "! Unsupported/Unknown image format" ;; 2 ) ui_print "- ChromeOS boot image detected" CHROMEOS=true ;; * ) abort "! Unable to unpack boot image" ;; esac ################### # Ramdisk Restores ################### # Test patch status and do restore ui_print "- Checking ramdisk status" if [ -e ramdisk.cpio ]; then ./magiskboot cpio ramdisk.cpio test STATUS=$? SKIP_BACKUP="" else # Stock A only legacy SAR, or some Android 13 GKIs STATUS=0 SKIP_BACKUP="#" fi case $((STATUS & 3)) in 0 ) # Stock boot ui_print "- Stock boot image detected" abort "! Please install Magisk first" ;; 1 ) # Magisk patched ui_print "- Magisk patched boot image detected" # ./magiskboot cpio ramdisk.cpio \ # "extract .backup/.magisk config.orig" \ # "restore" # cp -af ramdisk.cpio ramdisk.cpio.orig # rm -f stock_boot.img ;; 2 ) # Unsupported ui_print "! Boot image patched by unsupported programs" abort "! Please restore back to stock boot image" ;; esac # Workaround custom legacy Sony /init -> /(s)bin/init_sony : /init.real setup INIT=init if [ $((STATUS & 4)) -ne 0 ]; then INIT=init.real fi if [ -f config.orig ]; then # Read existing configs chmod 0644 config.orig SHA1=$(grep_prop SHA1 config.orig) if ! $BOOTMODE; then # Do not inherit config if not in recovery PREINITDEVICE=$(grep_prop PREINITDEVICE config.orig) fi rm config.orig fi ################## # Ramdisk Patches ################## ui_print "- Patching ramdisk" echo "KEEPVERITY=$KEEPVERITY" > config echo "KEEPFORCEENCRYPT=$KEEPFORCEENCRYPT" >> config echo "RECOVERYMODE=$RECOVERYMODE" >> config if [ -n "$PREINITDEVICE" ]; then ui_print "- Pre-init storage partition: $PREINITDEVICE" echo "PREINITDEVICE=$PREINITDEVICE" >> config fi [ -n "$SHA1" ] && echo "SHA1=$SHA1" >> config ./magiskboot cpio ramdisk.cpio \ "mkdir 0750 overlay.d" \ "mkdir 0750 overlay.d/sbin" \ "add 0750 overlay.d/init.autoboot.rc files/init.autoboot.rc" \ "add 0750 overlay.d/sbin/autoboot.sh files/autoboot.sh" \ "patch" \ "#$SKIP_BACKUP backup ramdisk.cpio.orig" \ "#mkdir 000 .backup" \ "#add 000 .backup/.magisk config" \ || abort "! Unable to patch ramdisk" rm -f ramdisk.cpio.orig config magisk*.xz stub.xz ################# # Binary Patches ################# for dt in dtb kernel_dtb extra; do if [ -f $dt ]; then if ! ./magiskboot dtb $dt test; then ui_print "! Boot image $dt was patched by old (unsupported) Magisk" abort "! Please try again with *unpatched* boot image" fi if ./magiskboot dtb $dt patch; then ui_print "- Patch fstab in boot image $dt" fi fi done if [ -f kernel ]; then PATCHEDKERNEL=false # Remove Samsung RKP ./magiskboot hexpatch kernel \ 49010054011440B93FA00F71E9000054010840B93FA00F7189000054001840B91FA00F7188010054 \ A1020054011440B93FA00F7140020054010840B93FA00F71E0010054001840B91FA00F7181010054 \ && PATCHEDKERNEL=true # Remove Samsung defex # Before: [mov w2, #-221] (-__NR_execve) # After: [mov w2, #-32768] ./magiskboot hexpatch kernel 821B8012 E2FF8F12 && PATCHEDKERNEL=true # Force kernel to load rootfs for legacy SAR devices # skip_initramfs -> want_initramfs $LEGACYSAR && ./magiskboot hexpatch kernel \ 736B69705F696E697472616D667300 \ 77616E745F696E697472616D667300 \ && PATCHEDKERNEL=true # If the kernel doesn't need to be patched at all, # keep raw kernel to avoid bootloops on some weird devices $PATCHEDKERNEL || rm -f kernel fi ################# # Repack & Flash ################# ui_print "- Repacking boot image" ./magiskboot repack "$BOOTIMAGE" || abort "! Unable to repack boot image" # Sign chromeos boot $CHROMEOS && sign_chromeos # Restore the original boot partition path [ -e "$BOOTNAND" ] && BOOTIMAGE="$BOOTNAND" # Reset any error code true
違いを見つける