linux定製
1. SElinux定製策略
SELinux定製策略的主要步驟和方法如下:
獲取策略源代碼:
- 對於FC4和RHEL4等早期版本,系統通常會提供策略源代碼的RPM包。
- 從FC5開始,策略版本提升到2.X,並引入了模塊概念。此時,系統不再直接提供源代碼包,但提供了如audit2allow、semanage和semole等工具用於開發策略模塊。
- 若需要安裝策略源代碼,可以從CVS伺服器獲取最新的源碼。
編譯和生成SELinux模塊:
- 安裝後的源代碼目錄通常包含定義文件、類型強制執行定義和模塊介面定義。
- 在/etc/selinux/refpolicy/src/policy目錄下,通過修改build.conf文件和執行make命令來生成SELinux模塊。
- 將SELINUXTYPE設為refpolicy,並重啟系統以使新策略生效。
開發程序策略:
- 為文件和埠分配類型標簽,這是策略的基礎部分。
- 設置Type Enforcement,包括Domain遷移和訪問許可。這決定了進程能夠訪問哪些資源。
- 載入策略後,先在permissive模式下運行程序,以便收集違規日誌。
- 使用audit2allow等工具分析日誌,生成訪問許可規則,並不斷完善策略。
測試和驗證策略:
- 不斷在permissive模式下運行程序並檢查日誌,直到沒有違規日誌出現。
- 切換到enforcing模式,正式使用策略,並確保系統穩定運行。
修改現有策略模塊:
- 對於已有的服務或程序,可以通過修改對應的策略模塊來適應新的安全需求。
- 例如,為某個特定工具創建一個新的策略模塊,包括定義文件上下文、類型強制執行規則和介面調用。
注意事項: 在開發SELinux策略時,應確保相關SELinux包已更新到最新版本,以避免編譯問題。 在修改和測試策略時,應謹慎操作,以避免對系統穩定性造成不利影響。
2. 自己定製的linux系統沒有apt-get,如何安裝apt-get包
不是所有linux系統都用atp-get安裝軟體。
一般來說著名的linux系統基本上分兩大類:
1.RedHat系列:Redhat、Centos、Fedora等
2.Debian系列:Debian、Ubuntu等
RedHat 系列
1 常見的安裝包格式 rpm包,安裝rpm包的命令是「rpm -參數」
2 包管理工具 yum
3 支持tar包
Debian系列
1 常見的安裝包格式 deb包,安裝deb包的命令是「dpkg -參數」
2 包管理工具 apt-get
3 支持tar包
一、yum安裝。
yum安裝常用軟體的命令
#yum check-update
#yum remove 軟體包名
#yum install 軟體包名
#yum update 軟體包名
yum命令常見使用方法
yum -y install 包名(支持*) :自動選擇y,全自動
yum install 包名(支持*) :手動選擇y or n
yum remove 包名(不支持*)
rpm -ivh 包名(支持*):安裝rpm包
rpm -e 包名(不支持*):卸載rpm包
二、apt-get安裝。
apt-cache search package 搜索軟體包
apt-cache show package 獲取包的相關信息,如說明、大小、版本等
sudo apt-get install package 安裝包
sudo apt-get install package --reinstall 重新安裝包
sudo apt-get -f install 修復安裝
sudo apt-get remove package 刪除包
sudo apt-get remove package --purge 刪除包,包括配置文件等
sudo apt-get update 更新源
sudo apt-get upgrade 更新已安裝的包
sudo apt-get dist-upgrade 升級系統
apt-cache depends package 了解使用該包依賴那些包
apt-cache rdepends package 查看該包被哪些包依賴
sudo apt-get build-dep package 安裝相關的編譯環境
apt-get source package 下載該包的源代碼
sudo apt-get clean && sudo apt-get autoclean 清理無用的包
sudo apt-get check 檢查是否有損壞的依賴
3. 如何定製自己的linux內核
一 前言
為什麼要編譯自己的內核?這可能會有各種不同的答案,列舉如下:
1 為了研究,學習內核源碼。
2 為了支持新的硬體或者打開某項內核功能。
3 升級內核到更新版本。
4 按自己的要求定製和優化內核功能。
如此種種...
折騰不需要理由,這里我就不在多說,下面直接進入主題。
編譯方式
編譯內核有多種方式,從kernel.org下載選擇下載需要的版本的內核源碼,
如:linux-2.6.32-rc1.tar.bz2,下載內核源碼到/home/user/目錄,進入下載目錄,解壓壓縮包。
#cd /home/user/
#tar -xjvf linux-2.6.32-rc1.tar.bz2
二 准備編譯環境
開始之前,首先確認下面軟體包已經安裝(編譯中標普華4.0時,直接全部安裝CD3可保證此條件)。
* rpmdevtools
* yum-utils
fedora系統可以使用如下命令安裝:
#yum install yum-utils rpmdevtools
1. 生成一個rpmbuild命令工作所需的目錄樹,下面命令可以完成該操作,也可以手動建立目錄樹。
命令建立:
#rpmdev-setuptree
此命令將會在/usr/src/rpmbuild/目錄下生成如下目錄結構(如果此位置沒有,則可能在當前用戶目錄下).
# tree /usr/src/rpmbuild/
rpmbuild/
|-- BUILD
|-- RPMS
|-- SOURCES
|-- SPECS
`-- SRPMS
上面部分是rpmbuild的環境建立。rpm
3. 安裝內核源碼包需要的依賴組件(在此可以跳過此步操作)
su -c 'yum-builddep kernel-<version>.src.rpm'
4.安裝內核源碼到系統,默認目錄在/usr/src/neoshine:
rpm -Uvh kernel-<version>.src.rpm
三 配置內核(生成config配置文件)
下面將介紹如何解開源碼包,並修改,配置和重新打包源碼
1. 解開源碼包並打上所有的補丁到BUILD目錄
cd ~/rpmbuild/SPECS
rpmbuild -bp --target=`uname -m` kernel.spec
kernel源碼將在這里找到:
/usr/src/neoshine/rpmbuild/BUILD/kernel-<version>/linux-<version>.<arch> directory
配置內核源碼
1. 進入內核源碼:
cd ~/rpmbuild/BUILD/kernel-2.6.$ver/linux-2.6.$ver.$arch/
2. 復制/boot/config*配置文件到源碼目錄下,此config文件也可以是已經配好或者其他地方備份的kernel配置文件:
cp /boot/config2.6- 2.6.$ver.$arch .config
3. 先檢查kernel配置中新增的選項:
make oldconfig
4. 定製內核功能,關閉initrd支持選項,執行圖形化內核配置工具:
make menuconfig
註:在generic setup選項下找到initial RAM system and RAM disk(initramfs and initrd) support 項,取消編譯。同時確保跟文件系統對應的驅動和系統所在存儲器對應的驅動都已經編譯到內核(否則會無法啟動系統).
5. 在.config文件第一行改為下面內容(注意:沒有此行時,後面的編譯會報錯)
# i386
6. 拷貝.config到SOURCES/:
cp .config ../SOURCES/config-$arch
四 編譯新內核
1. 下面開始准備編譯新的內核包
打開SPEC/kernel.spec
vim SPEC/kernel.spec
改變下面行內容,可以定製自己的內核擴展名(如fc10之類):
%define buildid .<自己內核的小版本名>
下一步將生成一個新內核的rpm包,此過程需要編譯內核源碼包
使用下面命令生成新的內核源碼包
rpmbuild -bb --with baseonly --without debuginfo --target=`uname -m` kernel.spec
參數說明:bb表示只編譯二進制包,即不生成源碼包,without debuginfo 表示沒有調試信息,
target=`uname -r`表示生成對應當前平台的內核包
如果上面的命令成功執行完成,那麼會在BUILD/i686目錄下生成新的內核安裝包
五 安裝新內核
rpm -ivh kernel-$ver-$arch.rpm
此步操作會自動安裝內核到boot目錄下,安裝對應內核模塊到/lib/moles/目錄下,並且生成新內核對應的grub引導菜單。
修改grub引導菜單為以下格式
title new kernel
kernel /boot/vmlinuz-$ver-$arch root=/dev/sdax(hdax)
注意,此處不要使用uuid指定跟文件系統(可能會無法掛載根分區而導致內核死機),也不要再加和顯示相關的參數(內核不支持對應設置時,只會看到一個黑黑的屏幕)。
至此一個禁用initrd的新內核配置安裝完畢!