新聞中心
在Linux操作系統(tǒng)中,關機是一個常見的操作。但是,在某些情況下,傳統(tǒng)的Linux關機方式并不如我們所期望的那樣便捷。為了解決這個問題,本文將介紹一種使用BusyBox來實現(xiàn)便捷關機的方法。

成都創(chuàng)新互聯(lián)公司專注于中大型企業(yè)的網(wǎng)站建設、網(wǎng)站設計和網(wǎng)站改版、網(wǎng)站營銷服務,追求商業(yè)策劃與數(shù)據(jù)分析、創(chuàng)意藝術與技術開發(fā)的融合,累計客戶成百上千,服務滿意度達97%。幫助廣大客戶順利對接上互聯(lián)網(wǎng)浪潮,準確優(yōu)選出符合自己需要的互聯(lián)網(wǎng)運用,我們將一直專注成都品牌網(wǎng)站建設和互聯(lián)網(wǎng)程序開發(fā),在前進的路上,與客戶一起成長!
什么是BusyBox?
BusyBox是一個集成了許多Unix工具的單一可執(zhí)行文件,這些工具在嵌入式操作系統(tǒng)、移動設備和桌面系統(tǒng)中都很常見。BusyBox的設計目標是提供一種小巧而高效的替代品,以便在嵌入式設備上運行一個完整的Linux操作系統(tǒng)時,可以盡可能地減小系統(tǒng)的存儲需求。
接下來,我們將詳細介紹如何使用BusyBox來實現(xiàn)便捷關機。
步驟1:安裝BusyBox
我們需要安裝BusyBox。
在Ubuntu和Debian等基于Debian的發(fā)行版中,可以使用以下命令來安裝BusyBox:
“`
sudo apt-get install busybox
“`
在基于Red Hat的發(fā)行版中,可以使用以下命令來安裝BusyBox:
“`
sudo yum install busybox
“`
步驟2:創(chuàng)建一個腳本
接下來,我們需要創(chuàng)建一個用于執(zhí)行關機操作的腳本。為此,我們將創(chuàng)建一個名為“shutdown.sh”的文件,并將其保存在主目錄中。
“`
nano ~/shutdown.sh
“`
在打開的編輯器中,將以下代碼粘貼到文件中:
“`
#!/bin/sh
busybox poweroff
“`
保存并關閉文件?,F(xiàn)在,我們需要將文件設置為可執(zhí)行:
“`
chmod +x ~/shutdown.sh
“`
步驟3:創(chuàng)建一個別名
為了方便使用該腳本,我們需要將其添加為一個別名。為此,我們將創(chuàng)建一個名為“.bashrc”的文件,并將以下別名添加到文件中:
“`
nano ~/.bashrc
“`
在打開的編輯器中,將以下代碼粘貼到文件底部:
“`
alias shutdown=’~/shutdown.sh’
“`
保存并關閉文件?,F(xiàn)在,我們需要重新加載.bashrc文件,以使別名生效:
“`
source ~/.bashrc
“`
步驟4:測試
現(xiàn)在,我們的設置已經(jīng)完成,可以開始測試了。為了測試,我們可以使用以下命令來關閉系統(tǒng):
“`
shutdown
“`
這將執(zhí)行我們之前創(chuàng)建的腳本,并引導系統(tǒng)進行正常的關機操作。
結論
作為一種小巧而高效的工具,BusyBox為Linux用戶提供了許多便利。通過使用BusyBox來實現(xiàn)便捷關機,我們可以將關機過程減少到一個簡單的命令行操作,從而提高操作系統(tǒng)的便捷性和易用性。
成都網(wǎng)站建設公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設、網(wǎng)站制作、網(wǎng)頁設計及定制高端網(wǎng)站建設服務!
linux 如何設置無盤啟動
用網(wǎng)卡啟動,網(wǎng)絡要有bootp服務器(pxe服務器)
你可以參考一下……這個筆記做的還行??!
一.編譯內(nèi)核
1. 進入linux源代首碰碼目錄:
#cd /usr/src/linux-2.4.20
2. 清理源代碼樹,檢測內(nèi)核包里面的文件是否正確:
#make mrproper
3. 運行配置程序:
#make xconfig
說明:最關鍵要選擇fs(ext3),initrd,cpu,網(wǎng)卡型號的支持,或直接將準備好的config文件拷貝到/usr/src/linux-2.4.20/arch/i386目錄下,改名為defconfig(注意先將原有的defconfig文件備份,切記).
4. 開始編譯,檢查相關獨立性:
#make dep
5. 清除內(nèi)存和編譯過程中生成的.o文件:
#make clean
6. 生成bzImage內(nèi)核文件,在./arch/i386/boot下:
#make bzImage
二.Busybox文件系統(tǒng)的生成
1. Busybox簡介
busybox是一個集成了一百多個最常用linux命令和工具的軟件,他甚至還集成了一個http服務器和一個telnet服務器,而所有這一切功能卻只有區(qū)區(qū)1M左右的大小.我們平時用的那些linux命令就好比是分力式的電子元件,而busybox就好比是一個集成電路,把常用的工具和命令集成壓縮在一個可執(zhí)行文件里,功能基本不變,而大小卻小很多倍,在嵌入式linux應用中,busybox有非常廣的應用,另外,大多數(shù)linux發(fā)行版的安裝程序中都有busybox的身影,安裝linux的時候案ctrl+alt+F2就能得到一個控制臺,而這個控制臺中的所有命令都是指向busybox的鏈接.
2. 配置busybox
busybox的配置程序和linux內(nèi)核菜單配置方式簡直一模一樣.
解壓: #tar xvfz /Nodiskboot/busybox-1.00.tar.gz
#cd /Nodiskboot/busybox-1.00
#make menuconfig
下面是需要編譯進busybox的功能選項,其他的可以根據(jù)需要自選,但是同樣臘芹緩不要太貪心.
General Configuration應該選的選項
Show verbose applet usage messages
Runtime SUID/SGID configuration via /etc/busybox.conf
Build Options
Build BusyBox as a static binary (no shared libs)
這個選項是一定要選擇的,這樣才能把busybox編譯成靜態(tài)鏈接的可執(zhí)行文件,運行時才獨立于其他函數(shù)庫.否則必需要其他庫文件才能運行,在單一個linux內(nèi)核不能使他正常工作.
Installation Options
Don’t use /usr
這個選項也一定要選,否則make install 后busybox將安裝在原系統(tǒng)的/usr下,這將覆蓋掉系統(tǒng)原有的命令.選擇這個選項后,make install后會在busybox目錄下生成一個叫_install的目錄,里面有busybox和指向他的鏈接.
其他選項都是一些linux基本命令選項,自己需要哪些命令就編譯進去,一般用默認的就可以了.
配置好后退出并保存.
3. 編譯并安usybox
#make
#make install
這樣,在busybox目錄下將生成一個_install的文件夾,里面會有四項bin,in和linuxrc,其中bin,in都是目錄,busybox文件放在bin下面,然后其他的所有文件都是符號連接,連接到busybox上。
上述步驟生成了initrd簡單的目錄架構,我們還有手工輪模添加若干。
4. 制作根文件系統(tǒng)
一個根文件系統(tǒng)必須包含支持一個完整的Linux系統(tǒng)所需的最基本的全部文件:
* 最基本的文件結構
* /dev, /proc, /bin, /etc, /lib, /usr, /tmp 等目錄的最小
* sh, ls, cp, mv等基本工具程序
* rc, inittab, fstab等基本配置文件
* /dev/hd*, /dev/tty*, /dev/fd0等基本設備
* libc-x.x.x.so等程序運行所需的各種動態(tài)庫文件
).創(chuàng)建目錄rootfs
mkdir /Nodiskboot/rootfs
cd /Nodiskboot/rootfs
).基本目錄結構
#mkdir etc usr var tmp proc home root dev etc/init.d mnt lib
#chmod 755 etc usr var tmp home root dev etc/init.d mnt lib
#chmod 555 proc
介紹一下各種目錄的作用:
* /dev — 設備文件,實現(xiàn)系統(tǒng)I/O 所需
* /proc — 使用proc文件系統(tǒng)所需
* /etc — 包含系統(tǒng)配置文件
* /in — 包含重要的系統(tǒng)程序
* /bin — 包含大部分系統(tǒng)程序
* /lib — 包含提供動態(tài)鏈接所需的共享庫文件
* /mnt — 掛載其他設備:磁盤、光盤、u設備等的掛載點
* /usr — 額外的程序、函數(shù)庫文件以及配置文件
).拷貝busybox
#cp -R /Nodiskboot/busybox-1.00/_install/* /Nodiskboot/rootfs/
).建立dev設備文件名
#cd /Nodiskboot/rootfs/dev
#mknod -m 666 tty c 5 0
#mknod -m 666 console c 5 1
#mknod -m 666 tty0 c 4 0
#mknod -m 600 fd0 b 2 0
#mknod -m 600 ram0 b 1 0
#mknod -m 600 null c 1 3
mknod是在dev下成生mknod節(jié)點設備文件。加載磁盤的命令是:
#mknod -m 660 hda b 3 1
其中3是之一條主線上,1是主設備上之一個分區(qū)(0~63),如果是第二條線則是22,如果是從設備則是(64~127).
但是手工方法建立太麻煩了,通常直接從/dev下把需要的設備文件拷貝過來.
這些設備文件是特殊文件,在拷貝時一定要加上-R參數(shù)才能拷貝.
#cp -R /dev/console ./
#cp -R /dev/null ./
#cp -R /dev/zero ./
…
).建立etc目錄下的配置文件
寫入三個文件inittab,fstab,init.d/rc.sysinit,文件內(nèi)容如下
inittab:
::sysinit:/etc/init.d/rcS
::askfirst:/bin/sh
fstab:
proc /proc proc defaults 0 0
init.d/rcS:
#!/bin/sh
mount –a
exec bin/dhcpcd
# chmod 755 rc.sysinit
其中rcS中exec語句是啟動dhcp客戶端軟件,啟動自動配置IP功能。
).在lib下面cp相應的庫文件
用ldd命令查看文件運行所用到的庫,由于未用到動態(tài)鏈接庫,而是直接鏈接到linuxrc文件上,所以lib下面是空的.
).存儲節(jié)點的初始化是另一個需要注意的問題。在前面曾提到,內(nèi)核引導的最后一項工作是創(chuàng)建并執(zhí)行init進程,隨后init進程將創(chuàng)建其他進程,運行一些系統(tǒng)所需的重要程序。由于在通常的Linux系統(tǒng)中的init程序的使用和配置與System V系統(tǒng)中的init程序類似,而在嵌入式系統(tǒng)等特殊應用場合并不需要實現(xiàn)多個用戶(multiuser)的使用,也不需要用戶登陸終端,所以System V系統(tǒng)中的init程序對我們的要求而言功能過于復雜。在此,我們采用使用比較廣泛的工具busybox中的init程序。busybox包含常用的基本工具程序如:sh,ls,mount,init,cp等,而大小只有幾百K(視所選擇工具程序的數(shù)目來決定大?。嶋H上,編譯busybox后只有一個busybox程序,其余的所有工具程序都是busybox程序的符號鏈接,busybox通過辨別不同的程序名稱,跳轉執(zhí)行不同的功能。
busybox中的init程序可以完成初始化的基本功能而且去掉了System V系統(tǒng)init程序的多余功能,init程序執(zhí)行的順序如下:
. 創(chuàng)建init的信號處理
. 初始化控制臺
. 分析inittab文件,/etc/inittab
. 執(zhí)行系統(tǒng)初始化腳本,/etc/init.d/rcS
. 執(zhí)行所有inittab中類型為wait的程序
. 執(zhí)行所有inittab中類型為once的程序
完成以上步驟后,init循環(huán)執(zhí)行所有inittab中類型為respawn和askfirst的程序。文件inittab中的每一行配置遵照格式如下:
id:runlevel:action:process
雖然這個格式與傳統(tǒng)的System V init 類似,但是id 域的含義不同。id 通常是用來指定控制啟動進程運行的tty。如果id域為空則代表這個進程的運行不需要與shell交互。在busybox中,runlevel域 可以完全忽略。process 指明執(zhí)行程序以及所帶參數(shù)選項。 action域可以選擇一下八個類型:
sysinit提供給init初始化腳本所在的路徑;
respawn當進程終止后將其重新啟動;
askfirst與respawn類似,不同之處是在終端提示“Please press Enter to activate this console.”;
wait代表init等待這個程序執(zhí)行完后才繼續(xù)執(zhí)行;
once表示執(zhí)行一次而且不需要等待完成;
ctrlaltdel表示當按下Ctrl-Alt-Delete時執(zhí)行;
shutdown表示程序在關機時執(zhí)行;
restart表示程序在重啟時執(zhí)行,通常是init本身。
在存儲節(jié)點上運行的程序是:掛載硬盤(mount),掃描硬盤生成多媒體文件報告的程序,流媒體服務器(vls),與管理節(jié)點通信程序(agent),監(jiān)視網(wǎng)絡帶寬使用狀況的程序()。其中,mount的action域應為wait,因為首先要將存有多媒體文件的硬盤掛載才能對其執(zhí)行掃描;vls的action域應為respawn,vls運行出現(xiàn)嚴重錯誤后,重新啟動vls,并向管理節(jié)點報告,寫入log。
三. 制作ramdisk映象文件
根文件系統(tǒng)所有東西都放在/Nodiskboot/rootfs下,我們將利用ramdisk把這些內(nèi)容做成ramdisk映象文件并壓縮它.
# dd if=/dev/zero of=/dev/ram0
dd: 正在寫入 ‘/dev/ram1’: 設備上沒有空間
讀入了 8193+0 個塊
輸出了 8192+0 個塊
zero是一個特殊的設備,表示全部為0的字符塊.上面這條命令的意思是把系統(tǒng)的之一個ramdisk用全部為0的數(shù)據(jù)填充,因為 ramdisk默認大小為4M,因此當讀滿8192個塊(每塊512字節(jié))后,顯示’設備上沒空間’.這很正常,/dev/ram0已經(jīng)被填充滿了.
如果指定塊的大小:
# dd if=/dev/zero of=/dev/ram0 bs=1M count=4
讀入了 4+0 個塊
輸出了 4+0 個塊
不會有錯誤提示,這里演示了dd的一般用法,接下來還要頻繁用到dd命令.
在/dev下有很多ramdisk設備ram0,ram1,ram2,ram3…. 一般用之一個就可以了.
填充后,ram1就有可空間,可以在這個空間上創(chuàng)見一個文件系統(tǒng):
# mkfs.ext2 -m0 /dev/ram0
將ram0掛裝到文件系統(tǒng)中:
先建立一個掛裝點:
#mkdir /mnt/ram0
掛上ram0:
#mount /dev/ram0 /mnt/ram0
將先前做好的Nodiskboot根文件系統(tǒng)拷貝到ram0上.
#cp -R /Nodiskboot/rootfs/* /mnt/ram0
做完以上幾步,你應就白了ramdisk設備的含義,他是和hda1,hdb1,一樣的塊設備,用mount掛到文件系統(tǒng)下后就可以訪問,往里放東西,但是所有的東西在內(nèi)存上.關機將丟失所有東西.
拷貝好Nodiskboot根文件系統(tǒng)后卸載ram0:
#umount /dev/ram0
如果出現(xiàn)”device is busy”,說明有別的進程在使用/dev/ram0上的文件,解決辦法如下:
#fuser -v /mnt/ram0
#umount /dev/ram0
這時,雖然不能通過/mnt/ram這個掛裝點訪問ram0中的內(nèi)容了,但是他卻切切實實得在內(nèi)存中存在.
再用dd把這個ram1以映象方式取出來:
# dd if=/dev/ram0 of=/Nodiskboot/ramdisk.img
驗證一下取出來的內(nèi)容:
# file ramdisk.img
ramdisk.img: Linux rev 1.0 ext2 filesystem data
他是一個ext2 文件系統(tǒng),類似一個ISO光盤映象文件.
因次,我們可以用loop設備來把他重新掛裝到文件系統(tǒng)里:
# mount -o loop ramdisk.img /mnt/ram0/
為了方便,我仍舊把他掛在/mnt/ram0下,因此,在先前一定要把/dev/ram0 umount掉
查看/mnt/ram0下的內(nèi)容,他應該和/Nodiskboot/rootfs下的一模一樣,否則就是出錯了:
# ls /mnt/ram0
etc usr var tmp proc home root dev etc/init.d mnt lib
這樣,我們就得到了一個ramdisk根文件系統(tǒng)映象ramdisk.img
把他umount掉:
#umount /mnt/ram0
壓縮ramdisk.img印象文件:
# gzip -v9 ramdisk.img
查看壓縮后的大小:
# ls -lh ramdisk.img.gz
四. 壓縮內(nèi)核與根文件系統(tǒng)
當內(nèi)核與根文件系統(tǒng)準備好之后,就要將這兩者壓縮在一起,使用的工具是mknbi,它是DHCP啟動映象制作工具,在linux下與etherboot配合使用.mknbi壓縮的文件下載到存儲節(jié)點后,由etherboot進行分析,對內(nèi)核與根文件系統(tǒng)分離解壓后
1:將bzImage拷貝到mknbi下,將initrd也拷貝到mknbi下
2:mkelf-linux –output=/tftpboot/boot.eb –param=”rw root=/dev/ram initrd=0x075F0000″ bzImage initrd
其中param參數(shù)的設置, initrd代表內(nèi)核映象文件bzimage將被解壓縮到的內(nèi)存的位置。
五.最后一步――執(zhí)行
將mknbi-linux生成的壓縮文件boot.eb放置在管理節(jié)點的/tftpboot路徑下,并修改/etc/dhcpd.conf中的配置,使boot.eb作為每一個存儲節(jié)點通過TFTP需要從管理節(jié)點下載的文件。然后,管理節(jié)點啟動DHCP守護進程(# service dhcpd start),運行TFTP服務(# chkconfig tftp on)。
存儲節(jié)點在上電后就可以分配得到IP地址,下載操作系統(tǒng)內(nèi)核和根文件系統(tǒng),運行各種配置好了的程序,可以在存儲節(jié)點上ifconfig,可以看到節(jié)點上的網(wǎng)卡開始工作,現(xiàn)在可以完成busybox里面集成的簡單命令,如ping之類。
linux busybox 關機的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關于linux busybox 關機,使用Linux BusyBox輕松實現(xiàn)便捷關機,linux 如何設置無盤啟動的信息別忘了在本站進行查找喔。
香港云服務器機房,創(chuàng)新互聯(lián)(www.cdcxhl.com)專業(yè)云服務器廠商,回大陸優(yōu)化帶寬,安全/穩(wěn)定/低延遲.創(chuàng)新互聯(lián)助力企業(yè)出海業(yè)務,提供一站式解決方案。香港服務器-免備案低延遲-雙向CN2+BGP極速互訪!
網(wǎng)頁題目:使用LinuxBusyBox輕松實現(xiàn)便捷關機(linuxbusybox關機)
分享URL:http://m.fisionsoft.com.cn/article/dhgpeeg.html


咨詢
建站咨詢
