About me

Showing posts with label Linux. Show all posts
Showing posts with label Linux. Show all posts

Monday, 21 May 2018

Ubuntu下幾個Printer設定方式

      最近因為工作上的需求,所以開始在研究印表機的設定和行為,主要用GUI的方式有兩個,一個是使用『cups』,另一個則是使用你的桌面環境(desktop environments)的工具,像我的話就是用『gnome-control-center』裡面的『printer』工具來設定的。有時候你的環境沒有網路也沒有桌面環境的話,更進階有另外兩種方式可以設定你的印表機,一個是透過terminal上的『lpadmin』和ppd來加入你的印表機,令一個則是使用『udev-configure-printer』的工具。


      Ubuntu Support Printers

      Ununtu裡面所支援的印表機請參考:
      https://help.ubuntu.com/community/Printers


      IJS VS HPLIP

      因為這篇文裡面用的是HP的印表機,有用到HPLIP和IJS的東西,一開始我還蠻混亂的,所以就當筆記,寫一下這兩個東西的差別。

      HPLIP是給CUPS用的完整版 imaging and printing system,裡面已經有包含HPIJS了。
      而HPIJS則是HPLIP的子元件,提供了一些基本的列印功能,可以使用在CUPS, LPD, PPR和其他的spoolers上。

      其他的還有像是HPIJS提供了沒有postscript功能的印表機支援,也可以在沒有spoolers的環境上運作,無法提供IO。而HPLIP則提供了雙向(bi-directional)的IO溝通,並且可以掃描(scanning), photo card存取, 和toolbox的功能. 但是HPLIP則一定需要CUPS的spooler.


Thursday, 13 July 2017

sshfs

   

命令描述

通常在Linux裡面,一般我們要操作到遠端的檔案系統的話,都會用『samba』和『nfs』,這兩個方式比較正統,但是其實有第三種方式 - 『SSHFS (Secure SHell FileSystem)』的存在。sshfs可以直接用ssh的方式來掛載一個遠端檔案系統,主要是在linux上的檔案操作(還有其他有實做FUSE的OS,像是Mac OS X和FreeBSD等等)。 在本地端如果要把sshfs給掛載起來的話,實做的話會採用到FUSE (Filesystem in Userspace)的kernel module。所以呢,本地端就是要安裝這個軟體,而遠端則只要SSH的SFTP subsystem就夠了。這個命令如果要用到IPv6的話,記得要將IP給放在中括號(square brackets)裡面,像是[fe80::1025:45d0:9e4e:65c7]。

Sunday, 16 April 2017

建立自己的作業系統 - step by step

之前研究過使用buildroot來建立一個客製化的Linux作業系統-『buildRoot study - 建立自己的作業系統』,那時候就想說想要把buildroot給抽掉,結果經過一年多,終於有空可以繼續之前的這個研究,這次完全的將buildroot給抽掉,『Bootloader-uboot』, 『Kernel』, 『Rootfs-busybox』,『glibc』完全都自己建立,藉由此了解一個小型OS的構成。




大綱

1.Preparation Ubuntu 數莓派2 TTL Cable Enviroment 2.目標 Firmware U-boot Kernel Root FileSystem 3.Partition SD Card 4.raspberry pi 官方軔體 5.Root File System 6.Glibc 7.Kernel 8.u-boot 9.Boot-up 10. Ref

Monday, 10 April 2017

Linux poll 機制

語法
#須引入這個header
#include <poll.h>

#poll用法
int poll(struct pollfd *fds, nfds_t nfds, int timeout);

#define _GNU_SOURCE /* See feature_test_macros(7) */
#include  <signal.h>
#include  <poll.h>

int ppoll(struct pollfd *fds, nfds_t nfds,
const struct timespec *tmo_p, const sigset_t *sigmask);

 

Monday, 27 March 2017

[Linux][Bash] 如何分享別人自己的Terminal畫面

  

如何分享別人自己的Terminal畫面
有時後在使用Terminal上有一些狀況,還是有一些問題,所以想要跟別人討論,通常都是擷取畫面或是錄製操作流程後在打電話或是使用像Line之類的軟體來討論。這種方式通常會有一些步驟會流失,或者是你描述的另一個人會無法想像。

所以最好的方式就是你可以在那個人面前操作terminal,然後直接討論,在有VNC還是有遠端桌面的狀況之下可以這樣,但是如果是terminal的話,似乎比較難,所以這篇文教你怎麼可以跟別人share你的terminal畫面。

Saturday, 7 January 2017

[Linux] bash-completion

  

介紹

