pc-dom-02

本篇記錄如何建立啟動軟体及修改一些開機設定
還有記錄一些不了解地方待查明


更新記錄

item note
20160825 新增: rundvr.sh相關內容
新增: modprobe pcspkr
20160826 新增: 如何裁切fedora24空間
20160905 新增: 更新程序
20161205 新增: 增加dom rootfs空間

目錄


開發環境OS 過程

建立開發軟体環境

  • 切換root (直接使用root登入)
  • 安裝開發需要工具
    • dnf install libX11*
    • dnf install libXv*
    • dnf install gtk2*
    • dnf install libjpeg-turbo*
    • dnf install alsa-lib-devel
    • 安裝ffmpeg (./configure & make & make install)

建立DOM軟体執行環境

  • 安裝需要工具
    • dom裡面的工具以最小安裝為主,這樣子佔的空間才會小
    • dnf install libX11*
    • dnf install libXv*
    • dnf install gtk2-devel
    • dnf install libjpeg-turbo-devel
    • dnf install gcc
    • 安裝其它工具: sendmail, lynx, hdparm, smartctl

修改dom-rootfs內容

  • 使用已建立的STAT-DOM啟動,並且修改相關內容

  • 新增下例檔案

file descript
/dominfo.txt 設定軟体程式版本
/usr/lib/limit 設定限制最大ch
/etc/rc.d/rc.local 增加自定的開機執行內容
/nvr.tar.gz 目前使用source直接make之後再打包為nvr.tar.gz
  • rc.local
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #!/bin/bash
    service smb start
    service sshd start

    rm -rf /mnt/*
    mount -t tmpfs tmpfs /disks
    cd /disks&&mkdir -p {1..24} tmp
    tar xvf /nvr.tar.gz
    cd /disks/nvr
    sleep 3s
    xinit ./rundvr.sh

說明

  • 在GNOME下,可直接使用./nvr帶起
  • 若在terminal下需要使用xinit nvr帶起
  • xinit - X Window System initializer
  • 新增下例目錄
    • mkdir /disks
    • mkdir /disks/tmp
    • mkdir /disks/picture

nvr.tar.gz 內容

  • 設定開機啟動至文字模式(runlevel 3)
    • systemctl set-default multi-user.target

rundvr.sh

  • 當nvr離開時才會執行下例
    • poweroff
    • reboot
  • rundvr 程序
    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
    #!/bin/sh
    ibus-daemon&
    imsettings-start
    modprobe pcspkr
    xset s 0
    xset -dpms

    systemctl stop firewalld.service
    #service iptables stop

    #export XMODIFIERS=@im=SCIM
    #export GTK_IM_MODULE="scim"
    #scim -d
    cd /nvr > /disk/nvr.log
    #insmod r8168.ko
    #thttpd -p 80 -d /disks/nvr/web -u root &
    #./thttpd/thttpd -p 80 -C thttpd/thttpd.conf -u root &
    ./mkmountpoints.sh
    ./ipserver&
    ./watchdog.sh &
    ./nvr
    if [ -f /disks/tmp/poweroff.flag ] ; then
    echo " `date` ---333--power off">>/disks/1/run.log
    /sbin/poweroff
    else
    echo " `date` ---333--reboot">>/disks/1/run.log
    /sbin/reboot
    fi

說明:

  • imsettings-start: 英文输入法里不要开启,若要使用中文输入法就开启? (不了解地方)
  • 開啟pc 嗶嗶 (beep)
    • modprobe pcspkr
      目前使用lsmod | grep pcspkr,無找到到相關的ko載入
      需要先 dnf install beep,之後再 modprobe pcspkr,就可以了
  • xset
    xset - user preference utility for X
    • s: The s option lets you set the screen saver parameters.
    • -dpms: The dpms option allows the DPMS (Energy Star) parameters to be set.

記錄:

  • 由於系統第一次是無/config,因此帶起nvr之前會當機,重機之後再帶一次nvr即正常

如何裁切fedora24空間

何為PackageKit

  • PackageKit Wiki
    • PackageKit 是一個自由且開源的应用软件套裝,旨在為多種不同的软件包管理系统提供一個一致的高階前端
    • PackageKit itself runs as a system-activated daemon, packagekitd
    • pkcon 供命令行界面使用。

由cache清除空間

  • 關閉package keep cache
    預設的keep the package cache是被打開的
    修改/etc/PackageKit/PackageKit.conf,將KeepCache設定為false

  • 使用pkcon清除package cahche
    Fedora 23 — Can I safely delete files in /var/cache/PackageKit/metadata/updates/packages
    指令:pkcon refresh force -c -1

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [root@localhost cache]# pkcon refresh force -c -1
    Refreshing cache [=========================]
    Downloading repository information[=========================]
    Loading cache [=========================]
    Downloading repository information[=========================]
    Loading cache [=========================]
    Downloading repository information[================= ] (68%)
    [=========================]
    Loading cache [=========================]
    Finished [=========================]
    [root@localhost cache]#
  • 未設定前
    / 使用96%(剩下 160M空間)
    /var/cache/PackageKit佔了 371M ->這個可以在空出來
    此時使用dnf clean all,已無法在由cache空出空間

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    [root@localhost ~]# df -h
    Filesystem Size Used Avail Use% Mounted on
    devtmpfs 1.9G 0 1.9G 0% /dev
    tmpfs 1.9G 316K 1.9G 1% /dev/shm
    tmpfs 1.9G 9.6M 1.9G 1% /run
    tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
    /dev/sdb2 3.5G 3.2G 160M 96% /
    tmpfs 1.9G 56K 1.9G 1% /tmp
    /dev/sdb1 120M 42M 70M 37% /boot
    tmpfs 1.9G 66M 1.9G 4% /disks
    tmpfs 384M 16K 384M 1% /run/user/42
    tmpfs 384M 12K 384M 1% /run/user/0

    [root@localhost cache]# du -h --max-depth=1
    xx
    371M ./PackageKit
    4.0K ./foomatic
    4.0K ./krb5rcache
    36K ./libvirt
    72K ./ldconfig
    424K ./man
    380M .
  • 設定後
    package cache由371M變成131M,少了約2xxM

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    [root@localhost cache]# df -h
    Filesystem Size Used Avail Use% Mounted on
    devtmpfs 1.9G 0 1.9G 0% /dev
    tmpfs 1.9G 712K 1.9G 1% /dev/shm
    tmpfs 1.9G 9.6M 1.9G 1% /run
    tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
    /dev/sdb2 3.5G 3.1G 248M 93% /
    tmpfs 1.9G 60K 1.9G 1% /tmp
    /dev/sdb1 120M 42M 70M 37% /boot
    tmpfs 1.9G 66M 1.9G 4% /disks
    tmpfs 384M 16K 384M 1% /run/user/42
    tmpfs 384M 20K 384M 1% /run/user/0
    tmpfs 384M 4.0K 384M 1% /run/user/984
    [root@localhost cache]# du -hx --max-depth=1
    xx
    131M ./PackageKit
    xx
    138M .

啟動程序

  • /proc/sys/vm/overcommit_memory
    5.4. 微調處理能力
    echo 1 > /proc/sys/vm/overcommit_memory

    • 0 — 預設設定。
      kernel 會進行探索式的記憶體過度寫入處理,方法是預測記憶體的可用量、並讓公然違規的需求失敗.
      不幸的是,因為記憶體是以探索式、而非精準的演算法則來分配,因此這設定有時會過度使用系統上的可用記憶體
    • 1 — kernel 不進行記憶體過度寫入處理.
      在此設定下,過度使用記憶體的機會會增加,但對於頻繁存取記憶體的任務來說,效能也會增加。
  • SIGPIPE訊號
    signal(SIGPIPE,SIG_IGN);
    若socket已調用clos,此時再用write程式將會收到SIGPIPE訊號,使用程式退出
    為了防止程式退出,此時可以設定signal(SIGPIPE,SIG_IGN)
    關於SIGPIP訊號
    signal(SIGCHLD, SIG_IGN)]

    TCP是全双工的信道, 可以看作两条单工信道, TCP连接两端的两个端点各负责一条. 当对端调用close时, 虽然本意是关闭整个两条信道,但本端只是收到FIN包. 按照TCP协议的语义, 表示对端只是关闭了其所负责的那一条单工信道, 仍然可以继续接收数据. 也就是说, 因为TCP协议的限制,一个端点无法获知对端的socket是调用了close还是shutdown.


更新程序

combobox_update_disk_onchanged

  • 注意附檔案一定要為.firmware
  • combobox_update_disk_onchanged
    需要先找出usb是那一個(即為未在hdd rec及boot hdd裡面的)
  1. umount /mnt
  2. mount /dev/sdc1 /mnt
  3. find /mnt -maxdepth 1 -name .firmware > /disks/tmp/files.txt
    當usb裡面沒有任何
    .firmware檔案,則會沒有檔案可以選(並且直接umount /mnt)
  4. 若有清單則一個一個加入
    由此可知,是在點選時,動態mount usb,並且產生清單

find_usb_disk

  • find_usb_disk
    1
    2
    3
    4
    5
    6
    7
    8
    9
    249 find_usb_disk<line:992> /dev/sda1 is used                                
    250 find_usb_disk<line:987> add usb:/dev/sdc1
    251 find_usb_disk<line:999> start find usb =======<<<======
    252 update_onchange<line:1733> set selected combobox_disk:/dev/sdc1
    253 combobox_update_disk_onchanged<line:1322> -*-*- start -*-*- /dev/sdc1
    254 combobox_update_disk_onchanged<line:1334> mount disk:/dev/sdc1
    255 combobox_update_disk_onchanged<line:1347> find /mnt -maxdepth 1 -name "*.firmware" > /disks/tmp/files.txt res=0 errno=22
    256 combobox_update_disk_onchanged<line:1374> find fw:/mnt/pc200_v2.0.2.tar.gz.firmware
    257 combobox_update_disk_onchanged<line:1384> -*-*-*-*- end res=0*-*-*-*-*-*-``

增加dom rootfs空間

將一些目錄mount到/tmp,增加dom rootfs空間

  • df -h

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    [root@localhost ~]# df -h
    Filesystem Size Used Avail Use% Mounted on
    devtmpfs 3.9G 0 3.9G 0% /dev
    tmpfs 3.9G 308K 3.9G 1% /dev/shm
    tmpfs 3.9G 9.5M 3.9G 1% /run
    tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
    /dev/sda2 3.5G 2.9G 433M 88% /
    tmpfs 3.9G 56K 3.9G 1% /tmp
    tmpfs 3.9G 0 3.9G 0% /var/spool
    tmpfs 3.9G 76K 3.9G 1% /var/log
    tmpfs 3.9G 0 3.9G 0% /var/cache/PackageKit
    tmpfs 3.9G 0 3.9G 0% /var/tmp
    /dev/sda1 120M 48M 64M 44% /boot
    tmpfs 3.9G 66M 3.9G 2% /disks
    tmpfs 797M 16K 797M 1% /run/user/42
    tmpfs 797M 16K 797M 1% /run/user/0
  • cat /etc/fstab

    1
    2
    3
    4
    5
    6
    7
    LABEL=dom-rootfs /                       ext4    defaults        1 1
    LABEL=dom-boot /boot ext4 defaults 1 2
    tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
    tmpfs /var/spool tmpfs defaults,noatime,mode=1777 0 0
    tmpfs /var/tmp tmpfs defaults,noatime,mode=1777 0 0
    tmpfs /var/log tmpfs defaults,noatime,mode=1777 0 0
    tmpfs /var/cache/PackageKit tmpfs defaults,noatime,mode=1777 0 0

參考來源