google-code-prettify

2019年9月25日 星期三

CentOS 安裝設定網路連線

這次實做的環境是在 VirtualBox 的 VM 裡。
先讓 VM 裡可以和本機 Host OS 可以連線,
依照下面圖片步驟將網卡本機(主機)和 VM 溝通的虛擬網卡設定為使用 DHCP


然後對該VM 進行「設定」,
到「網路> 介面卡1」開啟下面畫面,保持「附加到 NAT」


到「介面卡2>附加到」選擇「僅限主機介面卡」,
「名稱」選擇上面第二張圖裡面的網卡名稱。


啟動VM 後,
在 VM 檢查 ip ,可以會看到有張網卡被配置 192.168 的 IP,
[root@localhost ~]# ip addr
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s3:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:b1:a2:52 brd ff:ff:ff:ff:ff:ff
3: enp0s8:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:5b:6b:0e brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.101/24 brd 192.168.56.255 scope global noprefixroute dynamic enp0s8
       valid_lft 746sec preferred_lft 746sec
    inet6 fe80::b4a9:c80a:fc85:ed08/64 scope link noprefixroute
       valid_lft forever preferred_lft forever


在本機查詢 ip,
可以看到以下的區塊,
這就是 VM 對本機的 IP
C:\Users\ryan.pt.chen>ipconfig

Windows IP 設定

乙太網路卡 VirtualBox Host-Only Network:
   連線特定 DNS 尾碼 . . . . . . . . :    連結-本機 IPv6 位址 . . . . . . . : fe80::4548:49a2:946b:6b0b%16    IPv4 位址 . . . . . . . . . . . . : 192.168.56.1    子網路遮罩 . . . . . . . . . . . .: 255.255.255.0    預設閘道 . . . . . . . . . . . . .:

在 VM 裡 ping 本機(主機) 的 VirtualBox  ip 可以通,
[root@localhost ~]# ping 192.168.56.1
PING 192.168.56.1 (192.168.56.1) 56(84) bytes of data.
64 bytes from 192.168.56.1: icmp_seq=1 ttl=128 time=0.619 ms
64 bytes from 192.168.56.1: icmp_seq=2 ttl=128 time=1.16 ms

這樣就可以用 MobaXterm 這類軟體進行作業比較方便。


接下來設定連線網際網路使用的網卡,
我安裝的是 CentOS Minimal 版,
安裝好之後並無法連上Internet,
ping www.google.com 並無法得到回應

先確定自己的網卡的名稱是什麼,
因為並不是大家都會是一樣的,
也不是一定會有或會需要有eth0,
從前面使用「 ip addr 」指令可以看到列出的網卡有一張「enp0s3」還沒有網路設定,
所以就針對這張網卡進行設定。
以設定使用 DHCP 取得 IP 的方式進行,
檢查這張網卡目前的設定狀況:
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp0s3
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s3
UUID=b7d957bb-1d49-4b92-a88e-2ca7c7c55247
DEVICE=enp0s3
ONBOOT=no
可以看到 BOOTPROTO 原本就已經設定好使用DHCP,
但是 ONBOOT= no 並沒有開機時讓網卡生效,
所以修改設定使開機時讓網卡生效,
使用 vi 工具將 ONBOOT 改為 yes (ONBOOT=yes)。

重啟該張網卡
[root@localhost ~]# ifup enp0s3
再 ping Internet 主機就可以有回應了,
[root@localhost ~]# ping www.google.com
PING www.google.com (216.58.200.228) 56(84) bytes of data.
64 bytes from tsa03s01-in-f4.1e100.net (216.58.200.228): icmp_seq=1 ttl=51 time=15.9 ms
64 bytes from tsa03s01-in-f4.1e100.net (216.58.200.228): icmp_seq=2 ttl=51 time=13.3 ms

Internet 連通後,就可以開始下載軟體安裝,
例如:net-tools,這樣才開始有 ifconfig 等指令可以使用。
[root@localhost ~]# ifconfig
-bash: ifconfig: command not found
[root@localhost network-scripts]# yum install net-tools
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
.....
.....
.....
Installed:
  net-tools.x86_64 0:2.0-0.25.20131004git.el7

