<feed xmlns='http://www.w3.org/2005/Atom'>
<title>android/alpine-avf/build-alpine-avf, branch master</title>
<subtitle>[no description]</subtitle>
<link rel='alternate' type='text/html' href='http://git.0xlena.dev/android/alpine-avf/'/>
<entry>
<title>alpine-avf: replace the Android Linux Terminal VM with Alpine</title>
<updated>2026-01-01T00:00:00+00:00</updated>
<author>
<name>Lena</name>
<email>lena@omega</email>
</author>
<published>2026-01-01T00:00:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.0xlena.dev/android/alpine-avf/commit/?id=29b53a8f56814499490c96169464103b89174365'/>
<id>29b53a8f56814499490c96169464103b89174365</id>
<content type='text'>
The Terminal app ships Debian and offers no supported way to change
the guest. Android root is not available, so the only writable surface
is the payload directory the app exposes to the guest over virtiofs,
and the app has to keep working unmodified against whatever replaces
its image.

Those constraints force the two-stage install. A live root cannot be
overwritten in place, and crosvm only exposes the partitions listed in
vm_config.json when the VM starts, so a second partition has to be
staged and the VM rebooted before there is a block device to write the
new root through.

The app also inspects the payload in undocumented ways. The README
records what it expects and why the image is built to match.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The Terminal app ships Debian and offers no supported way to change
the guest. Android root is not available, so the only writable surface
is the payload directory the app exposes to the guest over virtiofs,
and the app has to keep working unmodified against whatever replaces
its image.

Those constraints force the two-stage install. A live root cannot be
overwritten in place, and crosvm only exposes the partitions listed in
vm_config.json when the VM starts, so a second partition has to be
staged and the VM rebooted before there is a block device to write the
new root through.

The app also inspects the payload in undocumented ways. The README
records what it expects and why the image is built to match.
</pre>
</div>
</content>
</entry>
</feed>
