2018年8月24日 星期五

在Linux作業系統,使用ethtool來切換網路的速度

假設我們要把eth0從10G速度切換成固定1G(關閉Auto-nego),執行下面指令就可以

1. 關閉Auto-negotiation 同時切換網路速度為 1000Mb/s 並設為全雙工
# ethtool -s eth0 autoneg off speed 1000 duplex full



2018年8月6日 星期一

fdisk 自動完成partition,使用一個script來完成切割

把/dev/sda 切一個partition,全部空間都切成一個partition
 echo -e "o\nn\np\n1\n\n\nw" | fdisk /dev/sda


把/dev/sda 切兩個partition,sda1=150GB, sda2=50GB 
echo -e "o\nn\np\n1\n\n+150GB\nn\np\n2\n\n+50GB\nw" | fdisk /dev/sda

2018年8月1日 星期三

busybox 的 udhcpc 執行後,印出的訊息中有取到ip,但是本地端ip沒有更改

今天在我們自己Build的Linux kernel上要使用udhcpc -i eth0來自動分配ip

原先所設定的Static IP為 192.168.1.3 如下:








使用udhcpc -i eth0 指令後,結果出現如下的情形:











udhcpc有從Server端取到IP,但是卻沒設定到eth0介面,後來爬文發現,udhcpc執行的流程會去執行 /usr/share/udhcpc/default.script,這個script會把從Server端取到的IP設定到網路介面


/usr/share/udhcpc/default.script 內容如下:
#################################################
#!/bin/sh

# udhcpc script edited by Tim Riker <Tim@Rikers.org>

[ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1

RESOLV_CONF="/etc/resolv.conf"
[ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"
[ -n "$subnet" ] && NETMASK="netmask $subnet"

case "$1" in
  deconfig)
    /sbin/ifconfig $interface 0.0.0.0
    ;;

  renew|bound)
    /sbin/ifconfig $interface $ip $BROADCAST $NETMASK

    if [ -n "$router" ] ; then
      echo "deleting routers"
      while route del default gw 0.0.0.0 dev $interface ; do
        :
      done

      for i in $router ; do
        route add default gw $i dev $interface
      done
    fi

    echo -n > $RESOLV_CONF
    [ -n "$domain" ] && echo search $domain >> $RESOLV_CONF
    for i in $dns ; do
      echo adding dns $i
      echo nameserver $i >> $RESOLV_CONF
    done
    ;;
esac

exit 0
####################################################

請自行新增這個檔案,並且使用 chmod 777 /usr/share/udhcpc/default.script,確保可執行。
之後再去執行udhcpc -i eth0 就可以了

可以使用的ntp server的domain name 與 ip address

Domain Name: tw.pool.ntp.org

IP Address: 103.18.128.60

我們可以使用ntpdate去同步ntp_server時間,最後使用指令hwclock -w 來寫入到hwclock

2018年7月23日 星期一

【Linux】如何分辨/dev/底下的裝置名稱,是SATA硬碟 或是 USB硬碟

使用下面的方法可以分辨:
SATA:
ls -l /sys/class/block | grep ata


usb:
ls -l /sys/class/block | grep usb


M.2:
ls -l /sys/class/block | grep nvme

【Linux】mount fat32 格式,chown 回應 "operation not permitted"

事由:
今天我有一支USB隨身碟,他是Fat32格式的,我在Linux使用mount指令把它掛載起來

後來要透過Samba到遠端電腦來修改此USB碟的內容,出現權限不足的問題

因此我使用chown想把它的owner改為nobody,卻出現"operation not permitted"的錯誤訊息









原因&解決方法:
查了一下原因如下:
因為chown(或是chmod)是在Linux的檔案系統才能夠使用的,FAT32或NTFS是無法使用這個指令來操作,而解決方法只有在mount的時候,指定你要操作的人的uidgid

例如我原本想要把owner改為 nobody:nobody
===> 首先,先去確認你的passwd當中,nobody的uid與gid








如上圖,uid與gid都為99
所以我只需要在掛載時,使用下面的指令即可:
mount -t vfat -o rw,uid=99,gid=99 /dev/sdc1 /mnt/USB1


2018年7月20日 星期五

除錯工具strace的用法


strace   [parameter]   [除錯的執行檔]

執行 strace 相關參數
-o ( strace 程式的過程寫至指定的 file )
-s (最多一次 print xxx bytes 的訊息)
-p (strace pid 程序的執行過程)
-f (strace 某子程序的執行過程)

例如:   我執行smbd遇到無法跑在背景,卻又沒有任何錯誤訊息
就可以使用strace來觀察錯誤的原因
===> ./strace -o aa.log -s 1024 /sbin/smbd -D