{"id":778,"date":"2026-03-08T06:42:40","date_gmt":"2026-03-08T06:42:40","guid":{"rendered":"https:\/\/peterwong.net\/blog\/?page_id=778"},"modified":"2026-03-08T19:40:57","modified_gmt":"2026-03-08T19:40:57","slug":"netbooting-an-apple-iigs-from-netatalk-march-2026","status":"publish","type":"page","link":"https:\/\/peterwong.net\/blog\/netbooting-an-apple-iigs-from-netatalk-march-2026\/","title":{"rendered":"Netbooting an Apple IIgs from Netatalk (March 2026)"},"content":{"rendered":"<p>Back in 2010, I posted <a href=\"https:\/\/peterwong.net\/blog\/apple-iigs-network-netatalk\/\" target=\"_blank\" rel=\"noopener\">here<\/a> about booting an Apple IIgs connected via LocalTalk from a Linux server running <a href=\"https:\/\/netatalk.io\/\" target=\"_blank\" rel=\"noopener\">netatalk<\/a>.&nbsp; This was that time before the popular Raspberry Pi boards were made commercially available and we were still tinkering with Arduino microcontrollers.<\/p>\n<p>Prior to that, I have been able to netboot an Apple IIgs from a classic Mac running AppleShare (2.x or 3.x) with its Apple II networking support.&nbsp; This was all through LocalTalk network cables.&nbsp; The setup process involved enabling the Apple II support on the server, booting an Apple IIgs from 3.5\u201d diskette with AppleTalk drivers, and then installing Apple IIgs files over the network to the server.&nbsp; Once the setup is completed, the Apple IIgs would not need a disk drive anymore and can directly boot from the server.<\/p>\n<p>I wanted to do this with a server machine that takes up less physical space.&nbsp; From the old <em>comp.sys.apple2<\/em> newsgroups, I learned about the netatalk package that can be installed in a Linux machine.&nbsp; It offered the same services and is in active development.&nbsp; netatalk was at version 2.x at that time.&nbsp; In 2010, many NAS-like devices appeared on the market. These were small ARM-powered single-board computers with an Ethernet port and running some form of Debian distribution of Linux.&nbsp; I was customizing the Linux installation on this tiny <a href=\"https:\/\/en.wikipedia.org\/wiki\/Plug_computer\" target=\"_blank\" rel=\"noopener\">Seagate Dockstar<\/a> \u2013 attaching peripherals to its USB ports, including keyboard, mouse, and even a small USB display device.&nbsp; It had enough storage to install a few more packages, and I played with compiling and installing netatalk on it.&nbsp; Along with a small LocalTalk-Ethernet bridge device, I was able to netboot an Apple IIgs.&nbsp; Many Linux distributions, up to today, enables the DDP network layer protocol on top of Ethernet.<\/p>\n<p>Fast-forward to 2026, netatalk is at version 4.x with more features, and there are numerous tiny single-board computers.&nbsp; I was encouraged to see how I could do the same with netatalk installed on a Raspberry Pi.&nbsp; I used a spare Raspberry Pi 4 for this.<\/p>\n<h2>netatalk<\/h2>\n<p>The good news is that the netatalk features I needed back in 2010 are included in the binary distribution and I now don\u2019t need to build netatalk from source code.&nbsp; I performed a clean Raspberry Pi OS installation using the stable distribution (Debian \u201ctrixie\u201d that was made available for the Raspberry Pi OS in December 2025).&nbsp; In the following steps and screenshots, \u201cpeter\u201d is my Raspberry Pi OS user name.&nbsp; The only extra package I installed is netatalk with:<\/p>\n<pre><span style=\"font-family: consolas;\">sudo apt install netatalk<\/span><\/pre>\n<p>\nAfter installation, I edited my <span style=\"font-family: consolas;\">\/etc\/netatalk\/atalkd.conf<\/span> file to include the following:\n<\/p>\n<pre><span style=\"font-family: consolas;\">eth0 -router -phase 2 -net 0-65534 \u2013zone \"Default\"<\/span><\/pre>\n<p>I didn\u2019t assign an AppleTalk node address so that it could just use an assigned address in case a seed node is somewhere in the network.&nbsp; If a seed node is not found in the network, it will just be assigned an address and the file will be updated accordingly.<\/p>\n<p>To define the volumes visible to AppleTalk clients, my <span style=\"font-family: consolas;\">\/etc\/netatalk\/afp.conf <\/span>file includes the following (explained further below):<\/p>\n<pre><span style=\"font-family: consolas;\">[global]\nappletalk = yes\nuam list = uams_randnum.so uams_clrtxt.so uams_guest.so\n[apple2]\nvolume name = Apple II Files\npath = \/home\/$u\/afp-data\/apple2\nprodos = yes\n[A2BOOT]\ncasefold = toupper\nvolume name = A2BOOT\npath = \/home\/$u\/afp-data\/A2BOOT\nprodos = yes<\/span><\/pre>\n<p>I only used the UAM (authentication) protocols recognized by the Apple IIgs.&nbsp; There are better and more secure protocols used by other AppleTalk clients, like those used in classic Macs, that can be added here.<\/p>\n<p>One of the differences from netatalk version 2.x is that per-user volume configuration is not available anymore. In version 2.x, an <span style=\"font-family: consolas;\">~\/AppleVolumes<\/span> file in your home directory enumerates an additional list of volumes that are visible to the AppleTalk client once the user has logged in.&nbsp; In version 4.x, we use the <span style=\"font-family: consolas;\">$u<\/span> placeholder in the path as a convention for mounting per-user volumes (which are directories in the Linux file system).&nbsp; If you prefer not to use per-user volumes, you can always provide absolute directory paths in the configuration.&nbsp; I see that you can configure a lot more things in version 4.x, including ACLs and read-only vs read-write access for users.<\/p>\n<p>The volume to be used to netboot an Apple IIgs has to be the last entry in <span style=\"font-family: consolas;\">\/etc\/netatalk\/afp.conf<\/span>.&nbsp; I think this is a bug in netatalk since it presents the list of volumes to the AppleTalk client in reverse order listed in the <span style=\"font-family: consolas;\">afp.conf<\/span> file.&nbsp; The Apple IIgs can only netboot from the first volume in the list presented to the user.&nbsp; Additionally, the <span style=\"font-family: consolas;\">casefold<\/span> configuration for the volume has to be set to <span style=\"font-family: consolas;\">toupper<\/span> because somewhere in the netboot code is retrieval of some file specified in upper-case (I think it\u2019s either <span style=\"font-family: consolas;\">\/SYSTEM\/START<\/span> or <span style=\"font-family: consolas;\">\/SYSTEM\/START.GS.OS<\/span> which is different from how they are distributed as <span style=\"font-family: consolas;\">\/System\/Start<\/span> or <span style=\"font-family: consolas;\">\/System\/Start.GS.OS<\/span>)<\/p>\n<p>Note that for authentication, the Apple IIgs client limits the password to 8 characters.&nbsp; So for <em>clrtxt<\/em> authentication which checks against your netatalk machine authentication, your Linux password has to be within that length limit.<\/p>\n<p>In 2010, neither the <em>randnum<\/em> UAM nor the <em>a2boot<\/em> daemon were included in the netatalk package, but they are now part of the version 4.x distribution.&nbsp; For <em>randnum<\/em> authentication, follow the instructions for the <em>afppasswd<\/em> command to set the user password, differently from the user password in the Linux system.<\/p>\n<p>To install the boot blocks needed for netbooting from netatalk, use the same three files I made available <a href=\"https:\/\/peterwong.net\/files\/apple2\/troika-3.tar.gz\">here<\/a> and extract them to the <span style=\"font-family: consolas;\">\/etc\/netatalk\/a2boot<\/span> directory.&nbsp; These files were not freely available and were themselves just extracted from the AppleShare 3.0.1 Mac installation disks <a title=\"https:\/\/macintoshgarden.org\/apps\/appleshare-30\" href=\"https:\/\/macintoshgarden.org\/apps\/appleshare-30\" target=\"_blank\" rel=\"noopener\">https:\/\/macintoshgarden.org\/apps\/appleshare-30<\/a>.<\/p>\n<h2>Bridge Hardware<\/h2>\n<p>The hardware device that I used to bridge LocalTalk to Ethernet is a Dayna Mini EtherPrint.&nbsp; There were other devices I tested back in 2010, including the small manta-ray-shaped Farallon EtherWave devices, some Asante-branded devices, and full routers like the Cayman GatorBox or Kinetics FastPath.<\/p>\n<p>The less expensive devices like the EtherPrint were used differently back in the day.&nbsp; They were used to attach LocalTalk-connected printer devices to an Ethernet network, and classic Macs connected to Ethernet are able to send print jobs to the LocalTalk printers.&nbsp; Here, we are using the device to attach an Apple IIgs client to the Ethernet network and talk to servers using AppleTalk protocols.<\/p>\n<h2>Apple IIgs<\/h2>\n<p>On the Apple IIgs side, we first need to install system software into the remote volume that will be used for netbooting.<\/p>\n<p>Make sure you set the Slots configuration in the Apple IIgs Control Panel to use AppleTalk so that it can communicate with netatalk.&nbsp; With a ROM3 machine, I think you can choose either Slot 1 or Slot 2 to use AppleTalk.<\/p>\n<p><a href=\"https:\/\/peterwong.net\/blog\/wp-content\/uploads\/2026\/03\/Netboot-ControlPanel-AppleTalk-Medium.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"244\" height=\"185\" title=\"Netboot-ControlPanel-AppleTalk (Medium)\" style=\"display: inline; background-image: none;\" alt=\"Netboot-ControlPanel-AppleTalk (Medium)\" src=\"https:\/\/peterwong.net\/blog\/wp-content\/uploads\/2026\/03\/Netboot-ControlPanel-AppleTalk-Medium_thumb.jpg\" border=\"0\"><\/a><\/p>\n<p>We can start from scratch with a fresh set of System 6.0.1 (or later) installation disks and an external 3.5\u201d drive or modern drive emulator equivalent.&nbsp; The default bootable System disk does not load the AppleShare drivers.&nbsp; You can run the Installer program from the Install disk and choose the \u201cNetwork: AppleShare, 3.5&#8243; Disk\u201d to create a new bootable 3.5\u201d disk that has the AppleShare drivers.&nbsp; Boot from that new disk, and use the Control Panel, which only has the AppleShare CDEV, to log in and attach the netatalk A2BOOT volume.<\/p>\n<p><a href=\"https:\/\/peterwong.net\/blog\/wp-content\/uploads\/2026\/03\/Netboot-Installer-AppleShareDisk-1-Medium.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"244\" height=\"185\" title=\"Netboot-Installer-AppleShareDisk-1 (Medium)\" style=\"margin: 0px; display: inline; background-image: none;\" alt=\"Netboot-Installer-AppleShareDisk-1 (Medium)\" src=\"https:\/\/peterwong.net\/blog\/wp-content\/uploads\/2026\/03\/Netboot-Installer-AppleShareDisk-1-Medium_thumb.jpg\" border=\"0\"><\/a><a href=\"https:\/\/peterwong.net\/blog\/wp-content\/uploads\/2026\/03\/Netboot-Installer-AppleShareDisk-2-Medium.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"244\" height=\"185\" title=\"Netboot-Installer-AppleShareDisk-2 (Medium)\" style=\"display: inline; background-image: none;\" alt=\"Netboot-Installer-AppleShareDisk-2 (Medium)\" src=\"https:\/\/peterwong.net\/blog\/wp-content\/uploads\/2026\/03\/Netboot-Installer-AppleShareDisk-2-Medium_thumb.jpg\" border=\"0\"><\/a><\/p>\n<p>Here\u2019s the gotcha with the default AppleShare CDEV &#8212; there is a bug in the AppleShare CDEV from System 6.0.1 (but has been patched in later versions) where the password sent for <em>clrtxt<\/em> authentication has the byte order swapped and will fail to log in to netatalk.&nbsp; There is this well-known <a href=\"https:\/\/peterwong.net\/files\/apple2\/Asmj21h.shk\">Marsha Jackson\u2019s patched AppleShare CDEV<\/a> that fixes the bug, and you will need to somehow replace the AppleShare CDEV in the boot disk.&nbsp; However, you won\u2019t need this patch if you configured netatalk to allow <em>randnum<\/em> authentication.&nbsp; If you still want to stay with <em>clrtxt<\/em> authentication, I made available images of these boot disks with the patched AppleShare CDEV for ROM1 and ROM3 machines, <a href=\"https:\/\/peterwong.net\/files\/AppleIIgsBootDisks\/AppleShare-ROM1.zip\">here<\/a> and <a href=\"https:\/\/peterwong.net\/files\/AppleIIgsBootDisks\/AppleShare-ROM3.zip\">here<\/a> respectively.<\/p>\n<p>Once you have attached to the netatalk A2BOOT volume, run the Installer program from the Install disk and choose \u201cNetwork Server Startup\u201d targeting the remote A2BOOT volume as the destination disk.&nbsp; It will ask for and copy files from the Install, SystemTools1, and SystemTools2 disks.&nbsp; The files will appear within the A2BOOT folder in the Linux file system, with resource forks appearing as separate AppleDouble files.<\/p>\n<p><a href=\"https:\/\/peterwong.net\/blog\/wp-content\/uploads\/2026\/03\/Netboot-Installer-NetworkStartup-Medium.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"244\" height=\"185\" title=\"Netboot-Installer-NetworkStartup (Medium)\" style=\"display: inline; background-image: none;\" alt=\"Netboot-Installer-NetworkStartup (Medium)\" src=\"https:\/\/peterwong.net\/blog\/wp-content\/uploads\/2026\/03\/Netboot-Installer-NetworkStartup-Medium_thumb.jpg\" border=\"0\"><\/a><\/p>\n<p>Here\u2019s another bug related to the AppleShare CDEV bug &#8212; the <span style=\"font-family: consolas;\">\/SYSTEM\/START<\/span> file copied over to the A2BOOT volume exhibits the same bug.&nbsp; If you still want to keep using <em>clrtxt<\/em> authentication, you must extract the <span style=\"font-family: consolas;\">START<\/span> file from <a href=\"https:\/\/peterwong.net\/files\/apple2\/AT.START.SHK\">here<\/a> and replace that file in the A2BOOT volume.&nbsp; I would just recommend using <em>randnum<\/em> authentication to avoid all these mundane patches.<\/p>\n<p>An additional file needed during netbooting is the user\u2019s ATINIT file.&nbsp; This informs GS\/OS what startup program to launch.&nbsp; I\u2019ve provided an example <a href=\"https:\/\/peterwong.net\/files\/apple2\/ATINIT\">ATINIT<\/a> file that simply launches the GS\/OS Finder application located in the System folder of the A2BOOT volume.&nbsp; You can edit this file using a binary file utility and change the startup application and the startup prefix.&nbsp; Note the string length value on the byte preceding the actual strings.&nbsp; The <a href=\"https:\/\/mirrors.apple2.org.za\/Apple%20II%20Documentation%20Project\/Computers\/Apple%20II\/Apple%20IIGS\/Documentation\/Apple%20IIGS%20Technical%20Notes%2065-79.pdf\" target=\"_blank\" rel=\"noopener\">Apple IIgs Technical Note #77<\/a> describes the ATINIT file format.<\/p>\n<p><a href=\"https:\/\/peterwong.net\/blog\/wp-content\/uploads\/2026\/03\/ATINIT.png\"><img loading=\"lazy\" decoding=\"async\" width=\"644\" height=\"449\" title=\"ATINIT\" style=\"display: inline; background-image: none;\" alt=\"ATINIT\" src=\"https:\/\/peterwong.net\/blog\/wp-content\/uploads\/2026\/03\/ATINIT_thumb.png\" border=\"0\"><\/a><\/p>\n<p>For example, using the A2BOOT volume for the user \u201cpeter\u201d, I create the <span style=\"font-family: consolas;\">\/USERS\/PETER\/SETUP<\/span> directory in the A2BOOT volume and place the file in that directory.&nbsp; Note the directory name corresponding to the user name.&nbsp; You can place the file from either within Linux or from within the GS\/OS mounted volume (from booting the AppleShare boot disk on the Apple IIgs).&nbsp; In the Linux system, the full directory path could be like <span style=\"font-family: consolas;\">\/home\/peter\/afp-data\/A2BOOT\/USERS\/PETER\/SETUP<\/span>.<\/p>\n<p>The need for the ATINIT file is because of the AppleTalk-specific <span style=\"font-family: consolas;\">\/SYSTEM\/START<\/span> boot application that gets installed with the Network Server Startup installation.&nbsp; If you don\u2019t want to bother with the ATINIT stuff, merely copy a valid application over the <span style=\"font-family: consolas;\">\/SYSTEM\/START<\/span> boot application.&nbsp; An example is replacing the <span style=\"font-family: consolas;\">\/SYSTEM\/START<\/span> file with a copy of the Finder application.&nbsp; Another example is replacing the <span style=\"font-family: consolas;\">\/SYSTEM\/START<\/span> file with the \u201cStart\u201d boot application found in the System 6.0.1 Installer disk, which consults the <em>SetStart<\/em> setting in the control panel for the boot application to chain to.<\/p>\n<h2>Netboot<\/h2>\n<p>That is all there is to setting things up.<\/p>\n<p>After the files are copied, you can eventually disconnect the 3.5\u201d drive, and change the boot configuration in the Apple IIgs Control Panel to boot from AppleTalk.&nbsp; When the system boots up, it would start the boot process by first loading the boot blocks from netatalk\u2019s a2boot subsystem, and then present an AppleShare login page.&nbsp; Select the remote boot volume, and continue the boot process from there all the way to the GS\/OS desktop environment.<\/p>\n<p><a href=\"https:\/\/peterwong.net\/blog\/wp-content\/uploads\/2026\/03\/Netboot-Startup-BootAppleTalk-Medium.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"244\" height=\"185\" title=\"Netboot-Startup-BootAppleTalk (Medium)\" style=\"display: inline; background-image: none;\" alt=\"Netboot-Startup-BootAppleTalk (Medium)\" src=\"https:\/\/peterwong.net\/blog\/wp-content\/uploads\/2026\/03\/Netboot-Startup-BootAppleTalk-Medium_thumb.jpg\" border=\"0\"><\/a><a href=\"https:\/\/peterwong.net\/blog\/wp-content\/uploads\/2026\/03\/Netboot-Startup-BootBlocks-Medium.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"244\" height=\"185\" title=\"Netboot-Startup-BootBlocks (Medium)\" style=\"margin: 0px; display: inline; background-image: none;\" alt=\"Netboot-Startup-BootBlocks (Medium)\" src=\"https:\/\/peterwong.net\/blog\/wp-content\/uploads\/2026\/03\/Netboot-Startup-BootBlocks-Medium_thumb.jpg\" border=\"0\"><\/a><a href=\"https:\/\/peterwong.net\/blog\/wp-content\/uploads\/2026\/03\/Netboot-Startup-SelectVolumes-Medium.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"244\" height=\"185\" title=\"Netboot-Startup-SelectVolumes (Medium)\" style=\"margin: 0px; display: inline; background-image: none;\" alt=\"Netboot-Startup-SelectVolumes (Medium)\" src=\"https:\/\/peterwong.net\/blog\/wp-content\/uploads\/2026\/03\/Netboot-Startup-SelectVolumes-Medium_thumb.jpg\" border=\"0\"><\/a><a href=\"https:\/\/peterwong.net\/blog\/wp-content\/uploads\/2026\/03\/Netboot-Startup-WithRemoteVolumes-Medium.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"244\" height=\"185\" title=\"Netboot-Startup-WithRemoteVolumes (Medium)\" style=\"display: inline; background-image: none;\" alt=\"Netboot-Startup-WithRemoteVolumes (Medium)\" src=\"https:\/\/peterwong.net\/blog\/wp-content\/uploads\/2026\/03\/Netboot-Startup-WithRemoteVolumes-Medium_thumb.jpg\" border=\"0\"><\/a><\/p>\n<h2>Bonus: Alternate Apple IIgs Setup<\/h2>\n<p>If you are like me where I took a long time looking for my 3.5\u201d drive in storage, I offer an alternative way of setting up the boot system using a SCSI card and a SCSI emulator like <a href=\"https:\/\/bluescsi.com\/\" target=\"_blank\" rel=\"noopener\">BlueSCSIv2<\/a> or others.<\/p>\n<p>I created the four floppy disk images in my SCSI device emulator, three of them being from the original System 6.0.1 disks.&nbsp; The boot disk is the new AppleShare-enabled boot disk created from what I described above, with some files replaced.&nbsp; I needed to add the <span style=\"font-family: consolas;\">\/System\/Drivers\/SCSI.Manager<\/span> and <span style=\"font-family: consolas;\">\/System\/Drivers\/SCSIHD.Driver<\/span> files. To make space available, I had to remove the <span style=\"font-family: consolas;\">\/BASIC.System<\/span> and <span style=\"font-family: consolas;\">\/System\/P8<\/span> files.&nbsp; I named this boot disk as <span style=\"font-family: consolas;\">FD60_AS_ROM3.po<\/span> and placed it on my BlueSCSIv2 file system.<\/p>\n<p><a href=\"https:\/\/peterwong.net\/blog\/wp-content\/uploads\/2026\/03\/AppleShare-3.5-Apple-IIgs-ROM3.png\"><img loading=\"lazy\" decoding=\"async\" width=\"644\" height=\"333\" title=\"AppleShare 3.5 Apple IIgs ROM3\" style=\"display: inline; background-image: none;\" alt=\"AppleShare 3.5 Apple IIgs ROM3\" src=\"https:\/\/peterwong.net\/blog\/wp-content\/uploads\/2026\/03\/AppleShare-3.5-Apple-IIgs-ROM3_thumb.png\" border=\"0\"><\/a><\/p>\n<p>The system will boot from the emulated device with the highest SCSI ID, so I name the boot disk as FD60_xxxx (SCSI ID 6).&nbsp; This goes through the same process of copying the files over to the remote A2BOOT volume and you won\u2019t need to swap disks in your 3.5\u201d drive because the other three disk images are already available on different SCSI IDs.<\/p>\n<h2>Bonus: Files<\/h2>\n<p>Archive (in tar.gz format) of the A2BOOT volume from my Raspberry Pi, if you prefer a more turnkey approach to setting up the remote boot volume, instead of running setup from the Apple IIgs side: <a title=\"https:\/\/peterwong.net\/files\/apple2\/A2BOOT.tar.gz\" href=\"https:\/\/peterwong.net\/files\/apple2\/A2BOOT.tar.gz\">https:\/\/peterwong.net\/files\/apple2\/A2BOOT.tar.gz<\/a><\/p>\n<p>Disk image of AppleShare-enabled boot disks for ROM1 and ROM3, without the AppleShare CDEV patch, but contains the <font face=\"Consolas\">\/System\/Drivers\/SCSI.Manager <\/font>and <font face=\"Consolas\">\/System\/Drivers\/SCSIHD.Driver<\/font> files for use as a disk image in BlueSCSIv2:<br \/><a title=\"https:\/\/peterwong.net\/files\/apple2\/AppleShare.IIgs.ROM1.po\" href=\"https:\/\/peterwong.net\/files\/apple2\/AppleShare.IIgs.ROM1.po\">https:\/\/peterwong.net\/files\/apple2\/AppleShare.IIgs.ROM1.po<\/a><br \/><a title=\"https:\/\/peterwong.net\/files\/apple2\/AppleShare.IIgs.ROM3.po\" href=\"https:\/\/peterwong.net\/files\/apple2\/AppleShare.IIgs.ROM3.po\">https:\/\/peterwong.net\/files\/apple2\/AppleShare.IIgs.ROM3.po<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Back in 2010, I posted here about booting an Apple IIgs connected via LocalTalk from a Linux server running netatalk.&nbsp; This was that time before the popular Raspberry Pi boards were made commercially available and we were still tinkering with &hellip; <a href=\"https:\/\/peterwong.net\/blog\/netbooting-an-apple-iigs-from-netatalk-march-2026\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-778","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/peterwong.net\/blog\/wp-json\/wp\/v2\/pages\/778","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/peterwong.net\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/peterwong.net\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/peterwong.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/peterwong.net\/blog\/wp-json\/wp\/v2\/comments?post=778"}],"version-history":[{"count":6,"href":"https:\/\/peterwong.net\/blog\/wp-json\/wp\/v2\/pages\/778\/revisions"}],"predecessor-version":[{"id":801,"href":"https:\/\/peterwong.net\/blog\/wp-json\/wp\/v2\/pages\/778\/revisions\/801"}],"wp:attachment":[{"href":"https:\/\/peterwong.net\/blog\/wp-json\/wp\/v2\/media?parent=778"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}