之前我不知道原來『bash-completion』沒有在Ubuntu上是預設,還以為是ubuntu上面就沒有這個功能,還在社群上鬧笑話=.=,這篇文來紀錄一下bash-completion的用法。

bash-completion是一系列的bash script,不只可以對檔案,資料夾,還可以對指令做自動完成的功能。

Thursday, 5 January 2017

[Linux] bash - set指令

  
介紹

Linux 這個Unix-like的架構所使用的shell - 『Bourne shell』,底下有內建一個『set』指令,主要用來設置/取消/檢視shell的參數和變數。

Monday, 2 January 2017

[Linux] Buildroot架構解析


這篇文章會以『free-electrons』官網上的資料,來研究buildroot的架構並且撰寫一篇簡單的教學文,成果會從buildroot專案中建置出「bootloader」, 「kernel」和「root fileSystem」。
關於buildroot我總共寫了三篇文章,主題各有些不一樣:
第一篇『buildRoot study - 建立自己的作業系統』,主要研究Linux在raspberry pi 2上的開機流程。
第二篇『raspberry_mp3』則是實際拿buildroot來建置一個隨插即用的mp3在raspberry pi 2上,只要通電後,插上裡面有mp3的隨身碟,系統就會開始撥放音樂。
第三篇,也就是這一篇主要將會把buildroot的知識和架構在好好的解釋清楚,算是buildroot的補強吧,硬體的話則改成使用Raspberry Pi3的組態(但是本篇文章主要講buildroot,所以這台pi3沒有太多探討)。

老話一句,如果覺的容器太小,請直接看我的gitbook:

https://hugh712.gitbooks.io/buildroot/content/


Sunday, 13 November 2016

[Linux] RHCE 7

  
RHCE 7 

這張證照分成兩個部份-「RHCSA 7 (EX200)」和「RHCE 7 (Ex300)」,兩張都要過才能拿這張證照,通過的成績都是210/300,寫這篇文章時都是RHEL (Red-Hat-Certified-Engineer )7版本。

官方主要的exam-objectives如下:

RHCSA:
https://www.redhat.com/en/services/training/ex200-red-hat-certified-system-administrator-rhcsa-exam
RHCE:
https://www.redhat.com/en/services/training/ex300-red-hat-certified-engineer-rhce-exam

整理一下如下,就是如果你真的練習很久,很熟練的話,你會學到底下的東西:

Wednesday, 26 October 2016

[Linux] pidstat - 行程(任務)資源統計

pidstat

pidstat是Linux 裡面一套統計/監控目前被kernel所管理的任務(task)的軟體。使用前必須先掛載proc。主要有底下幾種方式顯示統計數據:

1. 顯示區間和顯示筆數。
2. 根據特定task為單位。
3. 根據IO。
4. 根據PID。
5. CPU使用量。
6. 分頁錯誤(page faults)和記憶體使用量(memory utilization)。
7. 堆疊(stack utilization)。
8. task切換分頁。

(這文章並不是在同一天,同一台主機內寫的,所以顯示數據的hostname, CPU,還有裡面的例子等等資訊可能會不太一樣,並且以下內容都是以版本11.2.0所撰寫)

Sunday, 16 October 2016

[Linux] Uncomplicated Firewall (UFW)

  
  Uncomplicated Firewall

  之前一直在用firewalld,用法請參考之前的文章『firewalld』,但是我的PC安裝的是Ubuntu阿,
  所以還是來研究一下UFW (Uncomplicated Firewall),然後將firewalld取代掉吧。

  在Linux的kernel裡面提供了一個過濾封包的subsystem稱為『netfilter』,主要用來決定外來或內部網路封包是否可以通過的規則,傳統操縱netfilter的介面是『iptables套件』,iptables提供了一套完全彈性和很好去組態的防火牆機制。但是想要精通iptables需要花很多時間,而且對於初學者來說想要使用iptables來設定你的防火牆是一件非常堅巨的任務。所以有許多的前端軟體被建立出來,每個都有不同的用途。

  UFW是Ubuntu上的防火牆(iptables)的前端CLI工具,提供了控制netfilter的framework,但是在其他的distros上面也可以安裝,如果不喜歡用CLI的話,可以使用『Gufw』這套GUI程式。而UFW是在Ubuntu 版本8.04 LTS (Hardy Heron)被引入的,後面的版本都可以直接安裝:


  - Ubuntu 12.04 LTS: 0.31.1-1
  - Ubuntu 14.04 LTS: 0.34~rc-0ubuntu2
  - Ubuntu 15.10: 0.34-2
  - Ubuntu 16.04 LTS: 0.35-0ubuntu2
  - Ubuntu Core: 0.35pre


  

