Once upon a time you could simply copy macOS files around to build boot volumes. Then you needed to be careful to copy the folders then run bless(1) to appropriately set up boot blocks. Then Apple kept adding more and more security features so that malware even running with root privs couldn't touch system files (google SIP and see man csrutil). And with all the extended file attributes ... it's a mess to try and build a bootable volume by hand.
There used to be Carbon Copy Cloner that would help build boot volumes, but a quick google leads me to think it's not terribly robust anymore.
Bottom line: to build a bootable volume, boot into recovery mode and use the disk utility app in the recovery environment to reformat and build your boot volumes. It's been a while since I've done this but you used to be able to tell it to erase and install an OS in specific partitions. It wasn't fast (it can download the OS over a network connection I think), but it worked.
On macOS, to read linux filesystems, check out https://github.com/nohajc/anylinuxfs
In Linux .. it needs extra help to read APFS filesystems. But if you've formatted for HFS+ it should have native support and should be able to be just mounted.
Ofc just using ex-FAT to move files between the two usually works ok. (disclaimer: mac files can have extended attributes that don't copy well with MSDOS filesystems).
Oh yeah why your copy failed: there's probably a symlink in System that points back to a parent directory so when you use a simple utility to try and copy ... it tries to follow the link and make a copy of System inside System and boom. I remember Xcode.app having this problem, causing simple ditto's or cp -R to never finish. TBD if the latest (gnu)tar or cpio is any better.
HTH, but I'm not exactly sure what your goals are ... and dealing with modern macOS filesystems in non-standard ways has more than a few gotchas!