How can I run update-grub on a chroot filesystem
oops... my bad. It's as simple as mounting dev.
Strangely enough I tried this at about 1am last night and that didn't work. This morning it did, so I'm not sure what was different.
To get a full environment just
sudo chroot /media/flash-drive
mount proc
mount sys
mount dev
And in case you have a separate boot partition
mount boot
After doing that I was able to see my devices in /dev
And update-grub actually works. Now to figure out why it's not booting... that's another problem.