Monday, 8 August 2016

[Linux] Firewalld

  

Firewalld 介紹 firewalld是一套Linux上的防火牆管理工具,最初版本是在2011年1月3號釋出的,穩定版直到2016年4月20號才釋出。主要提供Linux核心的iptables封包過濾(packet filtering)系統 - 『netfilter』的前端(front-end)功能。命名規則主要遵循著Unix的命名規則daemon的名字加一個『d』。這一套工具是由Python所寫的,之前原本想要移植到C++上面,但是這個計畫在2015年時就取消了。 官方上有firewalld的主要功能: - D-Bus API - Timed firewall rules - Rich Language for specific firewall rules - IPv4 and IPv6 NAT support - Firewall zones - IP set support - Simple log of denied packets - Direct interface - Lockdown: Whitelisting of applications that may modify the firewall - Support for iptables, ip6tables, ebtables and ipset firewall backends - Automatic loading of Linux kernel modules - Integration with Puppet

Tuesday, 2 August 2016

[Linux][Ubuntu][RedHat] bonding and teaming

Link aggregation

網路聚合(Link Aggregation),在電腦網路領域這個名詞代表的是將多重網路介面NIC(Network interfaces)用並列的方式結合來增進網路流量,也可以提高其容錯能力。主要的方式是建立一個LAG(Link Aggregation Group),而這個LAG群組底下會有多個實體的埠(port),每個port都有辦法處理高流量的封包,所以將這些port都結合在一起的話,就可以增加很大的彈性。

Thursday, 28 July 2016

[Linux][Red Hat] Network Teaming


在Linux裡面,可以透過將多個實體網路介面分配到單一個邏輯網路,這樣可以增加網路的流通量和穩定性。舉例來說,可以將兩個網路介面「eth0」和「eth1」組成一個群組「group1」,然後分配一個IP給這個群組,這樣的話,妳就有兩倍的流量了,又或者是你也可以設置成備用的用途,像是如果eth0壞掉了,這個群組會自動的改走「eth1」。

將兩個網路介面設定群組「Link aggregation」,可以藉由「teaming」或是「network bonding」來達成,但是在Red Hat的官方網站上,有比較兩邊的差異,請參考→ here for a full list of the differences.

我參考的這邊文章,主要講解如何用「team」將兩個不同的網路介面給設定成一個群組。

Sunday, 24 July 2016

[Linux] Single Mode

前言

使用Linux系統,有時候我們會忘記密碼,這時候就會無法登入,此時就必須要在開機時做一點手腳,然後由『Single mode』去修改密碼。
不過你也許會想,這樣不就是只要接觸到你電腦的人,都可以藉由這種方式來取得你的root嗎?@@,所以這就是為什麼有些公司的重要機房都會管制,以防止被竊取資訊(然後有些駭客就必須要爬杜拜塔進去機房.....,阿~對不起,我電影看太多了~~=.=)。

Menu entries可以藉由在開機之前修改參數,然後在傳遞這個參數到Kernel裡。要進行這個動作,就必須要用到『menu entry 編輯介面』,底下主要紀錄一下『Ubuntu』和『Redhat』怎麼進入Single Mode的。




Ubuntu 16.04


在Ubuntu裡,開機時按著「shift」就會進入Boot Menu,但是像我自己曾遇到,狂按著「Shift」還是不會進去,所以這時候就必須要強制打開它,請修改檔案「/etc/default/grub」,將這一行如下圖一樣註解掉「GRUB_HIDDEN_TIMEOUT=0」,然後儲存後在更新grub table:
update-grub


這時候重開機後就會看到Boot Menu在倒數了:

接下來就是選擇你要的系統上按「e」進入編輯,然後在如下的地方帶入額外的參數「single」以後,直接按「Ctrl+x」或是「F10」以這份修改後的Boot Table開機:

重開機後你就會看到進入single mode了,接下來如下一樣,使用指令「passwd」修改密碼,然後在用「reboot」或是「init 6」重新開機後,在用你的新密碼開機瞜~。


RetHat

從RHEL7開始,grub版本就變成『grub2』了,所以這邊需要分成兩個部份來介紹:RHEL6.X 的『grub』和 RHEL7.X 的『grub2』:

RHEL 6.X


在這個介面,選擇你要啟動的OS版本,按下『e』鍵修改,像這個例子,只有一個版本,所以不需要選擇,直接按下『e』就好。

按下去以後,就會跳進去下一個表單,像這個例子來說,有三行資訊,第一行是我的root file system的磁碟位置,第二行為kernel image的印象檔檔名和傳入參數,第三行則是initrd印象檔的檔名。我們想要修改的是kernel的傳入參數,所以選擇第二行後再按『e』。


