티스토리 뷰

IoT 과정

LINUX KERNEL & DEVICES

gaelim 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




반응형