日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

编译内核,busybox,dropbear组装linux小系统

發布時間:2024/1/17 linux 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 编译内核,busybox,dropbear组装linux小系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


應用程序使用以下軟件

?busybox提供命令環境

?dropbear提供ssh服務實現遠程管理。


查看本物理機的硬件,來確認編譯內核時選擇相應的驅動。硬件信息獲取方法:

? cat /proc/cpuinfo

? cat /proc/meminfo

? lsusb

? lspci -v

? lscpu

為目標磁盤創建文件系統,并安裝grub,大概有以下步驟。

??? # fdisk /dev/sdb????????? 為目標主機的啟動盤分區,分兩個區,第一個用作boot,第二個用作根文件系統

??? # mke2fs -t ext4 /dev/sdb1????? 格式化

??? # mke2fs -t ext4 /dev/sdb2

??? # mount /dev/sdb1 /mnt/boot

??? # mount /dev/sdb2 /mnt/sysroot

??? # grub-install --root-directory=/mnt /dev/sdb??? 安裝grub程序

??? # ls /mnt/boot/grub??? 查看如下有以下文件說明grub已經安裝好了

編譯內核

??? 解壓內核,進入解壓后的內核目錄

??? # make allnoconfig????? 清除所有選項,只會保留linux內核必須的選項。

??? # make menuconfig

??? 1,選擇64位內核

??? 2,修改本地內核版本信息

然后返回主界面

??? 3,開啟支持動態裝卸載內核模塊

然后返回主界面

??? 4,支持塊層

然后返回主界面

??? 5,選擇處理器特性

??? 6,選擇支持總線的類型

由此進入

??? 7,讓內核支持ELF類型的二進制格式和以#!開頭的腳本

由此進入

??? 8,選擇設備驅動

由此進入

選擇好返回上級

選擇scsi總線類型

選擇usb驅動

返回上級

選擇輸入設備的驅動

選擇并進入

返回到主頁

9,選擇支持的文件系統

返回主菜單

10,支持掛載內核中的偽文件系統

11,啟動支持tcp/ip

基于uiux socket通信的進程需要此選項。

12,選擇網卡驅動

虛擬機使用的是其中的一個。

13 選擇完成以上選項后,保存退出。然后開始編譯內核。

??? # make -j 3 開始編譯內核,啟動三個線程編譯。

??? 經過一段時間后編譯完成。紅框中的路徑為編譯好的內核存放的目錄。

??? # cp arch/x86/boot/bzImage? /mnt/boot???????????? 把編譯好的內核復制到boot目錄。

編譯busybox

# yum -y install glibc-static??? 因為是靜態編譯,所以需要這個開發包

# yum -y install libmcrypt-devel??? 還需要這個包,位于epel源中。

下載busybox解壓后進入目錄,配置busybox的特性。這里只需要選擇busybox為靜態編譯。

# make menuconfig????

選擇此項,表示靜態編譯。完成后返回上級。

? 進入此選項

???? 在這里設置編譯安裝后的busybox文件存儲位置。

# make -j 3????? 開始編譯

# make install??????????? 編譯好后開始安裝

# cp _install/* /mnt/sysroot????? 把編譯好的文件復制到目標系統的根下

# ls /mnt/sysroot/???????????? 查看復制過去的文件,這里只看了bin目錄。

# cp /root/busybox-1.22.1/_install/* /mnt/sysroot/ -r

?

============================================

為目標創建根文件系統。

# cd /mnt/sysroot

# mkdir -pv boot dev etc/{rc.d,sysconfig,profile.d} home/{gentoo,test,wukui,fedora}? proc root sys usr/{bin,sbin,local,lib,lib64}

# chown gentoo.gentoo home/gentoo????? 為每個用戶設定自己家目錄的屬主

# chown test.test? home/test

# chown wukui.wukui home/wukui

# chown fedora.fedora home/fedora

提供配置文件

# vim /mnt/boot/grub/grub.conf????? grub配置文件內容如下。

