Dual booting method

This way iOS 7 will be installed as a secondary os and can be booted without a computer.

Also, I provide pre-patched files so don't worry about it being hard.

First of all, download these files:

bootchain.zip wifi.zip bootloader.zip

Requirements

A computer running macOS or Windows

Jailbroken iPod Touch 4g on iOS 5 or 6 (6.1.6 is the best option)

Add "nyansatan.github.io/apt" source to cydia and install dualbootstuff, diskdev-cdms , nano, way out and openssh

If your device has been produced before 2012, iPhone 3,1 7.1.2 ipsw

If your device has been produced after 2011, iPhone 3,3 7.1.2 ipsw

7zip (or winrar) and dmg

Preparing firmware

Open the iPhone3,x_7.1.2_11D57_Restore.ipsw file with 7zip and extract rootfs dmg file

Now open cmd (if on windows) or terminal (if on mac) and decrypt rootfs file :

If your device has been produced before 2012

dmg extract 058-4520-010.dmg decrypted.dmg -k 38d0320d099b9dd34ffb3308c53d397f14955b347d6a433fe173acc2ced1ae78756b3684

If your device has been produced after 2011

dmg extract 058-4110-009.dmg decrypted.dmg -k 423b3503689b7058d1398d1b5d56a7b1ccf4d79e1c3e6ba853122b4f86820a9e3bc911f6

Then convert the decrypted rootfs to UDZO format:

dmg build decrypted.dmg UDZO.dmg

Partitioning

SSH as root to your iPod:

ssh root@device_ip

Default password is alpine, and you won't see any character while you type it

Windows users can use programs like Putty to ssh into iPod

Device ip can be found in settings by going to wifi - select your network and tap the little "i" on the right, then check for "ip address"

Create mount points:

mkdir /mnt1 && mkdir /mnt2

Check for free space:

df -B1

Now take the 1B-blocks value of /dev/disk0s1s2 and substract the value (in bytes) of the space you want to give to iOS 7

Obviously, size of second OS mustn't be greater than available space on Data volume

For example, if current 1B-blocks value is 17179869184, and you want to give iOS 7 4GB: 17179869184 - 4294967296 = 12884901888

So, resize data partition:

hfs_resize /private/var new value (Replace new value with the value you calculated before.)

It may take a while on some devices, don't worry.

Now we need to edit the gpt table: (execute commands in the same order I placed them)

gptfdisk /dev/rdisk0s1

p

i

2

Write down somewhere value of partition unique GUID and attribute flags, it's important, then continue:

d

2

n

2

Leave default first sector

Then calculate last sector with this formula: the value you passed in hfs_resize : 8192 + default first sector value

Leave default code

Then continue:

c

2

Data

x

a

2

Now if attribute flags were 0003000000000000:

48

49

If attribute flags were 0001000000000000:

48

Then continue:

c

2

Write down the unique GUID value you saved before

Then continue:

s

4

m

n

3

Leave default first sector

Then calculate last sector with this formula: mount the udzo dmg image created in previous part and obtain the value of size and then: the value : 8192 + default first sector value

Leave default code

Then continue:

c

3

iOS7SYSTEM

Important: NEVER use "System" as name there

n

4

Leave default first sector

Then calculate last sector with this formula: default value - 5

Leave default code

Then continue:

c

4

iOS7DATA

Important: NEVER use "System" as name there

Make sure you did everything correctly:

p

Check everything and then:

w

Y

Done! If your device is still alive,

execute sync a few times

Restoring rootfs

Create filesystems:

/sbin/newfs_hfs -s -v System -J -b 8192 -n a=8192,c=8192,e=8192 /dev/disk0s1s3

/sbin/newfs_hfs -s -v Data -J -b 8192 -n a=8192,c=8192,e=8192 /dev/disk0s1s4

Mount second os data partition:

mount_hfs /dev/disk0s1s4 /mnt2

Now send UDZO rootfs dmg file to /mnt2 using afc2 or scp

Then:

asr restore --source /mnt2/UDZO.dmg --target /dev/disk0s1s3 --erase

Done

Modifying filesystems

Execute these commands:

umount /mnt2

mount_hfs /dev/disk0s1s3 /mnt1 (after that an alert may appear on device screen, ignore it)

/sbin/newfs_hfs -s -v Data -J -P -b 8192 -n a=8192,c=8192,e=8192 /dev/disk0s1s4

mount_hfs /dev/disk0s1s4 /mnt2

mv -v /mnt1/private/var/* /mnt2

rm -rf /mnt2/mobile/Library/PreinstalledAssets/*

rm -rf /mnt2/mobile/Library/Preferences/.GlobalPreferences.plist

mkdir /mnt2/keybags

cp -a /var/keybags/systembag.kb /mnt2/keybags

umount /mnt2

Now edit fstab:

nano /mnt1/private/etc/fstab

Turn this Into this

Adding fixes and bootchain

Extract wifi.zip

Copy the wifi folder to /mnt1/usr/share/firmware , replacing the existing one

Go to /mnt1/Applications and delete or rename Setup.app

Extract bootchain.zip

Copy all files in /mnt1

Extract bootloader.zip

Copy files in /

Booting

Open Way Out

Open settings menu

Set /iBSS as first image

and /iBEC7 as second image

go back

Slide to boot

Wait about 6-7 seconds and press home or power button

Done! You can now enjoy verbose boot and iOS 7 on your iPod Touch 4g!

Jailbreaking

Thanks a lot to @JonathanSeals, developer of coolbooter

First of all, download these files:

cydia.tar.lzma jbloader.tar.lzma kernelcache.zip

Mount partitions

mount_hfs /dev/disk0s1s3 /mnt1 && mount_hfs /dev/disk0s1s4 /mnt1/private/var

Extract kernelcache.zip and replace the previous kernelcache file in /mnt1

Put cydia.tar.lzma and jbloader.tar.lzma in /mnt1

From ssh:

tar --lzma -xvf cydia.tar.lzma

tar --lzma -xvf jbloader.tar.lzma

Edit fstab and put rw in disk0s1s3

Done. You can now unmount filesystems if you want

Thanks to

@nyan_satan for the dualboot guide

@Ralph0045, without him all this probably wouldn't have existed

Me (@albyvar25) for the wifi fix

Everyone else who contributed.