whoami root - mount ... error: must be root. - What did I do? - Android Q&A, Help & Troubleshooting

Basically, what did I mess up and how do I fix it?
Code:
# set
ANDROID_ASSETS=/system/app
ANDROID_BOOTLOGO=1
ANDROID_DATA=/data
ANDROID_PROPERTY_WORKSPACE=8,0
ANDROID_ROOT=/system
ANDROID_SOCKET_zygote=9
ANDROID_STORAGE=/storage
ASEC_MOUNTPOINT=/mnt/asec
BASHPID=5780
BOOTCLASSPATH=/system/framework/core.jar:/system/framework/conscrypt.jar:/system/framework/okhttp.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/framework2.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/mms-common.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/apache-xml.jar:/system/framework/webviewchromium.jar:/system/framework/mediatek-common.jar:/system/framework/mediatek-framework.jar:/system/framework/CustomProperties.jar:/system/framework/mediatek-telephony-common.jar:/system/framework/mediatek-tablet.jar
BOOTCLASSPATH_EX=/system/framework/mediatek-op.jar
COLUMNS
EMULATED_STORAGE_SOURCE=/mnt/shell/emulated
EMULATED_STORAGE_TARGET=/storage/emulated
EPOCHREALTIME=1495427565.723985
EXTERNAL_STORAGE=/storage/emulated/legacy
HOME=/data/data/jackpal.androidterm/app_HOME
HOSTNAME=M10X
IFS=$' \t\n'
KSHEGID=0
KSHGID=10074
KSHUID=10074
KSH_VERSION='@(#)MIRBSD KSH R43 2013/02/19'
LINES
LOOP_MOUNTPOINT=/mnt/obb
MKSH=/system/bin/sh
OPTIND=1
PATH=/system/bin:/system/xbin
PGRP=5780
PIPESTATUS[0]=0
PPID=5641
PS1='# '
PS2='> '
PS3='#? '
PS4=' '
PWD=/
RANDOM=1662
SECONDS=84
SHELL=/system/bin/sh
TERM=screen
TMOUT=0
USBOTG_STORAGE=/storage/usbotg
USER=root
USER_ID=0
_=set
# whoami
root
# mount -o remount,rw /system
mount: you must be root
#
A little background, this is a dragon touch tablet. I rooted with kingroot but quickly found it both inadequate and invasive, so I set off to replace kingroot with SuperSU. After the second time fail, I tried a basic trick: copied mksh to another binary, chown root, and chmod 7755. After removing kingroot, the plan was to terminal with this root shell, manually copy SuperSU's su binary in place, and once working, remove this gaping security hole I made just for this purpose. Well, I got the root hash and I'm identified as root, but quickly discovered /system was mounted ro, so the obvious next move was to remount rw, which I was promptly slapped in the face with above. Can I get around this without spending another half hour rerooting with kingroot (again)?

Nobody has any ideas?
---
Sent from my HTCONE using XDA Free mobile app

Related

Unable to browse /data/app-private with adb