??? timeout 3

??? default 0

??? title WuKui linux

???? root (hd0,0)

???? kernel /bzImage ro root=/dev/sda2

# vim /mnt/sysroot/etc/inittab??????????????????????????? 為init提供配置文件

提供多個終端的inittab ?
::sysinit:/etc/rc.d/rc.sysinit???????????????????????? 定義init加載后執行的腳本 ? ?
::respawn:/sbin/getty 19200 tty1????????????? 定義用戶啟動的終端 ? ?
::respawn:/sbin/getty 19200 tty2?
::respawn:/sbin/getty 19200 tty3?
::ctrlaltdel:/sbin/reboot???????????????????????????? 定義按下ctrl+alt+del鍵后執行的命令 ? ?
::shutdown:/bin/umount -a -r?????????????????? 定義關機時卸載所有文件系統。

只提供物理控制臺的inittab

::sysinit:/etc/rc.d/rc.sysinit

console::respawn:-/bin/sh

::ctrlaltdel:/sbin/reboot

::shutdown:/bin/umount -a -r

# vim /mnt/sysroot/etc/fstab????????? fstab配置內容如下 ?
/dev/sda2 / ext4 defaults 0 0 ? ?
/dev/sda1 /boot ext4 defaults 0 0 ? ?
proc /proc proc defaults 0 0 ? ?
sysfs /sys sysfs defaults 0 0

# vim /mnt/sysroot/etc/rc.d/rc.sysinit????????? 開機啟動腳本文件內容如下 ?
#!/bin/sh ? ?
# ? ?
echo -e "Welcome to \033[34mWuKui\033[0m Linux" ? ?
echo "remounting root filesystem" ? ?
mount -n -o remount,rw /dev/sda2 / ? ?
echo "mount all filesystem" ? ?
mount -a ? ?
echo "create device file" ? ?
mdev -s

echo "set hostname is $HOSTNAME"

[ -r /etc/sysconfig/network ] &&? source /etc/sysconfig/network

[ -z "$HOSTNAME" ]? && hostname $HOSTNAME || hostname localhost

export PS1='[\u@\h \W]\$'

# vim? /mnt/sysroot/etc/passwd????? 添加系統用戶

root:x:0:0:root:/root:/bin/sh

wukui:x:500:500::/home/wukui:/bin/sh

fedora:x:501:501::/home/fedora:/bin/sh

test:x:502:502::/home/test:/bin/sh

gentoo:x:503:503::/home/gentoo:/bin/sh

# vim /mnt/sysroot/etc/group???? 添加組

root:x:0:

wukui:x:500:

fedora:x:501:

test:x:502:

gentoo:x:503:

# openssl passwd -1 -salt `openssl rand -hex 4`?????? 為用戶加密密碼, ?
Password:???????????????????????????????????????????????????????????????????? 這里輸入密碼 ? ?
$1$fc66576e$Q/Ntg4oKYue0bZjp/uh4T0?????????????????? 這里是加密后的密碼

# vim /mnt/sysroot/etc/shadow???????????????????????????????? 編輯密碼文件,這里所有用戶都用了一個密碼

root:$1$fc66576e$Q/Ntg4oKYue0bZjp/uh4T0:16272:0:99999:7:::?????????????

wukui:$1$fc66576e$Q/Ntg4oKYue0bZjp/uh4T0:16302:0:99999:7:::

fedora:$1$fc66576e$Q/Ntg4oKYue0bZjp/uh4T0:16302:0:99999:7:::

test:$1$fc66576e$Q/Ntg4oKYue0bZjp/uh4T0:16302:0:99999:7:::

gentoo:$1$fc66576e$Q/Ntg4oKYue0bZjp/uh4T0:0:99999:7:::

# chmod 600 /mnt/sysroot/etc/shadow

# vim /mnt/sysroot/etc/sysconfig/network?? 提供主機名配置文件

HOSTNAME=mylinux

========================================================

提供dropbaer

編譯

