-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgetting-started.html
More file actions
221 lines (200 loc) · 8.86 KB
/
getting-started.html
File metadata and controls
221 lines (200 loc) · 8.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Getting Started — Ageless Linux Docs</title>
<link rel="stylesheet" href="/style.css">
</head>
<body>
<nav>
<div class="inner">
<a href="https://agelesslinux.org" class="logo">AGELESS<span> LINUX</span></a>
<div class="links">
<a href="https://agelesslinux.org">Home</a>
<a href="/index.html" class="active">Docs</a>
<a href="/age-reporting/">Age Reporting</a>
<a href="/removal/">Removal</a>
<a href="/short-circuit/">Short-Circuit</a>
<a href="/device/">Device</a>
<a href="https://agelesslinux.org/map.html">State Laws</a>
</div>
</div>
</nav>
<div class="container">
<div class="page-header">
<h2>Getting Started</h2>
<h1>Become <em>Ageless</em></h1>
<p>
<code>become-ageless.sh</code> is a shell script that converts a Linux system into a
declared noncompliant state under California's age reporting mandate. It modifies OS
identity files and installs compliance documentation — nothing more.
</p>
</div>
<section>
<h3>Requirements</h3>
<ul style="margin-top:12px; padding-left:24px; line-height:2;">
<li>A Debian-based system (Ubuntu, Mint, Pop!_OS, Raspberry Pi OS, etc.)</li>
<li>Root access (<code>sudo</code>)</li>
<li><code>curl</code> or <code>wget</code> to download the script</li>
</ul>
</section>
<section>
<h3>Download</h3>
<p>Grab the script from agelesslinux.org or the GitHub repo:</p>
<pre>curl -O https://agelesslinux.org/become-ageless.sh</pre>
<p>Or clone the repository:</p>
<pre>git clone https://github.com/agelesslinux/agelesslinux.git
cd agelesslinux</pre>
</section>
<section>
<h3>Two Modes</h3>
<p>
The script operates in two modes. Both modify the same files; they differ in legal posture.
</p>
<div class="card green-card" style="margin-top:24px;">
<span class="badge badge-green">Standard Mode</span>
<h4 style="margin-top:12px;">Good-Faith Noncompliance</h4>
<pre>sudo bash become-ageless.sh</pre>
<p style="margin-top:12px;">
Rewrites <code>/etc/os-release</code> to declare the system ageless. Installs a stub
API endpoint that returns an error when queried for age data — the system acknowledges
the request but refuses to answer. Installs a machine-readable compliance notice
explaining the refusal.
</p>
<p>
This mode preserves what the statute calls a "good faith effort" fig leaf under
<span class="legal-cite">§ 1798.502(b)</span>. The system has an age reporting API;
it just doesn't report an age.
</p>
</div>
<div class="card red-card">
<span class="badge badge-red">Flagrant Mode</span>
<h4 style="margin-top:12px;">Open Refusal</h4>
<pre>sudo bash become-ageless.sh --flagrant</pre>
<p style="margin-top:12px;">
No API at all. No pretense of compliance. Installs a machine-readable
<code>REFUSAL</code> notice stating that age reporting has been deliberately removed.
This mode is intended for devices you plan to hand to children — the entire point is
to be unambiguous.
</p>
</div>
<div class="card" style="border-color:var(--cyan); margin-top:24px;">
<span class="badge badge-blue">Optional Flag</span>
<h4 style="margin-top:12px;">Persistent Mode</h4>
<pre>sudo bash become-ageless.sh --persistent
sudo bash become-ageless.sh --flagrant --persistent</pre>
<p style="margin-top:12px;">
Can be combined with either mode. In addition to the one-time conversion, installs
<code>agelessd</code> — a systemd timer that re-neutralizes systemd userdb
<code>birthDate</code> fields every 24 hours. This guards against package updates,
user creation, or desktop tools that may attempt to populate age data in the future.
</p>
</div>
</section>
<section>
<h3>What It Changes</h3>
<p>The script touches only files under <code>/etc/</code>:</p>
<div class="card">
<h4 style="margin-top:0;">/etc/os-release</h4>
<p>
Backed up to <code>/etc/os-release.pre-ageless</code> before modification. The script
rewrites identity fields (<code>PRETTY_NAME</code>, <code>NAME</code>, etc.) to include
"Ageless" in the distribution name, signaling noncompliance to any software that reads
OS identity.
</p>
</div>
<div class="card">
<h4 style="margin-top:0;">/etc/lsb-release</h4>
<p>
If present (Ubuntu and derivatives), also rewritten for consistency. Backed up to
<code>/etc/lsb-release.pre-ageless</code>.
</p>
</div>
<div class="card">
<h4 style="margin-top:0;">/etc/ageless/</h4>
<p>
A new directory containing compliance documentation: the notice file (standard or
refusal, depending on mode), and metadata about when and how the conversion was performed.
</p>
</div>
<div class="card" style="border-color:var(--red);">
<h4 style="margin-top:0;">/etc/userdb/*.user</h4>
<p>
Drop-in records for systemd userdb that neutralize the <code>birthDate</code> field
(added in <a href="https://github.com/systemd/systemd/pull/40954" style="color:var(--cyan);">systemd PR #40954</a>,
merged March 18, 2026). Regular mode sets all users to <code>1970-01-01</code>; flagrant
mode sets it to <code>null</code>. Each record includes full passwd fields (uid, gid,
home, shell) to avoid shadowing NSS resolution.
</p>
</div>
<div class="card" style="border-color:var(--cyan);">
<h4 style="margin-top:0;">/etc/ageless/agelessd <span class="badge badge-blue" style="font-size:10px; margin-left:8px;">--persistent only</span></h4>
<p>
If <code>--persistent</code> is passed, installs <code>agelessd</code> and a systemd
timer (<code>agelessd.timer</code>, <code>agelessd.service</code>) that re-neutralizes
userdb birthDate fields every 24 hours and on boot. This is the only flag that installs
a systemd service.
</p>
</div>
</section>
<section>
<h3>Reverting</h3>
<p>
The script preserves your original files. To revert, restore the backups:
</p>
<pre>sudo cp /etc/os-release.pre-ageless /etc/os-release</pre>
<p>If your system had <code>/etc/lsb-release</code>:</p>
<pre>sudo cp /etc/lsb-release.pre-ageless /etc/lsb-release</pre>
<p>Optionally remove the compliance directory:</p>
<pre>sudo rm -rf /etc/ageless/</pre>
</section>
<section>
<h3>Non-Debian Systems</h3>
<div class="card yellow-card">
<span class="badge badge-yellow">Warning</span>
<p style="margin-top:8px;">
The script technically works on any system with <code>/etc/os-release</code> — which is
virtually every modern Linux distribution. However, it was designed and tested for
Debian-based systems.
</p>
<p>
Running it on a non-Debian system means you're liable under both the age verification
statute <em>and</em> the script's own sense of humor. (It will warn you about this
double liability at runtime.)
</p>
<p>
That said: if your distro ships age reporting and you need a removal tool, the project
will build one for your distro. Open an issue on
<a href="https://github.com/agelesslinux/agelesslinux">GitHub</a>.
</p>
</div>
</section>
<section>
<h3>What It Does NOT Do</h3>
<ul style="padding-left:24px; line-height:2.2;">
<li>Does <strong>not</strong> install any packages</li>
<li>Does <strong>not</strong> phone home, collect telemetry, or make network requests</li>
<li>Does <strong>not</strong> modify anything outside <code>/etc/</code> (except systemd unit
files in <code>/etc/systemd/system/</code> when <code>--persistent</code> is used)</li>
<li>Does <strong>not</strong> add repositories or cron jobs (the <code>--persistent</code> flag
adds a systemd timer — this is the only service the script creates)</li>
<li>Does <strong>not</strong> require an internet connection to run (only to download)</li>
</ul>
<p style="margin-top:16px;">
The script is intentionally minimal. You can read the entire thing in five minutes.
</p>
</section>
</div>
<footer>
<div class="container">
Ageless Linux Documentation<br>
A project of <a href="https://ffwf.net">FFwF Robotics LLC</a> · <a href="https://agelesslinux.org">agelesslinux.org</a> · <a href="https://agelesslinux.org/support.html">Support</a><br>
<div class="legal-footer">
This documentation describes tools for removing age reporting infrastructure from Linux systems.<br>
SPDX-License-Identifier: Unlicense
</div>
</div>
</footer>
</body>
</html>