I'm using the adb.exe command directly from the Android SDK to connect to my Xperia X10's file system. Here are the commands I issued:
D:\android_sdk\tools>adb shell
$ cd data/app-private
cd data/app-private
$ ls
ls
opendir failed, Permission denied
$ su
su
pwd
pwd
ls -l
ls -l
Permission denied
$ /data/app-private
$ opendir failed, Permission denied
$ exit
exit
D:\android_sdk\tools>
Two questions: 1) Why is it commands entered after typing "su" are echoed? 2) How come I can't browse the app-private directory even after entering su?
Thanks.
Have you rooted your X10 ? (think not)
A # prompt indicates superuser privileges, you did not get to be a superuser.
Why you get an echo I don't know.
mattiL said:
Have you rooted your X10 ? (think not)
A # prompt indicates superuser privileges, you did not get to be a superuser.
Why you get an echo I don't know.
Click to expand...
Click to collapse
Yes the phone is rooted. I have the AT&T branding, but used the one-click exploid to root the phone, and it works as Titanium Backup when running tells me it gained Superuser priviledges. I don't know what I'm doing wrong. This is from an MS-DOS prompt in Windows.
When you use SU for the first time, you need to have the phone screen on and unlocked. It will ask for superuser permissions. Then it will work.
naplesbill said:
When you use SU for the first time, you need to have the phone screen on and unlocked. It will ask for superuser permissions. Then it will work.
Click to expand...
Click to collapse
Ha, thanks, it worked. The key was typing SU just before I unlock the phone, then it asks me on the phone that "Unknown" wants superuser access. Thanks again.
I was finally able to apply the 'Enable Non-Market apps' fix via adb thanks to this little tip
I'm learning- slowly...
How exactly do I run scripts on this phone when connected to a PC?
Code:
C:\android_sdk\tools>adb shell
$ su
su
# mount -o remount,rw -t yaffs2 /dev/block/mtdblock2 /system
mount -o remount,rw -t yaffs2 /dev/block/mtdblock2 /system
# cd sdcard
cd sdcard
# ls -l testscript.sh
ls -l testscript.sh
----rwxr-x system sdcard_rw 54 2010-10-06 10:52 testscript.sh
# sh testscript.sh
sh testscript.sh
: not foundsh: ■#!/bin/sh
: not foundsh: /sh
: not found
mkdir <target>
#
Any ideas?
If anyone told me "You should save your files in UNIX format where each text line ends in 0x0A, and not 0x0D 0x0A as in Windows, it will work" ... you'd be right. UNIX doesn't like carriage return & line feed pairs when trying to run a shell script.

Manual rooting - cannot mount /system as read/write

I have researched xda and the web for my problem, but it seems to be different from other posters.
I bought a Nextbook Premium 7 with Android 2.3.1 and wanted to root it. Another user already mentioned hack apps like Gingerbreak, superoneclick and z4root did not work, therefore I thought I would try the manual rooting method from the guide below:
http://www.nexusoneforum.net/forum/nexus-one-development-hacking/10940-simple-sdk-setup-guide.html
I pushed Gingerbreak and ran it using ADB, and it was successful granting temporary root. However, in the next step when I tried to remount /system as read/write (in order to install Superuser), it did not work - this step was:
mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
After executing this, I DID NOT get any error message like other posters (eg. NO "remount failed: operation not permitted").
However, when I tried to execute the next part:
chmod 777 /system/bin (or chmod 777 /system/app)
I got an error message: "Read-only file system".
This tablet has a Rockchip rk2918 processor and Android 2.3.1, otherwise I know nothing about it. The company (nextbookusa.com) does not have any firmware support on this model yet.
Can anyone help? Thanks.
More research on the web makes me suspect this tablet uses cramfs file system, because I've seen "cramfs" coming up in other similar 7 inch rk2918 tablets.
I understand it is common for chinese tablets with similar hardware to have similar basic Android OS, which is modified by the brand owner in their own specific models.
Apparently cramfs is read-only. I can only find one post where the poster successfully rooted the device by unpackaging the firmware, added Superuser, repackaged it and re-install it (as a firmware update) like a "custom(ised) ROM".
I guess until Nextbook issues firmware update on their website to unpackage and add root, there is no way to do it now.
Also RK2918
I've just bought a GoogleTv box with RK2918. I know that there's cramfs on it. I have a firmware from the producer. Any tips or trix on howto root it?
I received a RK2918 WOPAD 9.7 with a built in 3G and I have same issue can't mount system as RW. No messages but get access denied. Busybox is installed in /system/bin and GingerBreak ran fine and gave proper message when completed.
Just can't copy Superuser.apk because I have no write access. This is alot different than the GTAB. I can see the # prompt # and I can see files and dirs I make are root - but not access to Superuser.apk to allow other programs to write.
Any help would be appreciated. Also when I use busybox whoami I get the following:
# busybox whoami
whoami: unknown uid 0
Prior to me doing it the manual root method - I used Z4root and UniversalAndroot - no success.
As far as me thinking I have some root access I did the following:
# cd /data/local/
# ls
tmp
# ls -l
drwxrwx--x shell shell 2011-09-12 17:31 tmp
# su
# ls -l
drwxrwx--x shell shell 2011-09-12 17:31 tmp
# mkdir test
# ls -l
drwxrwx--x shell shell 2011-09-12 17:31 tmp
drwxrwxrwx root root 2011-09-12 18:23 test
apparently I have root access but can't execute the remount command or that block in not writable while system is up - but not sure.
Anyhelp would be appreciated!
sorry for bad english, the issue seems to be in boot ini and recovery mode, i had the same issue on a tab rk 2918, you can only unpack then repack after modifying anything you want, but not mount on rw.
has anyone tried zergRush root method for this tablet yet?????
I tried using SuperOneClick's zergRush on my WoPad i7. Same results.
dicksoft said:
I've just bought a GoogleTv box with RK2918. I know that there's cramfs on it. I have a firmware from the producer. Any tips or trix on howto root it?
Click to expand...
Click to collapse
Hello, I also have an rk2918 tvbox. I succesfully rooted it and prepared a custom rom..
you can check if you have my same box and download the rom my site.. you can find it searching "clamelmod" with google..
Converting cramfs to ext3
You will need to convert the cramfs to ext3, check the instructions described at:
google for "google sites rk2918tools", 1st link.
Let me know if it worked.
hey do you know how to put ics on this rk2918 box?

