星期一, 12月 12, 2005
Linux: binfmt_misc
在Linux環境中, 可以支援額外的執行檔格式.
這種功能就是由 binfmt_misc 模組所提供的
先載入模組 modprobe binfmt_misc
如果要系統可以直接執行windows 的.exe 檔,則執行下面這命令
echo ':Wine:M::MZ::/usr/bin/wine:' > /proc/sys/fs/binfmt_misc/register
這樣便可以對系統註冊此格式
每個欄位用 : (冒號)隔開
格式為: :name:type:offset:magic:mask:interpreter:
那如何清除已經註冊的格式呢?
echo -1 > /proc/sys/fs/binfmt_misc/status
如何停止使用此模組呢(非移除)?
echo 0 > /proc/sys/fs/binfmt_misc/status
如何由停止狀態啟動此模組呢?
echo 1 > /proc/sys/fs/binfmt_misc/status
我在我的Mandriva 上面寫了一個啟動script檔 /etc/init.d/binfmt_misc
#!/bin/sh
#
# Startup script for binfmt_misc
#
# description: Linux binfmt_misc script
# See how we were called.
case "$1" in
start)
echo "Starting binfmt_misc: "
if [ ! -e /proc/sys/fs/binfmt_misc ]; then
/sbin/modprobe binfmt_misc
fi
echo 1 > /proc/sys/fs/binfmt_misc/status
if [ -e /proc/sys/fs/binfmt_misc ]; then
echo ':Wine:M::MZ::/usr/bin/wine:' > /proc/sys/fs/binfmt_misc/register
echo ':Java:M::\xca\xfe\xba\xbe::/usr/local/bin/javawrapper:' > /proc/sys/fs/binfmt_misc/register
#echo ':HTML:E::html::/usr/local/java/bin/appletviewer:' > /proc/sys/fs/binfmt_misc/register
#echo ':Applet:M::
這種功能就是由 binfmt_misc 模組所提供的
先載入模組 modprobe binfmt_misc
如果要系統可以直接執行windows 的.exe 檔,則執行下面這命令
echo ':Wine:M::MZ::/usr/bin/wine:' > /proc/sys/fs/binfmt_misc/register
這樣便可以對系統註冊此格式
欄位順序 | 名稱 | 意義 |
1 | Name | 產生在 “/proc/sys/fs/binfmt_misc” 目錄下的檔案名稱,用來識別所支援的執行檔環境 |
2 | Type | M 表示透過比對檔頭來辨認執行檔 E 表示透過延伸的副檔名來辨認執行檔 |
3 | Offset | 用來標示比對檔頭資料所偏移的位置,通常為0,表示由檔頭的起始位置開始比對 |
4 | Magic | 所要比對的檔頭資料或是副檔名的名稱 |
5 | Mask | 可以用來mask部分比對字串的位元,通常不使用 |
6 | Interpreter | 指向我們所要採用的載入器,而我們使用的執行檔會成為這個載入器的第一個變數 |
每個欄位用 : (冒號)隔開
格式為: :name:type:offset:magic:mask:interpreter:
那如何清除已經註冊的格式呢?
echo -1 > /proc/sys/fs/binfmt_misc/status
如何停止使用此模組呢(非移除)?
echo 0 > /proc/sys/fs/binfmt_misc/status
如何由停止狀態啟動此模組呢?
echo 1 > /proc/sys/fs/binfmt_misc/status
我在我的Mandriva 上面寫了一個啟動script檔 /etc/init.d/binfmt_misc
#!/bin/sh
#
# Startup script for binfmt_misc
#
# description: Linux binfmt_misc script
# See how we were called.
case "$1" in
start)
echo "Starting binfmt_misc: "
if [ ! -e /proc/sys/fs/binfmt_misc ]; then
/sbin/modprobe binfmt_misc
fi
echo 1 > /proc/sys/fs/binfmt_misc/status
if [ -e /proc/sys/fs/binfmt_misc ]; then
echo ':Wine:M::MZ::/usr/bin/wine:' > /proc/sys/fs/binfmt_misc/register
echo ':Java:M::\xca\xfe\xba\xbe::/usr/local/bin/javawrapper:' > /proc/sys/fs/binfmt_misc/register
#echo ':HTML:E::html::/usr/local/java/bin/appletviewer:' > /proc/sys/fs/binfmt_misc/register
#echo ':Applet:M::
關於我自己
- 名稱: Triple-H
- 位置: 台中市, 台灣省
對於資訊科技抱有相當大的熱情,專長是VLSI CAD、C++、Embedded Linux、網路標準 最近在深入研究 Linux 夢想把任意平台的程式在任意平台執行 目前任職於網路設備公司 專職的嵌入式系統軟體工程師