How do i set /system as RW forever ? - Nook Touch General

All partitions in Nook are RW, except /system, which is Read-only.
Is it possibly ?

gsms said:
All partitions in Nook are RW, except /system, which is Read-only.
Is it possibly ?
Click to expand...
Click to collapse
I think that's unwise for a number of reasons. In fact, I don't think it will let you do it. From what I remember that last time I forgot to change it back to RO after working on something I ended up in a boot loop.

nmyshkin said:
I think that's unwise for a number of reasons. In fact, I don't think it will let you do it.
...
Click to expand...
Click to collapse
It is indeed very unwise -- but nevertheless possible to have /system always mounted as rw by editing the boot-up initialization script file /init.rc and commenting out the second line of the two lines # 58-59:
Code:
mount ext2 /dev/block/mmcblk0p5 /system
# mount ext2 /dev/block/mmcblk0p5 /system ro remount

digixmax said:
It is indeed very unwise -- but nevertheless possible to have /system always mounted as rw by editing the boot-up initialization script file /init.rc and commenting out the second line of the two lines # 58-59:
Code:
mount ext2 /dev/block/mmcblk0p5 /system
# mount ext2 /dev/block/mmcblk0p5 /system ro remount
Click to expand...
Click to collapse
Please, could you tell me where to find the file "init.rc" ?
So in fact i only have to edit 1st row to 2nd row, right ?

gsms said:
Please, could you tell me where to find the file "init.rc" ?
Click to expand...
Click to collapse
The init.rc file is located at the root directory ("/").
So in fact i only have to edit 1st row to 2nd row, right ?
Click to expand...
Click to collapse
You'd need to comment out line #59
Code:
mount ext2 /dev/block/mmcblk0p5 /system ro remount
by inserting "#" at the beginning of that line
Code:
# mount ext2 /dev/block/mmcblk0p5 /system ro remount
to keep the device from remounting /system as ro.
Be warned: if you corrupt this init.rc file your NST will not boot or function properly.

It doesn't work at all.
I've changed that line, saved the file and restarted.
Afterthat the /system is read-only again and the file init.rc is the original one!

digixmax said:
The init.rc file is located at the root directory ("/").
Click to expand...
Click to collapse
Not really. The extracted copy of init.rc is in the root directory.
The actual init.rc is packed in the ramdisk.
Depending on which device you have, the ramdisk could be a file or packed in an image with the kernel.

Renate NST said:
Not really. The extracted copy of init.rc is in the root directory.
The actual init.rc is packed in the ramdisk.
Depending on which device you have, the ramdisk could be a file or packed in an image with the kernel.
Click to expand...
Click to collapse
How exactly to modify init.rc inside ramdisk, using bootutil.exe ?
Iam with (rooted) NST firmware 1.2.1

Related

Damn you Samsung

The new JI6
from init.rc
Code:
mount rfs /dev/block/stl9 /system [b]ro[/b] check=no remount
I guess I can remount it read-write
Hmm? I didn't have a problem using Titan to remove the bloat.
lqaddict said:
The new JI6
from init.rc
Code:
mount rfs /dev/block/stl9 /system [b]ro[/b] check=no remount
I guess I can remount it read-write
Click to expand...
Click to collapse
Noticed that gem right away. sobs
Where does one change it?
I modified the statement, but after each reboot, it's back again.(duh, it's in memory!)
I guess one have to update init.rc in the image somehow......ideas?
Yeah, I'm not liking this.

[HOWTO] Loop mount

