关于分区管理的几个命令modprobe, mtdpart, nandwrite, rmmod

最近在调试鸿蒙的qemu项目,对于鸿蒙官方给出的qemu构建指导,对一些疑点做了些了解,记录下来避免后续反复产生疑问。

sudo modprobe mtdram total_size=65536 erase_size=256
sudo mtdpart add /dev/mtd0 kernel 0 10223616
sudo mtdpart add /dev/mtd0 kernel 10223616 10485760
sudo mtdpart add /dev/mtd0 root 10485760 56623104
sudo nandwrite -p /dev/mtd1 out/qemu_arm_virt_ca7/OHOS_Image.bin
echo -e “bootargs=root=cfi-flash fstype=jffs2 rootaddr=0xA00000 rootsize=27M\x0” | sudo nandwrite -p /dev/mtd2 -
sudo nandwrite -p /dev/mtd3 out/qemu_arm_virt_ca7/rootfs_jffs2.img
sudo dd if=/dev/mtd0 of=flash.img
sudo chown USERNAME flash.img
sudo rmmod mtdram

以上摘自Qemu ARM Virt 教程
对于modprobe, mtdpart, nandwrite, rmmod四个命令的解释:

modprobe

maguangyao@ubuntu-15:~/workspace/code$ modprobe --help
Usage:
        modprobe [options] [-i] [-b] modulename
        modprobe [options] -a [-i] [-b] modulename [modulename...]
        modprobe [options] -r [-i] modulename
        modprobe [options] -r -a [-i] modulename [modulename...]
        modprobe [options] -c
        modprobe [options] --dump-modversions filename
Management Options:
        -a, --all                   Consider every non-argument to
                                    be a module name to be inserted
                                    or removed (-r)
        -r, --remove                Remove modules instead of inserting
            --remove-dependencies   Also remove modules depending on it
        -R, --resolve-alias         Only lookup and print alias and exit
            --first-time            Fail if module already inserted or removed
        -i, --ignore-install        Ignore install commands
        -i, --ignore-remove         Ignore remove commands
        -b, --use-blacklist         Apply blacklist to resolved alias.
        -f, --force                 Force module insertion or removal.
                                    implies --force-modversions and
                                    --force-vermagic
            --force-modversion      Ignore module's version
            --force-vermagic        Ignore module's version magic

Query Options:
        -D, --show-depends          Only print module dependencies and exit
        -c, --showconfig            Print out known configuration and exit
        -c, --show-config           Same as --showconfig
            --show-modversions      Dump module symbol version and exit
            --dump-modversions      Same as --show-modversions

General Options:
        -n, --dry-run               Do not execute operations, just print out
        -n, --show                  Same as --dry-run
        -C, --config=FILE           Use FILE instead of default search paths
        -d, --dirname=DIR           Use DIR as filesystem root for /lib/modules
        -S, --set-version=VERSION   Use VERSION instead of `uname -r`
        -s, --syslog                print to syslog, not stderr
        -q, --quiet                 disable messages
        -v, --verbose               enables more messages
        -V, --version               show version
        -h, --help                  show this help

modprobe用来加载内核模块,如mtdram模块。mtdram模块加载完成后,会生成一个mtd设备/dev/mtd0

mtdpart

maguangyao@ubuntu-15:~/workspace/code$ mtdpart --help
Usage: mtdpart add [OPTION] <MTD_DEVICE> <PART_NAME> <START> <SIZE>
       mtdpart del [OPTION] <MTD_DEVICE> <PART_NUMBER>
Adds a partition to an MTD device, or remove an existing partition from it.

  -h, --help    Display this help and exit
      --version Output version information and exit

START location and SIZE of the partition are in bytes. They should align on
eraseblock size.

mtdpart用于给mtd设备添加分区或者删除分区。add的情况下,生成的/dev/mtd1,/dev/mtd2…

nandwrite

maguangyao@ubuntu-15:~/workspace/code$ nandwrite --help
Usage: nandwrite [OPTION] MTD_DEVICE [INPUTFILE|-]
Writes to the specified MTD device.

  -a, --autoplace         Use auto OOB layout
  -m, --markbad           Mark blocks bad if write fails
  -n, --noecc             Write without ecc
  -N, --noskipbad         Write without bad block skipping
  -o, --oob               Input contains oob data
  -O, --onlyoob           Input contains oob data and only write the oob part
  -s addr, --start=addr   Set output start address (default is 0)
  -p, --pad               Pad writes to page size
  -b, --blockalign=1|2|4  Set multiple of eraseblocks to align to
      --input-skip=length Skip |length| bytes of the input file
      --input-size=length Only read |length| bytes of the input file
  -q, --quiet             Don't display progress messages
  -h, --help              Display this help and exit
      --version           Output version information and exit

写分区,可以是上述添加分区后的设备名,如/dev/mtd1。

rmmod

maguangyao@ubuntu-15:~/workspace/code$ rmmod --help
Usage:
        rmmod [options] modulename ...
Options:
        -f, --force       forces a module unload and may crash your
                          machine. This requires Forced Module Removal
                          option in your kernel. DANGEROUS
        -s, --syslog      print to syslog, not stderr
        -v, --verbose     enables more messages
        -V, --version     show version
        -h, --help        show this help

删除内核模块,如mtdram,同时删除/dev/mtd0及其范围内的所有分区。


版权声明:本文为weixin_51921646原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。