Boot.img - Fire HD 8 and HD 10 Q&A, Help & Troubleshooting

I really didn't want to start a new thread...but...Yes I know we have a locked bootloader. However, before I go and do something stupid, presuming the boot.img is properly unpacked, are we able to edit the ramdisk at all? For example on the HD 10, if I wanted to edit default.prop, and repacked the boot.img, would it still brick the tablet if flashed through flashfire?

Just adding: I just did a backup of system using the DD command and then also backed it up as a raw system.img using flashfire. Is there a reason why there are now TWRP files and folders inside the backup folder of Flashfire? They were created when the backup was made.
Sent from my Amazon KFSUWI using XDA Labs

DragonFire1024 said:
Just adding: I just did a backup of system using the DD command and then also backed it up as a raw system.img using flashfire. Is there a reason why there are now TWRP files and folders inside the backup folder of Flashfire? They were created when the backup was made.
Sent from my Amazon KFSUWI using XDA Labs
Click to expand...
Click to collapse
Interesting...

Unoacked, edited ramdisk, repacked and flashed boot.img on an Galaxy S4. It worked, flashed, booted, but the default.prop I edited didn't hold. Not sure what I missed here, but have a slight idea. Will look at the HD 10 boot.img tomorrow and look at something I suspect might be the issue, at least for the S4
Sent from my Galaxy S4 using XDA Labs

Related

[REQUEST] Flashable Build.prop

anyone who can make me a flashable zip for build.prop? i edited mine and i cant boot...
You can re flash your ROM in recovery or mount system and use something like adb or android commander to push a stable build.prop to it.
Sent from my GT-N7000 using xda premium
musashiro said:
anyone who can make me a flashable zip for build.prop? i edited mine and i cant boot...
Click to expand...
Click to collapse
For what? Stock GB/ICS, CM9, etc?
If you have valid one you can boot to recovery and use "adb push build.prop /system/build.prop" instead of having a flashable version.
i tried adb and Amora Filemanager and Droid Explorer but i can't delete the files i want to and rename my backup.
so i decided to flash GB rom again.. its a bit of a long shot, but its ok now...

[Q] CWM Can't delete backups

I just noticed that if I browse to /sdcard/clockworkmod/backup I cannot delete any of the backups. I I've tried with ADB and Terminal Emulator and ES File Explorer. Same error on all 3. Having the same issue on my brothers N7. Any ideas? Anyone else tried this and not have issues?
Mr. Monkey said:
I just noticed that if I browse to /sdcard/clockworkmod/backup I cannot delete any of the backups. I I've tried with ADB and Terminal Emulator and ES File Explorer. Same error on all 3. Having the same issue on my brothers N7. Any ideas? Anyone else tried this and not have issues?
Click to expand...
Click to collapse
I should mention I have tried fixing permissions. No luck.
You have to boot into recovery and install a zip file to delete them, it's in a thread here ( just use search ) or I can put in in my drop box. Only thing is it deletes all if you have more than one. Hope this helps.
Sent from my Nexus 7 using xda premium
Gigabitex2 said:
You have to boot into recovery and install a zip file to delete them, it's in a thread here ( just use search ) or I can put in in my drop box. Only thing is it deletes all if you have more than one. Hope this helps.
Sent from my Nexus 7 using xda premium
Click to expand...
Click to collapse
Why is it that way? That's weird. I also just tried changing permissions on a /system/app file and also got denied.
Not sure why we can't do it easily like other devices. This is the only way I've found that works. I got the zip file in a thread here somewhere, works well for me! No issues.
Sent from my Nexus 7 using xda premium
---------- Post added at 10:12 PM ---------- Previous post was at 09:49 PM ----------
Here is the thread I got it from http://forum.xda-developers.com/showthread.php?t=1900712 good luck.
Sent from my Nexus 7 using xda premium
try deleting backup from file explorer..i tried ES File Explorer https://play.google.com/store/apps/details?id=com.estrongs.android.pop&hl=en
I recommend to use TeamWin recovery.
CWM stores backups as a collection of blobs. So there is no shingle file that corresponds to a backup. On other devices you can choose to use tar backups, but not on the N7.
I ended up with 2 GB used by blobs when I only had one backup. That's when I switched to TWRP, which does the smartly thing if sitting backups as tar files.
Sent from my Nexus 7
BillGoss said:
CWM stores backups as a collection of blobs. So there is no shingle file that corresponds to a backup. On other devices you can choose to use tar backups, but not on the N7.
I ended up with 2 GB used by blobs when I only had one backup. That's when I switched to TWRP, which does the smartly thing if sitting backups as tar files.
Sent from my Nexus 7
Click to expand...
Click to collapse
Yes, I forgot to mention that I use an older version of cwm that doesn't have the blob issues the newest has. I will likely switch to twrp in time, I like how you can store backups to USB with otg!
Sent from my Nexus 7 using xda premium