進來之後就會看到比較細節的參數資訊了,這時候請在此行最後面加入一個『single』或者是『1』都可以,這邊記得跟前面的參數之間要隔一個空格,然後按下『Enter』儲存改變後回到上一層。


回到上一層以後,在按下『b』鍵,代表用這個修改過的『Menu entry』來開機,但是記得,這個只是對於這一次的開機,也就是說,你下次開機後,你剛剛修改的值就會消失恢復成預設值了。
按下『b』以後,你就會看到一堆的開機程序,然後就進入root了,這時候你只要簡單的輸入:
passwd
修改你的密碼以後再輸入
reboot
或是
init 6
就可以用你的新密碼開機了


RHEL 7.X



RHEL7.X的grub2會有一點點不太一樣,主要差異是『SELinux』和『systemctl』。開機後一樣,看到boot menu後,移到你要的版本上按下『e』鍵:
然後你就會發現在比較進階的資訊,這些資訊其實都是在檔案『/boot/grub2/grub.cfg』裡面的內容,接下來你要找到讀入kernel檔案的那一行,將『rhgb quiet』取代成『init=/bin/bash』,然後按下『Ctrl+x』用這個組態開機以後就會進入到Single Mode了,如下圖:
一旦你進入Single Mode以後,你的root的分區(Partition)將會是唯獨(read only)的狀態,你可以藉由底下指令來確認:
mount | grep root
這時為了要將這個partition改為可以寫入的狀態,所以我們必須要重新掛載(remount)成Read/Write的模式:
mount -o remount,rw /
然後再次確認:
mount | grep root

掛載成Read/Write 模式以後,我們就可以改root的密碼了,請輸入『passwd』:
passwd


如果你的系統的Selinux是開啟的話,你就必須要在執行底下這個步驟,來重新修改SELinux的內容,否則你的密碼將不會生效:
touch ./autorelabel


接下來只要重開機就好了,你就可以使用你新的密碼開機了:
exec /sbin/init


(2016.08.24 更新)
如果在RHEL7下,用上面的方式不行的話,可以用底下的方法:
Interrupt the boot process in order to gain access to a system.




Ref:

Monday, 4 July 2016

[Linux] finger

簡介:

這是可以查看系統使用者資訊的程式。

用法:

finger  [-lmsp] [user ...] [user@host ...]


Monday, 9 May 2016

raspberry_mp3


這個專案是參考mpolakovic的qemrdux-player專案,然後藉由buildroot,實做一個mp3 player,主要差別是他是跑在qemu上,但是我將他移植到Raspberry Pi2上,藉由這個專案,可以了解以下項目:
  1. 一個客製化的作業系統是怎麼被建立出來的。
  2. 如何客製化的引入套件。
  3. busybox 的設定和修改。
  4. Root File system的建置原理。
  5. 產生與燒入映像檔。
如果這個文章裡面有任何錯誤,還是有需要討論的地方,都歡迎交流,你的指正,都會讓我更進步 ^^。 

老話一句,如果覺的容器太小,請直接看我的gitbook:

或者是直接下載code去build:

其他的相關研究結果請參考:

buildRoot study - 建立自己的作業系統

Buildroot架構解析


Tuesday, 3 May 2016

vmstat

Introduction

這是一套虛擬記憶體的統計軟體,統計關於行程,記憶體,分頁,block IO, traps, 磁碟和cpu的活動等等。
vmstat總共有四種模式,分別是「VM」, 「Disk」, 「Disk Partition」, 「Slab」。

Tuesday, 26 April 2016

Benchmark - mpstat

Introduction

統計跟處理器相關資料軟體,必須先把proc掛載起來才能使用。
這個指令會對輸出所有可取得的處理器的活動,「processor 0」 會是第一個. 所有處理器的平均也會被紀錄起來。不管是單處理器還是多處理器都可以用這個指令,只是單處理器只會印出一個值。

如果後面接數字參數「eg. mpstat 2」代表每2秒更新一次,持續更新資料。如果是0或是沒有參數則是從開機到這個時間點的平均。如果是兩個數字參數「eg. mpstat 2 5」,代表每兩秒更新一次,組共5次。
 

Monday, 28 March 2016

nmap 基本用法

Introduction

  • man page的定義:「Network exploration tool and security / port scanner」,這套工具可以拿來掃描「遠端」或是「子網路」,以取得一些資訊,來作為資訊安全的考量或察核。因為最近很常用,所以這邊文章想要整理一下比較常用的用法,以供我自己或有需要的人查詢。