Ⅰ 如何製作 linux 文件系統
一、什麼是文件系統 (Filesystem)
文件系統是包括在一個磁碟(包括光碟、軟盤、閃盤及其它存儲設備)或分區的目錄結構;一個可應用的磁碟設備可以包含一個或多個文件系統;如果您想進入一個文件系統,首先您要做的是掛載(mount)文件系統;為了掛載(mount)文件系統,您必須指定一個掛載點。
二、主要嵌入式採用的文件系統
Linux 中,rootfs 是必不可少的。PC 上主要實現有 ramdisk 和直接掛載 HD(Harddisk,硬碟) 上的根文件系統;嵌入式中一般不從 HD 啟動,而是從 Flash 啟動,最簡單的方法是將 rootfs load 到 RAM 的 RAMDisk,稍復雜的就是 直接從Flash 讀取的 Cramfs,更復雜的是在 Flash 上分區,並構建 JFFS2 等文件系統。
RAMDisk 將製作好的 rootfs 壓縮後寫入 Flash,啟動的時候由 Bootloader load 到RAM,解壓縮,然後掛載到 /.這種方法操作簡單,但是在 RAM 中的文件系統不是壓縮的,因此需要佔用許多嵌入式系統中稀有資源 RAM.
ramdisk 就是用內存空間來模擬出硬碟分區,ramdisk通常使用磁碟文件系統的壓縮存放在flash中,在系統初始化時,解壓縮到SDRAM並掛載根文件系統, 在linux系統中,ramdisk有二種,一種就是可以格式化並載入,在linux內核2.0/2.2就已經支持,其不足之處是大小固定;另一種是 2.4的內核才支持,通過,ramfs來實現,他不能被格式化,但用起來方便,其大小隨所需要的空間增加或減少,是目前linux常用的ramdisk技術。
initrd 是 RAMDisk 的格式,kernel 2.4 之前都是 image-initrd,Kernel 2.5 引入了 cpio-initrd,大大簡化了 Linux 的啟動過程,附合 Linux 的基本哲學:Keep it simple, stupid(KISS)。 不過cpio-initrd 作為新的格式,還沒有經過廣泛測試,嵌入式 Linux 中主要採用的還是 image-initrd.
Cramfs 是 Linus 寫的很簡單的文件系統,有很好的壓縮綠,也可以直接從 Flash 上運行,不須 load 到 RAM 中,因此節約了 RAM.但是 Cramfs 是只讀的,對於需要運行時修改的目錄(如: /etc, /var, /tmp)多有不便,因此,一般將這些目錄做成ramfs 等可寫的 fs.
SquashFS 是對 Cramfs 的增強。突破了 Cramfs 的一些限制,在 Flash 和 RAM 的使用量方面也具有優勢。不過,據開發者介紹,在性能上可能不如 Cramfs.這也是一種新方法,在嵌入式系統採用之前,需要經過更多的測試
三、建一個包含所有文件的目錄
1、建一個目錄rootfs 用來裝文件系統
2、mkdir bin dev etc lib proc sbin tmp usr var
3、ln -fs bin/busybox linuxrc(使用busybox)
4、到系統 /dev 把所有的device打一個包,拷貝到 dev下面(最省事的做法);或者使用mknod來自己建所需要的device,我自己用的如下:
crw-rw-rw- 1 root root 5, 1 2006-02-24 13:12 console crw-rw-rw- 1 root root 5, 64 2006-02-24 13:12 cua0 crw-rw-rw- 1 root root 63, 0 2006-02-24 13:12 dk0 crw-rw-rw- 1 root root 63, 1 2006-02-24 13:12 dk1 drwxr-xr-x 2 root root 4096 2006-02-24 13:12 flash brw-rw-rw- 1 root root 3, 0 2006-02-24 13:12 hda crw-rw-rw- 1 root root 36, 10 2006-02-24 13:12 ipsec crw-rw-rw- 1 root root 241, 0 2006-02-24 13:12 ixNpe crw-rw-rw- 1 root root 1, 2 2006-02-24 13:12 kmem crw-rw-rw- 1 root root 126, 0 2006-02-24 13:12 ledman lrwxrwxrwx 1 root root 16 2007-09-19 14:08 log -> /tmp/var/log/log crw-rw-rw- 1 root root 1, 1 2006-02-24 13:12 mem crw-rw-rw- 1 root root 90, 0 2006-02-24 13:12 mtd0 brw-rw-rw- 1 root root 31, 0 2006-02-24 13:12 mtdblock0 brw-rw-rw- 1 root root 31, 1 2006-02-24 13:12 mtdblock1 brw-rw-rw- 1 root root 31, 2 2006-02-24 13:12 mtdblock2 brw-rw-rw- 1 root root 31, 3 2006-02-24 13:12 mtdblock3 brw-rw-rw- 1 root root 31, 4 2006-02-24 13:12 mtdblock4 brw-rw-rw- 1 root root 31, 5 2006-02-24 13:12 mtdblock5 brw-rw-rw- 1 root root 31, 6 2006-02-24 13:12 mtdblock6 crw-rw-rw- 1 root root 90, 1 2006-02-24 13:12 mtdr0 crw-rw-rw- 1 root root 1, 3 2006-02-24 13:12 null crw-rw-rw- 1 root root 108, 0 2006-02-24 13:12 ppp crw-r——r—— 1 root root 5, 2 2006-03-29 15:56 ptmx drwxr-xr-x 2 root root 4096 2006-03-29 15:56 pts crw-rw-rw- 1 root root 2, 0 2006-02-24 13:12 ptyp0 brw-rw-rw- 1 root root 1, 0 2006-02-24 13:12 ram0 crw-rw-rw- 1 root root 1, 8 2006-02-24 13:12 random crw-rw-rw- 1 root root 5, 0 2006-02-24 13:12 tty crw-rw-rw- 1 root root 4, 0 2006-02-24 13:12 tty0 crw-rw-rw- 1 root root 3, 0 2006-02-24 13:12 ttyp0 crw-rw-rw- 1 root root 4, 64 2006-02-24 13:12 ttyS0 crw-rw-rw- 1 root root 1, 9 2006-02-24 13:12 urandom crw-rw-rw- 1 root root 1, 5 2006-02-24 13:12 zero舉例: mknod console c 5 1 這樣 crw-rw-rw- 1 root root 5, 1 2006-02-24 13:12 console
5、將編譯好的busybox拷貝到/bin下面,除了busybox外,所有其他的命令都是他的link
ash chgrp clear dd echo fgrep gzip ip ls modprobe mv ping pwd sed stty tar true zcat busybox chmod cp df egrep grep hostname kill mkdir more netstat ping2file rm sh sync tftp umount cat chown date dmesg false gunzip ifconfig ln mknod mount pidof ps rmdir sleep sysinfo touch uname
所有的命令你可以在busybox下面用make menuconfig來增減
6、同樣/sbin下面也是busybox的link
halt ifconfig init insmod klogd losetup lsmod mkswap modprobe reboot rmmod route swapoff swapon
[NextPage]
7、同樣/usr/bin下面也是busybox的link
basename dirname env free id logger reset tail tr tty uptime which xargs
awk cut expr head killall mkfifo sort test traceroute uniq wc whoami yes
上面幾乎是最全的link,各個看官可以酌情刪減,不過link也不佔什麼空間!
8、同樣/usr/sbin下面放著所有編譯完的可執行文件,具體就不多說了
9、非常重要之/lib,務必重視
找到你編譯環境的target目錄,把需要的lib文件先用strip壓縮(非target目錄下的,而已編譯環境提供的strip),先把最基本的libc, ld等等,必須同樣做跟target/lib裡面一樣的link.
然後根據特定的應用加相應的lib,不要把不用的加進去,lib比較占空間。
10、在/etc下面加上需要的配置文件,最最重要的是rcS
#!/bin/sh export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/sbin/scripts UTC=yes mount -n -t proc proc /proc mount -n -t ramfs ramfs /tmp mount -n -t devpts devpts /dev/pts # build var directories /bin/mkdir -m 0777 /tmp/var /bin/mkdir -m 0777 /var/lock /bin/mkdir -m 0777 /var/log /bin/mkdir -m 0777 /var/run /bin/mkdir -m 0777 /var/tmp #/bin/mkdir -m 0777 /tmp/etc #/bin/cp -a /usr/etc//etc #/bin/cp -a /usr/dev//dev/ # loads the NPE ethernet moles into the kernel. insmod /lib/moles/2.6.13.2/intel/ixp400.ko # Firmware code for NPE Engine. cat /etc/IxNpeMicrocode.dat > /dev/ixNpe insmod /lib/moles/2.6.13.2/intel/ixp400_eth.ko netdev_max_backlog=500 insmod /lib/moles/led.ko insmod /lib/moles/push_button.ko下面的具體應用沒有再舉例加上了,這個是系統init必須的。
其他的情況類似如此了,下面裡面給了一個lunksys的GPL項目的target.
四、生成一個ramdisk
#!/bin/sh MODULE_NAME=ramdisk RAMPATH=`pwd` TMPPATH=${RAMPATH}/tmp SOURCE=${RAMPATH}/……/target if [ ! -d ${TMPPATH} ] then mkdir ${TMPPATH} fi if [ `whoami` != 'root' ] then { echo "You should run the shell as root, Please rerun as a root." echo "Aborting." exit 1 } fi # Clear in tmp path rm -rf ${TMPPATH}/tmpmnt rm -rf ${TMPPATH}/ramrootfs mkdir ${TMPPATH}/tmpmnt # Clear the old ramdisk rm -f ${RAMPATH}/$MODULE_NAME # Make a temp file which size is suitable dd if=/dev/zero of=${TMPPATH}/ramrootfs bs=1k count=6144 # Create a ext2 filesystem mke2fs -F -m 0 -i 2000 ${TMPPATH}/ramrootfs # Mount it to tmpmnt/ mount -o loop -t ext2 ${TMPPATH}/ramrootfs ${TMPPATH}/tmpmnt # Copy everything from kernel to this. cd ${TMPPATH}/tmpmnt echo ${SOURCE} cp -av ${SOURCE}/. cd ${TMPPATH} # Unmount it the ext2 filesystem umount ${TMPPATH}/tmpmnt cat ${TMPPATH}/ramrootfs | gzip -9 > /${RAMPATH}/ramdisk echo Copying ramdisk image to ${RAMPATH} sync這里給出一個自動生成腳本!
五、生成一個cramfs
找到cramfs的toolchain./mkcramfs -r $(FS1_DIR) $(FS_NAME)。1
六、生成一個mksquashfs
找到squashfs的toolchain./mksquashfs $(FS_DIR) $(FS_NAME) -noappend -be -lzma -no-fragments -noI
做文件系統最困難和最可能出問題的地方是在/lib庫和/dev方面,請大家多注意這兩方面。
Ⅱ 如何製作Linux
搜索「Linux From Scratch」,也就是通常說的LFS,一步一步教你從源碼製作Linux系統
Ⅲ 如何製作科學計算用的linux
1.行用busybox構建linux命令. 2.下載一個kernel源碼,解壓出來.然後從你的linux系統下/boot/config-xxx復制到你解壓好的內核源碼包里,自己編譯成bzImage 3.用生成ISO啟動命令去生成一個啟動腳本.再扭linux ISO(linux系統光碟下的二個東西復制過來...
Ⅳ 如何用u盤製作成linux系統的安裝盤
以製作Ubuntulinux系統為例:
1、首先要下載Ubuntu系統,在網路搜索Ubuntu,打開Ubuntu官網。
Ⅳ 如何製作最簡minilinux
自己定製linux系統這個是需要非常了解和理解linux內核和其他系統代碼方面知識才能完成的(以下是知識准備):Linux的啟動過程原理
initramfs的本質,如何編譯內核,製作OpenStack鏡像的根本原理
initramfs, 內核,鏡像之間的關系
chroot的根本原理,以及網上將linux安裝在arm的安卓手機的基本原理
簡要說下系統定製的基本流程(步驟):
創建工作目錄
使用busybox生成根文件系統中的bin等目錄
創建服務啟動腳本與inittab文件與fstab文件
創建根文件系統的init腳本(initrc使用linuxrc,而initramfs使用init腳本,所以先刪除busybox為initrc生成的默認的linuxrc文件,rm-rf$LINUX/linuxrc),init文件可以是任何ELF格式的可執行性文件,例如如果是一個編譯過的C程序也是可以的,記得安裝編譯c文件要用到的庫:sudoyum install -y glibc-static libstdc++-static。
使用chroot在未make內核之前就可以先測試initramfs
構建initramfs,先配置支持Generalsetup -> Initial RAM filesystem and RAM disk (initramfs/initrd)support (默認就是支持的),再將linux內核的CONFIG_INITRAMFS_SOURCE(Generalsetup -> initramfs sourcefile(s))指向這個目錄,然後執行make命令內核就會自動構建生成initramfs了(是一個壓縮過的cpio檔案文件),並且將它鏈接到內核鏡像中。
調試驗證。可以使用物理機驗證,也可以採用qemu虛機驗證。如果使用物理機來驗證的話,本來可以直接使用makeinstall命令自動安裝,但最好不要這么做,因為它會自動執行updategrub命令來破壞你的grub文件,可以手工做:
initramfs是一個最小化的根文件系統,它的根本目的是為了為切換到新的根文件系統做准備。initrd方式使用pivot_root命令切換到新的根文件系統,然後卸載ramdis,但是initramfs方式由於它是本身就是rootfs(rootfs是ramfs的一個實例)位於內存中,所以它既不能pivot_root,也不能umount,是常駐內存的。
對模塊的支持,到目前為止,我們在構建initramfs時還沒有涉及內核模塊的支持,所用到的硬體驅動程序都是直接編譯到內核中。現在我們就看看如何使initramfs支持內核模塊。
總結:
整個過程是,initrc或者initramfs都是一個運行在內存的小根文件系統,它有一個叫init的腳本,做完一些准備工作之後,如載入硬體的驅動,然後會切換到鏡像所在的新根文件系統上。
Ⅵ 如何製作Linux根文件系統
根文件系統一直以來都是所有類Unix操作系統的一個重要組成部分,也可以認為是嵌入式Linux系統區別於其他一些傳統嵌入式操作系統的重要特徵,它給Linux帶來了許多強大和靈活的功能,同時也帶來了一些復雜性。我們需要清楚的了解根文件系統的基本結構,以及細心的選擇所需要的系統庫、內核模塊和應用程序等,並配置好各種初始化腳本文件,以及選擇合適的文件系統類型並把它放到實際的存儲設備的合適位置。
Linux的根文件系統以樹型結構組織,包含內核和系統管理所需要的各種文件和程序,一般說來根目錄」/」下的頂層目錄都有一些比較固定命名和用途。
下面列出了一個Linux根文件系統中的比較常見的目錄結構:
/bin 存放二進制可執行命令的目錄
該目錄下存放所有用戶都可以使用的、基本的命令,這些命令在掛接其它文件系統之前就可以使用,所以/bin目錄必須和根文件系統在同一個分區中。
/bin目錄下常用的命令有:cat,chgrp,chmod,cp,ls,sh,kill,mount,umount,mkdir,m knod,[,test等「[」命令其實就是test命令,我們在利用Busybox製作根文件系統時,在生成的bin目錄下,可以看到一些可執行的文件,也就是可用的一些命令。
/dev 存放設備文件的目錄
該目錄下存放的是設備文件,設備文件是Linux中特有的文件類型,在Linux系統下,以文件的方式訪問各種設備,即通過讀寫某個設備文件操作某個具體硬體。比如通過"dev/ttySAC0"文件可以操作串口0,通過"/dev/mtdblock1"可以訪問MTD設備的第2個分區。
/etc 存放系統管理和配置文件的目錄
該目錄下存放著各種配置文件,對於PC上的Linux系統,/etc目錄下的文件和目錄非常多,這些目錄文件是可選的,它們依賴於系統中所擁有的應用程序,依賴於這些程序是否需要配置文件。在嵌入式系統中,這些內容可以大為精減。
/home 用戶主目錄,比如用戶user的主目錄就是/home/user,可以用~user表示
用戶目錄,它是可選的,對於每個普通用戶,在/home目錄下都有一個以用戶名命名的子目錄,裡面存放用戶相關的配置文件。
/lib 存放動態鏈接共享庫的目錄
該目錄下存放共享庫和可載入(驅動程序),共享庫用於啟動系統。運行根文件系統中的可執行程序,比如:/bin /sbin 目錄下的程序。
/sbin存放系統管理員使用的管理程序的目錄
該目錄下存放系統命令,即只有管理員能夠使用的命令,系統命令還可以存放在/usr/sbin,/usr/local/sbin目錄下,/sbin目錄中存放的是基 本的系統命令,它們用於啟動系統,修復系統等,與/bin目錄相似,在掛接其他文件系統之前就可以使用/sbin,所以/sbin目錄必須和根文件系統在同一個分區中。
/sbin目錄下常用的命令有:shutdown reboot fdisk fsck等,本地用戶自己安裝的系統命令放在/usr/local/sbin目錄下。
/tmp 公用的臨時文件存儲點
用於存放臨時文件,通常是空目錄,一些需要生成臨時文件的程序用到的/tmp目錄下,所以/tmp目錄必須存在並可以訪問。
/root 系統管理員的主目錄
根用戶的目錄,與此對應,普通用戶的目錄是/home下的某個子目錄。
/mnt 系統提供這個目錄是讓用戶臨時掛載其他的文件系統。
用於臨時掛載某個文件系統的掛接點,通常是空目錄,也可以在裡面創建一引起空的子目錄,比如/mnt/cdram /mnt/hda1 。用來臨時掛載光碟、硬碟。
/proc 虛擬文件系統,可直接訪問這個目錄來獲取系統信息。
這是一個空目錄,常作為proc文件系統的掛接點,proc文件系統是個虛擬的文件系統,它沒有實際的存儲設備,裡面的目錄,文件都是由內核臨時生成的,用來表示系統的運行狀態,也可以操作其中的文件控制系統。
/usr 最龐大的目錄,要用到的應用程序和文件幾乎都在這個目錄。
/usr目錄的內容可以存在另一個分區中,在系統啟動後再掛接到根文件系統中的/usr目錄下。裡面存放的是共享、只讀的程序和數據,這表明/usr目錄下的內容可以在多個主機間共享,這些主要也符合FHS標準的。/usr中的文件應該是只讀的,其他主機相關的,可變的文件應該保存在其他目錄下,比如/var。/usr目錄在嵌入式中可以精減。
/var 某些大文件的溢出區
與/usr目錄相反,/var目錄中存放可變的數據,比如spool目錄(mail,news),log文件,臨時文件。
---------------------------------------------------------------------
一、移植環境:
1、 Ubuntu 10.10發行版
2、 u-boot.bin
3、 目標機:FS_S5PC100平台
4、 交叉編譯器 arm-cortex_a8-linux-gnueabi-gcc
---------------------------------------------------------------------
二、移植步驟
1、 源碼下載
我們選擇的版本是busybox-1.17.3.tar.bz2下載路徑為:
http://busybox.net/downloads/
2、 解壓源碼
$ tar xvf busybox-1.17.3.tar.bz2
3、 進入源碼目錄
$ cd busybox-1.17.3
4、 配置源碼
$ make menuconfig
Busybox Settings --->
Build Options --->
[*] Build BusyBox as a static binary (no shared libs)
[ ] Force NOMMU build
[ ] Build with Large File Support (for accessing files > 2 GB)
(arm-cortex_a8-linux-gnueabi-) Cross Compiler prefix
() Additional CFLAGS
5、 編譯
$ make
6、 安裝
busybox默認安裝路徑為源碼目錄下的_install
$ make install
7、 進入安裝目錄下
$ cd _install
$ ls
bin linuxrc sbin usr
8、 創建其他需要的目錄
$ mkdir dev etc mnt proc var tmp sys root
9、 添加庫
在_install目錄下創建一個lib文件夾,將工具鏈中的庫拷貝到lib目錄下
$ mkdir lib
$ cp /home/linux/x-tools/arm-cortex_a8-linux-gnueabi/arm-cortex_a8-linux-gnueabi/lib/* ./lib/
刪除lib下的所有目錄、.o文件和.a文件,對庫進行瘦身以減小文件系統的大小
$ rm *.o *.a
$ arm-cortex_a8-linux-gnueabi-strip lib/*
10、 添加系統啟動文件
在etc下添加文件inittab
$ vim /etc/inittab
文件內容如下:
#this is run first except when booting in single-user mode.
:: sysinit:/etc/init.d/rcS
# /bin/sh invocations on selected ttys
# Start an "askfirst" shell on the console (whatever that may be)
::askfirst:-/bin/sh
# Stuff to do when restarting the init process
::restart:/sbin/init
# Stuff to do before rebooting
::ctrlaltdel:/sbin/reboot
在etc下添加文件fstab
$ vim /etc/fstab
文件內容如下:
#device mount-point type options mp fsck order
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
這里我們掛在的文件系統有三個proc、sysfs和tmpfs,在內核中proc和sysfs默認都支持,而tmpfs是沒有支持的,我們需要添加tmpfs的支持
修改內核配置:
$ make menuconfigFile systems --->
Pseudo filesystems --->
[*] Virtual memory file system support (former shm fs)
[*] Tmpfs POSIX Access Control Lists
重新編譯內核
$ make zImage
在etc下創建init.d目錄,並在init.d下創建rcS文件
$ mkdir /etc/init.d -p
$ vim /etc/init.d/rcS
rcS文件內容為:
#!/bin/sh
# This is the first script called by init process
/bin/mount -a
為rcS添加可執行許可權:
$ chmod +x init.d/rcS
在etc下添加profile文件
$ vim /etc/profile
文件內容為:
#!/bin/sh
export HOSTNAME=farsight
export USER=root
export HOME=root
#export PS1="\[\u@\h \W\]\$ "
export PS1="[$USER@$HOSTNAME \W]\# "
PATH=/bin:/sbin:/usr/bin:/usr/sbin
LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH
export PATH LD_LIBRARY_PATH
11、 設備文件創建
根文件系統中有一個設備節點是必須的,在dev下創建console節點
$ mknod dev/console c 5 1
重要:新製作的文件系統尺寸若超出8M,刪除不需要的庫文件。
Ⅶ 如何打造自己的 Linux 發行版
LFS 中文版手冊發布:如何打造自己的 Linux 發行版
您是否想過打造您自己的 Linux 發行版?每個 Linux 用戶在他們使用 Linux 的過程中都想過做一個他們自己的發行版,至少一次。我也不例外,作為一個 Linux 菜鳥,我也考慮過開發一個自己的 Linux 發行版。從頭開發一個 Linux 發行版這件事情被稱作 Linux From Scratch (LFS)。
在開始之前,我總結了一些有關 LFS 的內容,如下:
1. 那些想要打造他們自己的 Linux 發行版的人應該了解打造一個 Linux 發行版(打造意味著從頭開始)與配置一個已有的 Linux 發行版的不同
如果您只是想調整下啟動屏幕、定製登錄頁面以及擁有更好的外觀和使用體驗。您可以選擇任何一個 Linux 發行版並且按照您的喜好進行個性化配置。此外,有許多配置工具可以幫助您。
如果您想打包所有必須的文件、引導載入器和內核,並選擇什麼該被包括進來,然後依靠自己編譯這一切東西。那麼您需要的就是 Linux From Scratch (LFS)。
注意:如果您只想要定製 Linux 系統的外表和體驗,這個指南並不適合您。但如果您真的想打造一個 Linux 發行版,並且向了解怎麼開始以及一些其他的信息,那麼這個指南正是為您而寫。
2. 打造一個 Linux 發行版(LFS)的好處
您將了解 Linux 系統的內部工作機制
您將開發一個靈活的適應您需求的系統
您開發的系統(LFS)將會非常緊湊,因為您對該包含/不該包含什麼擁有絕對的掌控
您開發的系統(LFS)在安全性上會更好
3. 打造一個Linux發行版(LFS)的壞處
打造一個 Linux 系統意味著將所有需要的東西放在一起並且編譯之。這需要許多查閱、耐心和時間。而且您需要一個可用的 Linux 系統和足夠的磁碟空間來打造 LFS。
4. 有趣的是,Gentoo/GNU Linux 在某種意義上最接近於 LFS。Gentoo 和 LFS 都是完全從源碼編譯的定製的 Linux 系統
5. 您應該是一個有經驗的Linux用戶,對編譯包、解決依賴有相當的了解,並且是個 shell 腳本的專家。
了解一門編程語言(最好是 C 語言)將會使事情變得容易些。但哪怕您是一個新手,只要您是一個優秀的學習者,可以很快的掌握知識,您也可以開始。最重要的是不要在 LFS 過程中丟失您的熱情。
如果您不夠堅定,恐怕會在 LFS 進行到一半時放棄。
**6. 現在您需要一步一步的指導來打造一個 Linux 。LFS 手冊是打造 LFS 的官方指南。我們的合作站點 tradepub 也為我們的讀者製作了 LFS 的指南,這同樣是免費的。 ###
您可以從下面的鏈接下載 Linux From Scratch 的電子書:
下載: Linux From Scratch
7. 當前 LFS 的版本是 7.7,分為 systemd 版本和非 systemd 版本。
LFS 的官方網站是: http://www.linuxfromscratch.org/
您可以在官網在線瀏覽 LFS 以及類似 BLFS 這樣的相關項目的手冊,也可以下載不同格式的版本。
LFS (非 systemd 版本):
pdf 版本: http://www.linuxfromscratch.org/lfs/downloads/stable/LFS-BOOK-7.7.pdf
單一 HTML 版本: http://www.linuxfromscratch.org/lfs/downloads/stable/LFS-BOOK-7.7-NOCHUNKS.html
打包的多頁 HTML 版本: http://www.linuxfromscratch.org/lfs/downloads/stable/LFS-BOOK-7.7.tar.bz2
LFS (systemd 版本):
PDF 版本: http://www.linuxfromscratch.org/lfs/downloads/7.7-systemd/LFS-BOOK-7.7-systemd.pdf
單一 HTML 版本: http://www.linuxfromscratch.org/lfs/downloads/7.7-systemd/LFS-BOOK-7.7-systemd-NOCHUNKS.html
打包的多頁 HTML 版本: http://www.linuxfromscratch.org/lfs/downloads/7.7-systemd/LFS-BOOK-7.7-systemd.tar.bz2
8. Linux 中國/LCTT 翻譯了一份 LFS 手冊(7.7,systemd 版本)
經過 LCTT 成員的努力,我們終於完成了對 LFS 7.7 systemd 版本手冊的翻譯。
手冊在線訪問地址:https://linux.cn/lfs/LFS-BOOK-7.7-systemd/index.html 。
其它格式的版本稍後推出。
感謝參與翻譯的成員: wxy, ictlyh, dongfengweixiao, zpl1025, H-mudcup, Yuking-net, kevinSJ 。
關於:Linux From Scratch
這本手冊是由 LFS 的項目領頭人 Gerard Beekmans 創作的, Matthew Burgess 和 Bruse Dubbs 參與編輯,兩人都是LFS 項目的聯合領導人。這本書內容很廣泛,有 338 頁之多。
手冊中內容包括:介紹 LFS、准備構建、構建 LFS、建立啟動腳本、使 LFS 可以引導,以及附錄。其中涵蓋了您想知道的 LFS 項目中的所有東西。
這本手冊還給出了編譯一個包的預估時間。預估的時間以編譯第一個包的時間作為參考。所有的東西都以易於理解的方式呈現,甚至對於新手來說也是這樣。
如果您有充裕的時間並且真正對構建自己的 Linux 發行版感興趣,那麼您絕對不會錯過下載這個電子書(免費下載)的機會。您需要做的,便是照著這本手冊在一個工作的 Linux 系統(任何 Linux 發行版,足夠的磁碟空間即可)中開始構建您自己的 Linux 系統,付出時間和熱情。
如果 Linux 使您著迷,如果您想自己動手構建一個自己的 Linux 發行版,這便是現階段您應該知道的全部了,其他的信息您可以參考上面鏈接的手冊中的內容。
請讓我了解您閱讀/使用這本手冊的經歷,這本詳盡的 LFS 指南的使用是否足夠簡單?如果您已經構建了一個 LFS 並且想給我們的讀者一些建議,歡迎留言和反饋。
BLFS階段,startx後firefox等程序中文全部亂碼問題的解決 http://www.linuxidc.com/Linux/2007-05/3789.htm
用LFS從零開始構建完整Linux系統 http://www.linuxidc.com/Linux/2011-08/40706.htm
基於Ubuntu 10.10 構建LFS 6.7[圖文] http://www.linuxidc.com/Linux/2011-02/32545.htm
via: http://www.tecmint.com/create-custom-linux-distribution-from-scratch/
作者:Avishek Kumar 譯者:wwy-hust 校對:wxy
本文由 LCTT 原創翻譯
Ⅷ 如何製作linux操作系統鏡像
img/iso文件是鏡像文件,在Linux系統操作中有時需要製作鏡像文件,那麼製作鏡像文件的方法有哪些呢?下面小編就給大家介紹下如何下Linux下製作可啟動img/iso文件。
如何在Linux系統中製作可啟動img/iso鏡像文件
製作鏡像文件有三種方法,cp, cat, dd 和其它專用工具。cp ,cat 和 dd都可以從設備復制文件來創建鏡像。而 dd 命令更為強大,可以通過指定塊大小,塊多少來直接創建鏡像。
IMG 文件:
因為cp, cat 只能從設備來製作鏡像,但又沒有專用工具來做 IMG 文件,故這里用 dd 命令來製作 IMG 文件。
1,製作
dd if=/dev/zero of=fdimage.img count=2880
or
dd if=/dev/zero of=fdimage.img bs=1024 count=1440
2,格式化
mkfs.msdos fdimage.img
3,修改
可以用下面的命令 mount 後,可直接修改
mount -o loop *.img /mnt
4,可啟動
因為製作可啟動鏡像一定會用到虛擬機,推薦用 Virtualbox,先到網上下個 DOS 啟動盤來引導。用 DOS 的 sys 命令傳遞系統。推薦使用 FreeDOS,屬自由軟體。也可用 dd 命令 來傳遞引導引導信息,並復制啟動啟動時所需文件來做啟動盤。以 FreeDOS 為例,傳遞啟動信息用以下命令,其中下載的啟動盤為 balder10.img 文件
dd if=balder10.img of=fdimage.img bs=512 count=1 conv=notrunc
多系統用 grub4dos,
1),用 grub.exe 引導多系統
2),安裝 grub 到MBR,用 grldr 來引導多系統。當然也可用同上面一樣的辦法用 dd 直接寫入引導信息。
bootlace.com --floppy --chs 0x00
註:才發現用 dd 命令只能從邏輯扇區開始 ,先前我想可否用 dd 來將 grldr.mbr 寫入 u 盤,我用自己的 U 盤試了,結果不能打開了。因為我的 U 盤為 fat16 格式,邏輯扇區開始是OBR,接著是FAT表,結果把 FAT1 表給蓋了,那時還沒有想到還有 FAT2 呢,就格了,現在想起來郁悶啊,好多東西都沒有了。
為什麼軟盤可以呢,因為它就沒有前面的63個扇區,直接從邏輯0扇區開始的。
ISO 文件:
因為文件系統的關系,就不能用 dd 來直接做 ISO 鏡像了(當然,它還是可以從設備製作 ISO 鏡像)。 ISO 文件的製作有專用工具,
1,製作
mkisofs -r -o cdimage.iso /home/XXX/cddir
2,格式化
用mkiso製作的 iso 已有文件系統 iso9660
3,可啟動
無論是引導單系統還是引導多系統都還是用 mkisofs 這個工具,只是載入到光碟的 boot loader 不一樣而已。當然也可以將 DOS 的引導器 (也就是它的引導扇區) 或 windows 的引導器 ( XP 系統的是 ntldr ) 放入讓光碟引導。下面只討論 grub4dos 的使用
1),用 grub.exe 引導多系統
用 DOS 載入 grub.exe 引導多系統
2),將 grub 安裝到光碟 MBR
在製作時可用下面的命令直接生成可啟動鏡像,其中 grldr, menu.lst 要放在 cddir 目錄下,也就是在 cd 根目錄。
mkisofs -R -b grldr -no-emul-boot -boot-load-seg 0x1000 -o cdimage.iso cddir
mkisofs -R -b grldr -no-emul-boot -boot-load-size 4 -o cdimage.iso cddir
PS,下面給出 dd 命令和 mkisofs 參數說明
dd (convert and files)
dd 是 Linux/UNIX 下的一個非常有用的命令,作用是用指定大小的塊拷貝一個文件,並在拷貝的同時進行指定的轉換。
dd 的主要選項:
指定數字的地方若以下列字元結尾乘以相應的數字:
b=512, c=1, k=1024, w=2, xm=number m
if=file
輸入文件名,預設為標准輸入。
of=file
輸出文件名,預設為標准輸出。
ibs=bytes
一次讀入 bytes 個位元組(即一個塊大小為 bytes 個位元組)。
obs=bytes
一次寫 bytes 個位元組(即一個塊大小為 bytes 個位元組)。
bs=bytes
同時設置讀寫塊的大小為 bytes ,可代替 ibs 和 obs 。
cbs=bytes
一次轉換 bytes 個位元組,即轉換緩沖區大小。
skip=blocks
從輸入文件開頭跳過 blocks 個塊後再開始復制。
Ⅸ 怎樣製作linux操作系統啟動u盤
你好,可以的。U盤啟動盤製作步驟:
1、用U啟動U盤啟動盤製作工具做一個啟動U盤;
2、下載一個GHOST系統鏡像;
3、BIOS中設置從U盤啟動,把之前下的鏡像放到U盤中;
4、U盤啟動後,在啟動界面出選擇「GHOST手動安裝」類似意思的項,進去後選擇安裝源為你放在U盤里的系統,安裝路徑是你的C盤。或者在界面處選擇進PE,然後PE里有個一鍵安裝的軟體(就在桌面),選擇你放在U中的鏡像,裝在你的C盤。此時會出現一個進度窗口,走完後重啟。
5、重啟後取下U盤,接著就是機器自己自動安裝了,只需要點「下一步」或「確定」,一直到安裝完成