RW and RO mount shortcuts.

Okay, I got sick of typing
Code:
mount -o remount,rw /dev/block/mmcblk0p12 /system
or
Code:
busybox mount -o remount,rw /system
to mount the /system partition in RW mode so I created two very simple scripts that you can run through Script Manager to Mount RW and Mount RO.
I do quite a bit from ADB and I just found it more convenient to tap a shortcut on my home screen to mount the /system partition.
With the help of imchairmanm, I have fixed the scripts to be available globally, so all you have to do is type "mountrw" (without the quotation marks) to mount the /system partition in Read/Write mode, and type "mountro" (again, without the quotation marks) to mount the /system partition in Read Only mode.
So, now it can be run both ways!
Installation:
1. You must be rooted. (See my HowTo: Root your Motorola Droid X2 tutorial.)
2. You must have Busybox installed. If you are rooted, you have busybox installed. I've tested the scripts on BB 1.18.2, 1.19.2 and 1.19.3.
3. Download the mounts.zip file and extract it to a folder on your SDCard (internal or external, it doesn't matter). I use /mnt/sdcard/Scripts/Mounts/.
3. Download Script Manager from the market.
4. Open the Script Manager app and navigate to the folder you put the mount scripts in.
5. Tap the first mount script (mountro).
6. Tap the star and the Android superuser icon next to it. This configures the script as a favorite and to run the script as root.
7. Tap SAVE.
8. Repeat steps 5 through 7 for the second mount script (mountrw)
9. Now you can run each script from within Script Manager, or create shortcuts to them on your home screen.
To create the shortcuts, do the following:
1. Long press a blank area on your home screen and select Widget.
2. In the Choose Widget popup, scroll down to Script Manager Ads (if you have the free version) and tap it.
3. In the list, tap the mountro script. This will place the shortcut on your home screen.
4. Repeat steps 1-3 for the mountrw script.
Now, when you need to mount /system as RW all you need to do is tap the mountrw script, then when you are done, either reboot, or tap the mountro script.
The following is the code for each of the scripts:
mountro:
Code:
#!/system/bin/sh
# This mounts the /system file system as Read Only which is the default when
# Android is booted.
echo "Mounting /system in Read Only mode!"
busybox mount -o remount,ro / 2>/dev/null
busybox mount -o remount,ro rootfs 2>/dev/null
busybox mount -o remount,ro /system 2>/dev/null
echo "Done!"
mountrw:
Code:
#!/system/bin/sh
# This mounts the /system file system as Read Write in order to modify or add
# files to the /system file system.
echo "Mounting /system in Write mode!"
busybox mount -o remount,rw / 2>/dev/null
busybox mount -o remount,rw rootfs 2>/dev/null
busybox mount -o remount,rw /system 2>/dev/null
echo "Done!"
It's simple and no frills... The way I like it.
Alternative install:
I didn't realize it, but, I had already made a flashable zip. Just download mount_rw_ro-V1.1.zip and boot into the BSR and flash it from there.
If anyone has any suggestions, I'm open to them! Let me know!
Ciao!
Hm, I was curious since you said you couldn't get your scripts to run globally, so I tried them out by putting them in /system/xbin. After adjusting permissions and making sure owner and group were root, they ran fine and globally as-is. I wonder if the simpler version you started with would have worked or not?
imchairmanm said:
Hm, I was curious since you said you couldn't get your scripts to run globally, so I tried them out by putting them in /system/xbin. After adjusting permissions and making sure owner and group were root, they ran fine and globally as-is. I wonder if the simpler version you started with would have worked or not?
Click to expand...
Click to collapse
did you run them from /system/xbin? I put them in /system/xbin and then cd / to get back to root and tried to run them. They are not found.
Code:
# cd /system/xbin
cd /system/xbin
# pwd
pwd
/system/xbin
# ls -l mount*
ls -l mount*
lrwxrwxrwx root root 2011-12-05 13:08 mount -> /system/xbin/busybox
lrwxrwxrwx root root 2011-12-05 13:08 mountpoint -> /system/xbin/busybox
-rwxrwxrwx root root 316 2011-11-06 19:04 mountro
-rwxrwxrwx root root 328 2011-11-06 19:04 mountrw
# cd /
cd /
# pwd
pwd
/
# mountro
mountro
mountro: not found
# sh mountro
sh mountro
sh: Can't open mountro
#
That was the problem I was running into. I even tried sh mountro. The error "Can't open mountro" essentially means it can't find it.
If this is what you did, and you had different results, I would love to find out why. Thanks!
Ciao!
Yeah, that's what I meant by they are available globally. I can run them from anywhere in the filesystem. I'm not sure what the difference is. Mine have owner and group set to root and the applicable permissions set as well.
It runs through the script correctly, I get all of the echo messages, and if I cd to system afterwards, everything is rw or ro as it should be. I don't know what other information would be helpful for you, but I'll answer whatever other questions you might have. I don't quite understand why it'd ever have a problem with your scripts in the first place. It seems like a strange thing to happen.
Edit: I just ran through and ran the same commands as you did and they were all successful. It sounds like maybe something isn't right in your $PATH? That's the only thing I can think of. What does it say when you type "echo $PATH"? Either that or something with your terminal emulator or rom? Have you tried a different terminal? It shouldn't matter but you never know.
imchairmanm said:
Yeah, that's what I meant by they are available globally. I can run them from anywhere in the filesystem. I'm not sure what the difference is. Mine have owner and group set to root and the applicable permissions set as well.
It runs through the script correctly, I get all of the echo messages, and if I cd to system afterwards, everything is rw or ro as it should be. I don't know what other information would be helpful for you, but I'll answer whatever other questions you might have. I don't quite understand why it'd ever have a problem with your scripts in the first place. It seems like a strange thing to happen.
Edit: I just ran through and ran the same commands as you did and they were all successful. It sounds like maybe something isn't right in your $PATH? That's the only thing I can think of. What does it say when you type "echo $PATH"? Either that or something with your terminal emulator or rom? Have you tried a different terminal? It shouldn't matter but you never know.
Click to expand...
Click to collapse
I dunno what is going on. My path shows /system/xbin. Oh, I'm on Eclipse 1.3 (but that shouldn't matter)... Oh well.
Code:
# echo $PATH
echo $PATH
/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin
It happens from the adb shell and from the terminal program on my DX2.
Hm. My $PATH is the same except it also includes /data/local/bin. That shouldn't matter. I'm on eclipse too and running the commands from the terminal in eclipse parts. I don't know why something in the path wouldn't execute. Does "which mountrw" find it? I had a problem earlier where I thought it wasn't finding a script I wrote, but it actually was failing at the first line because I had the wrong path to sh listed. If which finds your scripts I'd say it's more likely something with the script rather than the system. I'd also try writing a little hello world script and seeing if you can get that to execute globally too.
imchairmanm said:
Hm. My $PATH is the same except it also includes /data/local/bin. That shouldn't matter. I'm on eclipse too and running the commands from the terminal in eclipse parts. I don't know why something in the path wouldn't execute. Does "which mountrw" find it? I had a problem earlier where I thought it wasn't finding a script I wrote, but it actually was failing at the first line because I had the wrong path to sh listed. If which finds your scripts I'd say it's more likely something with the script rather than the system. I'd also try writing a little hello world script and seeing if you can get that to execute globally too.
Click to expand...
Click to collapse
Aw, CRAP! I've run into this problem when I develop on a Windows machine and try to run it on a linux box... ARGH! Thank GOD I use gvim. I was able to change the file format from DOS to UNIX, then save it and push it back out to /system/xbin. chmod'd it to 777 and ran mountrw/mountro and they work now... How can I be so friggin' dense... I know better than that...
Oh, to answer your question on the which command, yes, which finds them both.
What clued me in was you saying that the problem might be with the script. Thanks! It FINALLY works! I've updated the OP with the corrected files.
Also, does anyone want me to make this a flashable zip? Let me know.
Ciao!

