`

解决Read-only file system

阅读更多
昨天由于更换控制器导致设备号又乱了。。修改fstab的时候却出现不能修改的问题,显示Read-only file system,搜索了一下找了个临时解决办法搞定了

1)
应急措施:
chmod 666 /dev/null
mount -o remount,rw /
 
2) 编辑/etc/fstab 然后重启

不明白

特意查了一下/dev/null是什么

引用


/dev/zero和/dev/null

使用/dev/null
把/dev/null看作"黑洞". 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到. 然而, /dev/null对命令行和脚本都非常的有用.

引用
禁止标准输出.   
1 cat $filename >/dev/null
2 # 文件内容丢失,而不会输出到标准输出.



引用

禁止标准错误 (来自例子 12-3).    1 rm $badname 2>/dev/null
   2 #           这样错误信息[标准错误]就被丢到太平洋去了.




引用
禁止标准输出和标准错误的输出.    1 cat $filename 2>/dev/null >/dev/null
   2 # 如果"$filename"不存在,将不会有任何错误信息提示.
   3 # 如果"$filename"存在, 文件的内容不会打印到标准输出.
   4 # 因此Therefore, 上面的代码根本不会输出任何信息.
   5 #
   6 #  当只想测试命令的退出码而不想有任何输出时非常有用。
   7 #
   8 #
   9 # cat $filename &>/dev/null
  10 #     也可以, 由 Baris Cicek 指出.




Deleting contents of a file, but preserving the file itself, with all attendant permissions (from Example 2-1 and Example 2-3):    1 cat /dev/null > /var/log/messages
   2 #  : > /var/log/messages   有同样的效果, 但不会产生新的进程.(因为:是内建的)
   3
   4 cat /dev/null > /var/log/wtmp



自动清空日志文件的内容 (特别适合处理这些由商业Web站点发送的讨厌的"cookies"):


--------------------------------------------------------------------------------

例子 28-1. 隐藏cookie而不再使用

   1 if [ -f ~/.netscape/cookies ]  # 如果存在则删除.
   2 then
   3   rm -f ~/.netscape/cookies
   4 fi
   5
   6 ln -s /dev/null ~/.netscape/cookies
   7 # 现在所有的cookies都会丢入黑洞而不会保存在磁盘上了.


--------------------------------------------------------------------------------

使用/dev/zero
像/dev/null一样, /dev/zero也是一个伪文件, 但它实际上产生连续不断的null的流(二进制的零流,而不是ASCII型的). 写入它的输出会丢失不见, 而从/dev/zero读出一连串的null也比较困难, 虽然这也能通过od或一个十六进制编辑器来做到. /dev/zero主要的用处是用来创建一个指定长度用于初始化的空文件,就像临时交换文件.


--------------------------------------------------------------------------------

例子 28-2. 用/dev/zero创建一个交换临时文件

   1 #!/bin/bash
   2 # 创建一个交换文件.
   3
   4 ROOT_UID=0         # Root 用户的 $UID 是 0.
   5 E_WRONG_USER=65    # 不是 root?
   6
   7 FILE=/swap
   8 BLOCKSIZE=1024
   9 MINBLOCKS=40
  10 SUCCESS=0
  11
  12
  13 # 这个脚本必须用root来运行.
  14 if [ "$UID" -ne "$ROOT_UID" ]
  15 then
  16   echo; echo "You must be root to run this script."; echo
  17   exit $E_WRONG_USER
  18 fi 
  19  
  20
  21 blocks=${1:-$MINBLOCKS}          #  如果命令行没有指定,
  22                                  #+ 则设置为默认的40块.
  23 # 上面这句等同如:
  24 # --------------------------------------------------
  25 # if [ -n "$1" ]
  26 # then
  27 #   blocks=$1
  28 # else
  29 #   blocks=$MINBLOCKS
  30 # fi
  31 # --------------------------------------------------
  32
  33
  34 if [ "$blocks" -lt $MINBLOCKS ]
  35 then
  36   blocks=$MINBLOCKS              # 最少要有 40 个块长.
  37 fi 
  38
  39
  40 echo "Creating swap file of size $blocks blocks (KB)."
  41 dd if=/dev/zero of=$FILE bs=$BLOCKSIZE count=$blocks  # 把零写入文件.
  42
  43 mkswap $FILE $blocks             # 将此文件建为交换文件(或称交换分区).
  44 swapon $FILE                     # 激活交换文件.
  45
  46 echo "Swap file created and activated."
  47
  48 exit $SUCCESS


--------------------------------------------------------------------------------

关于 /dev/zero 的另一个应用是为特定的目的而用零去填充一个指定大小的文件, 如挂载一个文件系统到环回设备 (loopback device) (参考例子 13-8) 或"安全地" 删除一个文件(参考例子 12-55).


--------------------------------------------------------------------------------

例子 28-3. 创建ramdisk

   1 #!/bin/bash
   2 # ramdisk.sh
   3
   4 #  "ramdisk"是系统RAM内存的一段,
   5 #+ 它可以被当成是一个文件系统来操作.
   6 #  它的优点是存取速度非常快 (包括读和写).
   7 #  缺点: 易失性, 当计算机重启或关机时会丢失数据.
   8 #+       会减少系统可用的RAM.
   9 #
  10 #  那么ramdisk有什么作用呢?
  11 #  保存一个较大的数据集在ramdisk, 比如一张表或字典,
  12 #+ 这样可以加速数据查询, 因为在内存里查找比在磁盘里查找快得多.
  13
  14
  15 E_NON_ROOT_USER=70             # 必须用root来运行.
  16 ROOTUSER_NAME=root
  17
  18 MOUNTPT=/mnt/ramdisk
  19 SIZE=2000                      # 2K 个块 (可以合适的做修改)
  20 BLOCKSIZE=1024                 # 每块有1K (1024 byte) 的大小
  21 DEVICE=/dev/ram0               # 第一个 ram 设备
  22
  23 username=`id -nu`
  24 if [ "$username" != "$ROOTUSER_NAME" ]
  25 then
  26   echo "Must be root to run \"`basename $0`\"."
  27   exit $E_NON_ROOT_USER
  28 fi
  29
  30 if [ ! -d "$MOUNTPT" ]         #  测试挂载点是否已经存在了,
  31 then                           #+ 如果这个脚本已经运行了好几次了就不会再建这个目录了
  32   mkdir $MOUNTPT               #+ 因为前面已经建立了.
  33 fi
  34
  35 dd if=/dev/zero of=$DEVICE count=$SIZE bs=$BLOCKSIZE  # 把RAM设备的内容用零填充.
  36                                                       # 为何需要这么做?
  37 mke2fs $DEVICE                 # 在RAM设备上创建一个ext2文件系统.
  38 mount $DEVICE $MOUNTPT         # 挂载设备.
  39 chmod 777 $MOUNTPT             # 使普通用户也可以存取这个ramdisk.
  40                                # 但是, 只能由root来缷载它.
  41
  42 echo "\"$MOUNTPT\" now available for use."
  43 # 现在 ramdisk 即使普通用户也可以用来存取文件了.
  44
  45 #  注意, ramdisk是易失的, 所以当计算机系统重启或关机时ramdisk里的内容会消失.
  46 #
  47 #  拷贝所有你想保存文件到一个常规的磁盘目录下.
  48
  49 # 重启之后, 运行这个脚本再次建立起一个 ramdisk.
  50 # 仅重新加载 /mnt/ramdisk 而没有其他的步骤将不会正确工作.
  51
  52 #  如果加以改进, 这个脚本可以放在 /etc/rc.d/rc.local,
  53 #+ 以使系统启动时能自动设立一个ramdisk.
  54 #  这样很合适速度要求高的数据库服务器.
  55
  56 exit 0


--------------------------------------------------------------------------------

最后值得一提的是, ELF二进制文件利用了/dev/zero.

来自:http://www.linuxsir.org/main/doc/abs/abs3.7cnhtm/zeros.html
分享到:
评论

相关推荐

    WAC启动Android模拟器 transfer error: Read-only file system错误解决方法

    ### 解决Read-only file system问题 **步骤1:修改文件系统属性** - 打开Android模拟器所在的目录,默认路径为`C:\Users\你的名称\.android`(这里的“你的名称”应替换为当前电脑用户的用户名)。 - 查看`....

    Xposed安装无法复制文件, 未激活解决方案

    Xposed安装无法复制文件的解决方案 Xposed是一个功能强大的Android模块化框架,允许用户安装和管理各种模块以增强Android系统的功能。然而,在安装Xposed时,有些用户可能会遇到无法复制文件的问题,特别是当需要将...

    rp2-pico-20230426-v1.20.0.uf2

    rp2-pico-20230426-v1.20.0.uf2固件

    read_only_csv_terminal:只读linux和termux的csv bash文件

    read_only_csv_terminal 设定步骤下放仓库转到存储库文件chmod + x read_csv和install_dependendies文件bash read_csv --install_dependency或./read_csv --install_dependency来运行和下载所需的所有依赖项如何使用...

    LEDE_20200227.tar.gz

    title里也写了是啥,不懂的还是不要随便刷,我家的机器上还算稳定,wifi驱动是2月6号最新的了。 ... 自带试用正常的K-X-S-W、FRP、MiniUPnP 、miniDLNA、samba、transmission。 没试用的:Adbyby P+、上网时间控制、...

    FiddlerRoot.cer

    在设置fiddler进行HTTPS抓包时,需要配置信任根证书,按照指引一步步操作,系统会提示“无法将Windows配置为信任fiddler根证书”, 这时使用该证书即可

    Unity文档操作使用的NPOI库文件

    FileStream stream = new FileStream(filePath, FileMode.Create); workbook.Write(stream); stream.Close(); } ``` 4. **运行与调试**:在Unity编辑器或构建后的游戏中,你可以调用这些方法来读写Excel文件,...

    adb shell命令.txt

    adb shell命令.txt

    GT928 驱动

    在IT行业中,驱动程序是操作系统与硬件设备之间的重要桥梁,它们负责协调和管理硬件设备的运作,确保系统能正确地识别和使用硬件功能。本文将深入探讨GT928触摸屏在Android内核中的驱动实现,以及相关源代码文件的...

    Android代码-AppInfo

    AppInfoCollection 一款监视前台应用,性能状况,并且记录以便导入 Excel 中形成可视化...注4: 如果 adb push 的时候提示 Read-only file system 输入 adb remount 然后再重新 push 即可 注5: 记得给 app 悬浮窗权限

    基于http构建yum网络源 和‘/mnt/packages/*’: No such file or directory问题?

    挂载光盘镜像文件到 /mnt mount /dev/cdrom /mnt/ 复制 /mnt/Packages目录下的所有...3.使用createrepo创建本地源 yum install createrepo * -y ...createrepo centos/ ...yum install httpd httpd-devel-y useradd apach

    HG8245系列修改hw_boardinfo.xml后变砖的救砖方.pdf

    为了解决这个问题,我们需要通过 TTL 接口来恢复设备的正常工作状态。 首先,我们需要准备 TTL 连线工具,正确连接顺序是:1-TXD、2-空、3-空、4-GND、5-RXD。确保这些连接正确无误,因为这是与光猫通信的关键。 ...

    EROFSACompression-friendlyReadonlyFi.zip

    标题“EROFSACompression-friendlyReadonlyFi.zip”和描述“EROFSACompression-friendlyReadonlyFile”暗示了我们讨论的主题是关于一种名为EROFS(Extended Read-Only File System,扩展只读文件系统)的技术,它...

    crud-file-server:基本文件服务器,支持创建,读取,更新和删除

    -r read only -v virtual path to host the file server on 例子: crud-file-server -f c:/ -p 8080 -q -v filez 支持的运营 GET以正确的mime类型返回文件的内容,否则以html形式返回目录的内容。 GET 内容格式...

    Android 用Shell命令设置静态ip

    cd /system/etc ``` 3. 备份原文件: 在修改系统配置前,建议先备份原始文件,以防出现问题可以恢复: ``` cp ip.txt ip.txt.bak ``` 4. 编辑`ip.txt`文件: 使用文本编辑器(如`vi`或`nano`)打开`ip.txt`...

    RAM模拟U盘_Stm301003ZE芯片

    参考圈圈的USB代码,自己在STM32上修改的假U盘(红牛开发板). 也请大家帮忙指点一下,为什么这个U盘在windows下读写没问题,在安卓下只能写一次,然后就提示 read-only file system.

    JavaFX_SqliteDB:与SQLite数据库集成

    JavaFX_SqliteDB 与SQLite数据库集成 这是一个简单的应用程序,它: 创建一个SQLite数据库 使用javabeans 扩展菜单 SQL查询:preparedstatement 枚举 XML文件 下载正在运行的应用程序的副本: ...

    install_adb.sh

    在Android6.0 (Android M)userdebug版本上(eng版本不存在该问题),发现使用adb remount 系统之后,还是不能对system分区进行操作,提示没有写权限,为只读文件系统Read-only file system,此adb脚本能解决此问题 ...

Global site tag (gtag.js) - Google Analytics