ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • LINUX KERNEL & DEVICES
    IoT 과정 2017. 7. 17. 12:51
    반응형

    하드웨어 관리, 드라이버 관리에 관한 내용이다.

    재부팅하지 않고 scsi 정보 메모리에 로드하기.
    /proc 는 메모리, cpu에 대한 정보를 갖고있는 디렉토리. 디스크에 저장되어있지 않아 용량이 0이다. OS에 직접적으로 연결되어 있어 정보를 human readable하게 보여준다고 생각하자.
    /sys 는 디바이스에 관한 정보들을 가지고 있다.
    module 은 kernel code 이고, 넣었다 뺏다 할 수 있다. 등 내용이있다.

    [root@localhost log]# ls
    anaconda  btmp    dmesg      grubby_prune_debug  messages  secure    tuned
    audit     chrony  dmesg.old  lastlog             ppp       spooler   wtmp
    boot.log  cron    firewalld  maillog             rhsm      tallylog

    # dmesg, 현재 부팅되면서 저장된 진단메세지, /var/log/dmesg, 명령어 'dmesg' 로도 가능
    # dmesg.old, 바로 그전 진단메세지
    # 특정 시점을 저장하고 싶다면, 다른이름으로 저장하는게 좋음. dmesg_YYMMDD


    # 마운트


    [root@station16 proc]# df -h
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/mapper/vg0-root  8.0G  3.9G  4.2G  48% /
    devtmpfs              7.8G     0  7.8G   0% /dev
    tmpfs                 7.9G   21M  7.9G   1% /dev/shm
    tmpfs                 7.9G  8.9M  7.9G   1% /run
    tmpfs                 7.9G     0  7.9G   0% /sys/fs/cgroup
    /dev/mapper/vg0-tmp  1014M   33M  982M   4% /tmp
    /dev/mapper/vg0-var   2.0G  180M  1.9G   9% /var
    /dev/sda3             100G  1.3G   99G   2% /var/lib/libvirt/images
    /dev/sda1             497M  153M  345M  31% /boot
    tmpfs                 1.6G  8.0K  1.6G   1% /run/user/0

    # 시스템에 관련된 정보들은 사이즈가 0이다. 그러나 실행 잘 된다.

    [root@station16 ~]# cd /proc
    [root@station16 proc]# ls -al
    total 0
    dr-xr-xr-x. 253 root           root                         0 Jul 17 11:50 .
    dr-xr-xr-x.  20 root           root                       281 Jul 17 11:51 ..
    dr-xr-xr-x.   9 root           root                         0 Jul 17 11:50 1
    dr-xr-xr-x.   9 root           root                         0 Jul 17 11:50 10
    dr-xr-xr-x.   9 root           root                         0 Jul 17 11:50 1043
    dr-xr-xr-x.   9 root           root                         0 Jul 17 11:50 1046
    dr-xr-xr-x.   9 root           root                         0 Jul 17 11:50 1048
    dr-xr-xr-x.   9 root           root                         0 Jul 17 11:50 1050
    dr-xr-xr-x.   9 root           root                         0 Jul 17 11:50 1060
    dr-xr-xr-x.   9 root           root                         0 Jul 17 11:50 1064
    dr-xr-xr-x.   9 root           root                         0 Jul 17 11:50 1067
    dr-xr-xr-x.   9 root           root                         0 Jul 17 11:50 1068
    dr-xr-xr-x.   9 root           root                         0 Jul 17 11:50 1071
    dr-xr-xr-x.   9 root           root                         0 Jul 17 11:50 1072
    dr-xr-xr-x.   9 root           root                         0 Jul 17 11:50 11
    dr-xr-xr-x.   9 root           root                         0 Jul 17 11:50 115
    ...


    # 확인해보면, 메모리에 로드된 정보들이 사람들이 읽기 쉽게 재 정리 되어있다.
    # 그외 pid 파일들돌 확인할 수 있었다.

    [root@station16 proc]# cat /proc/cpuinfo
    processor    : 0
    vendor_id    : AuthenticAMD
    cpu family    : 16
    model        : 4
    model name    : AMD Phenom(tm) II X4 955 Processor
    stepping    : 3
    microcode    : 0x10000c8
    cpu MHz        : 800.000
    cache size    : 512 KB
    physical id    : 0
    siblings    : 4
    core id        : 0
    cpu cores    : 4
    apicid        : 0
    initial apicid    : 0
    fpu        : yes
    fpu_exception    : yes
    cpuid level    : 5
    wp        : yes
    ...


    # 또 다른 시스템 정보 확인해보기, 즉 /proc 또는 /sys 에서 시스템 정보(HW) 확인가능하다.

    [root@station16 sys]# cd /
    [root@station16 /]# cd sys
    [root@station16 sys]# ls
    block  bus  class  dev  devices  firmware  fs  hypervisor  kernel  module  power
    [root@station16 sys]# cd class
    [root@station16 class]# ls
    ata_device  devcoredump  i2c-adapter  misc           raw           thermal
    ata_link    dma          input        msr            rtc           tpm
    ata_port    dmi          iommu        net            scsi_device   tty
    backlight   drm          kfd          pci_bus        scsi_disk     usbmon
    bdi         gpio         leds         pcmcia_socket  scsi_generic  vc
    block       graphics     macvtap      powercap       scsi_host     vtconsole
    bsg         hidraw       mdio_bus     power_supply   sound         watchdog
    cpuid       hwmon        mem          pwm            spi_master    wmi
    [root@station16 class]# cd scsi_disk
    [root@station16 scsi_disk]# ls
    0:0:0:0  0:0:0:1  0:0:0:2  0:0:0:3  3:0:0:0
    [root@station16 scsi_disk]# cd ..
    [root@station16 class]# ls
    ata_device  devcoredump  i2c-adapter  misc           raw           thermal
    ata_link    dma          input        msr            rtc           tpm
    ata_port    dmi          iommu        net            scsi_device   tty
    backlight   drm          kfd          pci_bus        scsi_disk     usbmon
    bdi         gpio         leds         pcmcia_socket  scsi_generic  vc
    block       graphics     macvtap      powercap       scsi_host     vtconsole
    bsg         hidraw       mdio_bus     power_supply   sound         watchdog
    cpuid       hwmon        mem          pwm            spi_master    wmi
    [root@station16 class]# cd net
    [root@station16 net]# ls
    enp2s0  lo  virbr0  virbr0-nic  vnet0


    # CMOS에 저장된 정보들 확인하기. system HW에 관한 low-level details를 확인할 수 있는 명령어

    [root@station16 Desktop]# dmidecode -s bios
    Invalid string keyword: bios
    Valid string keywords are:
      bios-vendor
      bios-version
      bios-release-date
      system-manufacturer
      system-product-name
      system-version
      system-serial-number
      system-uuid
      baseboard-manufacturer
      baseboard-product-name
      baseboard-version
      baseboard-serial-number
      baseboard-asset-tag
      chassis-manufacturer
      chassis-type
      chassis-version
      chassis-serial-number
      chassis-asset-tag
      processor-family
      processor-manufacturer
      processor-version
      processor-frequency
    [root@station16 Desktop]# dmidecode -s bios-version
    6.09

    # 커널 HW 정보는 /sys 에서... /sys 는 디스크에 저장된 것이 아니다.

    /sys/block/ : block I/O를 하는 장치들에 관한 정보를 준다. buffer(메모리에서 디스크에 쓰면서 보여주기보다, (디스크가 느리므로 병목현상이 발생) 메모리에 일정 부분 buffer로 할애하여 사용. 즉, 속도를 완충)를 사용하는 비동기식 I/O { disk, CD, DVD...} <-> character device(raw device){printer, terminal, console } : buffer에 쓰이지않고 장치에 direct로 통신하여 보여줌

    /sys/bus/ : memory, CPU 등이 연산한 결과들이 SBA와 LBA를 통해 전송되는 slot에 끼우는 cable bus의 종류를 보여줌 {PCI, SCSI, USB, etc }

    /sys/module/ : 커널 모듈을 확인함.커널 모듈은 드라이버 realtek, audio card, lancard 들을 설치시마다 커널을 열어주므로 커널에 append 하므로 드라이버 설치시마다 커널의 정보가 달라진다. (제대로 이해한건지 모르겠다...)

    [root@station16 Desktop]# cd /boot
    [root@station16 boot]# ls
    config-3.10.0-514.26.1.el7.x86_64
    grub
    grub2
    initramfs-0-rescue-62261cc0f2d64250845a28d2aa3e5461.img
    initramfs-3.10.0-514.26.1.el7.x86_64.img
    initrd-plymouth.img
    symvers-3.10.0-514.26.1.el7.x86_64.gz
    System.map-3.10.0-514.26.1.el7.x86_64
    vmlinuz-0-rescue-62261cc0f2d64250845a28d2aa3e5461
    vmlinuz-3.10.0-514.26.1.el7.x86_64


    # 부팅시 인식한 장치를 확인하고 device file을 생성하는 "udev", 드라이버 이름을 수정할 수도 있다. 아래와 같다. 파일명은 마음대로 해도되나 뒤에는 .rules확장자를 붙여줘야한다. udev가 읽는 순은 앞의 사전식 순이라서 맨 뒤가 최종 적용되는 것이다. 아래의 에를 확인하자.

    [root@localhost ~]# cd /etc/udev/rules.d
    [root@localhost rules.d]# ls
    70-persistent-ipoib.rules
    [root@localhost rules.d]# vi 60-net.rules
    ...추가 ...
    KERNEL=="eth*",SUBSYSTEM=="net",DRIVERS=="?*",ATTR{type}=="1",ATTR{address}=="52:54:00:33:26:5a",ACTION=="add",NAME="mylan0"

    # reboot 후 명령어 "ip a"를 수행하면 mylan0으로 이름을 바뀐것으로 확인하였다.
    ... 생략
    2: mylan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 52:54:00:33:26:5a brd ff:ff:ff:ff:ff:ff
        inet 192.168.122.215/24 brd 192.168.122.255 scope global dynamic mylan0
           valid_lft 3478sec preferred_lft 3478sec
        inet6 fe80::5054:ff:fe33:265a/64 scope link 

    # udev에서 파일이 추가된 것을 확인할 수 있다.

    [root@localhost ~]# cd /etc/udev/rules.d
    [root@localhost rules.d]# ls
    60-net.rules  70-persistent-ipoib.rules

    # 이더넷카드는 항상 eth# 로 이름이 지어졌다. 7버전 이상의 CENTOS에서는 내장 랜카드는 enp2s0로, 따로 장착한 랜카드는 eth#로 네이밍이 된다.
    # udev의 역할은 크지만, 사용할 경우는 흔하지 않다.


    =====쉬는시간 매니저 생일 케이크 파티

    Managing Linux Device Files, 블록 디바이스 관리

    Usually in /dev/
    Creating device files (1) at install time (RPM, Redhat Package Manager),  (2) mknod, (3) dynamically with udev

    (3)이 일반적이다.

    # 아래는 character device인지 block device인지 알 수 있다.또한 sda disk의 major 번호 minor 번호를 확인할 수있다. 파티션은은 최대 15개 그러므로 sdb는 16부터 시작한다.

    [root@station16 ~]# ll /dev/pts/0
    crw--w----. 1 root tty 136, 0 Jul 17 14:59 /dev/pts/0
    [root@station16 ~]# ll /dev/sda
    brw-rw----. 1 root disk 8, 0 Jul 17 11:50 /dev/sda
    [root@station16 ~]# ls -l /dev/sda?
    brw-rw----. 1 root disk 8, 1 Jul 17 11:50 /dev/sda1
    brw-rw----. 1 root disk 8, 2 Jul 17 11:50 /dev/sda2
    brw-rw----. 1 root disk 8, 3 Jul 17 11:50 /dev/sda3

    # 아래는 또 여러종류의 device 들이다. 각자 다들 Major, Minor number가 있다.

    Null device (data sent here is discarded) : /dev/null    Major, Minor 번호 있음.
    Zero device (outputs infinite stream of zeros) : /dev/zero
    Random device (non-deterministic random number generation) : /dev/random
    Random device (faster, less secure random number generation) : /dev/urandom


    # dd는 block image들을 복사할 떄 쓰이는 명령어이다.cp

    [root@station16 ~]# dd if=/dev/sda of=/dev/null bs=1024
    ^C539174+0 records in
    539173+0 records out
    552113152 bytes (552 MB) copied, 4.81503 s, 115 MB/s

    # 디스크 날릴때 쓰는법. 하면 큰일난다.

    [root@station16 ~]# dd if=/dev/zero of="disk name" bs=1024


    #tree 커맨드를 활용하여 /dev/disk 디렉토리 확인. 없을경우 tree 설치, yum -y install tree

    [root@station16 ~]# tree /dev/disk
    /dev/disk
    ├── by-id
    │   ├── ata-hp_CDDVDW_TS-H653T_R7106GGZC69733 -> ../../sr0
    │   ├── ata-ST3500418AS_5VMPX36V -> ../../sda
    │   ├── ata-ST3500418AS_5VMPX36V-part1 -> ../../sda1
    │   ├── ata-ST3500418AS_5VMPX36V-part2 -> ../../sda2
    │   ├── ata-ST3500418AS_5VMPX36V-part3 -> ../../sda3
    │   ├── dm-name-vg0-root -> ../../dm-0
    │   ├── dm-name-vg0-swap -> ../../dm-1
    │   ├── dm-name-vg0-tmp -> ../../dm-2
    │   ├── dm-name-vg0-var -> ../../dm-3
    │   ├── dm-uuid-LVM-AbwnYAoKCyfcKH4HfK0gdgx3LcISCyBWe1ZFJ3hvbNTSZtBYCDjL7dKNfyZ75Sdq -> ../../dm-1
    │   ├── dm-uuid-LVM-AbwnYAoKCyfcKH4HfK0gdgx3LcISCyBWEWWUuAG8KuIk8U0onBcfaHVj5Ufp8yNF -> ../../dm-3
    │   ├── dm-uuid-LVM-AbwnYAoKCyfcKH4HfK0gdgx3LcISCyBWEZELO1NBbwPCEGhsPdVm923sbJdi
    ...


    # Block Device들을 확인하는데엔 tree 명령어보다 lsblk, blkid가 쉽다.

    [root@station16 ~]# lsblk
    NAME         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    sda            8:0    0 465.8G  0 disk
    ├─sda1         8:1    0   500M  0 part /boot
    ├─sda2         8:2    0  34.2G  0 part
    │ ├─vg0-root 253:0    0     8G  0 lvm  /
    │ ├─vg0-swap 253:1    0   512M  0 lvm  [SWAP]
    │ ├─vg0-tmp  253:2    0     1G  0 lvm  /tmp
    │ └─vg0-var  253:3    0     2G  0 lvm  /var
    └─sda3         8:3    0   100G  0 part /var/lib/libvirt/images
    sr0           11:0    1  1024M  0 rom  

    #옵션 f를 넣으면 UUID를 확인가능하다. disk 네 개가 연결되어 있을 때 sda, sdb, sdc, sdd (scsi disk a, b, c.. 가상환경인 경우 virtual disk a, b, ... vda, vdb)가 있다. 근데 디스크를 뺏다 끼고 서버를 껏다키면 sdd가 sdc가 되거나 그런일 이 있다. 그러면 /etc/fstab 에서 디스크 이름으로 /dev/sda 이렇게 마운트하면 부트가 안될수 있다. 그럴 때 UUID 를 이용하여 /etc/fstab에 쓰면된다

    [root@station16 ~]# lsblk -f
    NAME         FSTYPE   LABEL UUID                                   MOUNTPOINT
    sda                                                               
    ├─sda1       xfs            869772b6-b3e6-4c45-8b83-56d22a41c9d8   /boot
    ├─sda2       LVM2_mem       6OFzRX-vjWQ-AR5n-UeNS-bPDK-cN1k-SH9Omd
    │ ├─vg0-root xfs            c033ac2f-8cd5-49d0-99e5-ebdc4296387b   /
    │ ├─vg0-swap swap           85f113ea-443d-4a24-99e5-f87bc577289d   [SWAP]
    │ ├─vg0-tmp  xfs            fe5bb8c1-1fa9-409b-88a4-fc303a2087f6   /tmp
    │ └─vg0-var  xfs            105fa7c1-c3cb-4ea0-a943-51a7e9d935a9   /var
    └─sda3       xfs            4b34d8ac-6357-43ed-a1e2-0f1cd8c53cdd   /var/lib/libv
    sr0                                     



    # 장착된 디바이스를 확인하는 lsscsi 명령어가 설치안되어있고, root 계정이아니라면 cat을 활용하여 아래처럼 확인할 수 있다. lsscsi 수행시 1번째 필드에서 확인가능한 번호의 정보는 다음과 같다. [HOST:channel:target:LUN], host number는 장치들을 인식하는 번호이다. target number는 동일한 host 를 공유해 사용하는 인터페이스 장치들을 식별하는 번호이다. host 해당 포트가 고장나면 동일한 host 포트 장치들은 사용할 수 없다.  channel number는 이제는 사용되지 않아 대개 0이다. 

    [root@station16 ~]# lsscsi
    [0:0:0:0]    disk    Generic- SD/MMC           1.00  /dev/sdb
    [0:0:0:1]    disk    Generic- Compact Flash    1.01  /dev/sdc
    [0:0:0:2]    disk    Generic- SM/xD-Picture    1.02  /dev/sdd
    [0:0:0:3]    disk    Generic- MS/MS-Pro        1.03  /dev/sde
    [3:0:0:0]    disk    ATA      ST3500418AS      HP35  /dev/sda
    [5:0:0:0]    cd/dvd  hp       CDDVDW TS-H653T  H6D1  /dev/sr0
    [root@station16 ~]# cat /proc/scsi/scsi
    Attached devices:
    Host: scsi3 Channel: 00 Id: 00 Lun: 00
      Vendor: ATA      Model: ST3500418AS      Rev: HP35
      Type:   Direct-Access                    ANSI  SCSI revision: 05
    Host: scsi5 Channel: 00 Id: 00 Lun: 00
      Vendor: hp       Model: CDDVDW TS-H653T  Rev: H6D1
      Type:   CD-ROM                           ANSI  SCSI revision: 05
    Host: scsi0 Channel: 00 Id: 00 Lun: 00
      Vendor: Generic- Model: SD/MMC           Rev: 1.00
      Type:   Direct-Access                    ANSI  SCSI revision: 00
    Host: scsi0 Channel: 00 Id: 00 Lun: 01
      Vendor: Generic- Model: Compact Flash    Rev: 1.01
      Type:   Direct-Access           

    # 가상환경에서 scsi 디스크 추가후, 제거하는 방법을 수행해봤다. 제거하는 방법은 명령어가 따로없고 echo이다.

    [root@localhost ~]# lsscsi
    [2:0:0:0]    disk    QEMU     QEMU HARDDISK    1.5.  /dev/sda
    [root@localhost ~]# echo 1 > /sys/class/scsi_device/2:0:0:0/device/delete
    [root@localhost ~]# lsscsi

    # 재부팅 하지 않고 다시 디스크 장치 인식하기. unix에서는 ioscan명령어를 통해 수행할 수 있었다. 즉 disk장착후 재부팅안해도된다. 가상이든 실제이든. host#, #는 host number를 말해준다.

    [root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host2/scan
    [root@localhost ~]# lsscsi
    [2:0:0:0]    disk    QEMU     QEMU HARDDISK    1.5.  /dev/sda

    # 한개 더 생성해보고 해보았다.

    [root@localhost ~]# lsscsi
    [2:0:0:0]    disk    QEMU     QEMU HARDDISK    1.5.  /dev/sda
    [2:0:0:1]    disk    QEMU     QEMU HARDDISK    1.5.  /dev/sdb
    [root@localhost ~]# echo 1 > /sys/class/scsi_device/2:0:0:1/device/delete
    [root@localhost ~]# lsscsi
    [2:0:0:0]    disk    QEMU     QEMU HARDDISK    1.5.  /dev/sda 


    # 명령어 dmesg를 활용하여 sdb 관련된 작업이 수행된지 확인해보았다. pipe line으로 tail까지 수행

    [root@localhost ~]# dmesg |tail -10
    [ 4776.356248] virtio-pci 0000:00:0a.0: irq 36 for MSI/MSI-X
    [ 4776.356313] virtio-pci 0000:00:0a.0: irq 37 for MSI/MSI-X
    [ 4783.962092] scsi 2:0:0:1: Direct-Access     QEMU     QEMU HARDDISK    1.5. PQ: 0 ANSI: 5
    [ 4783.964763] sd 2:0:0:1: Attached scsi generic sg1 type 0
    [ 4783.969203] sd 2:0:0:1: [sdb] 6291456 512-byte logical blocks: (3.22 GB/3.00 GiB)
    [ 4783.978677] sd 2:0:0:1: [sdb] Write Protect is off
    [ 4783.978690] sd 2:0:0:1: [sdb] Mode Sense: 63 00 00 08
    [ 4783.978861] sd 2:0:0:1: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
    [ 4783.989739] sd 2:0:0:1: [sdb] Attached SCSI disk
    [ 4816.556881] sd 2:0:0:1: [sdb] Synchronizing SCSI cache


    ======== 쉬는시간

    USB Devices 관리


    [root@station16 ~]# lsusb
    Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 002 Device 002: ID 058f:6362 Alcor Micro Corp. Flash Card Reader/Writer
    Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 004 Device 002: ID 03f0:0024 Hewlett-Packard KU-0316 Keyboard
    Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 003 Device 002: ID 0461:4d0f Primax Electronics, Ltd HP Optical Mouse
    Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

    # usb를 사용하게 하는것보다 못쓰게 하는 것이 더 자주 쓰인다. 보안 이슈. 특정 usb를 못 쓰게 하는 것하는데 유용하다. 아래를 참조

    usbhid.ko : human-interface devices, 키보드, 마우스, 조이스틱
    usb-storage.ko : usb 대용량 저장장치
    usblp.ko :프린터
    usbserial.ko : USB to serial port adapters

    # 여기는 디스크에 저장된 모듈들 이다. 해당 장치들이 장착되면 메모리에 로드된다.

    [root@station16 ~]# cd /lib/modules/*/kernel/drivers/usb/storage
    [root@station16 storage]# ls
    uas.ko          ums-eneub6250.ko  ums-karma.ko     ums-sddr55.ko
    ums-alauda.ko   ums-freecom.ko    ums-onetouch.ko  ums-usbat.ko
    ums-cypress.ko  ums-isd200.ko     ums-realtek.ko   usb-storage.ko
    ums-datafab.ko  ums-jumpshot.ko   ums-sddr09.ko

    # 모듈을 못 사용하게 블랙리스트 등록할 수 있다.

    File : /etc/modprobe.d/blacklist.conf
    blacklist usb_storage  


    Kernel Modules

    # 명령어는 lsmod, insmod, rmmod 이 있다. r8169 모듈은 ethernet 드라이버다. realtek

    [root@station16 ~]# lsmod |grep r8169
    r8169                  80945  0
    mii                    13934  1 r8169
    [root@station16 ~]# modinfo r8169
    filename:       /lib/modules/3.10.0-514.26.1.el7.x86_64/kernel/drivers/net/ethernet/realtek/r8169.ko
    firmware:       rtl_nic/rtl8107e-2.fw
    firmware:       rtl_nic/rtl8107e-1.fw
    firmware:       rtl_nic/rtl8168h-2.fw
    firmware:       rtl_nic/rtl8168h-1.fw
    firmware:       rtl_nic/rtl8168g-3.fw
    ....

    # 모듈 제거와 다시 설치. 해당 모듈 serio_raw는 module dependencies 때문에 재설치가 안된다.
    # 모듈이 딘펜던시 있는지 확인하는법 modinfo "모듈". 예로 modinfo nfs 수행시 출력화면에
    # depends:        fscache,sunrpc,lockd 행이 출력된다.nfs가 디펜던시 있는 모듈들이 출력된다.

    [root@station16 ~]# rmmod r8169
    [root@station16 ~]# lsmod |grep r8169
    [root@station16 ~]# lsmod |grep serio_raw
    serio_raw              13462  0
    [root@station16 ~]# rmmod serio_raw
    [root@station16 ~]# insmod serio_raw
    insmod: ERROR: could not load module serio_raw: No such file or directory

    # modprobe 로 설치하기. dependencies 문제 해결하여 설치한다.

    [root@station16 ~]# modprobe serio_raw
    [root@station16 ~]# lsmod |grep serio_raw
    serio_raw              13462  0

    # modprobe는 /lib/modules/$(uname -r)/modules.dep 에서 dependencies 들을 저장해 놓는다. 그러나 만약 그 파일이 손상되었다면 depmod 명령어로 해결할 수 있다. 또한 modprobe는 -r 옵션으로 모듈 dependencies를 고려한 모듈 제거도 가능하다. 


    sysctl 명령어를 통해 Kernel parameter 변경할 수 있다.

    # 생성 할 수 있는 최대 파일 갯수 제한된 변수. 변수 설정하기(메모리에서) 디스크에 설정 저장하기.

    [root@localhost ~]# sysctl fs.file-max
    fs.file-max = 300000
    [root@localhost ~]# sysctl -w fs.file-max=150000
    fs.file-max = 150000
    [root@localhost ~]# vi /etc/sysctl.conf
    ...
    fs.file-max=250000  // 저장
    [root@localhost ~]# sysctl fs.file-max
    fs.file-max = 250000




    반응형

    'IoT 과정' 카테고리의 다른 글

    SYSTEMD OVERVIEW  (0) 2017.07.18
    커널 옵션 적응하기, 드라이버 편집하기 등 task  (0) 2017.07.17
    LINUX KERNEL & DEVICES  (0) 2017.07.17
    Enterprise Linux System - Adnministration 시작  (0) 2017.07.17
    Managing Input and Output  (0) 2017.07.07
    Functions and Function Libraries  (0) 2017.07.07

    댓글 0

Designed by Tistory.