Update all content; add categories and move Tech, Games, Music to category taxonomy; add location taxonomy
This commit is contained in:
parent
413a49067a
commit
ba73889720
11 changed files with 56 additions and 26 deletions
|
@ -56,6 +56,7 @@ blog = 'blog/:year/:month/:slug/'
|
||||||
|
|
||||||
[taxonomies]
|
[taxonomies]
|
||||||
category = 'categories'
|
category = 'categories'
|
||||||
|
location = 'locations'
|
||||||
series = 'series'
|
series = 'series'
|
||||||
tag = 'tags'
|
tag = 'tags'
|
||||||
|
|
||||||
|
|
|
@ -3,26 +3,30 @@ title: "Booting a Raspberry Pi Over TFTP"
|
||||||
date: 2020-10-13T08:31:52-07:00
|
date: 2020-10-13T08:31:52-07:00
|
||||||
draft: false
|
draft: false
|
||||||
series: ["Raspberry Pi OS Development"]
|
series: ["Raspberry Pi OS Development"]
|
||||||
tags: ["Tech"]
|
categories: ["Tech"]
|
||||||
|
tags: ["Raspberry Pi", "Networking"]
|
||||||
---
|
---
|
||||||
|
|
||||||
In order to do this, I modified the [EEPROM bootloader][eeprom] bootloader
|
In order to do this, I modified the [EEPROM bootloader][eeprom] bootloader
|
||||||
according to the instructions in the Raspberry Pi documentation. That page is
|
according to the instructions in the Raspberry Pi documentation. That page is
|
||||||
also on [GitHub][eeprom-gh] which might be a more stable location. On Raspbian
|
also on [GitHub][eeprom-gh] which might be a more stable location. On Raspbian
|
||||||
on the RPi:
|
on the Raspberry Pi:
|
||||||
|
|
||||||
{{< figures/code lang=sh >}}
|
{{< figures/code >}}
|
||||||
|
```sh
|
||||||
fw=/lib/firmware/raspberrypi/bootloader/stable/pieeprom-2020-09-03.bin
|
fw=/lib/firmware/raspberrypi/bootloader/stable/pieeprom-2020-09-03.bin
|
||||||
rpi-eeprom-config $fw > ~/bootconf.txt
|
rpi-eeprom-config $fw > ~/bootconf.txt
|
||||||
vi ~/bootconf.txt
|
vi ~/bootconf.txt
|
||||||
rpi-eeprom-config --out ~/pieeprom-new.bin --config ~/bootconf.txt $fw
|
rpi-eeprom-config --out ~/pieeprom-new.bin --config ~/bootconf.txt $fw
|
||||||
sudo rpi-eeprom-update -d -f ~/pieeprom-new.bin
|
sudo rpi-eeprom-update -d -f ~/pieeprom-new.bin
|
||||||
sudo reboot
|
sudo reboot
|
||||||
|
```
|
||||||
{{< /figures/code >}}
|
{{< /figures/code >}}
|
||||||
|
|
||||||
My updated bootconf.txt is:
|
My updated `bootconf.txt` is:
|
||||||
|
|
||||||
{{< figures/code lang=cfg >}}
|
{{< figures/code >}}
|
||||||
|
```cfg
|
||||||
[all]
|
[all]
|
||||||
BOOT_UART=1
|
BOOT_UART=1
|
||||||
WAKE_ON_GPIO=0
|
WAKE_ON_GPIO=0
|
||||||
|
@ -33,6 +37,7 @@ TFTP_FILE_TIMEOUT=30000
|
||||||
ENABLE_SELF_UPDATE=1
|
ENABLE_SELF_UPDATE=1
|
||||||
DISABLE_HDMI=0
|
DISABLE_HDMI=0
|
||||||
BOOT_ORDER=0xf412
|
BOOT_ORDER=0xf412
|
||||||
|
```
|
||||||
{{< /figures/code >}}
|
{{< /figures/code >}}
|
||||||
|
|
||||||
I enabled UART debugging, and set the boot order to be: network `0x2`, SD card
|
I enabled UART debugging, and set the boot order to be: network `0x2`, SD card
|
||||||
|
@ -41,45 +46,51 @@ repeated if the bootloader is updated via apt.
|
||||||
|
|
||||||
I [enabled the TFTP server][mac-tftp] on my Mac:
|
I [enabled the TFTP server][mac-tftp] on my Mac:
|
||||||
|
|
||||||
{{< figures/code lang=sh >}}
|
{{< figures/code >}}
|
||||||
|
```sh
|
||||||
sudo launchctl load -F /System/Library/LaunchDaemons/tftp.plist
|
sudo launchctl load -F /System/Library/LaunchDaemons/tftp.plist
|
||||||
sudo launchctl enable System/com.apple.tftpd
|
sudo launchctl enable System/com.apple.tftpd
|
||||||
sudo launchctl start com.apple.tftpd
|
sudo launchctl start com.apple.tftpd
|
||||||
|
```
|
||||||
{{< /figures/code >}}
|
{{< /figures/code >}}
|
||||||
|
|
||||||
I’m not sure if the `enable` command is actually necessary. This doesn't
|
I’m not sure if the `enable` command is actually necessary. This doesn't
|
||||||
actually start the `tftpd` daemon. Instead, macOS starts the daemon on demand
|
actually start the `tftpd` daemon. Instead, macOS starts the daemon on demand
|
||||||
when it notices an incoming tftp request on the network. Don't be alarmed!
|
when it notices an incoming tftp request on the network. Don't be alarmed!
|
||||||
|
|
||||||
The tftp server looks for files to serve out of **/private/tftpboot**, and those
|
The tftp server looks for files to serve out of **`/private/tftpboot`**, and those
|
||||||
things need to be world `rwx`, i.e. `777`. By default (this is configurable) the
|
things need to be world `rwx`, i.e. `777`. By default (this is configurable) the
|
||||||
RPi queries for a directory named by its serial number.
|
Raspberry Pi queries for a directory named by its serial number.
|
||||||
|
|
||||||
{{< figures/code lang=sh >}}
|
{{< figures/code >}}
|
||||||
|
```sh
|
||||||
mkdir /private/tftpboot/$raspberry_pi_serial
|
mkdir /private/tftpboot/$raspberry_pi_serial
|
||||||
chmod 777 /private/tftpboot
|
chmod 777 /private/tftpboot
|
||||||
chmod -R 777 /private/tftpboot/*
|
chmod -R 777 /private/tftpboot/*
|
||||||
|
```
|
||||||
{{< /figures/code >}}
|
{{< /figures/code >}}
|
||||||
|
|
||||||
RPi looks for files of various names in that directory, one in particular by the
|
Raspberry Pi looks for files of various names in that directory, one in
|
||||||
name of **start.elf**.
|
particular by the name of **`start.elf`**.
|
||||||
|
|
||||||
Next, I had to update my Ubiquiti router's DHCP server configuration (on the
|
Next, I had to update my Ubiquiti router's DHCP server configuration (on the
|
||||||
command line) to pass a `tftp-server` parameter in the DHCP payload. This step
|
command line) to pass a `tftp-server` parameter in the DHCP payload. This step
|
||||||
may be optional because you can also set `TFTP_IP` in the **bootconf.txt** above
|
may be optional because you can also set `TFTP_IP` in the **`bootconf.txt`** above
|
||||||
to specify the IP directly. On my router:
|
to specify the IP directly. On my router:
|
||||||
|
|
||||||
{{< figures/code lang=sh >}}
|
{{< figures/code >}}
|
||||||
|
```sh
|
||||||
configure
|
configure
|
||||||
set service dhcp-server shared-network-name LAN subnet $lan_cidr_subnet tftp-server-name $ip_of_mac
|
set service dhcp-server shared-network-name LAN subnet $lan_cidr_subnet tftp-server-name $ip_of_mac
|
||||||
commit
|
commit
|
||||||
save
|
save
|
||||||
exit
|
exit
|
||||||
|
```
|
||||||
{{< /figures/code >}}
|
{{< /figures/code >}}
|
||||||
|
|
||||||
I also gave my Mac a static IP, and renewed the DHCP lease so it took the new IP
|
I also gave my Mac a static IP, and renewed the DHCP lease so it took the new IP
|
||||||
to make the whole process a little more smooth. Now, it appears the RPi will
|
to make the whole process a little more smooth. Now, it appears the Raspberry
|
||||||
attempt a TFTP boot, and I see queries in the logs on my Mac.
|
Pi will attempt a TFTP boot, and I see queries in the logs on my Mac.
|
||||||
|
|
||||||
## Further Reading
|
## Further Reading
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,9 @@ resources:
|
||||||
- name: "ramen"
|
- name: "ramen"
|
||||||
src: "images/ramen.jpg"
|
src: "images/ramen.jpg"
|
||||||
title: "A bowl of ramen from Marufuku"
|
title: "A bowl of ramen from Marufuku"
|
||||||
tags: ["Travel"]
|
categories: ["Travel"]
|
||||||
|
locations: ["San Francisco", "California", "United States"]
|
||||||
|
tags: ["Staycation", "Food"]
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< figures/image name=buchanan >}}
|
{{< figures/image name=buchanan >}}
|
||||||
|
|
|
@ -3,7 +3,8 @@ title: "Oskitone Scout"
|
||||||
date: 2021-09-11T16:47:07-07:00
|
date: 2021-09-11T16:47:07-07:00
|
||||||
description: A timelapse video of me building an Oskitone Scout set to music produced using the Scout itself.
|
description: A timelapse video of me building an Oskitone Scout set to music produced using the Scout itself.
|
||||||
draft: false
|
draft: false
|
||||||
tags: ["Music", "Synthesizers", "DIY"]
|
categories: ["Music"]
|
||||||
|
tags: ["Synthesizers", "Electronics", "DIY", "Compositions"]
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< figures/youtube id="gCSwWsxzy_c" title="A timelapse video of me building an Oskitone Scout, set to music produced using the Scout itself">}}
|
{{< figures/youtube id="gCSwWsxzy_c" title="A timelapse video of me building an Oskitone Scout, set to music produced using the Scout itself">}}
|
||||||
|
|
|
@ -7,7 +7,16 @@ resources:
|
||||||
- name: friends
|
- name: friends
|
||||||
src: "friends.jpg"
|
src: "friends.jpg"
|
||||||
title: ""
|
title: ""
|
||||||
tags: ["Travel", "Pandemic", "Friends"]
|
categories: ["Travel"]
|
||||||
|
locations:
|
||||||
|
- "Portland, OR"
|
||||||
|
- "Oregon"
|
||||||
|
- "Olympic Peninsula"
|
||||||
|
- "Seattle, WA"
|
||||||
|
- "Washington"
|
||||||
|
- "Pacific Northwest"
|
||||||
|
- "United States"
|
||||||
|
tags: ["Pandemic", "Friends"]
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< figures/image name=friends >}}
|
{{< figures/image name=friends >}}
|
||||||
|
@ -32,4 +41,4 @@ I'm so grateful for every one of these people. We've been friends for years and
|
||||||
even though our lives have taken us in so many different directions, we've found
|
even though our lives have taken us in so many different directions, we've found
|
||||||
each other again and that is so wonderful.
|
each other again and that is so wonderful.
|
||||||
|
|
||||||
{{< twitter 1447951049076056071 >}}
|
{{< twitter erynofwales 1447951049076056071 >}}
|
||||||
|
|
|
@ -3,7 +3,8 @@ title: "Colorado Modular Synth Society Three Module Challenge"
|
||||||
date: 2022-01-23T09:21:35-07:00
|
date: 2022-01-23T09:21:35-07:00
|
||||||
description: In which I submit a video of me playing a small Eurorack system to CMSS
|
description: In which I submit a video of me playing a small Eurorack system to CMSS
|
||||||
draft: false
|
draft: false
|
||||||
tags: ["Music", "Eurorack", "Synthesizers", "Recordings", "Performances"]
|
categories: ["Music"]
|
||||||
|
tags: ["Eurorack", "Synthesizers", "Recordings", "Performances", "Compositions"]
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< figures/youtube id="sqr7g4P85aM" title="A top-down video of me operating a small Eurorack system made of only three modules. Lights flash, an incorporeal hand turns knobs to sculpt the sound." >}}
|
{{< figures/youtube id="sqr7g4P85aM" title="A top-down video of me operating a small Eurorack system made of only three modules. Lights flash, an incorporeal hand turns knobs to sculpt the sound." >}}
|
||||||
|
|
|
@ -3,7 +3,8 @@ title: "Profiling ZSH"
|
||||||
date: 2022-01-23T11:35:38-08:00
|
date: 2022-01-23T11:35:38-08:00
|
||||||
description: In which I learn about how to profile my ZSH init files.
|
description: In which I learn about how to profile my ZSH init files.
|
||||||
draft: false
|
draft: false
|
||||||
tags: ["Tech", "ZSH"]
|
categories: ["Tech"]
|
||||||
|
tags: ["ZSH", "Dotfiles"]
|
||||||
---
|
---
|
||||||
|
|
||||||
I've been hacking on my [dotfiles][dotfiles] a lot lately. One of the things
|
I've been hacking on my [dotfiles][dotfiles] a lot lately. One of the things
|
||||||
|
@ -13,9 +14,11 @@ undertook the same project.
|
||||||
|
|
||||||
TIL, ZSH has a profiler built in. You can start it by calling the following.
|
TIL, ZSH has a profiler built in. You can start it by calling the following.
|
||||||
|
|
||||||
|
{{< figures/code >}}
|
||||||
```zsh
|
```zsh
|
||||||
zmodload zsh/zprof
|
zmodload zsh/zprof
|
||||||
```
|
```
|
||||||
|
{{< /figures/code >}}
|
||||||
|
|
||||||
Then, once you're done, you call `zprof` to get a report that tells you where
|
Then, once you're done, you call `zprof` to get a report that tells you where
|
||||||
ZSH is spending most of its time. I put the line above at the top of my
|
ZSH is spending most of its time. I put the line above at the top of my
|
||||||
|
|
|
@ -3,7 +3,8 @@ title: Oh Dear, She Got Hooked on Nethack Again
|
||||||
date: 2022-04-24T17:36:33-07:00
|
date: 2022-04-24T17:36:33-07:00
|
||||||
description: In which I get hooked on that one roguelike (God help me)
|
description: In which I get hooked on that one roguelike (God help me)
|
||||||
draft: false
|
draft: false
|
||||||
tags: ["Nethack", "Video Games", "Roguelikes"]
|
categories: ["Games"]
|
||||||
|
tags: ["Nethack", "Roguelikes"]
|
||||||
---
|
---
|
||||||
|
|
||||||
A couple weeks ago, I connected to my VPS to check on something. There's [a
|
A couple weeks ago, I connected to my VPS to check on something. There's [a
|
||||||
|
|
|
@ -12,6 +12,7 @@ resources:
|
||||||
- name: dcss
|
- name: dcss
|
||||||
src: "dcss.png"
|
src: "dcss.png"
|
||||||
title: ""
|
title: ""
|
||||||
|
categories: ["Games"]
|
||||||
tags: ["Roguelikes", "Video Games"]
|
tags: ["Roguelikes", "Video Games"]
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,8 @@
|
||||||
title: "Making an Audio Scope with P5.js"
|
title: "Making an Audio Scope with P5.js"
|
||||||
date: 2022-08-18T20:48:37-07:00
|
date: 2022-08-18T20:48:37-07:00
|
||||||
draft: false
|
draft: false
|
||||||
tags: ["P5.js", "Programming", "Tech", "Web"]
|
categories: ["Tech"]
|
||||||
|
tags: ["P5.js", "Programming", "Web", "Art"]
|
||||||
resources:
|
resources:
|
||||||
- src: sketch.js
|
- src: sketch.js
|
||||||
params:
|
params:
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
{{ $lang := .Get "lang" }}
|
{{- $trimmedInner := trim .Inner "\n " -}}
|
||||||
{{ $trimmedCode := trim .Inner "\n " }}
|
|
||||||
<figure class="code">
|
<figure class="code">
|
||||||
{{ transform.Highlight $trimmedCode $lang }}
|
{{ $.Page.RenderString $trimmedInner }}
|
||||||
</figure>
|
</figure>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue