新增加內核編譯linux筆記看看如何看過的人說一下啊. 這樣可以豐富一下學習(繼續

火星人 @ 2014-03-23 , reply:0



希望得到大家的幫助,有錯誤的話.提出來,我會很感謝您的

linux 內核(kernel)
shell是現在流行的linux的語言,最開始是一個叫bcpc的語言--->B(語言)-->C(語言)
Unix是一個商標。現在主流的有IBM的AiX,HP的ux,sun的soaris等。
最開始的起源-->1972(C語言)-->1973(BSD)-->sys V 系統
|opengroup
1973年由於壟斷法的原因unix分出來,被朗訊用到-->Nover|unixware 之後sco打專利的案件。如果感興趣的話,具體的可以去網上找一找相關的資料。

|dos
linux的起源 |
        |minix (大學教授的一個教學系統) 感覺這兩個系統都不怎麼好,在原有的minix里改寫程序,最開始是發布在大學的校園網。供大家一起來學習,之後有很多         | 人覺得這是個很好的系統,之後大家一起來進來修改,在1992前發布了

GUN--創史人(RMS)---FSF 最開始是在實驗室里進行開發,unix進行商業之後,一個很好的系統應該是一個開放的,這樣長會長久。就開始了編寫軟體 linux是一個內核。之後加入GUN組織,現在的linux 叫GUN/linux
  
Block-512-8M
_____
|446|-->MBR
        |64 |-->DPT
|2 |-->16位的機器編
-----      

  ------------------------  
|  推薦的書 |
|APUE的內枋編程    |  
|TCP/IP         | 
  |--這兩本書是同一個人| steven
------------------------ 
註:以下代有 @#為root提示 @@為普通用戶

常用命令:
    ls   顯示目錄內容
touch 建立空文件
rm   刪除文件,默認的參數是 「-i「 如果確定刪除可以用 -->rm -rf filename
mkdir 建立目錄
rmdir   刪除目錄,如果目錄里不為空不能刪除
more 翻頁查看(只可以一屏一屏,不可以向上看在看)
less 查看(可以向上,向下)
cat 從上向下查看文件。
tac 從下向上查看文件。
du -h /home 查看/home的使用情況
df -h 查看磁碟空間
tail 查看文件末尾,默認為10行。可以加上 {-n 參數} 來看更多 tail -f 文件名 可以看到變化的文件
type 顯示命令 例如 type cd 可以看到 cd 是一個內部命令。 type passwd 是一個外面命令
man 幫助命令 系統管理員主要看 1、5、8頁 例如 man 5 passwd 程序可以根據自己開發自己選擇。 -f可以看一下命令幫助有幾頁 例如: man -f passwd 如果看查看一下哪些文件有pdf這個程序,可以 man -k pdf
info 和man相似。它會顯示一些菜單選項,進入按回車鍵進入相應的幫助。返回上一頁按 u
elinks 文件方式訪問網頁
type echo 會看到這個是內建命令
shell---->外殼
@#echo $SHELL ---> 輸出當前工作shell

PATH 系統命令查找的路徑
[root@www ~]# which useradd
[root@www ~]# mv /usr/sbin/useradd /tmp
[root@www ~]# useradd
-bash: useradd: command not found
[root@www ~]# mv /tmp/useradd /usr/sbin/useradd
[root@www ~]# useradd
usage: useradd [-u uid [-o]] [-g group] [-G group,...]
[-d home] [-s shell] [-c comment] [-m [-k template]]
[-f inactive] [-e expire ] [-p passwd] [-M] [-n] [-r] name
useradd -D [-g group] [-b base] [-s shell]
[-f inactive] [-e expire ]
如果是自己編譯的軟體,想和命令一樣方便輸出來。可以這樣做
@#PATH=PATH:/usr/loca/tmp/myplay(這個只是舉一個例子,根據你實際安裝的情況加)
{(
[root@www ~]# type iptables
iptables is /sbin/iptables
[root@www ~]# type useradd
useradd is hashed (/usr/sbin/useradd)
[root@www ~]# type if
if is a shell keyword
[root@www ~]# type ls
ls is aliased to `ls --color=tty'
[root@www ~]# type alias
alias is a shell builtin)
以上是命令的形式,具體的請查看幫助
}

useradd --->增加用戶
hostname --->主機名,也可以直接更改,重新啟動機器不會成效。 配置文件在 /etc/sysconfig/network
uname --->查看內核
-a ---->顯示內核具體信息
id --->顯示當前用戶ID 管理員的ID是0
date --->查看當前日期
+%A +%a +%B +%b +%C +%c +%D +%d
cal --->查看當前月
例如 cal 80 2008
su --->切換用戶
su - user 記得「-」 會把當前的PATH加上的。
ssh --->支持加密數據傳輸。默認以當前用戶登陸。例如 ssh tengfei@192.168.1.119
telnet --->默認不能使用root。 telnet是明文傳輸密碼,對於伺服器來說不安全。
exit --->退出
logout --->登出 例如 @#ksh @#logout @#logout 實驗看一下就知道了
pstree --->以當前的進程顯示樹形

關機命令
shutdown -h now 馬上關機 有提示
shutdown -h 12 12分鐘后關機,可以ctrl+c取消
init 0 先殺進程,再關機。不提示
halt -p -f 直接把電關掉
poweroff

重啟計算機
shutdown -r now
init 6
reboot

磁碟
df -h 查看單位是1000
df -H 查看單位是1024
du -sh 文件名 和ls -alh一樣

掛載
mount -t iso9660 /dev/cdrom /mnt
mount -t vfat /dev/sda1 /mnt 默認redhat 不支持 ntfs

用戶和組管理
useradd 增加用戶
對應文件 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
用戶:密碼:用戶ID:組ID:註譯:主目錄:shell

對應文件 /etc/shadow
root:$1$iiPrrQSB$Xp5p6m1tVVou2H8udwP2s.:13605:0:99999:7:::
bin:*:13605:0:99999:7:::
用戶:md5加密碼(實際是一個hash 演算法):日期(相對1970年1月1日有多少天):密碼過期時間:密碼過期提示時間:保留以後用

對應文件 /etc/group
root:x:0:root
bin:x:1:root,bin,daemon
用戶名:密碼:ID:用戶

對應文件 /etc/shadow

change 改變用戶的相關信息 例如: change -E 2008-08-08 tengfei 對應的/etc/shadow就會改變
/etc/login.defs --> 用戶的郵箱位置
目前可以創建的用戶是2^32--->4G
useradd --->對應著五個文件一個配置
/etc/passwd /etc/shadow /etc/group
/etc/gshadow /etc/login.defs
/etc/skell(配置)
passwd 更改密碼
usermod 改用戶
groupadd 增加組 還有一些相關的命令 groupmod groupdel

文 件 類 型
ls -al
-表示普通文件
b表示塊設置文件
c表示字元設置文件
d表示目錄文件
l表示鏈接文件
s表示unix的網路文件(socket)
p表示管理文件

修 改 權 限
--------------------------------------------------------
| user | 運算符 mode filename |
| u | + rwx |
| chmod g | - rwx /etc/tengfei.txt |
| o | = rwx |
| a | rwx |
| | |
---------------------------------------------------------
r(4)讀來信 w(2)寫 x(1)執行
例如 @#chmod 744 /etc/tengfei.txt 這個文件的用戶有全部權力。組和其它s可以讀
注意:文件夾必須有x許可權,否則是進不去的。
chown 文件的擁有者
chown [-R] user 文件名
chgrp 文件擁有組
chgrp [-R] groupname 文件名 或者 chown :groupname 文件名
ln 建立鏈接
硬鏈接 @#ln file1 file2
硬鏈接的特點:
1,不能跨分區,2,不能給目錄作硬鏈接3,刪除鏈接原始文件



lsof 列出正在運行的進程
例如 lsof -i :80 會找到httpd服務的進程(包括 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME)

查看某個文件被哪些進程在讀寫(bjweiqiong)
lsof 文件名

查看某個進程打開了哪些文件(bjweiqiong)
lsof ?c 進程名
lsof ?p 進程號

lsof abc.txt 顯示開啟文件abc.txt的進程
lsof -i :22 知道22埠現在運行什麼程序
lsof -c nsd 顯示nsd進程現在打開的文件
lsof -g gid 顯示歸屬gid的進程情況
lsof +d /usr/local/ 顯示目錄下被進程開啟的文件
lsof +D /usr/local/ 同上,但是會搜索目錄下的目錄,時間較長
lsof -d 4 顯示使用fd為4的進程
lsof -i 用以顯示符合條件的進程情況

查找命令
which --->找一個可執行文件(在$PATH裡面找)
whereis --->命令、配置文件
locate ---> 是slocate的一個軟連接。 updatedb是slocate的資料庫,每天凌晨4點進行數據的更新
find 查找命令,比上面的要強大一些。速度也是慢了很多。 重要的是看療效啊!
find / -name passwd 查找文件名是passwd
find / type -f passwd 查找

-type c
File is of type c:

b block (buffered) special

c character (unbuffered) special

d directory

p named pipe (FIFO)

f regular file

l symbolic link

s socket

D door (Solaris)

find /etc --size -4k 文件小於4k
find /etc --size -4k 文件大於4k
find /bin -perm 777 查找許可權為777
find /bin -perm -4000 |xargs ls -al 查看文件用UID的.具體的 setUID,setGID要網上可以查找到。主要是針對於安全
find /bin -mtime -7 ( 在七天以內變化)
更多的find 的資料請查看 find,xargs詳述 已經發在論壇里了

stat -->顯示某個文件的詳細信息

grep -R '\' /etc/ 查找關鍵字為tengfei 



gzip 文件名 --->壓縮文件
gzip -d 文件名.gz --解壓縮
      如果一個文件是.gz被移動后沒有後綴的話,可以用 gzid -d <文件名>network

  bzip2和zip 用法和gzip一樣。
  
  tar 命令

壓縮
    tar cvf /tmp/tengfei.tar /home/tengfei /tmp/tengfei 創建 tar包
    tar cvfz /tmp/tengfei.tar.gz /home/tenfei
tar cvfj /tmp/tengfei.tar.bz2 /home/tengfei /tmp/tengfei 創建 tar包
tar rvf /tmp/tengfei.tar /etc/hosts 把一個文件添加到壓縮包里

解壓
tar xvf /tmp/tengfei.tar -C /tmp
tar xvfj /tmp/tengfei.tar.bz2 /tmp
tar xvfz /tmp/tengfei.tar.gz /tmp

查看tar文件
tar -tvf *.tar 或 tar -tvfz *.tar.gz

把一個文件添加到tar 壓縮包里
    tar -rvf /tmp/tengfei.tar /etc/hosts

正規表達式  grep
grep '^root' /etc/passwd 「^」 表示開頭
grep 'a\{100,120\}' /etc/tmp -->a 重複出現100-120次
    grep '.\{40,\}' /usr/share/dict/words  -->單詞數在40個字母以上
grep '^i.\{18\}n$' /usr/share/dict/words -->開頭是"i" ,結尾是"n" 中間單詞個數為18個
grep '^i.\{18,20\}n$' /usr/share/dict/words -->開頭是"i",結尾是"n"  單詞個數為18個到20個之間
grep -v '^#' /etc/squid/squid.conf|grep -v '^$' --> 去除"#"註譯和為空行。
    grep '\<07:19:..\>' /var/log/httpd/access_log ---> 查看 07時19分訪問的記錄
    grep '\<07:..:..\>' /var/log/httpd/access_log ---> 查看 07時訪問的記錄

grep -B2 tengfei /etc/passwd
grep -B2 -A2 tengfei /etc/passwd

-A NUM, --after-context=NUM
Print NUM lines of trailing context after matching lines.
Places a line containing -- between contiguous groups of
matches.
-B NUM, --before-context=NUM
Print NUM lines of leading context before matching lines.
Places a line containing -- between contiguous groups of
matches.

sort -n -t: +2 -r /etc/passwd
-n按照字元排序 -t設置插入行號,它是從0開始的 -r 比較一下相反結果
[tengfei]#sort -n -t: +2 -r /etc/passwd|head -n 5 |cut -d: -f1 提出5個用戶名
[tengfei]#cut -d: -f1 /etc/httpd/conf/httpd.conf |sed '/^$/d' |less -->去掉空白行

[tengfei]# cat /etc/passwd|sed 's/root/roottengfei/;s/tengfei/tmpname'; -->多次修改

[tengfei]#sed -e '/root/d' /etc/passwd -->刪除帶root行

[tengfei]#sed -e '1,5d' /etc/passwd -->刪除1到5行

[tengfei]#sed -e '1,5d' /etc/passwd -->刪除1到5行


awk
[tengfei]# /sbin/chkconfig --list|grep 6|awk '{if ($5 =="3:on" ) print $1}'
具體的一些使用請參考相關資料

過濾器編輯器 tr
[tengfei]# tr "a-z" "A-Z" -->輸入字母自動變成大寫,ctrl+d結束 
[tengfei]# tr "a-z" "A-Z"
ps 查看進程命令
大多數使用
[tengfei]# ps -ef
[tengfei]# ps -aux關

pstree 進程樹

自己做proc
[tengfei]# mkdir /tengfei
[tengfei]# mount -t proc noe /tengfei
[tengfei]# ls /tengfei
/proc/cupinfo cpu 信息
/proc/menifo 內存信息
如須其它的信息,請網上查找

top 動態系統信息
進入后參數 -r 可以調整優先順序 -M 內存排序

nice 程序運行優先順序別

kill
kill -1 PID 有時候殺不掉就可以用下面的參數
kill -9 PID
skill -9 tty1
skill -9 sts/1
pkill -9 -u tengfei
killall -9 程序名
有一些是殺不了的。如 aio是內核。
了解更多的相關信息 man signal

配置網路命令
ifconfig ---> [tengfei]# ifconfig eth0 192.168.1.100 netmask 255.255.255.0 up
netconfig --->一種圖形化操作
setup --->配置機器相關的信息
網卡配置文件 /etc/sysconfig/network-script/ifcfg-eth0
查看當前活動網卡 mii-tool


工作模式
一個程序ctrl+z停止到後台去 fg 停止到前台

字元串處理
wc -l 文件名
cut -d f7 /etc/passwd
sort /etc/passwd >passwd_sort
uniq -c passwd_sort >uniq.passwd_sort 看有多少相同的行

系統狀況檢測
在tty1上
[tengfei@www ~]$ (while true; do echo -n tengfei>>log;sleep 1;done)
在tty2上
[tengfei@www ~]$ tail -f log -->看變化
在tty1 ctrl+z 在tty2里看變化。jobs看有幾個進程在工作。把停止的進程重新進行的話 在 tty1用fg,之後在tty2看變化


bash快捷鍵
Tab:自動補完命令行與文件名
Tab鍵雙擊可以列出所有匹配的選擇
ctrl+c 結束當前的任務
ctrl+z 當前任務暫停,並放在後台
ctrl+s 停止屏幕輸出
ctrl+q 恢復屏幕輸出
ctrl+l 清屏
ctrl+d 標準輸入結束
Ctl-B 游標後退,這應該依賴於bash輸入的風格,默認是emacs風格的.
Ctl-D 從當前shell登出(和exit很像)
Ctl-G beep.在一些老的終端,將響鈴.
Ctl-H backspace,刪除游標前邊的字元.如:
1 #!/bin/bash
2 # 在一個變數中插入Ctl-H
3
4 a="^H^H" # 兩個 Ctl-H (backspaces).
5 echo "abcdef" # abcdef
6 echo -n "abcdef$a " # abcd f
7 # 注意結尾的空格 ^ ^ 兩個 twice.
8 echo -n "abcdef$a" # abcdef
9 # 結尾沒有空格 沒有 backspace 的效果了(why?).
10 # 結果並不像期望的那樣
11 echo; echo
Ctl-I 就是tab鍵.
Ctl-J 新行.
Ctl-K 垂直tab.(垂直tab?新穎,沒聽過)
作用就是刪除游標到行尾的字元.
Ctl-M 回車

變數
echo
unset
export
[tengfei]# a="aa"
[tengfei]# echo $a
[tengfei]# unset a
[tengfei]# echo $a
set
env
將當前新安裝的軟體加到路徑里
[tengfei]#PATH=$PATH:/usr/loca/http/sbin/apacher1

rpm
安裝程序
rpm -ivh 程序名.rpm
有依靠不可以安裝的
rpm -ivh --nodeps --force 程序名.rpm
如果用光碟安裝的話,用 rpm -ivh --aid 程序名.rpm 可以解決依存關係
卸載 rpm -e -nodeps
升級程序 rpm -iUh 程序名
查詢rpm包 rpm -qa

系統啟動時有關的腳本
/etc/profile--->變數,只有登錄才執行
~/.bash_profile
~/bashrc
/etc/bashrc

補一點我做的sed
[tengfei]#chkconfig --list |awk '{if ($5 ="3:on) print $1}'
[tengfei]#chkconfig --list |awk '/3:on/ { if ($5 = "3:on" ) print $1}'
[tengfei]#for i in `chkconfig --list |awk '/3:on/ {if ($5 = "3:on" ) print $1}`';
do chkconfig $i off; done -->關閉啟動服務,自己先打一下chkconfig 看一下,再根據自己的實際去做.

X-windows 圖形的我就不寫了。這些命令你可以去做做。一步一步來。之後一定有些收穫的
#X
#xinit
#xhost +
#export DISPLAY="IP"
#xclock
到那個IP的電腦看一下變化,前提那個電腦必須要開x-windows
開起多個x-windows
[tengfei]#startx -- :1

linux無人執手安裝(anaconda)
編輯伺服器的/etc/anaconda-ks.cfg
用光碟引導起來的時候輸入 在提示boot: linux ks=nsf:/192.168.1.100/varp/ftp/pub/anaconda (注anaconda和伺服器起的名字一樣)
之後連上網就可以自動安裝了
有機器支持網卡啟動的話,光碟就不需要了。可以直接連在伺服器那邊



硬碟分區
fdisk
[tengfei]#fdisk /dev/hda
[tengfei]#fdisk /dev/sda
n-->增加新分區
p-->主分區
e-->擴展分區
l-->邏輯分區
t-->改變分區id
w-->保存
具體的請用m看一下
先激活分區 partporbe或reboot
[tengfei]#mkfs.ext3 /dev/sda1
格式化有如下
mkfs.ext3 ;mkfs -t ext3 ;mkfs2fs -j
ext2變ext3 tune2fs -j /dev/sda2
ext3變ext2 tune2fs -o ^has_journal /dev/sda4
[tengfei]#mount /dev/sda1 /mnt
對有問題的分區的處理
umount /dev/sda2

fsck.ext3 -yf /dev/sda2

mount實例
mount /dev/hda1 /mnt
mount -t ext3 -o ro /dev/sda3 /mnt
mount -o remount,rw /dev/sda3 /mnt
mount -o remount ,rw /
mount -t vfat /dev/sda2 /mnt
mount 192.168.1.100:/var/ftp/pub /mnt
mount -o username@passwd 192.168.1.100 /mnt
mount -t iso9660 /dev/cdrom /mnt
mount -a --->掛載/etc/fstab文件的設備
掛載帶LABEL 分區
[tengfei]# vi /etc/fstab
LABLE=/abc /mnt ext3 defaults 0 0
[tengfei]#e2lable /dev/sda2 /abc
[tengfei]# df -h
[tengfei]#umount -a
[tengfei]#mount -a
[tengfei]# df -h
Swap空間的建立
[tengfei]# mkswap /dev/sda2
[tengfei]# swapon /dev/sda2

用文件做Swap
[tengfei]# dd /swapfile bs=10 24 count=100000 相當於100M
[tengfei]#swapon /swapfile
[tengfei]#swapon -s

Autofs配置
[tengfei]#mkdir /test
/etc/auto.mast
/test /etc/test.misc
/etc/test.misc
service -ro,soft,intr 192.168.1.100:/var/ftp/pub

[tengfei]#service autofs restart
訪問方式
[tengfei]#ls /test -->一般看不到什麼的
[tengfei]# cd /test
[tengfei]#ls

編譯內核
在 www.kernel.org下載.例如: linux-2.6.12.tar.bz2
tar xvfj linux-2.6.12.tar.bz2
確定你的機器裝有 ncurse-dev* gcc 如果沒有這個,編譯會出問題.現在2.6 的內核編譯要簡單多了.
cd linux-2.6.12
make menuconfig
make bzImage
make modules
make modules_install
make install
depmod -a
grub現在也不用做了.在上面的工作完成的時候,所有的基本都可以了.

[ 本帖最後由 open-end 於 2007-6-3 21:50 編輯 ]




[火星人 via ] 新增加內核編譯linux筆記看看如何看過的人說一下啊. 這樣可以豐富一下學習(繼續已經有157次圍觀

http://www.coctec.com/docs/linux/show-post-124805.html