FreeBSD on Apple Silicon

tuco

npub19q8gglhseq4z5lzwsa7frnt4var5c9p3hq2ay7auzqt7z37e6a7qcmhnps

hex

550fe7df9be9f3c760df912d24ac623f90b9044d9b23f367b3b9f9e39259e822

nevent

nevent1qqs92rl8m7d7nu78vr0eztfy433rly9eq3xekglnv7emn70rjfv7sgsprpmhxue69uhhyetvv9ujuem4d36kwatvw5hx6mm9qgszsr5y0mcvs232038gwly3e46kw36vzscms9wj0w7pq9lpglvawlqu8g69y

naddr

naddr1qqvxvun9v438xepddahz6ctswpkx2ttnd9kxjcm0dcq3samnwvaz7tmjv4kxz7fwva6kcat8w4k82tnddajsygpgp6z8auxg9g48cn580jgu6at8gaxpgvdczhf8h0qszls50kwh0spsgqqqw4rsqn3q23

Kind-30023 (Article)

2026-05-08T05:14:22Z

  1. On macOS, install qemu and curl with homebrew:

    brew install qemu curl
    
  2. 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
    
  3. Execute the script and when the installation is done, shutdown the Virtual Machine.

  4. 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
    
  5. 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"
}