2014-09-19 98 views
0

我在學習和理解使用我的x86-64桌面的Linux。我使用OpenSuse 13.1作爲我的工作系統來多重引導Linux。我只用2個文件就在自己的分區上創建了一個學習系統。我編譯了一個3.16.2內核,其默認選項在/ boot中。以下文件init:從C代碼打開Linux控制檯

int main() { 
    int nbytes = 100; 
    char * str;  
    str = (char *) malloc(nbytes + 1); 
    puts ("Please Enter text"); 
    while (1) { 
    getline(&str, &nbytes, stdin);  
    puts(str); 
    puts("line recieved"); 
    if (str[0] == 'r') 
    reboot(0x1234567); 
    if (str[0] == 's') 
      reboot(0x4321fedc);   
    } 
    return 0; 
} 

是靜態編譯的,位於/ sbin中。 Init是一個非常原始的shell,但在C代碼中進一步開發它會是一件難事。維基說:

「Linux控制檯是一個系統控制檯內部對Linux內核」

因此,如果這是真的在內核中我可以打電話從我的init程序此控制檯,而無需任何其他依賴增加/文件/程序?如果是這樣如何?我需要使用特定選項重建內核嗎?如果沒有,我怎麼能得到一個控制檯/終端/ CLI外殼的絕對最小文件,以便我可以輕鬆地調用基本的系統命令?

注意我已經安裝拱多次,但都拱門和Linux From Scratch的有成百上千的文件在其最基本的系統。另外,我試圖理解Linux,嵌入式Linux和Android可以使用完全不同的額外功能,所以我嘗試了一種不同的學習方法。

+0

也許您正在尋找'console'和'shell'之間的區別。 RE:http://unix.stackexchange.com/questions/4126/what-is-the-exact-difference-between-a-terminal-a-shell-a-tty-and-a-con – polarysekt 2014-09-19 18:11:35

回答

0

使用叉()和exec()來啓動bash程序嘗試。你可以做一些像exec(「bash myscript.sh」);

編輯:您可能需要選擇其中一個可執行文件系列函數