improve mount-code in regards of system-as-root, fix /vendor compat link generation, fix system-as-root detection in SysTest for recovery mode

merge-requests/33/head
Christopher Roy Bratusek 4 years ago
parent 05852b85e3
commit 02f167e663

@ -152,7 +152,7 @@ detect_bootmode () {
##########################################################################################
grep_prop() {
sed -n "s/^${1}=//p" ${build_props} | head -n 1
sed -n "s/^${1}=//p" ${build_props} ${2} | head -n 1
}
grep_cmdline() {
@ -249,16 +249,14 @@ mount_partitions () {
mount -o bind /dev/urandom /dev/random
! is_mounted /system && mount -o rw /system
! is_mounted /system && mount -o rw ${SYSTEM_BLOCK} /system
! is_mounted /system && mount -o rw /system_root
if [ -f /system/init.rc ]; then
SYSTEM_AS_ROOT=true
[ -L /system_root ] && rm -f /system_root
mkdir /system_root 2>/dev/null
mount --move /system /system_root
SYSTEM_AS_ROOT=$(grep_prop ro.build.ab_update /default.prop)
if [ -d /system_root -o ${SYSTEM_AS_ROOT} ]; then
! is_mounted /system_root && mount -o rw /system_root
! is_mounted /system_root && mount -o rw ${SYSTEM_BLOCK} /system_root
mount -o bind /system_root/system /system
else
! is_mounted /system && mount -o rw /system
! is_mounted /system && mount -o rw ${SYSTEM_BLOCK} /system
fi
vendor_tmp=$(find /dev/block \( -type b -o -type c -o -type l \) -name vendor${SLOT} | head -n 1)
@ -269,7 +267,7 @@ mount_partitions () {
! is_mounted /vendor && mount -o ro /vendor
! is mounted /vendor && mount -o ro ${VENDOR_BLOCK} /vendor
if [[ ! $(is_mounted /vendor) && -a /system/vendor ]]; then
if [[ ! $(is_mounted /vendor) && -d /system/vendor ]]; then
### XXX work-around required for some devices
VENDOR_COMPAT=TRUE
ln -sf /system/vendor /vendor >/dev/null

@ -132,16 +132,14 @@ mount_partitions () {
mount -o bind /dev/urandom /dev/random
! is_mounted /system && mount -o rw /system
! is_mounted /system && mount -o rw ${SYSTEM_BLOCK} /system
! is_mounted /system && mount -o rw /system_root
if [ -f /system/init.rc ]; then
SYSTEM_AS_ROOT=true
[ -L /system_root ] && rm -f /system_root
mkdir /system_root 2>/dev/null
mount --move /system /system_root
SYSTEM_AS_ROOT=$(grep_prop ro.build.ab_update /default.prop)
if [ -d /system_root -o ${SYSTEM_AS_ROOT} ]; then
! is_mounted /system_root && mount -o rw /system_root
! is_mounted /system_root && mount -o rw ${SYSTEM_BLOCK} /system_root
mount -o bind /system_root/system /system
else
! is_mounted /system && mount -o rw /system
! is_mounted /system && mount -o rw ${SYSTEM_BLOCK} /system
fi
vendor_tmp=$(find /dev/block \( -type b -o -type c -o -type l \) -name vendor${SLOT} | head -n 1)
@ -152,7 +150,7 @@ mount_partitions () {
! is_mounted /vendor && mount -o ro /vendor
! is mounted /vendor && mount -o ro ${VENDOR_BLOCK} /vendor
if [[ ! $(is_mounted /vendor) && -a /system/vendor ]]; then
if [[ ! $(is_mounted /vendor) && -d /system/vendor ]]; then
### XXX work-around required for some devices
VENDOR_COMPAT=TRUE
ln -sf /system/vendor /vendor >/dev/null
@ -265,11 +263,7 @@ detect_bootmode () {
}
grep_prop() {
[ -f /vendor/build.prop ] && \
FILES="/system/build.prop /vendor/build.prop" || \
FILES="/system/build.prop"
sed -n "s/^${1}=//p" ${FILES} | head -n 1
sed -n "s/^${1}=//p" ${build_props} ${2} | head -n 1
}
grep_cmdline() {

@ -122,8 +122,6 @@ mount_partitions () {
VENDOR_BLOCK=$(readlink -f ${vendor_tmp})
echo " INFO: #7 [VENDOR_BLOCK] ${VENDOR_BLOCK}"
SYSTEM_AS_ROOT=$(grep_prop ro.build.system_root_image)
if ${BOOTMODE}; then
APEX_LD=/apex/com.android.runtime
build_props=$(find /system /system_root /vendor -type f -name build.prop)
@ -131,26 +129,27 @@ mount_partitions () {
if [[ ! $(is_mounted /vendor) && -a /system/vendor ]]; then
VENDOR_COMPAT=TRUE
fi
SYSTEM_AS_ROOT=$(grep_prop ro.build.system_root_image)
else
is_mounted /data || mount /data || error "failed to mount /data!"
mount -o bind /dev/urandom /dev/random
! is_mounted /system && mount -o rw /system
! is_mounted /system && mount -o rw ${SYSTEM_BLOCK} /system
! is_mounted /system && mount -o rw /system_root
if [ -f /system/init.rc ]; then
[ -L /system_root ] && rm -f /system_root
mkdir /system_root 2>/dev/null
mount --move /system /system_root
SYSTEM_AS_ROOT=$(grep_prop ro.build.ab_update /default.prop)
if [ -d /system_root -o ${SYSTEM_AS_ROOT} ]; then
! is_mounted /system_root && mount -o rw /system_root
! is_mounted /system_root && mount -o rw ${SYSTEM_BLOCK} /system_root
mount -o bind /system_root/system /system
else
! is_mounted /system && mount -o rw /system
! is_mounted /system && mount -o rw ${SYSTEM_BLOCK} /system
fi
! is_mounted /vendor && mount -o ro /vendor
! is mounted /vendor && mount -o ro ${VENDOR_BLOCK} /vendor
if [[ ! $(is_mounted /vendor) && -a /system/vendor ]]; then
if [[ ! $(is_mounted /vendor) && -d /system/vendor ]]; then
### XXX work-around required for some devices
VENDOR_COMPAT=TRUE
ln -sf /system/vendor /vendor >/dev/null
@ -273,11 +272,7 @@ detect_bootmode () {
}
grep_prop() {
[ -f /vendor/build.prop ] && \
FILES="/system/build.prop /vendor/build.prop" || \
FILES="/system/build.prop"
sed -n "s/^${1}=//p" ${FILES} | head -n 1
sed -n "s/^${1}=//p" ${build_props} ${2} | head -n 1
}
grep_cmdline() {

@ -17,12 +17,7 @@ ui_print() {
}
grep_prop() {
REGEX="${1}"
shift
FILES="${@}"
[ -z "${@}" ] && FILES='/system/build.prop'
sed -n "s/^${REGEX}=//p" ${FILES} | \
head -n 1
sed -n "s/^${1}=//p" ${build_props} ${2} | head -n 1
}
grep_cmdline() {
@ -201,16 +196,14 @@ mount_partitions () {
mount -o bind /dev/urandom /dev/random
! is_mounted /system && mount -o rw /system
! is_mounted /system && mount -o rw ${SYSTEM_BLOCK} /system
! is_mounted /system && mount -o rw /system_root
if [ -f /system/init.rc ]; then
SYSTEM_AS_ROOT=true
[ -L /system_root ] && rm -f /system_root
mkdir /system_root 2>/dev/null
mount --move /system /system_root
SYSTEM_AS_ROOT=$(grep_prop ro.build.ab_update /default.prop)
if [ -d /system_root -o ${SYSTEM_AS_ROOT} ]; then
! is_mounted /system_root && mount -o rw /system_root
! is_mounted /system_root && mount -o rw ${SYSTEM_BLOCK} /system_root
mount -o bind /system_root/system /system
else
! is_mounted /system && mount -o rw /system
! is_mounted /system && mount -o rw ${SYSTEM_BLOCK} /system
fi
vendor_tmp=$(find /dev/block \( -type b -o -type c -o -type l \) -name vendor${SLOT} | head -n 1)
@ -221,7 +214,7 @@ mount_partitions () {
! is_mounted /vendor && mount -o ro /vendor
! is mounted /vendor && mount -o ro ${VENDOR_BLOCK} /vendor
if [[ ! $(is_mounted /vendor) && -a /system/vendor ]]; then
if [[ ! $(is_mounted /vendor) && -d /system/vendor ]]; then
### XXX work-around required for some devices
VENDOR_COMPAT=TRUE
ln -sf /system/vendor /vendor >/dev/null

Loading…
Cancel
Save