Add ZFS MacOS&Arch article

master
kts of kettek (Tyger) 2018-08-08 19:41:26 -07:00
parent be6a4ba35f
commit e50fb78f1f
3 changed files with 56 additions and 1 deletions

View File

@ -1,5 +1,6 @@
{
"use-premake-and-start-winning": {"data": "2016-03-15", "time": "03:35:05", "title": "Use Premake (5) and Start Winning"},
"zfs-macos-arch-linux-dual-boot": {"date": "2018-08-08", "time": "07:38:00", "title": "Dual-boot High Sierra and Arch Linux with Shared ZFS"},
"use-premake-and-start-winning": {"date": "2016-03-15", "time": "03:35:05", "title": "Use Premake (5) and Start Winning"},
"xcode-42-and-c-11": {"date": "2016-02-16", "time": "02:58:45", "title": "XCode 4.2 and C++11"},
"minimalistic-linux-browsers": {"date": "Ongoing", "time": "Eternal", "title": "Linux/X11 Minimalistic Browser Reviews"},
"powermac-g5-to-atx-pinouts": {"date": "2015", "time": "???", "title": "PowerMac G5 Front/Fan/Speaker to ATX/PC pinouts"},

View File

@ -0,0 +1,50 @@
# Dual-boot High Sierra and Arch Linux with Shared ZFS
## Preface
Having had some failed system updates on my MacBook Pro5,5 that caused Mac OS to be nigh unusable, I decided to swap out the original 500GB HDD for a much smaller -- but much faster -- 128GB SSD I had on hand.
Although this is certainly a size constraint, I keep majority of my large data elsewhere and can easily access them via remote sharing or various web interfaces, so it is a moot point.
## The Notion
The original idea was to have three major partitions: Mac OS High Sierra, Arch Linux, and a shared partition that would store my user/home directory. The initial setup and install -- which took some time due to learning how to setup rEFInd and much fury at the more modern Disk Utility.app's insane pie chart partitioning system -- used HFS+ for High Sierra, Ext4 for Arch, and HFS+ for the shared partition.
The total partitions, with the important self-made ones noted, were:
| # | Name | FS | Size |
|-----|------------|-------|----------|
| 1 | EFI | FAT | 209.7 MB |
| 2 | **Tyger** | HFS+ | 39.3 GB |
| 3 | Recovery HD| ? | 650.0 MB |
| 4 | **Lyon** | ZFS | 60.0 GB |
| 5 | **Lyger** | EXT4 | 19.6 GB |
Before and after each of the Tyger, Lyon, and Lyger partitions I also placed 128MB of free space as per Apple's recommendations.
## The Problem
After the initial install of both Arch Linux and Mac OS -- along with rEFInd -- I was met with a potential problem. HFS+ write access under Linux is experimental and must be enabled with the force option during mount. Although I was uncertain as to what potential issues could arise from forcing R/W HFS+ access, as it seemed to work during initial tests, I did not feel comfortable with keeping HFS+ as the shared partition in the event of file loss or corruption.
After an initial review of HFS+ R/W or using EXT4 via FUSE on Mac OS, I came to the conclusion that neither of these were very good options. In the case of HFS+, it was uncertain what extended use would lead to, and in the case of EXT4, the only reliable EXT3/EXT4 R/W "driver" came at a bit of a cost (not much, by any means).
With this, I then thought of another project I was working on...
## The Solution
Having recently delved into ZFS -- a filesystem I hadn't touched since late-2000s with Solaris -- for a Debian office server, I realized that the answer to my problems could potentially be **ZFS**.
A quick search revealed that the [OpenZFS on OS X](https://openzfsonosx.org) project had matured much since my last viewing (as I had noticed of the [ZFS on Linux](https://zfsonlinux.org) project some weeks prior).
I began first by installing and setting it up on Arch Linux, following the guide [here](https://wiki.archlinux.org/index.php/ZFS). Once this was complete, I simply issued the basic commands to setup a zpool:
sudo zpool create Lyon /dev/sda5
With this, the zpool *Lyon* was created, allowing me to copy over my home directory and begin using it by setting my entry in `/etc/passwd` to point to the appropriate file. I rebooted into Mac OS and issued the standard `sudo zpool import` and discovered that the Linux-made ZFS pool had setup an extended Linux-centric option that rendered it only able to mounted as read-only in Mac OS. This would not do, so I issued `sudo zpool destroy Lyon` and recreated it on Mac OS. With this in place, I switched back to Linux and confirmed that it had R/W access to the same pool.
Now it was merely a matter of synchronizing the UIDs and GUIDs for my user and group between the systems and setting them both up to use the appropriate user/home locations.
However, before I did this, I decided to set up a generic *Users* volume within the *Lyon* zpool in the event that I wish to add additional volumes or otherwise. This was merely a matter of issuing `zfs create Lyon/Users`, moving the Mac OS partition's *Users* contents to it, and setting up the appropriate mount paths. I additionally enabled the *com.apple.mimic_hfs* setting in the event that I might run into problems otherwise: `sudo zfs set com.apple.mimic_hfs=on Lyon/Users`.
On Mac OS, I renamed the root */Users* directory, issued `zfs set mountpoint=/Users Lyon/Users`, then moved the original */Users/* contents into the mounted share.
On Linux, I simply used the same */Users/* mount point and set my */etc/passwd* user entry to use */Users/kts*, as I do not know if it is possible to have a zpool have different volume mount locations based upon the current host. Additionally, I modified my user entry in */etc/passwd* to use the same UID as used in Mac OS. I additionally added a new group that matched Mac OS's *staff* GUID and made it my primary.
With all this in place -- and some minor omitted mistakes along the way --, I safely rebooted between the two operating systems seamlessly, keeping my changes and files shared and intact.
**Shared ZFS on Mac OS & Linux was a success!**

View File

@ -0,0 +1,4 @@
# Mac OS and Linux and ZFS, oh my!
Wrote up a quick article on setting up Mac OS and Linux dual-booting with a shared ZFS-based home directory.
Check it out [here](/articles/zfs-macos-arch-linux-dual-boot)!