OK, I spent a couple of hours figuring out how loop mounting works. The problem is that the mount command in both toolbox and busybox supports only one loop device. I modified the toolbox version to allow the specification of a new loop device.
Here is how to make a 500mb loop-mounted ext2 system at /mnt/myloop , with the system being stored in /storage/sdcard/myext2system.img
Step 1. Make sure you have root. Download bettermount*.zip to your PC from here. Copy the "bettermount" file from the zip file to /data/local/ (or some other location). One way of doing that is with:
Code:
adb push bettermount /data/local
on the PC. Or you can mount your device to USB, copy bettermount to storage, and then in a root shell copy it to /data/local. Or if you have RW root, you can install bettermount in /bin or some other convenient location.
Start a shell on the device, either via adb or an on-device terminal (not recommended unless you have an external keyboard). Switch to root:
Code:
su
Then make bettermount executable:
Code:
chmod 755 /data/local/bettermount
The following steps assume you're still in your root shell.
Step 2. Create ext2 file system in a file. (Skip this if you already have one.)
Code:
dd if=/dev/zero of=/storage/sdcard/myext2system.img bs=1M count=500
mke2fs /storage/sdcard/myext2system.img
mke2fs will give you a warning that this isn't a block special device, but just press "y" and "enter".
Step 3. Create a loop device node for the ext2 file system. The problem here is that the OS uses loop device nodes for apps moved to external storage and one for the system squashfs, and it only has enough loop device nodes for those purposes--any loop device nodes in /dev/block are already in use. On the assumption that you aren't going to have more than 253 apps moved to storage, we're going to create a loop device node numbered 255. If you like, you can check that there isn't already one with that number with
Code:
ls /dev/block/loop*
So, let's create the loop device node:
Code:
mknod -m640 /dev/block/loop255 b 7 255
Step 4. Create a mount point:
Code:
mkdir /mnt/myloop
Step 5. Mount myext2filesystem.img:
Code:
/data/local/bettermount -t ext2 -orw,exec,noatime,nodiratime,sync,loop=/dev/block/loop255 /storage/sdcard/myext2system.img /mnt/myloop
Enjoy your new file system at /mnt/myloop !
You will have to repeat Steps 3-5 after every boot, or else you can make a script that runs every time you boot. You could simply put the commands for 3-5 into a Script Manager script set to run on boot, or there may be some better, more unixy way (but I haven't had any luck editing startup scripts).
What to do with your shiny new filesystem? Well, you could move not just apps but also their libraries to external storage (you can also do that by remounting your external storage in exec mode).
arpruss said:
OK, I spent a couple of hours figuring out how loop mounting works. The problem is that the mount command in both toolbox and busybox supports only one loop device. I modified the toolbox version to allow the specification of a new loop device.
Here is how to make a 500mb loop-mounted ext2 system at /mnt/myloop , with the system being stored in /storage/sdcard/myext2system.img
Step 1. Make sure you have root. Download bettermount*.zip to your PC from here. Copy the "bettermount" file from the zip file to /data/local/ (or some other location). One way of doing that is with:
Code:
adb push bettermount /data/local
on the PC. Or you can mount your device to USB, copy bettermount to storage, and then in a root shell copy it to /data/local. Or if you have RW root, you can install bettermount in /bin or some other convenient location.
Start a shell on the device, either via adb or an on-device terminal (not recommended unless you have an external keyboard). Switch to root:
Code:
su
Then make bettermount executable:
Code:
chmod 755 /data/local/bettermount
The following steps assume you're still in your root shell.
Step 2. Create ext2 file system in a file. (Skip this if you already have one.)
Code:
dd if=/dev/zero of=/storage/sdcard/myext2system.img bs=1M count=500
mke2fs /storage/sdcard/myext2system.img
mke2fs will give you a warning that this isn't a block special device, but just press "y" and "enter".
Step 3. Create a loop device node for the ext2 file system. The problem here is that the OS uses loop device nodes for apps moved to external storage and one for the system squashfs, and it only has enough loop device nodes for those purposes--any loop device nodes in /dev/block are already in use. On the assumption that you aren't going to have more than 253 apps moved to storage, we're going to create a loop device node numbered 255. If you like, you can check that there isn't already one with that number with
Code:
ls /dev/block/loop*
So, let's create the loop device node:
Code:
mknod -m640 /dev/block/loop255 b 7 255
Step 4. Create a mount point:
Code:
mkdir /mnt/myloop
Step 5. Mount myext2filesystem.img:
Code:
/data/local/bettermount -t ext2 -orw,exec,noatime,nodiratime,sync,loop=/dev/block/loop255 /storage/sdcard/myext2filesystem.img /mnt/myloop
Enjoy your new file system at /mnt/myloop !
You will have to repeat Steps 3-5 after every boot, or else you can make a script that runs every time you boot. You could simply put the commands for 3-5 into a Script Manager script set to run on boot, or there may be some better, more unixy way (but I haven't had any luck editing startup scripts).
What to do with your shiny new filesystem? Well, you could move not just apps but also their libraries to external storage (you can also do that by remounting your external storage in exec mode).
Click to expand...
Click to collapse
Which version of busybox were you testing with? I haven't had a problem with multiple loop devices...
I've been using the stock busybox: 1.7.2.
Do you use -oloop=/dev/block/loopNN to specify the device?
I just tried 1.16.0 from the Titanium Backup website. No luck. I created /dev/block/loop222. Then:
Code:
# /tmp/busybox mount -t ext2 -oloop=/dev/block/loop222 /storage/10.img /mnt/myloop
mount: can't setup loop device: No such file or directory
# bettermount -t ext2 -oloop=/dev/block/loop222 /storage/10.img /mnt/myloop
# (works!)
I also tried just plain -oloop, without the =/dev/block/loop222, and it didn't work.
arpruss said:
I've been using the stock busybox: 1.7.2.
Do you use -oloop=/dev/block/loopNN to specify the device?
I just tried 1.16.0 from the Titanium Backup website. No luck. I created /dev/block/loop222. Then:
Code:
# /tmp/busybox mount -t ext2 -oloop=/dev/block/loop222 /storage/10.img /mnt/myloop
mount: can't setup loop device: No such file or directory
# bettermount -t ext2 -oloop=/dev/block/loop222 /storage/10.img /mnt/myloop
# (works!)
I also tried just plain -oloop, without the =/dev/block/loop222, and it didn't work.
Click to expand...
Click to collapse
I can't remember if mount was symlinked to busybox at the time, but I just used the standard "mount -o loop disk1.img /mnt/disk". I may have even been on a custom kernel and had a crosscompiled mount, so good work, this is probably going to be a common problem for people.
The problem with busybox seems to be that it thinks /dev/block/loop0 is free, but it's not. Doing losetup -f returns /dev/block/loop0.
If you could mount the loopdevice in init.rc this would be the easiest way to expand the 300MB /data problem with archos.
Also it might be the best way in CM7 until its stable for the persistent Data between revisions.
fzelle said:
If you could mount the loopdevice in init.rc this would be the easiest way to expand the 300MB /data problem with archos.
Also it might be the best way in CM7 until its stable for the persistent Data between revisions.
Click to expand...
Click to collapse
I have had no luck adding anything to init.rc with the rw root.
Moreover, /storage and /storage/sdcard get mounted quite late in the boot process--late enough that I think one can't just move the /data directory there. I suppose one might be able to mount them earlier in the process, but I haven't been able to figure out how to run anything in an init script. If anybody knows how to do it, please speak up!
What one could do, however, is mount the loop from an app's on-boot notification, and then symlink individual app files.
It looks like with a better busybox than the one included with the device, one can also use losetup to specify the loop device--see here.
I built a full 1.18.5 version of Busybox, and it does loop mounting just right. You can replace Step 1 of my HOWTO with fetching my modified busybox and putting it in /data/local, from http://code.google.com/p/busybox-for-android/downloads/list
Then step 3 is not needed.
Step 4 should be replaceable with the very simple:
Code:
/data/local/busybox mount -orw,exec,noatime,nodiratime,sync,loop /storage/sdcard/myext2system.img /mnt/myloop
Or if you're pressed for time, and want to use default mount options:
Code:
/data/local/busybox mount -oloop /storage/sdcard/myext2system.img /mnt/myloop
But if you want to implement this is inside an app, depending on your license needs, you may want to use the longer method, since busybox is GPL while bettermount is Apache 2.

[Q] Mounting & Changing Permissions Using Terminal Emulator on Android Phone

How to properly MOUNT the system so I can change its permission? (USING TERMINAL EMULATOR)
I know the first command for it (mount) (I dont know what command follows)
Because I need to first mount the system before changing permissions.
How to change permissions for a system app (for example SystemUI.apk)? After doing some changes into my SystemUI.apk, I push it into my system and it has different permissions.
I want to change its permission into rw-r--r
In the emulator:
Code:
$ su
# mount -o remount,rw /system
# chmod 0644 /system/app/SystemUI.apk
or:
Code:
$ su
# cd system/app
# mount -o remount,rw /system
# chmod 0644 SystemUI.apk
- What does the "0" in 0644 stands for?
Can you elaborate how that mount works so I can properly use it.
mount -o (what this for) remount (and this) ,rw (this also) /system(its the directory, the one I understand)
klmiciano said:
- What does the "0" in 0644 stands for?
Can you elaborate how that mount works so I can properly use it.
mount -o (what this for) remount (and this) ,rw (this also) /system(its the directory, the one I understand)
Click to expand...
Click to collapse
Permissions for system files go beyond simply rw-r-r. Since Android is essentially Linux, Linux permissions do exist in Android. Alongside the Owner, Group and Other permissions, of which you set rw, r and r respectively, special permissions which are the Sticky bit, GID and UID exist as well. However, since these special permissions are not required for the functioning of Android, the 0 in 0644 is to disable all three of them.
-o in mount is essentially a flag. Flags are options to obtain different outcomes for each command. For example,
Code:
ls -s
not only lists the files in the current directory, but also lists the files' sizes in kB. I am not sure about -o in this case, however.
Remounting is required as your system is already a mounted filesystem, but as read-only (ro). Hence you have to remount it as read-write (rw), in order to change the properties of its files.
This is some good stuff. I need to learn more.
The last time I use the chmod command. I didn't include the '0'. I've only type
chmod 644 (blahblah)
Btw, Thank you for teaching me this stuff.
More power.:laugh:
NightRaven49 said:
Permissions for system files go beyond simply rw-r-r. Since Android is essentially Linux, Linux permissions do exist in Android. Alongside the Owner, Group and Other permissions, of which you set rw, r and r respectively, special permissions which are the Sticky bit, GID and UID exist as well. However, since these special permissions are not required for the functioning of Android, the 0 in 0644 is to disable all three of them.
-o in mount is essentially a flag. Flags are options to obtain different outcomes for each command. For example,
Code:
ls -s
not only lists the files in the current directory, but also lists the files' sizes in kB. I am not sure about -o in this case, however.
Remounting is required as your system is already a mounted filesystem, but as read-only (ro). Hence you have to remount it as read-write (rw), in order to change the properties of its files.
Click to expand...
Click to collapse
This guide probably helped me as well

Unable to mount System as rw in 7.1.1 DP

I am trying to create an overlay folder under /system/vendor so that I can throw a layers apk there to hide the nav bar. I am currently using the build.prop method which doesn't work nicely with the Now on Tap action of Swipe Navigation which is what I am ultimately trying to fix.
I tried using Solid Explorer to simply create the new directory like I did previously in 7.0 and 6.x but was unable to do so (action failed). I decided to try using the terminal and create the folder and move files from there but got the message that the system was read-only. I then attempted to mount system a few different ways all of which failed. I did use su before entering these commands.
Code:
angler:/system/vendor $ mkdir overlay
mkdir: 'overlay': Read-only file system
angler:/system/vendor $ mount -o rw,remount,rw /system
mount: '/dev/block/platform/soc.0/f9824900.sdhci/by-name/system' not user mountable in fstab
angler:/system/vendor $ /system/bin/mount -o rw,remount,rw /system /system
mount: '/system' not in /proc/mounts
angler:/system/vendor $ /system/bin/mount /system
mount: bad /etc/fstab: No such file or directory
Googling around didn't yield much in the way of solutions other than these different methods of mounting system. Am I just unable to mount system as rw in 7.1.1 currently, and if so, is there another way to accomplish what I want?
I'm trying to find thread I read this from, so if I find it I'll post link to it. When I was on early 7 previews that was set up with systemless root I went into twrp and then went to terminal and typed the following, touch su. When your in terminal cd to both bin and xbin and type command "touch su" without quotes. Then reboot and you should be able to use something like es file explorer to get into and write in /system. Hope that helps.
Found it, look to post = 15
http://forum.xda-developers.com/nexus-6p/help/es-file-explorer-doesnt-understand-t3242775
Unfortunately that did not end up working for me, thanks for looking up the link for me though!
On Nougat the rw mount command should be typed like this:
mount -o rw,remount /system
then for touch:
touch sbin/su
Thank you blitz for clarifying.
Hmm... it seems like the mount worked but the touch did not. I ended up using just "touch su" but ran into a different error with mkdir. I think I may just be out of luck for now. Thank you both for your help!
Code:
~ # mount -o rw,remount /system
~ # cd /system/bin
/system/bin # touch sbin/su
touch: sbin/su: No such file or directory
/system/bin # touch su
/system/bin # cd /system/xbin
/system/xbin # touch su
/system/xbin # cd /system/vendor
/vendor # mkdir overlay
mkdir: cannot create directory 'overlay': No space left on device
AbuShabanov said:
Hmm... it seems like the mount worked but the touch did not. I ended up using just "touch su" but ran into a different error with mkdir. I think I may just be out of luck for now. Thank you both for your help!
Code:
~ # mount -o rw,remount /system
~ # cd /system/bin
/system/bin # touch sbin/su
touch: sbin/su: No such file or directory
/system/bin # touch su
/system/bin # cd /system/xbin
/system/xbin # touch su
/system/xbin # cd /system/vendor
/vendor # mkdir overlay
mkdir: cannot create directory 'overlay': No space left on device
Click to expand...
Click to collapse
I'm not sure what you're trying to accomplish but still:
The touch sbin/su means creating an empty file called su in the sbin subdirectory under the current directory. So if there is no subdir named sbin under /system/bin, then it's not going to work
Secondly, you should know about the ls command: ls -la lists the files in the current directory, and remember than in unix and linux terminology, a directory is also a file so you'll also see directories (including current "." and parent "..")
Third, you should know about the df command which shows filesystem disk space usage. df -h will show you how much free space you have an all of your filesystems, including system.
Last, with great power comes great responsibilities. Running the wrong command as root will easily make your system unusable.
I have substratum installed and inside /system/vendor there is a link (again a file) called overlay which links to directory /system/overlay where apks are.
rchtk said:
I'm not sure what you're trying to accomplish
Click to expand...
Click to collapse
I am trying to create an overlay folder under /system/vendor so that I can throw a layers apk there to hide the nav bar.
rchtk said:
I have substratum installed and inside /system/vendor there is a link (again a file) called overlay which links to directory /system/overlay where apks are.
Click to expand...
Click to collapse
Are you on the 7.1.1 (NPF10C)? If so it sounds like you have accomplished what I am trying to do. I'm only familiar with the basic unix commands as I haven't actively used it in about 5 years. Would you mind sharing how to create the link to /system/overlay from /system/vendor, or does Substratum take care of that? Offhand it sounds like a symbolic link but my terminology is pretty rusty.
AbuShabanov said:
I am trying to create an overlay folder under /system/vendor so that I can throw a layers apk there to hide the nav bar.
Are you on the 7.1.1 (NPF10C)? If so it sounds like you have accomplished what I am trying to do. I'm only familiar with the basic unix commands as I haven't actively used it in about 5 years. Would you mind sharing how to create the link to /system/overlay from /system/vendor, or does Substratum take care of that? Offhand it sounds like a symbolic link but my terminology is pretty rusty.
Click to expand...
Click to collapse
Yes 7.1.1.
Substratum created the overlay directory and the link to it.
Manually that would be:
mount -o rw,remount -t auto /vendor
mount -o rw,remount -t auto /system
mkdir /system/overlay
cd /system/vendor
ln -s /system/overlay
mount -o ro,remount -t auto /vendor
mount -o ro,remount -t auto /system
But links do take a very small amount of bytes (roughly name and target) so for that, you'll need some space in your vendor partition (no space left on /vendor). check with "df".
I have 3.8MB free (that's an original vendor + overlay link)
rchtk said:
mount -o rw,remount -t auto /vendor
mount -o rw,remount -t auto /system
mkdir /system/overlay
cd /system/vendor
ln -s /system/overlay
mount -o ro,remount -t auto /vendor
mount -o ro,remount -t auto /system
Click to expand...
Click to collapse
Well, this works and I was able to mount system and vendor, create the link, move the apk file, etc but it appears that the apk itself is not working on NPF10C. Thank you for your help and the refresher on the unix commands!

System RW on Axon 7 US

I'm just having root from Magisk 13 on B25. I used ES File Explorer to convert some app into system app but /system doesn't give me rw permission. I keep change back to RO on my root explorer.
I diid terminal command and have this
mount -o remount,rw /system
mount: '/dev/block/bootdevice/by-name/system'->'/system': Device or resource busy
Click to expand...
Click to collapse
and this
mount | grep \system
/dev/block/sde13 on /system type ext4 (ro,seclabel,relatime,discard,data=ordered)
/dev/block/loop0 on /system/etc/hosts type ext4 (rw,seclabel,relatime,data=ordered)
Click to expand...
Click to collapse
I feel like the security doesn't let me change permission for system somehow.
Thanks in advanced!
NVm, i solved the issue. I haven't disable the write protection. I guess i need to do it after upgrade android.

Categories

Resources