[SOLVED] "sh: applet not found" after BusyBox install

Background: On a rooted device, I installed busybox via the BusyBox Pro app, with the "symlinks" option checked. Afterwards, wifi stopped working, root stopped working, adb stopped working, and a lot of tasks started failing with "sh: applet not found".
The problem: BusyBox Pro 8.0 replaces /system/bin/ash with a symlink to busybox. This was problematic on my device, where /system/bin/sh was a symlink to ash, so now 'sh' is actually calling busybox, and this particular compilation of busybox didn't have 'sh' support compiled in, hence the "sh: applet not found" error everytime anything tried to call sh, which as it happens, is a lot! The bug was fixed quickly with a 8.1 release, but due to suspected caching policies on the Google Store, a lot of people still got the old release even after this was fixed!
Here's how I fixed this:
Prerequisite: You'll need a replacement sh binary. On another device, which was also an ARM device, sh was symlinked to 'mksh', and I just took this. You might want to verify that the binary works on your broken device before completing the final steps below.
Initial Wifi
It's only DHCP that is failing (on the "Obtaining IP address..." step), so go into your Wifi Settings, forget the network, add it again, and change DHCP to "static", manually fill in the appropriate IP info for your network, and you'll be good to go (encrypted network is fine).
Getting a Root terminal
Download KBOX from http://kevinboone.net/kbox.html
In KBox, menu -> more -> preferences, change shell -> "command line" to "/system/bin/ash"
su -s /system/bin/ash
Remounting /system as RW
In theory, all you should need to do is: busybox mount -o remount,rw /system
This didn't work for me, and I got a "permission denied (are you root)" error, I guess because the system was no longer booting properly. I had to redo some of the steps involved in rooting my device, in my case:
On phone:
mkdir /data/local/lib
echo ro.kernel.qemu=1 > /data/local.prop
reboot
(wait for reboot, and get into a root terminal again as per the above)
On PC (from previous files used for rooting my device):
adb push lsm_disabler.ko /data/local/lib/
Oh phone:
insmod /data/local/lib/lsm_disabler.ko
rm /data/local/lib/lsm_disabler.ko
cat > /data/local.prop
From this point, I was able to remount successfully:
mount -o remount,rw /system
Fixing sh
Now on your PC, push the replacement binary to /system/bin, in my case:
adb push mksh /system/bin
On phone:
cd /system/bin
busybox ln -sf sh mksh
Verify now that "./sh" gives you a working terminal.
If all is good:
mount -o remount,ro /system
reboot
All done! Wow, this saved me sending my device back to Japan, since it's still using the stock bootloader and there are now available update.zip's out there. Good luck everyone, feel free to ask questions :>
P.S. I'm going to contact BusyBox Pro's author now with some suggestions to prevent these kind of problems happening in the future.
Deleted.
Deleted.
I rant into the same problem on my Galaxy Tab. Thanks for this, it saved my day!
A little correction to this little thing:
Kinslayer81 said:
On phone:
cd /system/bin
busybox ln -sf sh mksh
Click to expand...
Click to collapse
This worked for me:
cd /system/bin
ln -sf mksh sh
chmod 755 sh
Thank you
Just want to say thanks.
Your Posting helped me out with the Problems on my htc flyer.
I installed BusyBox Pro by Stephen (Stericson) to fix a missing symlinks problem that I had after installing JRummy's Busy Box. I then encountered the applet not found problem and then just reinstalled JRummy's version and it fixed it without having to do anything else.
Kinslayer81 said:
Background: On a rooted device, I installed busybox via the BusyBox Pro app, with the "symlinks" option checked. Afterwards, wifi stopped working, root stopped working, adb stopped working, and a lot of tasks started failing with "sh: applet not found".
The problem: BusyBox Pro 8.0 replaces /system/bin/ash with a symlink to busybox. This was problematic on my device, where /system/bin/sh was a symlink to ash, so now 'sh' is actually calling busybox, and this particular compilation of busybox didn't have 'sh' support compiled in, hence the "sh: applet not found" error everytime anything tried to call sh, which as it happens, is a lot! The bug was fixed quickly with a 8.1 release, but due to suspected caching policies on the Google Store, a lot of people still got the old release even after this was fixed!
Here's how I fixed this:
Prerequisite: You'll need a replacement sh binary. On another device, which was also an ARM device, sh was symlinked to 'mksh', and I just took this. You might want to verify that the binary works on your broken device before completing the final steps below.
Initial Wifi
It's only DHCP that is failing (on the "Obtaining IP address..." step), so go into your Wifi Settings, forget the network, add it again, and change DHCP to "static", manually fill in the appropriate IP info for your network, and you'll be good to go (encrypted network is fine).
Getting a Root terminal
Download KBOX from http://kevinboone.net/kbox.html
In KBox, menu -> more -> preferences, change shell -> "command line" to "/system/bin/ash"
su -s /system/bin/ash
Remounting /system as RW
In theory, all you should need to do is: busybox mount -o remount,rw /system
This didn't work for me, and I got a "permission denied (are you root)" error, I guess because the system was no longer booting properly. I had to redo some of the steps involved in rooting my device, in my case:
On phone:
mkdir /data/local/lib
echo ro.kernel.qemu=1 > /data/local.prop
reboot
(wait for reboot, and get into a root terminal again as per the above)
On PC (from previous files used for rooting my device):
adb push lsm_disabler.ko /data/local/lib/
Oh phone:
insmod /data/local/lib/lsm_disabler.ko
rm /data/local/lib/lsm_disabler.ko
cat > /data/local.prop
From this point, I was able to remount successfully:
mount -o remount,rw /system
Fixing sh
Now on your PC, push the replacement binary to /system/bin, in my case:
adb push mksh /system/bin
On phone:
cd /system/bin
busybox ln -sf sh mksh
Verify now that "./sh" gives you a working terminal.
If all is good:
mount -o remount,ro /system
reboot
All done! Wow, this saved me sending my device back to Japan, since it's still using the stock bootloader and there are now available update.zip's out there. Good luck everyone, feel free to ask questions :>
P.S. I'm going to contact BusyBox Pro's author now with some suggestions to prevent these kind of problems happening in the future.
Click to expand...
Click to collapse
This helped get my wifi back after flashing a kernel.
Hey there,
I've got the same problem.
After reinstalling the ROM everything works fine,
but when I try to install busybox, I get the same failure everytimes.
How can I prevent it?
Do I have to follow the steps above?
And where do I get the sh binary from?
Sorry guys, I'm a little confused and hope you may help me..
Thanks!!
Kbox not open in my ics when I open it its automatically closed
And i want to ask the script su -s /system/bin/ash where i put this script

[Q] Error while Rooting - /System Read-Only filesystem

Hey there guys.
I have a couple of devices I am trying to root.
One is a ZTE Fit 4G and the other is a cheap tablet bought from ebay with an allwinner A20 marked as MIB in about.
I have tried many ways of rooting on both of them. One of which was Cydia Impactor.
I have used Cydia Impactor to root other devices just fine.
However on these 2 devices when i run "# drop SuperSU su to /system/xbin/su" the payload runs on the device and then Cydia Impactor shows "mount: Read-Only filesystem"
When i try adb remount I get remount failed: Read-only file system
Also when i try this in adb shell - mount -o rw,remount /system I get the same error mount: Read-only file system
Of course I get the same message with mount -o remount,rw /dev/block/mtdblock3 /system
All these commands are done while the phone is running. should i be in recovery mode or something while I do this?
If that is not the case then how would I go about making the file system writable or is there away to root the device without modifying system and once rooted install supersu and binaries manually (I am assuming the only access to /system is to install super su... which could be totally wrong)
I appreciate your time in reading this and look forward to hearing any suggestions you may have,
Kriogenic.

Categories

Resources