精华内容
下载资源
问答
  • 对U盘、SD卡、硬盘、操作的时候,需要对设备热拔插以及设备自动挂载自动卸载进行处理。有些时候我们需要对设备名进行固定,比如:SD卡卡槽1插入的设备固定它的设备名为sd_card1。 设备插入时将sd_card1的各个分区...

        对U盘、SD卡、硬盘、操作的时候,需要对设备热拔插以及设备自动挂载自动卸载进行处理。有些时候我们需要对设备名进行固定,比如:SD卡卡槽1插入的设备固定它的设备名为sd_card1。 设备插入时将sd_card1的各个分区自动挂载固定的目录上去,设备拔出的时候又可自动的卸载之前的挂载信息。这些需求在linux2.6以后的系统都可以通过udev来处理。udev的详细介绍可以上维基百科查看:https://zh.wikipedia.org/wiki/Udev 下面介绍udev的具体使用    

        说明:以下内容根据我嵌入式设备实际测试得来,仅供参考。

    (一)查看设备信息:
        操作udev,可以使用udevadm命令,如果我们要查看/dev/sda 设备节点信息,我们可以使用下面命令:
        命令:udevadm info -a  --name=sda
    信息结果:

    ~ # udevadm info -a  --name=sda
    Udevadm info starts with the device specified by the devpath and then
    walks up the chain of parent devices. It prints for every device
    found, all possible attributes in the udev rules key format.
    A rule to match, can be composed by the attributes of the device
    and the attributes from one single parent device.
    
      looking at device '/devices/platform/ahci.0/ata1/host0/target0:0:0/0:0:0:0/block/sda':
        KERNEL=="sda"
        SUBSYSTEM=="block"
        DRIVER==""
        ATTR{ro}=="0"
        ATTR{size}=="976773168"
        ATTR{stat}=="     601        0      797     2680        0        0        0        0        0      560     2680"
        ATTR{range}=="16"
        ATTR{discard_alignment}=="0"
        ATTR{events}==""
        ATTR{ext_range}=="256"
        ATTR{events_poll_msecs}=="-1"
        ATTR{alignment_offset}=="0"
        ATTR{inflight}=="       0        0"
        ATTR{removable}=="0"
        ATTR{capability}=="d0"
        ATTR{events_async}==""
    
      looking at parent device '/devices/platform/ahci.0/ata1/host0/target0:0:0/0:0:0:0':
        KERNELS=="0:0:0:0"
        SUBSYSTEMS=="scsi"
        DRIVERS=="sd"
        ATTRS{rev}=="MC10"
        ATTRS{type}=="0"
        ATTRS{scsi_level}=="6"
        ATTRS{model}=="TOSHIBA MK5061GS"
        ATTRS{state}=="running"
        ATTRS{unload_heads}=="0"
        ATTRS{queue_type}=="simple"
        ATTRS{modalias}=="scsi:t-0x00"
        ATTRS{iodone_cnt}=="0x281"
        ATTRS{iorequest_cnt}=="0x281"
        ATTRS{queue_ramp_up_period}=="120000"
        ATTRS{timeout}=="30"
        ATTRS{evt_media_change}=="0"
        ATTRS{ioerr_cnt}=="0x0"
        ATTRS{queue_depth}=="31"
        ATTRS{vendor}=="ATA     "
        ATTRS{device_blocked}=="0"
        ATTRS{iocounterbits}=="32"
    
      looking at parent device '/devices/platform/ahci.0/ata1/host0/target0:0:0':
        KERNELS=="target0:0:0"
        SUBSYSTEMS=="scsi"
        DRIVERS==""
    
      looking at parent device '/devices/platform/ahci.0/ata1/host0':
        KERNELS=="host0"
        SUBSYSTEMS=="scsi"
        DRIVERS==""
    
      looking at parent device '/devices/platform/ahci.0/ata1':
        KERNELS=="ata1"
        SUBSYSTEMS==""
        DRIVERS==""
    
      looking at parent device '/devices/platform/ahci.0':
        KERNELS=="ahci.0"
        SUBSYSTEMS=="platform"
        DRIVERS=="ahci"
        ATTRS{modalias}=="platform:ahci"
    
      looking at parent device '/devices/platform':
        KERNELS=="platform"
        SUBSYSTEMS==""
        DRIVERS==""
    ~ # 

     这里对上面的几个常用做说明
    匹配键:"==","!="
    赋值键:"=","+=",":=
    KERNEL - 匹配设备的内核名字
    SUBSYSTEM - 匹配设备的子系统
    DRIVER - 匹配设备驱动名
    NAME - 应当被采用为设备节点的名字

    SYMLINK - 一系列被作为设备节点替补名字的符号链接

    (二)固定设备节点名字
        对于可热拔插的设备,比如说U盘,SD卡,最开始插入的设备设备节点名是sda,接着是sdb,也就是说只从dev下面的设备节点名是不能区分我们插入的是那个设备,这时我们可以通过udev 将设备节点与设备绑定,方法就是通过内核名字建立连接,连接到设备节点上。
    目录结构如下:

    /etc/udev # pwd
    /etc/udev
    /etc/udev # tree
    .
    ├── rules.d
    │   └── 99-mount.rules
    │   └── 01-rename.rules
    └── udev.conf	
    	

     udev.conf

    # udev.conf
    # The initial syslog(3) priority: "err", "info", "debug" or its
    # state can be changed with: "udevcontrol log_priority=<value>".
    udev_root="/dev/"
    udev_rules="/etc/udev/rules.d"
    udev_log="err"

    01-rename.rules

    KERNEL=="*", OWNER="root" GROUP="root", MODE="0600"
    #################################
    #SD Card Device
    #################################
    KERNELS=="1-2.3",KERNEL=="sd*",SYMLINK+="usbsda%n",OPTIONS="ignore_remove"
    KERNELS=="1-2.4",KERNEL=="sd*",SYMLINK+="usbsdb%n",OPTIONS="ignore_remove"
    KERNELS=="1-2.2",KERNEL=="sd*",SYMLINK+="usbsdc%n",OPTIONS="ignore_remove"
    
    ################################
    #USB Device
    ################################
    KERNELS=="1-2.1",KERNEL=="sd*",SYMLINK+="usbmmc%n",OPTIONS="ignore_remove"
    
    ################################
    #DISK Device
    ################################
    KERNELS=="host0",KERNEL=="sd*",SYMLINK+="disksda%n",OPTIONS="ignore_remove"
    
    KERNEL=="ttyUSB*",ATTRS{bInterfaceNumber}=="00",SYMLINK+="ttyCOM0",OPTIONS="ignore_remove"
    KERNEL=="ttyUSB*",ATTRS{bInterfaceNumber}=="01",SYMLINK+="ttyCOM1",OPTIONS="ignore_remove"
    KERNEL=="ttyUSB*",ATTRS{bInterfaceNumber}=="02",SYMLINK+="ttyCOM2",OPTIONS="ignore_remove"
    KERNEL=="ttyUSB*",ATTRS{bInterfaceNumber}=="03",SYMLINK+="ttyCOM3",OPTIONS="ignore_remove"
    
    KERNEL=="ttyUSB*",ATTRS{bInterfaceNumber}=="04",SYMLINK+="ttyCOM4",OPTIONS="ignore_remove"
    KERNEL=="ttyUSB*",ATTRS{bInterfaceNumber}=="05",SYMLINK+="ttyCOM5",OPTIONS="ignore_remove"
    KERNEL=="ttyUSB*",ATTRS{bInterfaceNumber}=="06",SYMLINK+="ttyCOM6",OPTIONS="ignore_remove"
    KERNEL=="ttyUSB*",ATTRS{bInterfaceNumber}=="07",SYMLINK+="ttyCOM7",OPTIONS="ignore_remove"

     插入SD卡,我们可以看到,设备节点被链接成固定的名字usbsda

    查看设备节点:

    brw-------    1 root     root        8,   1 Jul  8 00:22 sda1
    brw-------    1 root     root        8,   2 Jul  8 00:22 sda2
    brw-------    1 root     root        8,   3 Jul  8 00:22 sda3
    lrwxrwxrwx    1 root     root           4 Jul  8 00:22 usbsda1 -> sda1
    lrwxrwxrwx    1 root     root           4 Jul  8 00:22 usbsda2 -> sda2
    lrwxrwxrwx    1 root     root           4 Jul  8 00:22 usbsda3 -> sda3
    drwxr-xr-x    2 root     root          60 Jul  8 00:22 bsg
    brw-------    1 root     root        8,   0 Jul  8 00:22 sda
    crw-------    1 root     root       21,   0 Jul  8 00:22 sg0
    lrwxrwxrwx    1 root     root           3 Jul  8 00:22 usbsda -> sda

    (三)热拔插自动挂载,卸载

    自动挂载和自动卸载在99-mount.rules脚本中设置,这里设置了2个硬盘和2个SD卡设备的自动挂载,设计每个设备最大有18个分区并且将所有的分区都挂载上去。

    KERNEL=="*", OWNER="root" GROUP="root", MODE="0600"
    
    ##############################################
    #Disk A device
    ##############################################
    ACTION=="add",KERNELS=="1-1",RUN+="/bin/umount -l /opt/disk_sda_1",
    ACTION=="add",KERNELS=="1-1",RUN+="/bin/mkdir /opt/disk_sda_1",
    ACTION=="add",KERNELS=="1-1",RUN+="/bin/mount -t vfat -o rw,utf8=true,flush /dev/disksda1 /opt/disk_sda_1",OPTIONS="ignore_remove"
    ACTION=="remove",KERNELS=="1-1",RUN+="/bin/fuser -k /opt/disk_sda_1"
    ACTION=="remove",KERNELS=="1-1",RUN+="/bin/umount -l /opt/disk_sda_1"
    ACTION=="remove",KERNELS=="1-1",RUN+="/bin/rmdir /opt/disk_sda_1",OPTIONS="ignore_remove"
    
    ACTION=="add",KERNELS=="1-1",RUN+="/bin/umount -l /opt/disk_sda_2",
    ACTION=="add",KERNELS=="1-1",RUN+="/bin/mkdir /opt/disk_sda_2",
    ACTION=="add",KERNELS=="1-1",RUN+="/bin/mount -t vfat -o rw,utf8=true,flush /dev/disksda2 /opt/disk_sda_2",OPTIONS="ignore_remove"
    ACTION=="remove",KERNELS=="1-1",RUN+="/bin/fuser -k /opt/disk_sda_2"
    ACTION=="remove",KERNELS=="1-1",RUN+="/bin/umount -l /opt/disk_sda_2"
    ACTION=="remove",KERNELS=="1-1",RUN+="/bin/rmdir /opt/disk_sda_2",OPTIONS="ignore_remove"
    
    ACTION=="add",KERNELS=="1-1",RUN+="/bin/umount -l /opt/disk_sda_3",
    ACTION=="add",KERNELS=="1-1",RUN+="/bin/mkdir /opt/disk_sda_3",
    ACTION=="add",KERNELS=="1-1",RUN+="/bin/mount -t vfat -o rw,utf8=true,flush /dev/disksda3 /opt/disk_sda_3",OPTIONS="ignore_remove"
    ACTION=="remove",KERNELS=="1-1",RUN+="/bin/fuser -k /opt/disk_sda_3"
    ACTION=="remove",KERNELS=="1-1",RUN+="/bin/umount -l /opt/disk_sda_3"
    ACTION=="remove",KERNELS=="1-1",RUN+="/bin/rmdir /opt/disk_sda_3",OPTIONS="ignore_remove"
    
    ACTION=="add",KERNELS=="1-1",RUN+="/bin/umount -l /opt/disk_sda_4",
    ACTION=="add",KERNELS=="1-1",RUN+="/bin/mkdir /opt/disk_sda_4",
    ACTION=="add",KERNELS=="1-1",RUN+="/bin/mount -t vfat -o rw,utf8=true,flush /dev/disksda4 /opt/disk_sda_4",OPTIONS="ignore_remove"
    ACTION=="remove",KERNELS=="1-1",RUN+="/bin/fuser -k /opt/disk_sda_4"
    ACTION=="remove",KERNELS=="1-1",RUN+="/bin/umount -l /opt/disk_sda_4"
    ACTION=="remove",KERNELS=="1-1",RUN+="/bin/rmdir /opt/disk_sda_4",OPTIONS="ignore_remove"
    
    
    
    ##############################################
    #SD Card Device
    ##############################################
    ACTION=="add",KERNELS=="1-2.3",RUN+="/bin/umount -l /opt/usb_sd1_1",
    ACTION=="add",KERNELS=="1-2.3",RUN+="/bin/mkdir /opt/usb_sd1_1",
    ACTION=="add",KERNELS=="1-2.3",RUN+="/bin/mount -t vfat -o rw,utf8=true,flush /dev/usbsda1 /opt/usb_sd1_1",OPTIONS="ignore_remove"
    ACTION=="remove",KERNELS=="1-2.3",RUN+="/bin/fuser -k /opt/usb_sd1_1"
    ACTION=="remove",KERNELS=="1-2.3",RUN+="/bin/umount -l /opt/usb_sd1_1"
    ACTION=="remove",KERNELS=="1-2.3",RUN+="/bin/rmdir /opt/usb_sd1_1",OPTIONS="ignore_remove"
    
    ACTION=="add",KERNELS=="1-2.3",RUN+="/bin/umount -l /opt/usb_sd1_2",
    ACTION=="add",KERNELS=="1-2.3",RUN+="/bin/mkdir /opt/usb_sd1_2",
    ACTION=="add",KERNELS=="1-2.3",RUN+="/bin/mount -t vfat -o rw,utf8=true,flush /dev/usbsda2 /opt/usb_sd1_2",OPTIONS="ignore_remove"
    ACTION=="remove",KERNELS=="1-2.3",RUN+="/bin/fuser -k /opt/usb_sd1_2"
    ACTION=="remove",KERNELS=="1-2.3",RUN+="/bin/umount -l /opt/usb_sd1_2"
    ACTION=="remove",KERNELS=="1-2.3",RUN+="/bin/rmdir /opt/usb_sd1_2",OPTIONS="ignore_remove"
    
    ACTION=="add",KERNELS=="1-2.3",RUN+="/bin/umount -l /opt/usb_sd1_3",
    ACTION=="add",KERNELS=="1-2.3",RUN+="/bin/mkdir /opt/usb_sd1_3",
    ACTION=="add",KERNELS=="1-2.3",RUN+="/bin/mount -t vfat -o rw,utf8=true,flush /dev/usbsda3 /opt/usb_sd1_3",OPTIONS="ignore_remove"
    ACTION=="remove",KERNELS=="1-2.3",RUN+="/bin/fuser -k /opt/usb_sd1_3"
    ACTION=="remove",KERNELS=="1-2.3",RUN+="/bin/umount -l /opt/usb_sd1_3"
    ACTION=="remove",KERNELS=="1-2.3",RUN+="/bin/rmdir /opt/usb_sd1_3",OPTIONS="ignore_remove"
    
    ACTION=="add",KERNELS=="1-2.3",RUN+="/bin/umount -l /opt/usb_sd1_4",
    ACTION=="add",KERNELS=="1-2.3",RUN+="/bin/mkdir /opt/usb_sd1_4",
    ACTION=="add",KERNELS=="1-2.3",RUN+="/bin/mount -t vfat -o rw,utf8=true,flush /dev/usbsda4 /opt/usb_sd1_4",OPTIONS="ignore_remove"
    ACTION=="remove",KERNELS=="1-2.3",RUN+="/bin/fuser -k /opt/usb_sd1_4"
    ACTION=="remove",KERNELS=="1-2.3",RUN+="/bin/umount -l /opt/usb_sd1_4"
    ACTION=="remove",KERNELS=="1-2.3",RUN+="/bin/rmdir /opt/usb_sd1_4",OPTIONS="ignore_remove"

    插入SD卡,可以看到自动挂载的挂载的设备:

    /etc/udev/rules.d # df
    Filesystem           1K-blocks      Used Available Use% Mounted on
    /dev/root                32768     20852     11916  64% /
    tmpfs                    61964         4     61960   0% /dev
    /dev/mtdblock3            4096       768      3328  19% /hi3520
    /dev/mtdblock4            4096       800      3296  20% /mnt
    /dev/mtdblock6            8192      1156      7036  14% /data
    tmpfs                    61964         0     61964   0% /App
    tmpfs                    61964         0     61964   0% /opt
    tmpfs                    61964         4     61960   0% /var
    tmpfs                    61964        60     61904   0% /etc/ppp
    /dev/usbsda1           1044468   1027966     16502  98% /opt/usb_sd1_1
    /dev/usbsda2          33538032  33161232    376800  99% /opt/usb_sd1_2
    /dev/usbsda3          27903304  27525128    378176  99% /opt/usb_sd1_3
    /etc/udev/rules.d # 

     

     

     

    展开全文
  • Rename-Computer-Python-App:Python代码利用了Mac OS上预装的2.7 Python版本中的Tkinter库内置的Mac OS。... python脚本还引用JAMF命令,以在重命名设备后也强制计算机检入,以便JAMF服务器还将看到已设置的新名称。
  • 我最近回想起这篇 2009 年发表的文章,作者在其中探讨了重命名 AIX 设备时遇到的一些挑战。这个可怜的家伙不得不老老实实逐一命名了一个群集 AIX (Oracle RAC) 环境中的一些磁盘和网络设备。我牢牢记住了这段话: ...

    我最近回想起这篇 2009 年发表的文章,作者在其中探讨了重命名 AIX 设备时遇到的一些挑战。这个可怜的家伙不得不老老实实逐一命名了一个群集 AIX (Oracle RAC) 环境中的一些磁盘和网络设备。我牢牢记住了这段话:

    “让网络适配器与磁盘名称在系统间匹配的简便途径将会是运行类似于下面的内容:

    1
    # chdev – l old_name – n new_name

    但这个命令选项其实并不存在。

    此后,我就一直在寻找一条重命名 AIX 中设备的简便途径。特别是在大型的群集化环境中,跨群集中所有节点让相同磁盘与网络设备名称保持同步有时候是很重要的。而且除此之外,如果 hdisk 名称完全相同,验证群集配置就会容易很多。

    匹配 PVID 是一种有效的做法,但它要求的工作量较大!例如,如果知道 hdisk123 在所有节点上都是相同的设备,则不必扫描 PVID 的 lspv 输出,比如 00f6048868b4gead,这样做无疑会轻松很多。当然,您可以编写脚本来简化这些工作,但是,如果您能够根据需要重命名设备,同时不采用不受支持的方法,效果将会更好。

    一种更好的方法

    好了,这对于 AIX 不再是一个问题。从 AIX 7.1 (和 AIX 6.1 TL6)开始,您可以轻松地重命名设备。它引入了一个名叫 rendev 的新命令,允许管理员在必要时重命名设备。以下内容摘自 AIX 的主页:

    “rendev 命令支持对设备进行重命名。

    ...rendev 命令必须在进行重命名之前取消设备的配置。”

    这项功能可以帮助简化 AIX 7.1 中通过 Cluster Aware AIX (CAA) 新功能完成的群集设备配置工作。

    下面给出了一些在 AIX 7.1 (GA) 系统上使用 rendev 命令的例子。在第一个例子中,我将 hdisk3 重命名为 hdisk300。请注意:hdisk3 并未处于使用(繁忙)状态。如果已将磁盘分配到某个卷组,则需要首先卸载该卷组。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    # lspv
    hdisk0    00f61ab2f73e46e2    rootvg
    active
    hdisk1    00f61ab20bf28ac6     None
    hdisk2    00f61ab2202f7c0b     None
    hdisk4    00f61ab20b97190d     None
    hdisk3    00f61ab2202f93ab     None
     
    # rendev -l hdisk3 -n hdisk300
     
    # lspv
    hdisk0    00f61ab2f73e46e2     rootvg
    active
    hdisk1    00f61ab20bf28ac6     None
    hdisk2    00f61ab2202f7c0b     None
    hdisk4    00f61ab20b97190d     None
    hdisk300  00f61ab2202f93ab     None

    很容易吧!接下来,我将重命名一个虚拟的 SCSI 适配器。我将 vscsi0 重命名为 vscsi2,并在重命名设备之前,将适配器 vscsi0 设置为 Defined 状态:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    # rmdev -Rl vscsi0
     
    # lsdev -Cc adapter
    ent0   Available   Virtual I/O Ethernet Adapter (l-lan)
    ent1   Available   Virtual I/O Ethernet Adapter (l-lan)
    vsa0   Available   LPAR Virtual Serial Adapter
    vscsi0   Defined     Virtual SCSI Client Adapter
    vscsi1   Available   Virtual SCSI Client Adapter
     
    # rendev -l vscsi0 -n vscsi2
     
    # lsdev -Cc adapter
    ent0   Available   Virtual I/O Ethernet Adapter (l-lan)
    ent1   Available   Virtual I/O Ethernet Adapter (l-lan)
    vsa0   Available   LPAR Virtual Serial Adapter
    vscsi1   Available   Virtual SCSI Client Adapter
    vscsi2   Defined     Virtual SCSI Client Adapter

    现在,我将把一个网络适配器从 ent0 重命名为 ent10。我在修改设备名称之前禁用了该接口:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    # lsdev -Cc adapter
    ent0   Available   Virtual I/O Ethernet Adapter (l-lan)
    ent1   Available   Virtual I/O Ethernet Adapter (l-lan)
    vsa0   Available   LPAR Virtual Serial Adapter
    vscsi1   Available   Virtual SCSI Client Adapter
    vscsi2   Defined     Virtual SCSI Client Adapter
     
    # ifconfig en0
    en0:
    flags=1e080863,480< UP ,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST,
    GROUPRT,64BIT,CHECKSUM_OFFLOAD(ACTIVE),CHAIN >
        inet 10.1.20.19 netmask 0xffff0000 broadcast
    10.153.255.255
        tcp_sendspace 262144 tcp_recvspace 262144 rfc1323 1
     
    # ifconfig en0 down detach
     
    # rendev -l ent0 -n ent10
     
    # lsdev -Cc adapter
    ent1    Available   Virtual I/O Ethernet Adapter (l-lan)
    ent10   Available   Virtual I/O Ethernet Adapter (l-lan)
    vsa0    Available   LPAR Virtual Serial Adapter
    vscsi1  Available   Virtual SCSI Client Adapter
    vscsi2  Defined     Virtual SCSI Client Adapter
     
    # rendev -l en0 -n en10
     
    # chdev -l en10 -a state=up
    en10 changed
     
    # ifconfig en10
    en10:
    flags=1e080863,480< UP ,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST
    ,GROUPRT,64BIT,CHECKSUM_OFFLOAD(ACTIVE),CHAIN >
        inet 10.1.20.19 netmask 0xffff0000 broadcast
    10.153.255.255
        tcp_sendspace 262144 tcp_recvspace 262144 rfc1323 1

    您甚至可以添加一些创意,将设备重命名为任何您喜欢的名称(只要名称长度不超过 15 个字符)。我将 vscsi2 重命名为 myvscsiadapter:

    1
    2
    3
    4
    5
    6
    7
    # rendev -l vscsi2 -n myvscsiadapter
    # lsdev -Cc adapter
    ent1        Available   Virtual I/O Ethernet Adapter (l-lan)
    myadapter   Available   Virtual I/O Ethernet Adapter (l-lan)
    myvscsiadapter   Defined   Virtual SCSI Client Adapter
    vsa0        Available   LPAR Virtual Serial Adapter
    vscsi1      Available   Virtual SCSI Client Adapter

    而最后,我将演示在一个正在运行的系统上修改虚拟 SCSI 适配器设备名称。这是当的磁盘系统 (hdisk0),带有两个 vscsi 适配器:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # lspv
    hdisk0   00f6048868b4deee     rootvg
    active
     
    # lspath
    Enabled hdisk0 vscsi0
    Enabled hdisk0 vscsi1
     
    # lsdev -Cc adapter
    ent0    Available   Virtual I/O Ethernet Adapter (l-lan)
    ent1    Available   Virtual I/O Ethernet Adapter (l-lan)
    vsa0    Available   LPAR Virtual Serial Adapter
    vscsi0  Available   Virtual SCSI Client Adapter
    vscsi1  Available   Virtual SCSI Client Adapter

    我们要在重命名适配器之前确保它处于 Defined 状态,否则重命名将会失败:

    1
    2
    3
    4
    5
    # rmdev -Rl vscsi1
    vscsi1 Defined
    # lsdev -Cc adapter | grep vscsi
    vscsi0    Available    Virtual SCSI Client Adapter
    vscsi1    Defined      Virtual SCSI Client Adapter

    接下来,我们将适配器 vscsi1 重命名为 vscsi3:

    1
    2
    3
    4
    5
    # rendev -l vscsi1 -n vscsi3
     
    # lsdev -Cc adapter | grep vscsi
    vscsi0    Available    Virtual SCSI Client Adapter
    vscsi3    Defined      Virtual SCSI Client Adapter

    现在,我需要使用 cfgmgr 启用适配器与路径。lspath 输出显示了通向 vscsi3 的另一条路径:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # lspath
    Enabled hdisk0 vscsi0
    Defined hdisk0 vscsi1
     
    # cfgmgr
    Method error (/etc/methods/cfgscsidisk -l hdisk0 ):
    0514-082 The requested function could only be performed for some of the specified paths.
     
    # lspath
    Enabled hdisk0 vscsi0
    Defined hdisk0 vscsi1
    Enabled hdisk0 vscsi3

    接下来,我需要删除通向 vscsi1 的原有路径。适配器 vscsi3 处于 Available 状态。这都是正常的。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # rmpath -l hdisk0 -p vscsi1 -d
    path Deleted
     
    # lspath
    Enabled hdisk0 vscsi0
    Enabled hdisk0 vscsi3
     
    # lsdev -Cc adapter | grep vscsi
    vscsi0   Available   Virtual SCSI Client Adapter
    vscsi3   Available   Virtual SCSI Client Adapter

    我们需要对 vscsi0 适配器重复相同的步骤。将它重命名为 vscsi2。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    # rmdev -Rl vscsi0
    vscsi0 Defined
    # lsdev -Cc adapter | grep vscsi
    vscsi0   Defined    Virtual SCSI Client Adapter
    vscsi3   Available  Virtual SCSI Client Adapter
     
    # rendev -l vscsi0 -n vscsi2
     
    # lsdev -Cc adapter | grep vscsi
    vscsi2   Defined     Virtual SCSI Client Adapter
    vscsi3   Available   Virtual SCSI Client Adapter
     
    # lspath
    Defined hdisk0 vscsi0
    Enabled hdisk0 vscsi3
     
    # cfgmgr
    Method error (/etc/methods/cfgscsidisk -l hdisk0 ):
    0514-082 The requested function could only be performed for some of the specified paths.
     
    # lspath
    Defined hdisk0 vscsi0
    Enabled hdisk0 vscsi2
    Enabled hdisk0 vscsi3
     
    # rmpath -l hdisk0 -p vscsi0 -d
    path Deleted
     
    # cfgmgr
    # lspath
    Enabled hdisk0 vscsi2
    Enabled hdisk0 vscsi3

    到这里我们就完成了所有操作。两个适配器都已经被重命名,而在使用该系统时不需要停机。

    1
    2
    3
    4
    5
    6
    7
    # lsdev -Cc adapter | grep vscsi
    vscsi2   Available    Virtual SCSI Client Adapter
    vscsi3   Available    Virtual SCSI Client Adapter
     
    # lspath
    Enabled hdisk0 vscsi2
    Enabled hdisk0 vscsi3

    转载于:https://my.oschina.net/chanrevival/blog/2986885

    展开全文
  • 我正在尝试使用Wifi Direct连接两个设备,但我想以编程方式实现,而不是由用户启动.为此,我必须更改设备的WifiDirect的名称,如下图所示:现在使用以下方法发现对等体:wifiP2pManager.discoverPeers(channel,new WifiP...

    我正在尝试使用Wifi Direct连接两个设备,但我想以编程方式实现,而不是由用户启动.

    为此,我必须更改设备的WifiDirect的名称,如下图所示:

    现在使用以下方法发现对等体:

    wifiP2pManager.discoverPeers(channel,new WifiP2pManager.ActionListener() {

    @Override

    public void onSuccess() {

    Log.d(TAG,"onSuccess");

    }

    @Override

    public void onFailure(int reason) {

    Log.d(TAG,"onFailure");

    }

    });

    通过以下代码连接到特定对等体:

    public static void connectPeer(WifiP2pDevice device,WifiP2pManager manager,Channel channel,final Handler handler) {

    WifiP2pConfig config = new WifiP2pConfig();

    config.groupOwnerIntent = 15;

    config.deviceAddress = device.deviceAddress;

    config.wps.setup = WpsInfo.PBC;

    manager.connect(channel,config,new ActionListener() {

    @Override

    public void onSuccess() {

    }

    @Override

    public void onFailure(int reason) {

    }

    });

    }

    但我不知道如何更改Wi-Fi Direct的设备名称?

    最佳答案

    这对我有用,即使我不建议使用反射来访问WifiP2pManager中的隐藏API.

    public void setDeviceName(String devName) {

    try {

    Class[] paramTypes = new Class[3];

    paramTypes[0] = Channel.class;

    paramTypes[1] = String.class;

    paramTypes[2] = ActionListener.class;

    Method setDeviceName = manager.getClass().getMethod(

    "setDeviceName",paramTypes);

    setDeviceName.setAccessible(true);

    Object arglist[] = new Object[3];

    arglist[0] = channel;

    arglist[1] = devName;

    arglist[2] = new ActionListener() {

    @Override

    public void onSuccess() {

    LOG.debug("setDeviceName succeeded");

    }

    @Override

    public void onFailure(int reason) {

    LOG.debug("setDeviceName Failed");

    }

    };

    setDeviceName.invoke(manager,arglist);

    } catch (NoSuchMethodException e) {

    e.printStackTrace();

    } catch (IllegalAccessException e) {

    e.printStackTrace();

    } catch (IllegalArgumentException e) {

    e.printStackTrace();

    } catch (InvocationTargetException e) {

    e.printStackTrace();

    }

    }

    总结

    如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

    本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

    小编个人微信号 jb51ccc

    喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

    展开全文
  • 重命名蓝牙设备(例如蓝牙耳机),必须将其连接到iPhone、iPad或Mac。然后,您可以按照以下步骤更改无线设备的名称: 1.在iPhone或iPad上打开“设置”应用。 2.点击页面顶部的蓝牙。 3.然后检查设备是否已连接。在...

    要更改鼠标,键盘,耳机的名称吗?在您的iPhone或Mac设置中,某些蓝牙设备带有一个隐秘的名称。这不仅难看,而且如果其名称类似于其他设备,也可能造成混淆。可以轻松地在iPhone,iPad或Mac的设置中进行调整。

    在iPhone和iPad上更改名称的方法

    要重命名蓝牙设备(例如蓝牙耳机),必须将其连接到iPhone、iPad或Mac。然后,您可以按照以下步骤更改无线设备的名称:

    1.在iPhone或iPad上打开“设置”应用。

    2.点击页面顶部的蓝牙。

    3.然后检查设备是否已连接。在那种情况下,它说在蓝色i的前面已连接。

    4.按蓝色的i,然后点按“名称”。

    5.按下键盘上的蓝色“准备就绪”按钮,以确认您的名称更改。

    可以输入64个字符或从一种表情符号中进行选择,因此它是完全可定制的!请注意,与未知设备配对后,大多数设备将重置为其原始名称。使用AirPods时,名称将继续更改。

    在这里插入图片描述

    在MacBook和iMac上更改名称的方法

    在Mac上,更改蓝牙名称的工作方式与此类似。您将在下面找到有关应做的逐步说明。

    1.在Mac上打开系统偏好设置。
    在这里插入图片描述

    2.单击页面中的蓝牙。

    在这里插入图片描述

    3.然后检查设备是否已连接。在这种情况下,设备名称下会显示Connected(已连接)。

    4.右键单击设备的当前名称,然后选择重新命名。

    在这里插入图片描述

    5.将打开一个新窗口,您可以在其中输入新名称。单击“重新命名”以确认您的更改。

    在这里插入图片描述

    有时,如果您到处都看不到名称更改,则必须重新启动Mac。如果您没有其他问题,例如,可以从控制面板轻松将设备与Mac配对。

    以上就是小编今天为大家分享的内容,希望对您有所帮助,想了解更多关于Mac相关知识,请关注macz.com吧!

    展开全文
  • 重命名蓝牙设备(例如蓝牙耳机),必须将其连接到iPhone、iPad或Mac。然后,您可以按照以下步骤更改无线设备的名称: 1.在iPhone或iPad上打开“设置”应用。 2.点击页面顶部的蓝牙。 3.然后检查设备是否已连接。在...
  • Debian系Linux网卡设备重命名eth需求Setp1Step2最后 需求 硬件上采用一块intel i350-t4(四个千兆网口),在较新的Debian系 操作系统中呈现enpXXX0,enpXXX1,enpXXX2,enpXXX3四个顺序的网卡设备名。 我们需要将enp...
  • <p>There is very few information on the Internet on how to solve this problem that I'm having, which is the fact that when i try to rename a file it gives me the error "Device or resource busy in...
  • linux 系统给移动设备重命名 linux C语言设置U盘卷标 glib2/udisks2 API简单使用案例
  • 用于设置重命名设备:try {Method method = device.getClass().getMethod("setAlias", String.class);if(method != null) {method.invoke(device, "new_device_name");}} catch (NoSuchMethodException e) {e....
  • rh436 - 使用udev重命名usb设备(rhel5.5)

    千次阅读 2012-05-26 16:37:00
    [root@localhost rules.d]# lsb_...可以看到sdb已经被改成myusb,并创建出了myulink的链接,不过那三个字符型设备是怎么出来的暂时没搞清楚。 简单排错: 可以通过udevmonitor这个命令来看udev产生的一些事件和消息。
  • 内容:是匹配键,=是赋值键,只有一个设备匹配了所有的匹配键,才会执行赋值键 KERNEL"tty", ATTRS{idVendor}“0403”, ATTRS{idProduct}“6001”, ATTRS{serial}==“kobuki*”, MODE:=“0777”, GROUP:=“dialout...
  • 《udev 重命名设备节点名 自动挂载、卸载存储设备分区》  在本文中主要记录在使用时遇到的问题以及注意事项。   (三)注意事项: (1)设备冲突问题:  在海思平台,对于有些SD卡或是USB自动挂载...
  • 接下来,点击顶部的“昵称”以重命名设备。 Type in a unique name for it that makes it easy to identify in the list. Hit “Save” in the top-right corner when you’re done. 输入一个唯一的名称,以便在...
  • 现在 Host.ui.openChangeDeviceName() 只能对当前设备进行重命名, 网关有子设备这个概念,需要对某个子设备进行重命名。 希望提供一个可以指定设备(通过did)的重命名方法, <p>...
  • 根据Exif的拍摄时间和设备名批量重命名照片初衷功能如下源码如下说明下载 初衷 朋友有大量的照片,因为某些原因文件名和实际拍摄时间不一致,而实际拍摄时间存在exif中,所以我想了一下,可以通过读取照片中exif中的...
  • 请记住,这只会重命名Alexa端的设备。 例如,如果您要打开设备自己的应用程序,它仍将使用您给它的原始名称-通过Alexa应用程序重新命名只是告诉Alexa“太空加热器”实际上意味着“智能插头2”(例如)。 因此,如果...
  • ApkRenamer(APK重命名)能批量重命名设备中的APK。如果您有不知道名称的APK文件,ApkRenamer就能让您将它重命名为原始的名称,另外ApkRenamer还有多项重命名参数可供您选项。 主要功能: - 一次性批量...
  • 重命名设备。 尽管您的命名方案由您决定,但实际上(根据对讲功能)可以说是最好的,即根据设备的位置命名设备,并使用清晰的名称来表示位置(例如厨房,书房,起居室等)。或您最有可能在该位置联系的人(例如,将Echo ...
  • centos 网卡重命名

    2017-08-21 20:28:04
    centos网卡重命名 在cento卡模块就是网卡的驱动程序,驱动程序是一种可以使计算机和设备通信的特殊程序,是硬件厂商根据操作系统编写的配置文件,是添加到操作系统中的一小块代码,其中包含有关硬件设备的信息,相当...
  • vgreduce,vgremove vgrename (重命名vg) OldVolumeGroupName NewVolumeGroupName eg:vgrename vg1 vgtest #将vg1重命名为vgtest 重命名及前后名称变化 vgextend(扩容) vgextend VolumeGroupName PhysicalDevicePath...
  • 修改MTK8766平台 BT device name=248byte时的传输问题 当蓝牙设备重命名至最大字符长度时,最后一位如果是字母,则没有这个问题。如果最后一位是汉字。则有可能转翻为“小方格”。将前面的字母删除一位,亦可正常...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 857
精华内容 342
关键字:

重命名设备