[Q] Help changing kernel versions and ROMs - Nexus One Q&A, Help & Troubleshooting

If i wanted to change my kernel and CM mod, what must i do?
Much appreciated.

most threads that post kernels usually post instructions so it wouldn't be so hard to do.
You want to change Roms. Just load
the zip to SD, wipe and flash. Just do a nandroid backup first.

Related

Noob root question

after rooting and flashing ROMS, im confused on somethings. When flashing a new ROM do you ALWAYS have to wipe? Also, when you make a Nandroid back up, wipe and flash a new ROM, can you restore from that backup so you dont have to download all your apps//set up your screens all over again? Please help.
If you are switching to a completely new rom, then yes, you have to do a complete wipe. If you are upgrading a rom, adding mods or something similar then you don't need to do a data wipe. If you are switching from a rom that uses apps2sd from one that uses it you should probably wipe your ext partition as well.
To answer your second question, a nandroid backup backs up EVERYTHING on your phone, so using a nandroid restore will knock out your new rom and put everything back the way it was, including apps and settings. If you nandroid back from your new rom (lets say your phone gets stuck in a boot-loop or something...) you should do a data wipe and wipe ext partition, then nandroid.
one-of-four said:
If you are switching to a completely new rom, then yes, you have to do a complete wipe. If you are upgrading a rom, adding mods or something similar then you don't need to do a data wipe. If you are switching from a rom that uses apps2sd from one that uses it you should probably wipe your ext partition as well.
To answer your second question, a nandroid backup backs up EVERYTHING on your phone, so using a nandroid restore will knock out your new rom and put everything back the way it was, including apps and settings. If you nandroid back from your new rom (lets say your phone gets stuck in a boot-loop or something...) you should do a data wipe and wipe ext partition, then nandroid.
Click to expand...
Click to collapse
what does wipe ext partition wipe
also...
I want to use stock Android 2.1 ROM but want to use SetCPU to overclock. I tried flashing this kernel: http://forum.xda-developers.com/showthread.php?t=690238 but was stuck on the white/green HTC Screen. I then tried this kernel: http://forum.androidcentral.com/162759-post49.html and it got rid of super user permission so I couldnt use SetCPU. Is there another kernel I can use? If so can you PLEASE provide download link? One more thing, how do I compile this: http://forum.xda-developers.com/show...ghlight=kernel
shamrock11 said:
what does wipe ext partition wipe
Click to expand...
Click to collapse
It has your apps2sd info in it, hence wiping before changing roms because most use different versions of a2sd.
one-of-four said:
It has your apps2sd info in it, hence wiping before changing roms because most use different versions of a2sd.
Click to expand...
Click to collapse
I want to use stock Android 2.1 ROM but want to use SetCPU to overclock. I tried flashing this kernel: http://forum.xda-developers.com/showthread.php?t=690238 but was stuck on the white/green HTC Screen. I then tried this kernel: http://forum.androidcentral.com/162759-post49.html and it got rid of super user permission so I couldnt use SetCPU. Is there another kernel I can use? If so can you PLEASE provide download link? One more thing, how do I compile this: http://forum.xda-developers.com/show...ghlight=kernel ?
shamrock11 said:
I want to use stock Android 2.1 ROM but want to use SetCPU to overclock. I tried flashing this kernel: http://forum.xda-developers.com/showthread.php?t=690238 but was stuck on the white/green HTC Screen. I then tried this kernel: http://forum.androidcentral.com/162759-post49.html and it got rid of super user permission so I couldnt use SetCPU. Is there another kernel I can use? If so can you PLEASE provide download link? One more thing, how do I compile this: http://forum.xda-developers.com/show...ghlight=kernel
Click to expand...
Click to collapse
Ok... I'll give you what info I can, but I'm somewhat new to this myself... the first kernel you tried to flash has to be used in tandem with the rom listed at the top of the thread (darchdroid...) the second needs to be used with damage control's rom. I don't understand why you lost su permissions by flashing the second one, but again I'm new to this.
I hope you made a nandroid backup (always do this, otherwise some people around here will flame you...) I would restore, try installing the rom for the kernel you want to use and then re-flash it.
Something you might like is freshtoast (check: http://geekfor.me/new-release/fresh-toast-v21/) it has a stable rom (fresh 2.1.x) and all the overclocking goodies you're looking for. That way you won't break your phone / lose root in the process.
P.S. your link is broken for your last question, so I can't answer it
one-of-four said:
Ok... I'll give you what info I can, but I'm somewhat new to this myself... the first kernel you tried to flash has to be used in tandem with the rom listed at the top of the thread (darchdroid...) the second needs to be used with damage control's rom. I don't understand why you lost su permissions by flashing the second one, but again I'm new to this.
I hope you made a nandroid backup (always do this, otherwise some people around here will flame you...) I would restore, try installing the rom for the kernel you want to use and then re-flash it.
Something you might like is freshtoast (check: http://geekfor.me/new-release/fresh-toast-v21/) it has a stable rom (fresh 2.1.x) and all the overclocking goodies you're looking for. That way you won't break your phone / lose root in the process.
P.S. your link is broken for your last question, so I can't answer it
Click to expand...
Click to collapse
I don't want to use a rom. I was told I can overclock if I use a custom kernel. Which kernel should I download from the second link and heres the last link: http://forum.xda-developers.com/showthread.php?t=684838&highlight=kernel
Sorry for the delay... long day(s) at work!
For your kernel problems, please read this guide: http://forum.xda-developers.com/showthread.php?t=622916
It gives you step by step instructions on how to compile and install (probably the wrong term, but whatever...) the kernel you want.
In order to use setCPU you'll need a custom kernel, the CDMA Hero doesn't support it straight out of root.
This thread seems like it may contain your answer: http://forum.xda-developers.com/showthread.php?t=699792
I also highly recommend heading to following link, it has tons of guides and will answer most of your questions: http://forum.xda-developers.com/showpost.php?p=6738713&postcount=1
Hope this helps, but as far as more in-depth kernel questions, you'll need to find someone else to ask, I'm all out of ideas

Kernels: Should I flash?

Yes I'm a noob. I tried searching for my answer but I came across nothing. So here goes. Two parter.
What is flashing the kernel? I understand it involves cpu clock speed and battery life. Is it something I would want to do? How do you do it? Where do you find kernels to flash your phone with? Can you mix a kernel with a ROM of your choice and if so, what's a good combination?
I'm still trying to figure out how to switch between ROMs in the most easiest and hassle free way possible, but that has escaped me. What I do is load the bootloader and wipe then flash the new ROM. Then I gotta recover my apps & data with Titanium Backup (Usually half the data is missing). Can I just use the Nand backup to switch? Should I use a completely different backup tool for each ROM I like to use?
Try if you like.. Combine any kernel as as long as it is built for the Rom you want.
Undervolted kernels do improves batterylife. But it is up to you to find your own combination. Try Pershoot and IntersectRaven's kernels to start with.
You flash kernels with Amon_RA's recovery or other tool just like you flash ROM's.
If the Kernel don't work for you just nandroid or try other kernels.
Wish someone can make a Kernal like benbuchacher has done on his G1/DREAM ROMS "SuperD"
<3

[Q] Nandroid backup

Hi all
Is Nandroid backing up all the apps I've got at that moment? Or it just saves system files?
Like a complete and exact "photo" or are there things that I should do on my own if I mean to recover exactly as it was...
I assume that no wipe is necessary...
Thanks!
What's the truth about Nandroid backup?!
i guess there's no need to open a new topic, because i got kinda the same question
before you guys start to redirect me to the "search" function, i want to assure you that i have been using it, but i have found myself in a very strange situation, one question, two different answers... and because i'm new to the whole root stuff, i want to learn everything correctly before starting to make modifications to my phone
The question is: Nandroid backup, does it also back up the kernel or not?
I mean, if i root and install a custom rom that also comes with a custom kernel, will i be able to use my previous Nandroid backup to restore my phone to the old rom & kernel?
Searching the forums, i have found 2 totally different answers!
Answer 1: Nandroid does not backup the kernel: http://forum.xda-developers.com/showthread.php?t=806340
Answer 2: Nandroid does backup the kernel: http://forum.xda-developers.com/showthread.php?t=844352
So, please make me and all of us root noobs understand once and for all, does it backup the kernel or not?, will we be able to restore from a custom rom+kernel in case we need to?
and does it backup apps?
OK...As I understand it....
What does Nandroid Backup?
The ROM Itself..Obviously.
All your system settings, emails, SMSes, etc
All the Apps you have installed, so no need for TB
The Kernel you have installed (though there is controversy about this, and to be honest, I have never restored a nandroid backup when I had a different kernel already installed...however it really doesn't matter since kernels are easy to flash)
What does Nandroid NOT backup - This is VERY IMPORTANT
The modem (not a big deal)
The File System setting (A BIG DEAL)
This I think is where the confusion arises concerning the kernel being included in the nandroid backup. For many people the kernel is all about the lagfix. If you have installed a lagfix on your phone via the kernel, say changing the file system to Ext4, and then flash a Nandroid backup that includes a stock kernel or other kernel that does NOT support Ext4, you are in for a world of hurt...and in this case hurt means endless bootloops.
The way you avoid this is, if you need to flash a Nandroid with a kernel that does not support your lagfix...go into recovery, disable whatever lagfix, tell it when it asks that you wish to REBOOT INTO RECOVERY after the change....then flash the nandroid you wish.
This is why it is very important to keep regular nandroid backups, and to wait and see if a ROM/Kernel are stable for you before applying lagfixes or other tweaks.
So, let me see if i got this right, Nandroid does backup up my current kernel along with my rom, but if i apply any changes (lagfix) to my kernel afterwards or change it with a custom one with lagfix, nandroid won't be able to restore it anymore...
so the whole problem here is that nandroid is not able to backup / restore The File System setting, this being the rfs / ext4 transition
If this is the case, it seems that the Nandroid type backup is not as powerful as i thought, you can't really change from one rom to another in just a few clicks, but then again i guess that all the customs roms already come with some type of lagfix and you can make a nandroid restore between them, the problem would be when you want to revert back to a stock kernel, then you'll have to disable the lagfixes or simply flash a stock kernel and then restore the stock nandroid backup
so, i got this right guys?
maranello69 said:
So, let me see if i got this right, Nandroid does backup up my current kernel along with my rom, but if i apply any changes (lagfix) to my kernel afterwards or change it with a custom one with lagfix, nandroid won't be able to restore it anymore...
so the whole problem here is that nandroid is not able to backup / restore The File System setting, this being the rfs / ext4 transition
If this is the case, it seems that the Nandroid type backup is not as powerful as i thought, you can't really change from one rom to another in just a few clicks, but then again i guess that all the customs roms already come with some type of lagfix and you can make a nandroid restore between them, the problem would be when you want to revert back to a stock kernel, then you'll have to disable the lagfixes or simply flash a stock kernel and then restore the stock nandroid backup
so, i got this right guys?
Click to expand...
Click to collapse
Yes as I understand it.
You see Nandroid can't convert your file system or change anything, all it can do is flash a disc image onto your phone. If that image can work with your file system, you are golden. If not, it is like flashing a Mac OS image onto a Windows machine....nothing will work right.
However the good news is that most custom kernels support Ext4...so really the only problem comes when you try to flash back to a stock image...or vice versa.
got it then, thanks for your answers
and, if i still got your attention, maybe one more question
i just downloaded a stock firmware from samfirmwares.com, and all i got is a .tar file, can i use it somehow to flash just the kernel from it or i have to flash the whole firmware?
if i flash the whole firmware, will it also change my PHONE and CSC?, because the .tar file must be put just in the PDA section in odin
maranello69 said:
got it then, thanks for your answers
and, if i still got your attention, maybe one more question
i just downloaded a stock firmware from samfirmwares.com, and all i got is a .tar file, can i use it somehow to flash just the kernel from it or i have to flash the whole firmware?
if i flash the whole firmware, will it also change my PHONE and CSC?, because the .tar file must be put just in the PDA section in odin
Click to expand...
Click to collapse
Yes, it will flash the PDA, csc, modem and kernel...the whole shooting match. The single file firmwares are designed like that to avoid mismatches and issues. Once you flash it, flash a kernel that supports cwm (I suggest speedmod or something by CHAINFIRE) via odin, then flash a new csc and modem if you wish from recovery.
Remember that installing a new csc will do a factory reset so do it before reinstalling apps.
Sent from my GT-I9000 using XDA Premium App
great stuff man
finally i got enough info and i can start my root & flash procedure, guess i'll also learn a few other tricks along the way, this community is definetly the place to be if you want to learn how to "really use" your device
the whole info about the issues with the Nandroid type backup should be integrated in one of those massive info topics, so the root noobs like me know what they're dealing with
maranello69 said:
great stuff man
finally i got enough info and i can start my root & flash procedure, guess i'll also learn a few other tricks along the way, this community is definetly the place to be if you want to learn how to "really use" your device
the whole info about the issues with the Nandroid type backup should be integrated in one of those massive info topics, so the root noobs like me know what they're dealing with
Click to expand...
Click to collapse
Good luck
Sent from my GT-I9000 using XDA Premium App
Hey guys i actually used the search button (yay) and this is definitely the most informative one regarding the topic.
However i still have one more question: does it backup files and folders as well? Ie. my Nexus S storage is mainly used up by my videos and music (about 7-10GB) which are in their own folders and not tied to any apps in particular. Hence if it does include those i wouldn't have enough storage space to create a nandroid backup am i right?
Edit: thanks to the search button i didn't realise that i posted on a Galaxy S forum please forgive me, the question should still be relevant to the topic though
frenccw said:
Hey guys i actually used the search button (yay) and this is definitely the most informative one regarding the topic.
However i still have one more question: does it backup files and folders as well? Ie. my Nexus S storage is mainly used up by my videos and music (about 7-10GB) which are in their own folders and not tied to any apps in particular. Hence if it does include those i wouldn't have enough storage space to create a nandroid backup am i right?
Click to expand...
Click to collapse
As I understand it, it does save folders and files, so yes if you have large data folders on your internal SD it will make GIGANTIC nandroid backups. You may want to store such files one your external SD.
I know that there is a version of CWM that does not backup /data/media in Nandroid on the Galaxy Tab 10.1...perhaps there is something similar that I don't know about for Galaxy phones. Does anyone know?

[Q] Help with stock Milestone 2.2.1 from Germany

Hi everyone,
I know this will make me sound like a complete noob but it doesnt matter. Any help or any pointing in the right direction would be greatly appreciated.
I have a stock motorola milestone 2.2.1. I hate it and have read how stable some of the roms are and I would love to experiment with them. However, never having a windows phone or an HTC before I have no idea how to do this with minimizing the risk.
So I have rooted my phone with universalandroot and have installed rom manager and titanium backup. Unfortunately, I read that rom manager wont work with the Milestone.
All of the threads on boot recovery and other methods seem to differentiate from one another. Is there a safeR method. I know no method is safe. What programs do I need to install on my computer and or my phone for this to work?
I know this a lot and I truly appreciate any help and support from this forum.
Thanks
Tompaine said:
Hi everyone,
I know this will make me sound like a complete noob but it doesnt matter. Any help or any pointing in the right direction would be greatly appreciated.
I have a stock motorola milestone 2.2.1. I hate it and have read how stable some of the roms are and I would love to experiment with them. However, never having a windows phone or an HTC before I have no idea how to do this with minimizing the risk.
So I have rooted my phone with universalandroot and have installed rom manager and titanium backup. Unfortunately, I read that rom manager wont work with the Milestone.
All of the threads on boot recovery and other methods seem to differentiate from one another. Is there a safeR method. I know no method is safe. What programs do I need to install on my computer and or my phone for this to work?
I know this a lot and I truly appreciate any help and support from this forum.
Thanks
Click to expand...
Click to collapse
First of all, ROM Manager does not work with the milestone. So please remove it and dont ever install Clockworkmod recovery on the milestone.
Second, What ROM do you want to install?
You need Androidiani Openrecovery for all your flashing needs of customs ROMS. You will need rsdlite to flash sbf files and offcourse the Moto usb drivers. Check the sticky threads in the development section. There are many tutorials.
This is easily one of the best ways to get everything done in the way of flashing a custom ROM.
http://forum.xda-developers.com/showthread.php?t=983516
Depending on which ROM you want to install, it will determine what you need to download.
After rooting the phone, you will want to flash a vulnerable recovery sbf via RSD Lite, as shown in that thread the VR you should use will depend on your bootloader version. If you are running 90.78, then you can flash this VR: http://android.doshaska.net/rootable
After that happens, you can create a backup of all of your apps using TitaniumBackup.
Once you do that you want to place OpenRecovery(AOR) on your SD Card. Follow the steps from the first link I posted to get that on. You will want to place the custom ROM that you want into OpenRecovery/updates. If you are planning on using CM7, you will also need to download google apps from the CM7 thread here.
Once that is on, you will want to boot into recovery(power+x, see the Moto M logo, then release and push camera button+volume up), apply update.zip.
From there you want to select the Nandroid menu with the d-pad. Create a nandroid backup of what you want.
Now is the crucial step. You need to wipe the caches and ALL data. Choose wipe dalvik cache, wipe cache partition and wipe data/factory reset.
Now is time to apply your custom ROM!
It is recommended to create a nandroid backup everytime you flash a custom ROM, in case of anything going wrong.
Navigate to apply update in AOR, select the ROM that you want, select yes. Once it is done installing, wipe the caches and data AGAIN.
If you are installing the google apps, you will want to wipe the caches, flash the google apps, then wipe the caches again.
You will probably have to apply the baseband for your carrier, so you will need to navigate to change baseband, and apply the baseband for your carrier.
If you followed those steps, you should have a brand spanking new custom ROM on your phone.
Hope this helps.
@skadude66
I just really want to thank you so much for helping me with that. Your tips and the link to the guide explained step by step what I had to do.
Right now I am running miui gingerbread on my phone and it runs and looks great. Thanks.
Tompaine said:
@skadude66
I just really want to thank you so much for helping me with that. Your tips and the link to the guide explained step by step what I had to do.
Right now I am running miui gingerbread on my phone and it runs and looks great. Thanks.
Click to expand...
Click to collapse
Glad to hear!
Sent from my Milestone using XDA Premium App

[Q] Boot Animations and Stuff

I realised when I ask questions, I always lump them into one paragraph, so I thought maybe I number them.
These questions are about boot animations.
1. What are the risks of installing/flashing a boot animation, if any?
2. For the I9305, where are the boot animations located? (I'm rooted, I searched for the files in Root Explorer, and there were some, namely bootanimation, bootsamsungloop and bootsamsung)
3. Can the boot animations that are made for other devices work on this device?
Thank you to those who answer my questions.
1. As far as i know there are no risk on putting custom boot animations since it won't replace any system files.
2. I don't know where it is really located on i9305 but it should be the same... on mine it's located on systemroot/data/local/.
(Custom boot animation requires a custom kernel by the way.)
3. I'm not quite sure on this but it may work since custom boot animations are just zip files.
OK, some more questions,
1. Do you need a custom kernel to modify the status bar and stuff?
2. I read more about boot animations, it seems that you can flash them through CWM without a custom kernel. Is that true?
3. What are the benefits and risks of flashing a custom kernel?
Hit thanks if I helped you! Sent from my awesome i9305!
herobrine_second said:
OK, some more questions,
1. Do you need a custom kernel to modify the status bar and stuff?
2. I read more about boot animations, it seems that you can flash them through CWM without a custom kernel. Is that true?
3. What are the benefits and risks of flashing a custom kernel?
Hit thanks if I helped you! Sent from my awesome i9305!
Click to expand...
Click to collapse
1. Nope. You need a custom framework such as Jkay's framework to modify the status bar. I just don't know if jkay's framework will work on the i9305 you can try searching the forums for a custom framework for the i9305 and see if you can modify the status bar.
2. Oh right you can just flash them through cwm. Kinda forgot sorry lol.
3. Risk of a custom kernel? Hmm... i think there are none, in fact custom kernels are way more better than stock kernels in my opinion. I've been running a custom kernel 3 weeks after i got my s3 and i've not encountered a single problem so far. Benefits of running a custom kernel really depends on how you configure it.
SignetSphere said:
1. Nope. You need a custom framework such as Jkay's framework to modify the status bar. I just don't know if jkay's framework will work on the i9305 you can try searching the forums for a custom framework for the i9305 and see if you can modify the status bar.
Click to expand...
Click to collapse
Jkay's framework works like a charm, but with Samsung based ROM's (JB 4.1.2).
Ok, one last question (hopefully)
If I flash the stock Samsung ROM (if I feel like I want to), will all my mods I've flashed be erased, and returned to stock Samsung? Like, if I have installed boot animations, status bar mods, root, custom kernel, will all these be gone? Will I return to stock Samsung ROM like out-of-the-box? (I understand that if you flash a ROM, that is either the same ROM or an updated version of it, you wouldn't have to erase data, wipe cache to install the ROM right?) I know that CWM will not be gone, I will have to flash stock recovery, but this i'm not 100% sure.
herobrine_second said:
Ok, one last question (hopefully)
If I flash the stock Samsung ROM (if I feel like I want to), will all my mods I've flashed be erased, and returned to stock Samsung? Like, if I have installed boot animations, status bar mods, root, custom kernel, will all these be gone? Will I return to stock Samsung ROM like out-of-the-box? (I understand that if you flash a ROM, that is either the same ROM or an updated version of it, you wouldn't have to erase data, wipe cache to install the ROM right?) I know that CWM will not be gone, I will have to flash stock recovery, but this i'm not 100% sure.
Click to expand...
Click to collapse
I'm not quite sure what you mean but i think i've tried it once. I was on EMMA2 firmware and I upgraded to EMC2 via Mobile Odin Pro. I think it only kept my apps, settings and some mods but i encountered some problems so what i did it start from scratch and restored some apps by using Titanium Backup. And CWM won't be gone as long as you don't flash another custom recovery or the stock recovery.
My point here is if you want everything to go smoothly is...
1 Backup everything via Nandroid.
2. flash the stock rom
3. root it
4. Install any mod you want may it be a custom kernel, rom, framework etc.
This way you won't encounter any problems while flashing a new stock ROM. But hey my understanding could be wrong Better search the forum deeply since more users might answer your question properly.
herobrine_second said:
Ok, one last question (hopefully)
If I flash the stock Samsung ROM (if I feel like I want to), will all my mods I've flashed be erased, and returned to stock Samsung? Like, if I have installed boot animations, status bar mods, root, custom kernel, will all these be gone? Will I return to stock Samsung ROM like out-of-the-box? (I understand that if you flash a ROM, that is either the same ROM or an updated version of it, you wouldn't have to erase data, wipe cache to install the ROM right?) I know that CWM will not be gone, I will have to flash stock recovery, but this i'm not 100% sure.
Click to expand...
Click to collapse
As far as I know, restoring/flashing stock ROM will erase everything on your internal memory, cause flashing stock ROMs are trought/with Odin (*.tar or *.md5 file). So, be careful what you're doing!
But what I understand is if you flash a ROM that is an update or the same version of the ROM that you are on, your data doesn't wipe, oh well, I learnt something new today.
Hit thanks if I helped you! Sent from my awesome I9305!
I used this boot enablemod install to get them working and just flash the boot files
http://forum.xda-developers.com/showpost.php?p=31833122&postcount=4
---------- Post added at 05:31 PM ---------- Previous post was at 05:22 PM ----------
More info here aswell, i think if the animation is not compatible you just get a black screen.
http://forum.xda-developers.com/showthread.php?t=2077101
http://forum.xda-developers.com/showthread.php?t=1053250
http://forum.xda-developers.com/showthread.php?t=1494591
http://forum.xda-developers.com/showthread.php?t=2063280
Harthouse said:
As far as I know, restoring/flashing stock ROM will erase everything on your internal memory, cause flashing stock ROMs are trought/with Odin (*.tar or *.md5 file). So, be careful what you're doing!
Click to expand...
Click to collapse
nah, flashing with odin doesn't wipe data. but you'll need to do it manually anyway, same as flashing any rom
Thanks to everyone who answered my questions! (basically everyone who posted in this thread-except me) But I have read from many places (on XDA, AndroidForums and many other places) that if you are upgrading from a ROM, or flashing the same ROM, you do not need to wipe data unless the developer asks for a wipe.
yup, I was talking about flashing a different ROM.
SignetSphere said:
1. As far as i know there are no risk on putting custom boot animations since it won't replace any system files.
2. I don't know where it is really located on i9305 but it should be the same... on mine it's located on systemroot/data/local/.
(Custom boot animation requires a custom kernel by the way.)
3. I'm not quite sure on this but it may work since custom boot animations are just zip files.
Click to expand...
Click to collapse
Do you know a good custom kernel that supports custom boot animations for i9305?
check the dev section
Anybody knows a stable custom rom for this model?
maharu567 said:
Anybody knows a stable custom rom for this model?
Click to expand...
Click to collapse
You can check the Android Development section of the forum for this device, and under the Index there are many.

Categories

Resources