mirror of
https://github.com/flatcar/scripts.git
synced 2025-09-22 14:11:07 +02:00
common: Drop functions to disable/enable ext[234] read-only hack
The last user of this code switched to disk_util in b3120441722365e74200d14644b5ebbb597cf372.
This commit is contained in:
parent
a77edcddf0
commit
97b09dc943
41
common.sh
41
common.sh
@ -660,47 +660,6 @@ get_git_id() {
|
||||
git var GIT_COMMITTER_IDENT | sed -e 's/^.*<\(\S\+\)>.*$/\1/'
|
||||
}
|
||||
|
||||
# These two helpers clobber the ro compat value in our root filesystem.
|
||||
#
|
||||
# When the system is built with --enable_rootfs_verification, bit-precise
|
||||
# integrity checking is performed. That precision poses a usability issue on
|
||||
# systems that automount partitions with recognizable filesystems, such as
|
||||
# ext2/3/4. When the filesystem is mounted 'rw', ext2 metadata will be
|
||||
# automatically updated even if no other writes are performed to the
|
||||
# filesystem. In addition, ext2+ does not support a "read-only" flag for a
|
||||
# given filesystem. That said, forward and backward compatibility of
|
||||
# filesystem features are supported by tracking if a new feature breaks r/w or
|
||||
# just write compatibility. We abuse the read-only compatibility flag[1] in
|
||||
# the filesystem header by setting the high order byte (le) to FF. This tells
|
||||
# the kernel that features R24-R31 are all enabled. Since those features are
|
||||
# undefined on all ext-based filesystem, all standard kernels will refuse to
|
||||
# mount the filesystem as read-write -- only read-only[2].
|
||||
#
|
||||
# [1] 32-bit flag we are modifying:
|
||||
# http://git.chromium.org/cgi-bin/gitweb.cgi?p=kernel.git;a=blob;f=include/linux/ext2_fs.h#l417
|
||||
# [2] Mount behavior is enforced here:
|
||||
# http://git.chromium.org/cgi-bin/gitweb.cgi?p=kernel.git;a=blob;f=fs/ext2/super.c#l857
|
||||
#
|
||||
# N.B., if the high order feature bits are used in the future, we will need to
|
||||
# revisit this technique.
|
||||
disable_rw_mount() {
|
||||
local rootfs=$1
|
||||
local offset="${2-0}" # in bytes
|
||||
local ro_compat_offset=$((0x464 + 3)) # Set 'highest' byte
|
||||
printf '\377' |
|
||||
sudo dd of="${rootfs}" seek=$((offset + ro_compat_offset)) \
|
||||
conv=notrunc count=1 bs=1
|
||||
}
|
||||
|
||||
enable_rw_mount() {
|
||||
local rootfs=$1
|
||||
local offset="${2-0}"
|
||||
local ro_compat_offset=$((0x464 + 3)) # Set 'highest' byte
|
||||
printf '\000' |
|
||||
sudo dd of="${rootfs}" seek=$((offset + ro_compat_offset)) \
|
||||
conv=notrunc count=1 bs=1
|
||||
}
|
||||
|
||||
# Generate a DIGESTS file, as normally used by Gentoo.
|
||||
# This is an alternative to shash which doesn't know how to report errors.
|
||||
# Usage: make_digests -d file.DIGESTS file1 [file2...]
|
||||
|
Loading…
x
Reference in New Issue
Block a user