linux LFS 編譯成功記錄
安裝成功時間:
2008-6-27 23:50
心得體會
此次安裝比上次熟練多了,而且也仔細多了,所以問題也少了;
但是有一點就是在最後編譯核心的時候心太急了,急於將系統搞好,然後就可以正式玩了。
在menuconfig步驟忽略了一個重要的內容,就是沒有將虛擬機器的buslogic編譯進去,導致
最後啟動的時候出現kernel panic的錯誤。
只要重新返回到宿主系統,重新編譯核心,將buslogic部分也編譯進去。
在重新編譯核心的時候也遇到了不少的問題,先總結如下:
由於第一次編譯核心沒有將buslogic編譯進核心,導致lfs
在啟動的時候不能啟動,錯誤資訊如下:
VFS:Cannot open root device “sda1″ or unknow-block(0,0)
Please append a correct “root=” boot option
kernel panic-not syncing: VFS:Unable to mount root fs on unknow-block(0,0)
於是再次進入liveCD,想重新編譯核心,將buslogic編譯進去
在make mrproper
make menuconfig後
再make時出現如下錯誤:
/bin/sh: -c: line 0: syntax error near unexpected token `('
/bin/sh: -c: line 0: `set -e; echo ' CHK include/linux/version.h';
mkdir -p include/linux/; if [ `echo -n "2.6.16.27 .file null .ident GCC:(GNU)4.0.3 .
section .note.GNU-stack,,@progbitsy" | wc -c ` -gt 64 ]; then echo '"2.6.16.27 .
file null .ident GCC:(GNU)4.0.3 .section .note.GNU-stack,,@progbitsy" exceeds
64 characters' >&2; exit 1; fi; (echo \#define UTS_RELEASE \"2.6.16.27 .file null .
ident GCC:(GNU)4.0.3 .section .note.GNU-stack,,@progbitsy\"; echo \#define
LINUX_VERSION_CODE `expr 2 \\* 65536 + 6 \\* 256 + 16`; echo '#define
KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))'; ) <
/sources/linux-2.6.16.27/Makefile > include/linux/version.h.tmp;
if [ -r include/linux/version.h ] && cmp -s include/linux/version.h
include/linux/version.h.tmp; then rm -f include/linux/version.h.tmp;
else echo ' UPD include/linux/version.h'; mv -f include/linux/version.h.tmp include/linux/version.h; fi'
make: *** [include/linux/version.h] Error 2
這個錯誤在我上次編譯核心的時候就出現了,是在搞不懂為什麼會出現這樣的問題
google了下,說是其實version.h是在make menuconfig後生成的,但是我也執行了
menuconfig了啊,怎麼就不能生成呢?
google找了好半天,所有中文網站都是隻有提問題的,而沒有解決問題的。
最後還是找英文網站,最後總算讓我找到一線曙光,有人對於這個錯誤有如下解釋:
You are hit be an outstanding issue with -rc1 + rc2.
When you build as root you will alter /dev/null and in your case it
became a regular file.
Recreate /dev/null and build as normal user for now.
You can apply patch below to fix it - will be in next -rc.
大意是當第一次build核心的時候,會將/dev/null檔案修改為普通的問題(原來是裝置檔案)
用ls -lrt /dev/null檢視一下,可以看到正常的/dev/null的檔案型別:
crw-rw-rw- 1 root root 1, 3 2008-06-28 01:00 /dev/null
在核心編譯後,會變成:
-rw-rw-rw- 1 root root 1, 3 2008-06-28 01:00 /dev/null
注意上述兩行的第一個字元,由原來的c字元變成-字元,也就是有裝置檔案變成了普通檔案
只要重新建一下這個節點即可:
mknod -m 666 /dev/null c 1 3
然後再:
make
make modules_install
cp -v arch/i386/boot/bzImage /boot/lfskernel-2.6.11.12
cp -v System.map /boot/System.map-2.6.11.12
cp -v .config /boot/config-2.6.11.12
需要載入臨時檔案系統到/dev目錄下,並建立目標系統所必須的裝置檔案
程式碼:
mount -nvt tmpfs none /dev
mknod -m 622 /dev/console c 5 1
mknod -m 666 /dev/null c 1 3
mknod -m 666 /dev/zero c 1 5
mknod -m 666 /dev/ptmx c 5 2
mknod -m 666 /dev/tty c 5 0
mknod -m 444 /dev/random c 1 8
mknod -m 444 /dev/urandom c 1 9
chown -v root:tty /dev/{console,ptmx,tty}
最後有一點不完美的地方就是直接用該虛擬機器起不來,我新建了個虛擬機器,新建虛擬機器的硬碟型別
我選為buslogic了。然後透過掛載原虛擬機器的虛擬磁碟來實現磁碟型別的轉換,啟動,OK,進入登入介面。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12932950/viewspace-366171/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 重走LFS之路:(四) 工具鏈編譯-1編譯
- 重走LFS之路:(五) 工具鏈編譯-2編譯
- 重走LFS之路:(六) 工具鏈編譯-3編譯
- 附錄A Linux 編譯核心Linux編譯
- Vmware下成功編譯linux核心2.6(轉)編譯Linux
- sap系統編譯記錄編譯
- 重走LFS之路:(九) 基礎系統編譯-2編譯
- 重走LFS之路:(八) 基礎系統編譯-1編譯
- ijkplayer編譯踩坑記錄編譯
- Laragon 編譯 Vue 踩坑記錄Go編譯Vue
- openwifi編譯步驟記錄WiFi編譯
- 重走LFS之路:(七) 基礎系統編譯準備編譯
- Laravel Mix 編譯 Vue 踩坑記錄Laravel編譯Vue
- 騰訊視訊編譯優化記錄編譯優化
- hive原始碼編譯(失敗記錄)Hive原始碼編譯
- 記錄一次gcc的編譯GC編譯
- 附錄B Linux 下編譯 C 程式Linux編譯
- 虛擬機器-Linux開發板交叉編譯問題記錄虛擬機Linux編譯
- nginx 重新編譯 lua 模組不停服(記錄)Nginx編譯
- 【記錄】編譯安裝 ProtoBuf 擴充套件編譯套件
- [記錄] 編譯安裝 ProtoBuf 擴充套件編譯套件
- 【記錄】編譯安裝 YAML 擴充套件編譯YAML套件
- [記錄] 編譯安裝 YAML 擴充套件編譯YAML套件
- 記錄一些工程編譯問題編譯
- 【記錄】編譯安裝 SeasLog 擴充套件編譯套件
- [記錄] 編譯安裝 SeasLog 擴充套件編譯套件
- 【問題記錄】—.NetCore 編譯問題NetCore編譯
- Docker環境編譯時的錯誤記錄Docker編譯
- Sqlite記錄01_ubuntu 12.04編譯sqliteSQLiteUbuntu編譯
- MySQL-5.6.29原始碼編譯安裝記錄MySql原始碼編譯
- 在linux下編譯hibernate筆記Linux編譯筆記
- PHP編譯器BPC 6.0釋出,支援namespace,支援closure,成功編譯 workermanPHP編譯namespace
- 記 一次 Gentoo Linux 的編譯之旅Linux編譯
- [記錄] CentOS7.6 編譯安裝最新版 GitCentOS編譯Git
- 【記錄】編譯安裝 IgBinary 擴充套件編譯套件
- [記錄] 編譯安裝 IgBinary 擴充套件編譯套件
- 【記錄】CentOS7.6 編譯安裝最新版 GitCentOS編譯Git
- 編譯linux核心編譯Linux