Can I update to 4.3 using the zip file contained in the *tgz from Google?

So as the title says. I am trying to update to 4.3 and noticed there was a zip file in the *tgz that I downloaded. This zip file contained all the *.img files it looks like I would need.
Can i just flash it using clockwork?
Thanks in advance!
No, you have to go to the bootloader with it unlocked and run Flash-all.bat on Windows.
If you are coming from stock 4.2.2 then you can remove the -w flag from the batch script.
Sent from my Nexus 4 using Tapatalk 4
I got it thanks no worries.

[stock-rom/UPDATE][LB/UB][SGP511/512/521][Prerooted flashable zip][23.0.1.a.0.167]

Hello Guys,
I packed the rom in a flashable zip, it's pre-rooted and nut's dual recovery is included, also the kernel is included so need to flash that afterwards
Thanks to @zxz0O0 for his PRFCreator, @[NUT] for his dualrecovery, @Chainfire for root package, and me for combining their great work work for you
I got some reactions that root isn't working properly, So i will be working on a new version, but that will have to wait until i got Linux working and setup again (ages ago since i worked with Linux ) and made the new version. After that i might even consider tweaking it etc, but don't hold your hopes up yet, i don't have much spare time to work on it
SGP511
https://mega.co.nz/#!ndFxUCTR!xVE235NjuIFiugEofrQaWjWP5cLfSBffgyx1sIgV1ak
SGP512
https://mega.co.nz/#!bJ8lTJiA!vg4B_TSlKnwJPxm3WK5Rgc13h0ejx3Jq6x7LGtTu-6w
SGP521
https://mega.co.nz/#!TB9lULCI!v2m-wL4JGEDs_fIQt83Qrbmn0JerkMfL-aSIOh-mtVY
You should know that Playstation PS4 remote play Won't work due to Root.
If you want to use that wait for a different root/altered ps remote play app and just enjoy stock unrooted untill then
instructions:
make sure you are on a rom with recovery
flash this rom, wipe cache/dalvik cache, reboot
enjoy
Thanksss
R/W
Root Explorer does not switch /system in mode R/W
This work with SGP561?
Sent from my SGP561 using XDA Premium HD app
I don't think so. I'll see if i can make one for 561 tomorrow
Sent from my SGP521 using XDA Premium HD app
Bird40 said:
Root Explorer does not switch /system in mode R/W
Click to expand...
Click to collapse
I'm sorry to hear that. Haven't really tested it since i want to use ps4 remote play.
I'll see if i can make a new version later tomorrow
Sent from my SGP521 using XDA Premium HD app
crazymister said:
I'm sorry to hear that. Haven't really tested it since i want to use ps4 remote play.
I'll see if i can make a new version later tomorrow
Sent from my SGP521 using XDA Premium HD app
Click to expand...
Click to collapse
Did you modify the kernel "ramdisk" to make it insecure?
Generally with most ramdisks, you'll need to split the boot.img, unpack the ramdisk gz, and edit the line in the default.prop (might be in a different location)
Change this line from ro.secure=1 to ro.secure=0
Then repack ramdisk, and repack the boot.img
Virtuous Ten Studio should do this automatically when you split the boot.img.
Moscow Desire said:
Did you modify the kernel "ramdisk" to make it insecure?
Generally with most ramdisks, you'll need to split the boot.img, unpack the ramdisk gz, and edit the line in the default.prop (might be in a different location)
Change this line from ro.secure=1 to ro.secure=0
Then repack ramdisk, and repack the boot.img
Virtuous Ten Studio should do this automatically when you split the boot.img.
Click to expand...
Click to collapse
No i didn't do anything to the kernel. It's completely stock
Sent from my SGP521 using XDA Premium HD app
crazymister said:
No i didn't do anything to the kernel. It's completely stock
Sent from my SGP521 using XDA Premium HD app
Click to expand...
Click to collapse
There's the issue, and why you can't get /system RW.
On most devices, if you can get OEM Bootloader Unlock, then it's just a matter of modifying Ramdisk as stated above, then fastboot (flash) the new boot image. You can do a simple adb push and permissions for SU and SuperSU.apk.
When you split a boot.img, you get 2 parts basically, zimage (kernel) and ramdisk. Ramdisk you can edit.
As with the easyroot program (worked prior to .167), it used an exploit to split the bootimg, and modify ramdisk with the above parameters internally, then packing it back. Hence why it was copying it to a temp folder to do it's work. This was all great as we didn't need to unlock bootloader. But it doesn't negate the fact the ramdisk was still modified.
Get Virtuous Ten Studio here at XDA. Unpack the boot.img, make the change, pack it back and flash it. Should work. Program is pretty simple.
I just can't get it working right under Win 10, and not sure when I can get to it.
Moscow Desire said:
There's the issue, and why you can't get /system RW.
On most devices, if you can get OEM Bootloader Unlock, then it's just a matter of modifying Ramdisk as stated above, then fastboot (flash) the new boot image. You can do a simple adb push and permissions for SU and SuperSU.apk.
When you split a boot.img, you get 2 parts basically, zimage (kernel) and ramdisk. Ramdisk you can edit.
As with the easyroot program (worked prior to .167), it used an exploit to split the bootimg, and modify ramdisk with the above parameters internally, then packing it back. Hence why it was copying it to a temp folder to do it's work. This was all great as we didn't need to unlock bootloader. But it doesn't negate the fact the ramdisk was still modified.
Get Virtuous Ten Studio here at XDA. Unpack the boot.img, make the change, pack it back and flash it. Should work. Program is pretty simple.
I just can't get it working right under Win 10, and not sure when I can get to it.
Click to expand...
Click to collapse
That will be a problem for me since my bootloader is still locked. So i will not be able to flash an insecure kernel.
And im not going to unlock it anytime soon either, so if you want an insecure kernel you will have to build it yourself. In whatever environment. You can always start a VM with win/linux just to build it
And sorry if i sound harsh that'snot my intention. :good:
crazymister said:
That will be a problem for me since my bootloader is still locked. So i will not be able to flash an insecure kernel.
And im not going to unlock it anytime soon either, so if you want an insecure kernel you will have to build it yourself. In whatever environment. You can always start a VM with win/linux just to build it
And sorry if i sound harsh that'snot my intention. :good:
Click to expand...
Click to collapse
Naw, no offense taken. :highfive:
I hate unlocking mine as well, but eventually will probably have to. Just hate going through Sony to do it, as they will have my tab ID on record
Btw, i didn't use an easyroot utility but injected the root directly into the ROM. (not a nandroid backup, but downloaded the sony files, decrypted them, turned that into ftf and used the ftf to build a zip with root build into it
On the brief test i did, i did have root privileges, but i didn't do an extensive test because i only tested if root was there (used root checker), because i use the ps4 remote app :good: that just gives an error as soon as you have a superuser app installed
So from the reactions i got (and I'll change the op until i got a new, good working version) root isn't working properly, but working nonetheless
Sent from my SGP521 using XDA Premium HD app
crazymister said:
Btw, i didn't use an easyroot utility but injected the root directly into the ROM. (not a nandroid backup, but downloaded the sony files, decrypted them, turned that into ftf and used the ftf to build a zip with root build into it
On the brief test i did, i did have root privileges, but i didn't do an extensive test because i only tested if root was there (used root checker), because i use the ps4 remote app :good: that just gives an error as soon as you have a superuser app installed
So from the reactions i got (and I'll change the op until i got a new, good working version) root isn't working properly, but working nonetheless
Sent from my SGP521 using XDA Premium HD app
Click to expand...
Click to collapse
Yeah, and I'm not totally familiar with the way Sony has their kernel/boot image laid out. Different from other tablets I've worked on.
Will look into things though as time permits.
Moscow Desire said:
Naw, no offense taken. :highfive:
I hate unlocking mine as well, but eventually will probably have to. Just hate going through Sony to do it, as they will have my tab ID on record
Click to expand...
Click to collapse
Oh yeah, if you have made a backup of your TA you can safely re-lock your tab again without worrying about warranty. Because the DRM keys are in TA, and if you restore that (only if you backed it up prior to unlocking the first time) you also restore your drm keys
Tested to work when i had xperia T, with my current Z and a bunch of other Sony phones from friends
Even used warranty once after screwing things up i just restored TA, made it completely stock and went to the shop to claim my warranty
Sent from my SGP521 using XDA Premium HD app
Quick question: If the rom can't write to the system, can the recoveries? The only thing I need write access to the system partition is for changing the fonts and for the hosts file but I can do that in recovery. If that's the case I could live with root without full system access like in this rom.
crazymister said:
Oh yeah, if you have made a backup of your TA you can safely re-lock your tab again without worrying about warranty. Because the DRM keys are in TA, and if you restore that (only if you backed it up prior to unlocking the first time) you also restore your drm keys
Tested to work when i had xperia T, with my current Z and a bunch of other Sony phones from friends
Even used warranty once after screwing things up i just restored TA, made it completely stock and went to the shop to claim my warranty
Sent from my SGP521 using XDA Premium HD app
Click to expand...
Click to collapse
Yeah, had to use my other PC, but they are backed up.
Just info, should probably look at this;
http://forum.xda-developers.com/showthread.php?t=2699858
So seeing the kernel itself isn't being changed, it may work changing ramdisk only.
Moscow Desire said:
Yeah, had to use my other PC, but they are backed up.
Just info, should probably look at this;
http://forum.xda-developers.com/showthread.php?t=2699858
So seeing the kernel itself isn't being changed, it may work changing ramdisk only.
Click to expand...
Click to collapse
Nah that won't work. The only thing spoken of is how to extract boot.img from an ftf and how to inject that into your update.zip. As soon as you make even the tiniest change in kernel (ramdisk included) the kernel isn't signed anymore and you won't be able to flash it.
I have build my own rom in the past for xperia t, and i decided that learning to build your own rom and kernel at the same time is to much work
I will see what i can do later today, when my ex picks up my son I'll have some free time at hand then.
So to install Ubuntu and configure it to use it again. I hope i have something usefull tonight.
Sent from my SGP521 using XDA Premium HD app
in the kulverti thread 4.4.4 starts rolling out today he mentions some files that need modding in the recovery installer to kill sonyric so you can get rw system access . does that help ?
any fix of system rights?
Jeddix said:
Quick question: If the rom can't write to the system, can the recoveries? The only thing I need write access to the system partition is for changing the fonts and for the hosts file but I can do that in recovery. If that's the case I could live with root without full system access like in this rom.
Click to expand...
Click to collapse
I tried this rom, but I also got no full system access. So I couldn't apply the sd fix patch. But I do have regular root rights. Is there any way so far to get also write permissions in the system?
steff_1964 said:
I tried this rom, but I also got no full system access. So I couldn't apply the sd fix patch. But I do have regular root rights. Is there any way so far to get also write permissions in the system?
Click to expand...
Click to collapse
Well, if you want to unlock your bootloader it makes it easier
Basically I run a modified ramdisk with some of the security disabled and a different patched adbd binary, Fastboot flash the boot.img, Fastboot boot the current TWRP, exit out (it installs SuperSU and the binary automatically), then reboot. Have full system RW, exposed modules, greenify, etc.
It's sort of a round-about way of getting root and /system rw, but the selinux is a pain.
Still looking for available adbd binaries that also work and clean up all my ramdisk comments I don't need :laugh::laugh::laugh:

[6045*] [TWRP] custom recovery 2.8.7.0

TWRP 2.8.7.0 custom recovery
thanx to user @Unjustified Dev we have TWRP custom recovery for our phone.
download HERE
So anyone who download the TWRP should send him a dollar for beer or at least thank him!
Of course you do everything on your own!
To test before installation (linux users need sudo before fastboot):
Code:
fastboot -i 0x1bbb boot twrp-2.8.7.0-idol3.img
To install (linux users need sudo before fastboot):
Code:
fastboot -i 0x1bbb flash recovery twrp-2.8.7.0-idol3.img
!BEFORE YOU START, PLEASE READ THIS!
And don´t forget to thank Famewolf for the tutorial, because this could save your phone when something go bad!​
Thanks, tried it. It worked.
I also just installed SU directly, bypassing the previous root thread.
1. Download the .zip package from here: https://download.chainfire.eu/696/SuperSU/UPDATE-SuperSU-v2.46.zip
2. Put it on the root of my SD card.
3. In TWRP click install and find the .zip.
Wonderful. Just a question: is this recovery for Idol 3 4.7 (6039) or 5.5 (6045) ?
Gynoid said:
Wonderful. Just a question: is this recovery for Idol 3 4.7 (6039) or 5.5 (6045) ?
Click to expand...
Click to collapse
It's for 6045. For 4.7 TWRP, see this post: http://forum.xda-developers.com/showpost.php?p=61976520&postcount=18
Thanks!
is it functional for backing up our system in TWRP?
@DallasCZ could you please provide the original link to TWRP. That was a bit unfair to upload it elsewhere as I tend to track the number of downloads.
Sent from my LGMS395 using Tapatalk
gecko702 said:
is it functional for backing up our system in TWRP?
Click to expand...
Click to collapse
Yes although to my knowledge noone has actually done a restore yet. He's fixing some minor bugs and will be releasing a new version at some point.
famewolf said:
Yes although to my knowledge noone has actually done a restore yet. He's fixing some minor bugs and will be releasing a new version at some point.
Click to expand...
Click to collapse
i am in touch with the dev and allready downloading the new build..will be soon on my google drive
Unjustified Dev said:
@DallasCZ could you please provide the original link to TWRP. That was a bit unfair to upload it elsewhere as I tend to track the number of downloads.
Sent from my LGMS395 using Tapatalk
Click to expand...
Click to collapse
sorry, i corrected the link...
Convert TWRP Backup into flashable rom zip
I found these instructions that explain how to take a TWRP backup and turn it into a flashable zip file. This would allow someone to create a "factory" rom pre-rooted to be flashed.
For TWRP Backup
Transfer the TWRP backup from Phone to PC.
You’ll see a file named system.ext4.win which is the System partition backup of your device. Rename it to system.ext4.tar (Changing its extension from .win to .tar)
Extract the system.ext4.tar using an archive software like Winrar or 7zip.
If your TWRP backup is not in compression mode, you will directly get the system folder, else you will get a file named system.ext4, which should be renamed again to system.ext4.tar and extract it to get the system folder.
Take the boot.emmc.win file and rename it to boot.img.
Now collect a META-INF folder from any custom ROM which is made for your device. Make sure you get the correct Meta-Inf folder, else the Zip won’t work and might worsen the condition of your device.
Select the META-INF, System folders and the boot.img and right click your mouse and select add to Archive.
In the Archive settings, choose the extension of the compressed file as Zip (Make sure of this part)
Now you can use this Zip file to flash it on your Custom recovery.
we dont have the meta-inf folder...there is one in the update i got, but i dont know if this id the right one.
and we dont have custom rom to get meta-inf from.
also the main thing is, that i cannot unpack the system win file when renamed to .tar i dunno why (i got latest 7-zip app).
DallasCZ said:
we dont have the meta-inf folder...there is one in the update i got, but i dont know if this id the right one.
and we dont have custom rom to get meta-inf from.
also the main thing is, that i cannot unpack the system win file when renamed to .tar i dunno why (i got latest 7-zip app).
Click to expand...
Click to collapse
What they primarily want is the "update-binary" which is device specific. I don't remember if the update had one....I did take apart an update-supersu.zip and it uses a script as it's update binary...thought about trying to convert that. Theoretically you could take a meta-inf for another device's rom...and use it's meta-inf making sure to replace the update-binary. It also has an installer script that tells it to mount system and data....extract files from the zip and where to put them. I learned a bit when I was trying to make an update.zip to fix my build.prop.
It untar'd fine for me on my linux pc:
[email protected]:/workarea/android/idol3/TWRP/BACKUPS/408adcbe/1970-01-01--22-28-53_LRX22G_release-keys/work > tar -xvf ../system.ext4.win000
tar: Removing leading `/' from member names
/system/app/
/system/app/AntHalService/
/system/app/AntHalService/AntHalService.apk
/system/app/AntHalService/arm64/
/system/app/AntHalService/arm64/AntHalService.odex
/system/app/BasicDreams/
/system/app/BasicDreams/BasicDreams.apk
/system/app/BasicDreams/arm64/
/system/app/BasicDreams/arm64/BasicDreams.odex
/system/app/Bluetooth/
/system/app/Bluetooth/Bluetooth.apk
/system/app/Bluetooth/arm/
/system/app/Bluetooth/arm/Bluetooth.odex
famewolf said:
What they primarily want is the "update-binary" which is device specific. I don't remember if the update had one....I did take apart an update-supersu.zip and it uses a script as it's update binary...thought about trying to convert that. Theoretically you could take a meta-inf for another device's rom...and use it's meta-inf making sure to replace the update-binary. It also has an installer script that tells it to mount system and data....extract files from the zip and where to put them. I learned a bit when I was trying to make an update.zip to fix my build.prop.
It untar'd fine for me on my linux pc:
[email protected]:/workarea/android/idol3/TWRP/BACKUPS/408adcbe/1970-01-01--22-28-53_LRX22G_release-keys/work > tar -xvf ../system.ext4.win000
tar: Removing leading `/' from member names
/system/app/
/system/app/AntHalService/
/system/app/AntHalService/AntHalService.apk
/system/app/AntHalService/arm64/
/system/app/AntHalService/arm64/AntHalService.odex
/system/app/BasicDreams/
/system/app/BasicDreams/BasicDreams.apk
/system/app/BasicDreams/arm64/
/system/app/BasicDreams/arm64/BasicDreams.odex
/system/app/Bluetooth/
/system/app/Bluetooth/Bluetooth.apk
/system/app/Bluetooth/arm/
/system/app/Bluetooth/arm/Bluetooth.odex
Click to expand...
Click to collapse
i allready build some roms for my older device, so i know what it is about.
For the proper rom zip you have to make the updater script with all the simlinks and metadata ...in the latest update there were no simlinks in the updater script...
without them you can brick your phone.
for example simlinks from 4.4.2 Os from zte V5
Code:
symlink("/data/misc/audio/mbhc.bin", "/system/etc/firmware/wcd9306/wcd9306_mbhc.bin");
symlink("/data/misc/audio/wcd9320_anc.bin", "/system/etc/firmware/wcd9306/wcd9306_anc.bin");
symlink("/persist/WCNSS_qcom_cfg.ini", "/system/etc/firmware/wlan/prima/WCNSS_qcom_cfg.ini");
symlink("/persist/WCNSS_qcom_wlan_nv.bin", "/system/etc/firmware/wlan/prima/WCNSS_qcom_wlan_nv.bin");
symlink("/system/lib/modules/pronto/pronto_wlan.ko", "/system/lib/modules/wlan.ko");
symlink("Roboto-Bold.ttf", "/system/fonts/DroidSans-Bold.ttf");
symlink("Roboto-Regular.ttf", "/system/fonts/DroidSans.ttf");
symlink("libGLESv2.so", "/system/lib/libGLESv3.so");
symlink("mksh", "/system/bin/sh");
this you cannot copy from another device....
Never mind. I installed the second build.
How do I boot into the custom recovery? Is it power up + power button on the Idol 3?
Acreo Aeneas said:
Never mind. I installed the second build.
How do I boot into the custom recovery? Is it power up + power button on the Idol 3?
Click to expand...
Click to collapse
Reboot or power on till you see the alcatel screen pop up....right away hold down up arrow and it should go into recovery.
Thank you so much...been waiting for this....
so now let ROM's start pouring in )))))))
Hmm odd. I had to reflash it. For some reason it didn't take the first time I flashed the second build TWRP to my Idol 3.
What partitions should I backup using TWRP? I'd assume: Boot, System, and Data? Should I include System Image too?
Acreo Aeneas said:
Hmm odd. I had to reflash it. For some reason it didn't take the first time I flash the second build TWRP to my Idol 3.
What partitions should I backup using TWRP? I'd assume: Boot, System, and Data? Should I include System Image too?
Click to expand...
Click to collapse
The default of boot, system and data should be fine for personal use however if you have not yet rooted please read here first! http://forum.xda-developers.com/idol-3/help/want-to-able-to-install-ota-updates-t3163745
So Awesome! best looking twrp Ive seen yet xD. Also, works well too. I havent tested backing up data, but I did a successful restore of the system and boot So far so good!

Categories

Resources