FreeBSD on Apple Silicon

tuco
npub19q8gglhseq4z5lzwsa7frnt4var5c9p3hq2ay7auzqt7z37e6a7qcmhnps
hex
550fe7df9be9f3c760df912d24ac623f90b9044d9b23f367b3b9f9e39259e822nevent
nevent1qqs92rl8m7d7nu78vr0eztfy433rly9eq3xekglnv7emn70rjfv7sgsprpmhxue69uhhyetvv9ujuem4d36kwatvw5hx6mm9qgszsr5y0mcvs232038gwly3e46kw36vzscms9wj0w7pq9lpglvawlqu8g69ynaddr
naddr1qqvxvun9v438xepddahz6ctswpkx2ttnd9kxjcm0dcq3samnwvaz7tmjv4kxz7fwva6kcat8w4k82tnddajsygpgp6z8auxg9g48cn580jgu6at8gaxpgvdczhf8h0qszls50kwh0spsgqqqw4rsqn3q23Kind-30023 (Article)
-
On macOS, install qemu and curl with homebrew:
brew install qemu curl -
Write a script to download and install FreeBSD:
~ % cat bin/qemu_aarch64_install_freebsd.sh #!/bin/sh - # # v1.8 BSD # depends: curl # # Copyright (c) 1996, 2026 [email protected] # # Permission to use, copy, modify, and/or distribute this software for # any purpose with or without fee is hereby granted. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. URL="https://download.freebsd.org/releases/arm64/aarch64/ISO-IMAGES/" ARC="RELEASE-arm64-aarch64" v=`curl -s $URL | \ grep date | tail -1 | \ sed 's/^.*title="//; s/">.*//'` TMPF=$(mktemp) || exit 1 trap "rm -f $TMPF" EXIT printf "Dowloading FreeBSD %s from mirror...\n" $v curl -s -o $TMPF -O ${URL}${v}/FreeBSD-${v}-${ARC}-mini-memstick.img printf "Dowloading SHA512 file from FreeBSD.org\n" a=`curl -s ${URL}${v}/CHECKSUM.SHA512-FreeBSD-${v}-${ARC} | \ grep mini-memstick.img | head -1 | awk '{ print $4 }'` b=`sha512 $TMPF | awk '{ print $4 }'` echo "Checking image...\n" if [[ $a == $b ]]; then qemu-img create -f qcow2 fbsd_aarch64.qcow2 16G qemu-system-aarch64 \ -machine virt,highmem=on \ -accel hvf \ -cpu host \ -smp 4 \ -m 4G \ -nographic \ -bios /opt/homebrew/share/qemu/edk2-aarch64-code.fd \ -drive if=virtio,file="$TMPF",format=raw,media=cdrom,readonly=on \ -drive if=virtio,file=fbsd_aarch64.qcow2,format=qcow2,cache=writeback,discard=unmap \ -device virtio-rng-pci \ -netdev user,id=mynet0 -device virtio-net-pci,netdev=mynet0 fi -
Execute the script and when the installation is done, shutdown the Virtual Machine.
-
Start the VM:
qemu-system-aarch64 \ -machine virt,highmem=on \ -accel hvf \ -cpu host \ -smp 4 \ -m 4G \ -nographic \ -bios /opt/homebrew/share/qemu/edk2-aarch64-code.fd \ -drive if=virtio,file=$HOME/fbsd_aarch64.qcow2,format=qcow2,cache=writeback,discard=unmap \ -device virtio-rng-pci \ -netdev user,id=mynet0,hostfwd=tcp::7922-:22 -device virtio-net-pci,netdev=mynet0 -
Once started, connect with ssh:
ssh -p 7922 [email protected]
原始 JSON
{
"kind": 30023,
"id": "550fe7df9be9f3c760df912d24ac623f90b9044d9b23f367b3b9f9e39259e822",
"pubkey": "280e847ef0c82a2a7c4e877c91cd7567474c1431b815d27bbc1017e147d9d77c",
"created_at": 1785041130,
"tags": [
[
"title",
"FreeBSD on Apple Silicon"
],
[
"summary",
"A basic FreeBSD ARM64 installation on a Apple silicon with QEMU. "
],
[
"image",
"https://blossom.primal.net/b9e2dbf55fb943d5b6254587fff7dda4afce0527144a23a62e433807c513997d.png"
],
[
"d",
"freebsd-on-apple-silicon"
],
[
"t",
"UNIX"
],
[
"t",
"FreeBSD"
],
[
"t",
"macOS"
],
[
"t",
"QEMU"
],
[
"t",
"ssh"
],
[
"r",
"wss://relay.primal.net/"
],
[
"r",
"wss://relay.mostr.pub/"
],
[
"r",
"wss://basspistol.org/"
],
[
"r",
"wss://relay.snort.social/"
],
[
"r",
"wss://relay.sovrgn.co.za/"
],
[
"client",
"Primal Web"
],
[
"published_at",
"1778217262"
]
],
"content": "1. On macOS, install [qemu](https://www.qemu.org/) and [curl](https://curl.se/) with [homebrew](https://brew.sh):\n\n ```\n brew install qemu curl\n ```\n\n2. Write a script to download and install [FreeBSD](https://www.freebsd.org):\n\n ```\n ~ % cat bin/qemu_aarch64_install_freebsd.sh\n #!/bin/sh -\n #\n # v1.8 BSD\n # depends: curl\n #\n # Copyright (c) 1996, 2026 [email protected]\n #\n # Permission to use, copy, modify, and/or distribute this software for\n # any purpose with or without fee is hereby granted.\n #\n # THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n\n URL=\"https://download.freebsd.org/releases/arm64/aarch64/ISO-IMAGES/\"\n ARC=\"RELEASE-arm64-aarch64\"\n\n v=`curl -s $URL | \\\n grep date | tail -1 | \\\n sed 's/^.*title=\"//; s/\"\u0026gt;.*//'`\n\n TMPF=$(mktemp) || exit 1\n trap \"rm -f $TMPF\" EXIT\n\n printf \"Dowloading FreeBSD %s from mirror...\\n\" $v\n curl -s -o $TMPF -O ${URL}${v}/FreeBSD-${v}-${ARC}-mini-memstick.img\n printf \"Dowloading SHA512 file from FreeBSD.org\\n\"\n a=`curl -s ${URL}${v}/CHECKSUM.SHA512-FreeBSD-${v}-${ARC} | \\\n grep mini-memstick.img | head -1 | awk '{ print $4 }'`\n b=`sha512 $TMPF | awk '{ print $4 }'`\n\n echo \"Checking image...\\n\"\n if [[ $a == $b ]]; then\n qemu-img create -f qcow2 fbsd_aarch64.qcow2 16G\n\n qemu-system-aarch64 \\\n -machine virt,highmem=on \\\n -accel hvf \\\n -cpu host \\\n -smp 4 \\\n -m 4G \\\n -nographic \\\n -bios /opt/homebrew/share/qemu/edk2-aarch64-code.fd \\\n -drive if=virtio,file=\"$TMPF\",format=raw,media=cdrom,readonly=on \\\n -drive if=virtio,file=fbsd_aarch64.qcow2,format=qcow2,cache=writeback,discard=unmap \\\n -device virtio-rng-pci \\\n -netdev user,id=mynet0 -device virtio-net-pci,netdev=mynet0\n\n fi\n ```\n\n3. **Execute** the script and when the installation is done, shutdown the Virtual Machine.\n\n4. **Start** the VM:\n\n ```\n qemu-system-aarch64 \\\n -machine virt,highmem=on \\\n -accel hvf \\\n -cpu host \\\n -smp 4 \\\n -m 4G \\\n -nographic \\\n -bios /opt/homebrew/share/qemu/edk2-aarch64-code.fd \\\n -drive if=virtio,file=$HOME/fbsd_aarch64.qcow2,format=qcow2,cache=writeback,discard=unmap \\\n -device virtio-rng-pci \\\n -netdev user,id=mynet0,hostfwd=tcp::7922-:22 -device virtio-net-pci,netdev=mynet0\n ```\n\n5. Once started, connect with [ssh](https://www.openssh.org):\n\n ```\n ssh -p 7922 [email protected]\n ```\n",
"sig": "4aff269e3c6b2c82593ea94ffb3daa5faa395ffb5bee70b63041de110ddfd20c8a7073101c9eecb2efaba5570b2a19da5da723daf6ee3f5269f1a1e31c1092f1"
}