How to Enable Write Access on Root Volume in macOS Big Sur
An EliteMacx86 Exclusive Guide - This guide covers mounting of system root volume on macOS Big Sur. By following this guide, you'll be able to have write access onto the system's root volume.
Overview
Recently, Apple announced their new macOS lineup i.e macOS Big Sur 11.0 which is Apple's newest and most awaited OS. Catalina adding massive updates and improvements from its predecessor, Mojave.
Packed with new features and functionality, the most noticeable update can be seen and experienced is the new GUI. Featuring a much more "iOS" look and feel and as smooth as butter. Along with this, Apple has introduced some security protection which prevents the writing to system's root volume. Since macOS Catalina, Apple has split the OS and user data into two volumes where the system volume is "read-only" by default which prevents modification of system root volume.
A very quick way to mount system volume was to use "sudo mount -uw /" in Terminal. However, with Big Sur, this doesn't works and the command throws an error. If you've attempted to make the root volume as writable using the command which works on macOS Catalina, you might be familiar with the following error.
Code:
mount_apfs: volume could not be mounted: Permission denied
mount: / failed with 66
With macOS Big Sur, Apple added some more protection and unfortunately the system root volume cannot be mounted. The error is very normal on Big Sur and the above command will not allow you to mount the system's root volume. In macOS Big Sur, the "System" directory has been completely sealed and it will not accept any changes. All the kexts which you used to install into S/L/E, now gets installed onto L/E instead. Even if you attempt to install Mojave or Catalina and you have some third party kexts on S/L/E and proceed with an update, the system will remove those kexts and you'll have those kexts in a folder at your Desktop after the upgrade. However, installing the same kexts to L/E directory will work and will load too. But there are kexts which must be installed in S/L/E to be particular and as Big Sur doesn't gives you the option, you're out of luck.
Why writing to System's Root Volume is Required?
The real question comes that why do you need to mount the system's root volume and modify it when Apple doesn't allows it? A simple answer is in some environments, this can be needed for some special purpose such as Hackintosh where you may have a need to modify the kexts in S/L/E directory or even for the real Mac users who are willing to run macOS Big Sur on their unsupported Macs.
Mounting System's Root Volume
Interestingly, there is an actual workaround for mounting the system's root volume and having write access to it. Where you can modify the files and make the changes. To enable write access onto your system's volume, follow the steps outlined below.
WARNING:
Due to the update functionality in macOS Big Sur, changing the system volume can break OS updates. By using this guide, you understand all the risks involved and EliteMacx86 shall not be liable for any of the damages that might occur and takes no responsibility for any of your action. Please proceed with caution!
Creating Mount Point for the volume
The very first step is to create a mount point for the volume where the system's root volume will be mounted. To create the mount point, execute the commands below.
1. Open Terminal.
2. Type:
Finding the required Disk Identifier
The next step is to find the target disk name for mounting. To find the disk name, follow the steps below.
1. Open Terminal.
2. Type:
3. This will list all the connected drives on the system. You'll find something similar like the screenshot attached below. The disk name are hidden for the privacy reasons.
View attachment 3089
4. The /dev/disk2 is the actual disk and the capacity is 250GB. The APFS container has been created on disk2 as /dev/disk5 which is the system. A very quick way to determine the disk identifier is finding one with "synthesized" and look for the system's volume name. In our case, it's Macintosh HD, your's could be different from ours. Once you locate the volume name, just check for the identifier. In our case, the volume name is "Macintosh HD" and the identifier is "disk5s5" and that's the disk name we're looking for.
Mounting Drive
The next step is to mount the drive into the directory "livemount" we created in the very first step. To mount the drive, follow the steps below.
1. Open Terminal.
2. Type:
Code:
sudo mount -o nobrowse -t apfs /dev/disk5s5 ~/livemount
3. You'll be prompted for the password. Simply enter your system's password and press enter.
Finding Mounted Volume
Now, as you have mounted the volume, you'll need to open the mounted volume for write access. To open the mounted volume, there are two ways.
1. Open Finder.
2. Type:
The other way is to manually find the path. The path for the mounted volume is
Macintosh HD/Users/Yourusername/Macintosh HD
Notes:
- The Macintosh HD may differ from your actual system's volume name.
- "Yourusername" is your user name.
Rebuilding Kernel Cache
If you have edited either S/L/Kernel, S/L/E directory, you'll also need to rebuild a kernel cache
Code:
sudo kmutil install --volume-root ~/livemount --update-all
Creating Snapshot
Once you have finished editing the system volume, you'll need to create a new snapshot. To create a new snapshot, follow the steps below.
1. Open Terminal.
2. Type:
Code:
sudo bless --folder ~/livemount/System/Library/CoreServices --bootefi --create-snapshot