<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://freemyipod.org/index.php?action=history&amp;feed=atom&amp;title=Osos%2Fdisk_swapping_bug</id>
	<title>Osos/disk swapping bug - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://freemyipod.org/index.php?action=history&amp;feed=atom&amp;title=Osos%2Fdisk_swapping_bug"/>
	<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=Osos/disk_swapping_bug&amp;action=history"/>
	<updated>2026-04-26T11:55:05Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://freemyipod.org/index.php?title=Osos/disk_swapping_bug&amp;diff=22088&amp;oldid=prev</id>
		<title>760ceb3b9c0ba4872cadf3ce35a7a494 at 04:42, 4 August 2024</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=Osos/disk_swapping_bug&amp;diff=22088&amp;oldid=prev"/>
		<updated>2024-08-04T04:42:23Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 04:42, 4 August 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l21&quot;&gt;Line 21:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 21:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Notes ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Notes ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;On at least the iPod nano (6th generation), booting &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code&amp;gt;osos&amp;lt;/code&amp;gt; &lt;/del&gt;this way seems to make the filesystem read only to the device: no actions taken on the device persist after a reboot.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;On at least the iPod nano (6th generation), booting &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;retailOS &lt;/ins&gt;this way seems to make the filesystem read only to the device: no actions taken on the device persist after a reboot.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>760ceb3b9c0ba4872cadf3ce35a7a494</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=Osos/disk_swapping_bug&amp;diff=22087&amp;oldid=prev</id>
		<title>760ceb3b9c0ba4872cadf3ce35a7a494: reword</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=Osos/disk_swapping_bug&amp;diff=22087&amp;oldid=prev"/>
		<updated>2024-08-04T04:41:50Z</updated>

		<summary type="html">&lt;p&gt;reword&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 04:41, 4 August 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l18&quot;&gt;Line 18:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 18:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;             error out&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;             error out&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If the firmware is modified so that the &amp;lt;code&amp;gt;disk&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;osos&amp;lt;/code&amp;gt; partitions are swapped - that is, the names of the two partitions are switched - the behavior reverses, meaning the iPod will boot into disk mode by default and retailOS if the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;power &lt;/del&gt;up button is held. This is where the bug exists: &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;because &lt;/del&gt;the iPod &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;expects &lt;/del&gt;to boot disk mode, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;which does not usually utilize the &amp;lt;code&amp;gt;rsrc&amp;lt;/code&amp;gt; partition, it doesn&#039;t perform &lt;/del&gt;a signature check on &amp;lt;code&amp;gt;rsrc&amp;lt;/code&amp;gt; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;before booting&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If the firmware is modified so that the &amp;lt;code&amp;gt;disk&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;osos&amp;lt;/code&amp;gt; partitions are swapped - that is, the names of the two partitions are switched - the behavior reverses, meaning the iPod will boot into disk mode by default and retailOS if the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;volume &lt;/ins&gt;up button is held. This is where the bug exists: &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;if &lt;/ins&gt;the iPod &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;is booted with the volume up button pressed, the iPod, expecting &lt;/ins&gt;to boot disk mode, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;will boot into retailOS without performing &lt;/ins&gt;a signature check on &amp;lt;code&amp;gt;rsrc&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Notes ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Notes ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;On at least the iPod nano (6th generation), booting &amp;lt;code&amp;gt;osos&amp;lt;/code&amp;gt; this way seems to make the filesystem read only to the device: no actions taken on the device persist after a reboot.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;On at least the iPod nano (6th generation), booting &amp;lt;code&amp;gt;osos&amp;lt;/code&amp;gt; this way seems to make the filesystem read only to the device: no actions taken on the device persist after a reboot.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>760ceb3b9c0ba4872cadf3ce35a7a494</name></author>
	</entry>
	<entry>
		<id>https://freemyipod.org/index.php?title=Osos/disk_swapping_bug&amp;diff=22083&amp;oldid=prev</id>
		<title>760ceb3b9c0ba4872cadf3ce35a7a494: osos/disk swapping bug explanation</title>
		<link rel="alternate" type="text/html" href="https://freemyipod.org/index.php?title=Osos/disk_swapping_bug&amp;diff=22083&amp;oldid=prev"/>
		<updated>2024-08-04T04:24:49Z</updated>

		<summary type="html">&lt;p&gt;osos/disk swapping bug explanation&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{DISPLAYTITLE:osos/disk swapping bug}}&lt;br /&gt;
[[File:Disk swap visualization.png|thumb|right|Simplified visualization of the boot logic of an iPod nano (6th generation)]]&lt;br /&gt;
&lt;br /&gt;
The osos/disk swapping bug is a bug in the boot process of the iPod nano (3rd generation and later) allowing for untethered boot of the [[retailOS]] with a modified resource partition. &lt;br /&gt;
&lt;br /&gt;
== Explanation ==&lt;br /&gt;
In the firmware, the retailOS is stored in the &amp;lt;code&amp;gt;osos&amp;lt;/code&amp;gt; partition, and disk mode is stored in the &amp;lt;code&amp;gt;disk&amp;lt;/code&amp;gt; partition.  &lt;br /&gt;
The retailOS on the iPod nano reads from from the &amp;lt;code&amp;gt;rsrc&amp;lt;/code&amp;gt; partition, a FAT16 filesystem containing UI images, translation strings, fonts, and more. Unlike all other partitions ever included in official firmware, the &amp;lt;code&amp;gt;rsrc&amp;lt;/code&amp;gt; partition is signed, but not encrypted. The disk mode does not use the &amp;lt;code&amp;gt;rsrc&amp;lt;/code&amp;gt; partition.  &lt;br /&gt;
&lt;br /&gt;
When the device is powered on, it decides whether to boot into disk mode or retailOS based on whether a button is pressed (on the iPod nano (6th generation), this is the Volume Up button). The basic logic is this:&lt;br /&gt;
&lt;br /&gt;
    if volume up pressed:&lt;br /&gt;
        boot &amp;quot;disk&amp;quot;&lt;br /&gt;
    else:&lt;br /&gt;
        if &amp;quot;rsrc&amp;quot; signature check passed:&lt;br /&gt;
            boot &amp;quot;osos&amp;quot;&lt;br /&gt;
        else:&lt;br /&gt;
            error out&lt;br /&gt;
&lt;br /&gt;
If the firmware is modified so that the &amp;lt;code&amp;gt;disk&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;osos&amp;lt;/code&amp;gt; partitions are swapped - that is, the names of the two partitions are switched - the behavior reverses, meaning the iPod will boot into disk mode by default and retailOS if the power up button is held. This is where the bug exists: because the iPod expects to boot disk mode, which does not usually utilize the &amp;lt;code&amp;gt;rsrc&amp;lt;/code&amp;gt; partition, it doesn&amp;#039;t perform a signature check on &amp;lt;code&amp;gt;rsrc&amp;lt;/code&amp;gt; before booting.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
On at least the iPod nano (6th generation), booting &amp;lt;code&amp;gt;osos&amp;lt;/code&amp;gt; this way seems to make the filesystem read only to the device: no actions taken on the device persist after a reboot.&lt;/div&gt;</summary>
		<author><name>760ceb3b9c0ba4872cadf3ce35a7a494</name></author>
	</entry>
</feed>