# wget http://matt.ucc.asn.au/dropbear/dropbear-2014.65.tar.bz2

# ./configure --prefix=/usr/local/dropbear

# make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp"

# make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install

# cd /usr/local/dropbear/

# ls bin/ ?

????? dbclient 相當于ssh

????? dropbearkey?? 相當于 ssh-keygen

??????? 常用選項

??????????? -t :指定密鑰的算法有。rsa , dss(dsa)等。

??????????? -f:指定生成文件的路徑

??????????? -s:指定密鑰的長度,dss不用指定。rsa的長度是8整數倍的位數。

????? scp? 和 openssh 的 scp 一樣。 ?
# ls sbin/ ? ?

??? dropbear 命令是服務程序,相當于openssh 的 sshd

???????? 常用選項

??????????? -r keyfile : 指定key文件的位置

????????????????? dss /etc/dropbear/dropbear_dss_host_key

????????????????? rsa /etc/dropbear/dropbear_rsa_host_key

??????????? -F : 運行于前臺

??????????? -E:把運行中的所有錯誤發送到屏幕上

??????????? -s:設定只能使用密鑰認證

??????????? -P:指定pid文件。默認在/var/run/dropbear.pid

??????????? -p:(小寫)指定dropbear啟動時監聽的tcp端口。

提供密鑰文件

# bin/dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key

# bin/dropbearkey -t rsa -s 2048 -f /etc/dropbear/dropbear_rsa_host_key

# ll /etc/dropbear/

# sbin/dropbear -p 22022 -E -F???? 運行于前臺測試下

# ss -tnlp | grep 22022

在XSHELL中測試登陸

開始移植

# PATH=/usr/local/dropbear/bin/:/usr/local/dropbear/sbin/:$PATH

# mkdir /mnt/sysroot/etc/dropbear

# dropbearkey -t dss -f /mnt/sysroot/etc/dropbear/dropbear_dss_host_key

# dropbearkey -t rsa -s 2048 -f /mnt/sysroot/etc/dropbear/dropbear_rsa_host_ke

# mkdir -pv /mnt/sysroot/var/run???? 提供dropbear運行時的pid文件所在目錄

dropbear啟動時會檢查/etc/shells文件中定義的安全shell,需要把busybox的ash寫在里面

# cp /etc/shells /mnt/sysroot/etc

# echo /bin/ash >> /mnt/sysroot/etc/shells

提供dropbare啟動時依賴的nsswitch

# cp /etc/nsswitch.conf /mnt/sysroot/etc

# cp -a -d /usr/lib64/libnsspem.so /usr/lib64/libnsssysinit.so /usr/lib64/libnssutil3.so /mnt/sysroot/usr/lib64

# cp -a -d /lib64/libnss_files* /mnt/sysroot/lib64

# cp -a -d /usr/lib64/libnss3.so? /usr/lib64/libnss_files.so /mnt/sysroot/usr/lib64

? ?

提供遠程登陸需要的偽終端設備目錄,讓其開機自動掛載

# echo "devets??? /dev/pts??? devpts??? gid=5,mode=620 0 0" >> /mnt/etc/fstab

因為內核會自動掛載/dev文件系統,所以在掛載后再創建pts。此文件系統和proc一樣,都是內存中的文件系統。

# vim /mnt/sysroot/etc/rc.d/rc.sysinit??? 編輯加入一行

mkdir /dev/pts??? 必須放在mount -a之前

# vim /mnt/sysroot/etc/rc.d/rc.sysinit? 加入以下行幾行

/sbin/ifconfig lo 127.0.0.1 netmask 255.0.0.0

/sbin/ifconfig eth0 192.168.1.60 netmask 255.255.255.0

export PATH=/usr/local/dropbear/bin:/usr/local/dropbear/sbin:$PATH

/usr/local/dropbear/sbin/dropbear -p 22

轉載于:https://blog.51cto.com/wukui/1544090

總結

以上是生活随笔為你收集整理的编译内核,busybox,dropbear组装linux小系统的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。