Complete!
[root@localhost ~]# ifconfig
enp0s3: flags=4163  mtu 1500
        inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255
        inet6 fe80::1ab1:b1d8:740b:fdf0  prefixlen 64  scopeid 0x20
        ether 08:00:27:b1:a2:52  txqueuelen 1000  (Ethernet)
        RX packets 6413  bytes 8537130 (8.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 934  bytes 59809 (58.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp0s8: flags=4163  mtu 1500
        inet 192.168.56.101  netmask 255.255.255.0  broadcast 192.168.56.255
        inet6 fe80::b4a9:c80a:fc85:ed08  prefixlen 64  scopeid 0x20
        ether 08:00:27:5b:6b:0e  txqueuelen 1000  (Ethernet)
        RX packets 1342  bytes 148934 (145.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 516  bytes 71056 (69.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 52  bytes 4464 (4.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 52  bytes 4464 (4.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0




2019年9月20日 星期五

安裝 Windows 10 與 CentOS 雙系統

本文主要描述在已經安裝好 Windows 10 的 PC 上,安裝 CentOS 在開機時有開機選單可以選。

我非專職系統工程師,
或有更適當的做法我不知道,
本文是我處理的過程記錄。
到 CentOS 官網下載 ISO 檔,
將 ISO 做成可開機 USB 隨身碟,
因為公司資安管控並無法從公司 PC 寫入資料到隨身碟,
所以一開始使用 unetbootin 這套軟體在我的 Mac Book Pro 製作,
但是做好的開機隨身碟雖然可以進入了 CentOS 安裝起始導引畫面,
卻出現無法找到安裝軟體的檔案問題而無法安裝,
回家使用Windows PC 改用 Win32 Disk Imager 重新製作開機隨身碟才可正常安裝。

剛開機進入 BIOS 的 Boot Menu,
選擇使用 「UEFI {你的隨身碟識別名稱}」這一項,
進入隨身碟開機來安裝,
安裝過程遇到 dracut-initqueue timeout 的問題,
原因是安裝軟體的檔案 /isolinux/isolinux.cfg 裡面有設定LABEL的名稱(我看到有四個)和隨身碟實際的LABEL名稱不同,
所以導致安裝程序找不到所需的東西而無法進行。

上網找到了兩個解法:

  1. 修改 isolinux.cfg 裡 LABEL 的名稱為隨身碟實際名稱或修改隨身碟LABEL名稱為 isolinux.cfg 裡的名稱。=>結果,isolinux.cfg 裡的名稱太長而無法用來修改隨身碟名稱。或採用修改isolinux.cfg的方式,遇到公司 PC 無法寫入資料到隨身碟。 
  2. 當進入dracut:/# 時,查詢隨身碟的設備資訊

 
dracut:/# cd /dev
dracut:/# ls  
列出設備訊息後,找 sdb[數字] 的那一個就是隨身碟, 然後重開機
 
dracut:/# reboot 
在install頁面按 e 鍵, 進入一個畫面,畫面上有一段文字
 
vmlinuz initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 check quiet
直接移動滑鼠游標將 hd:LABEL=CentOS\x207\x20x86_64 改為 hd:/dev/sdb[你的隨身碟數字],例如改為:
 
vmlinuz initrd=initrd.img inst.stage2=hd:/dev/sdb1 check quiet
然後,按 Ctrl+x 繼續,就可以正常進行了。
安裝完,移除隨身碟重開機後,
會出現 CentOS...(有兩個)和 Windows Boot Manager 三個選項這樣的開機選單,
選擇 CentOS 就可以進入剛裝好的 CentOS 作業系統環境,
而選擇 Windows Boot Manager 進入後卻遇到需要「BitLocker 修復金鑰」的狀況,
跟 IT 要金鑰打進去後,進行修復完成就正常進入原本的 Windows 10 裡面了。

2019年9月17日 星期二

Oracle VirtualBox 啟動 Linux OS 安裝程序卡住無法進行


安裝Linux OS時,
ISO檔載入後,安裝起始畫面沒多久就卡住了,
如下面是卡住的 Ubuntu 安裝起始畫面:


確認過BIOS的 Virtualization Technology 設定已經有啟用,
再試過調整CPU數量、記憶體數量、視訊記憶體數量、啟動或停用PAE/NX、VT-x/AMD-v、3D Acceleration、改變USB Controller設定,
也安裝了 Oracle VM VirtualBox Extension Pack,
都無法修正這個問題,

花時間耐心看VBox.log,
發現幾個可能造成問題的訊息,
其中一個訊息:「HMR3Init: Attempting fall back to NEM: VT-x is not available」很怪,
因為已經確認過 BIOS 的 Virtualization Technology 設定已經有啟用
在上網搜尋資料發現是因為 Windows 10 的系統更新修改了系統參數設定所造成,
依照下列步驟解決:

  • 使用系統管理員開啟命令提示字元
  • 輸入下列指令,檢視輸出的結果中,hypervisorlaunchtype是否被設定為 Auto
bcdedit
  • 繼續在命令提示字元中輸入下列指令將 hypervisorlaunchtype 設為 off
bcdedit /set hypervisorlaunchtype off
  • 重新啟動電腦,解決問題

參考文章:
https://blog.csdn.net/imilano/article/details/83038682

這個設定好之後,發現原本可正常運作的 Docker 反而出現問題無法運作。
因為這個設定把 Hyper-V 功能關閉,
而 Docker 的運作需要它。

目前在網路上找不到 VirtualBox 與 Docker/Hyper-V 同時並行的作法,
許多都是採用建立不同的開機程序,
在開機時選擇有啟用或不啟用 Hyper-V 的開機程序。

後來知道 Windows 10 內建的 Hyper-V 就可以建立虛擬機安裝不同作業系統,
過幾天我再來試試,可行就捨棄 VirtualBox !


2016年9月2日 星期五

程式碼品質掃描:Jenkins + PMD plug-in + Maven設定

Jenkins + PMD plug-in做程式碼品質掃描,
以搭配Maven為例子:

Maven pom.xml設定加入以下的plug-in:

<project>
.....
.....
.....
  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <version>3.6</version>
        <configuration>
          <linkXref>true</linkXref>
          <sourceEncoding>utf-8</sourceEncoding>
          <minimumTokens>100</minimumTokens>
          <targetJdk>1.5</targetJdk>
          <excludes>
            <exclude>**/*Bean.java</exclude>
            <exclude>**/generated/*.java</exclude>
          </excludes>
          <excludeRoots>
            <excludeRoot>target/generated-sources/stubs</excludeRoot>
          </excludeRoots>
        </configuration>
      </plugin>
    </plugins>
  </reporting>
</project>


Jenkins設定:
1.安裝PMD plug-in
2. 該專案(作業/Job)以「Maven 專案」型態建置,在「建置」的「Goal及選項」設定值為「 package package pmd:pmd」,若是同時也要執行FindBugs plug-in可設定成「package pmd:pmd findbugs:check」
3.「建置設定」勾選「發佈 PMD 分析結果」




建置後看結果:



列出紅色為高優先警告,黃色為一般警告


一路點選到問題程式之後,會列出問題處的行號和問題原因與建議處理方法:

程式碼品質掃描:Jenkins + FindBugs plug-in + Maven設定

使用Jenkins + FindBugs plug-in做程式碼品質掃描,
以搭配Maven為例子:


Maven pom.xml設定加入以下的plug-in

<plugin>
   <groupId>org.codehaus.mojo</groupId>
   <artifactId>findbugs-maven-plugin</artifactId>
   <version>3.0.1</version>
   <executions>
       <execution>
           <goals>
               <goal>check</goal>
           </goals>
       </execution>
   </executions>
   <configuration>
       <effort>Max</effort><!--值可以是Min、Default或是Max-->
       <xmlOutput>true</xmlOutput>
       <failOnError>false</failOnError>
   </configuration>
</plugin>


Jenkins設定:
1.安裝FindBugs plug-in
2. 該專案(作業/Job)以「Maven 專案」型態建置,在「建置」的「Goal及選項」設定值為「 package findbugs:check」
3.「建置設定」勾選「發佈FindBugs分析結果」




建置後看結果:




列出紅色為高優先警告,黃色為一般警告



一路點選到問題程式之後,會列出問題處的行號和問題原因與建議處理方法: