中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Bochs調(diào)試linux內(nèi)核環(huán)境搭建筆記(1) – JeanLeo 博客

一、安裝Bochs軟件
環(huán)境:
Ubuntu 13.10
Bochs版本:
Bochs 2.6

1、安裝環(huán)境準(zhǔn)備:
sudo apt-get install build-essential
sudo apt-get install xorg-dev
sudo apt-get install bison
sudo apt-get install libgtk2.0-dev

2、安裝Bochs命令:
./configure –enable-debugger=yes –enable-disasm=yes
sudo make
cp bochs bochsdbg
——如果沒有該拷貝,安裝時(shí)將會(huì)報(bào)錯(cuò);
sudo make install

3、安裝遇到的問題列表:
問題1、
gui/libgui.a(gtk_enh_dbg_osdep.o): undefined reference to symbol ‘pthread_create@@GLIBC_2.2.5′
解決辦法:
LDFLAGS=’-lpthread’ ./configure –with-x11 –enable-debugger –enable-disasm
問題2、
如果忘了剛才的cp bochs bochsdbg命令,可能會(huì)安裝失敗,那么重復(fù)安裝時(shí)將會(huì)報(bào)某個(gè)keymap已經(jīng)存在
解決辦法:
將bochs在安裝目錄下面的東西全部刪了,重新make install一下。

二、構(gòu)建bochs調(diào)測環(huán)境:
注:創(chuàng)建磁盤鏡像以及往上面安裝是在ubuntu 11.10(虛擬機(jī)安裝的系統(tǒng)即可)環(huán)境上操作的,
主要原因是由于ubuntu 13.10上面的GRUB為2.0版本,該版本已經(jīng)沒有g(shù)rub-setup命令,
改為了grub-install命令,但是該命令不太熟,暫不研究,故用11.10回避。
1、構(gòu)建磁盤鏡像;
root@machine:# dd if=/dev/zero of=hd1.img count=$((63*16*100))
100800+0 records in
100800+0 records out
51609600 bytes (52 MB) copied, 0.548913 s, 94.0 MB/s
2、掛載磁盤鏡像;
root@machine:# losetup /dev/loop0 hd1.img
3、初始化磁盤設(shè)備;
root@machine:# cfdisk -s63 -h16 /dev/loop0
注意:初始化該磁盤時(shí),創(chuàng)建一個(gè)Primary分區(qū)即可,同時(shí)注意需要將該磁盤設(shè)置為bootable模式,然后寫入,退出;
4、使用fdisk檢查剛才的操作;
root@machine:# fdisk -lu /dev/loop0

Disk /dev/loop0: 51 MB, 51609600 bytes
16 heads, 63 sectors/track, 100 cylinders, total 100800 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Device Boot      Start         End      Blocks   Id  System
/dev/loop0p1   *          63      100799       50368+  83  Linux
5、將分區(qū)1掛載到/dev/loop1上面;
root@machine:# losetup /dev/loop1 hd1.img -o $((63*512))
6、格式化/dev/loop1為ext3文件系統(tǒng)格式; 
root@machine:# mkfs.ext3 /dev/loop1
mke2fs 1.41.14 (22-Dec-2010)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
12600 inodes, 50368 blocks
2518 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=51642368
7 block groups
8192 blocks per group, 8192 fragments per group
1800 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961

Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 36 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
7、在mnt下面創(chuàng)建img目錄,可以留作以后維護(hù)使用;
root@machine:# mkdir -p /mnt/img
8、將loop1掛載到/mnt/img/上面;  
root@machine:# mount /dev/loop1 /mnt/img/
9、安裝引導(dǎo)程序;
root@machine:# mkdir /mnt/img/boot
root@machine:# cp -r /usr/lib/grub/i386-pc/ /mnt/img/boot/grub
10、生成一個(gè)core.img, biosdisk負(fù)責(zé)讀取磁盤, part_msdos負(fù)責(zé)處理MBR, ext2負(fù)責(zé)讀取ext3分區(qū);
root@machine:# cd /mnt/img/boot/grub/
root@machine:/mnt/img/boot/grub# grub-mkimage -O i386-pc -o core.img biosdisk part_msdos ext2
命令解釋:
1)-d使用默認(rèn)值/usr/lib/grub2/i386-pc;
2)-p指定prefix變量為/bootin/grub2;
3)-o即輸出定制的內(nèi)核到/boot/bootin/grub2/core.img文件中;
4)biosdisk part_msdos ext2,這些都是grub內(nèi)核所包含的模塊,不需要太多;
注:有部分版本不需要參數(shù)“-O i386-pc”
注:ext3 基于ext2 的代碼,它的磁盤格式和 ext2 的相同,所以此處用ext2讀取,因?yàn)闆]有ext3模塊。
11、安裝grub2到(hd0), 根目錄在(hd0,1);
root@machine:/mnt/img/boot/grub# echo “(hd0) /dev/loop0” > ./device.map
device.map文件的意義說明:
首先,其實(shí)上述命令中的(hd0)并不意味著grub會(huì)安裝到“本地硬盤”的MBR中,(hd0,1)也并不意味著grub所需文件在“本地硬盤”第一個(gè)分區(qū)上;因?yàn)樵趯?shí)際寫入到設(shè)備時(shí),(hd0)會(huì)經(jīng)過device.map文件的映射;只有當(dāng)device.map文件內(nèi)容為(hd0) /dev/sda時(shí),上面的說法才成立;而當(dāng)device.map文件內(nèi)容為(hd0) /dev/sdb時(shí),比如你插入一個(gè)U盤,這時(shí),(hd0)被映射為/dev/sdb,即你的U盤;上述命令將會(huì)寫入grub到你U盤的MBR上,而將來啟動(dòng)時(shí)也會(huì)在你U盤上的第一個(gè)分區(qū)中查找/boot/grub下的模塊等文件;這也意味著,如果你要安裝grub到U盤,只要將device.map文件內(nèi)容改為(hd0) /dev/sdb就可以了!
root@machine:/mnt/img/boot/grub# grub-setup -m ./device.map -d /mnt/img/boot/grub/ -r ‘(hd0,1)’ ‘(hd0)’
命令解釋:
安裝grub2到(hd0), 根目錄在(hd0,1)
1)-d即安裝grub2時(shí)所需的boot.img和core.img等文件所在目錄為/mnt/img/boot/grub/;
2)-m即指定device.map文件所在目錄為./device.map;
3)末尾的-r (hd0,1)即將來啟動(dòng)grub時(shí)所需文件在本地硬盤第一個(gè)分區(qū);后面(hd0)即安裝grub到本地硬盤MBR;
12、檢查一下安裝結(jié)果;
root@machine:/mnt/img/boot/grub# hexdump -C /dev/loop0 | less
可以看到如下信息:
00000180  7d e8 2e 00 cd 18 eb fe  47 52 55 42 20 00 47 65  |}…….GRUB .Ge|
00000190  6f 6d 00 48 61 72 64 20  44 69 73 6b 00 52 65 61  |om.Hard Disk.Rea|
這說明前面的操作沒什么問題了;
13、現(xiàn)在可以把虛擬的鏡像設(shè)備卸載了;
root@machine:/mnt/img/boot/grub# cd –
root@machine:# umount /mnt/img
root@machine:# losetup -d /dev/loop1
root@machine:# losetup -d /dev/loop0
至此,hd0.img已經(jīng)搞定了,可以把它拷貝弄出ubuntu 11.10環(huán)境,去到安裝bochs環(huán)境上面;
其實(shí)上面搞這么多主要是grub-setup在新版本上面沒有了,暫時(shí)懶得研究grub-install命令了,
所以就Vmware安裝ubuntu 11.10給繞過去。
14、至此只是把img搞定了,下面把bochs給配置一下;
使用命令vim bochsrc,然后輸入以下信息即可:
megs: 2000
romimage: file=$BXSHARE/BIOS-bochs-latest
vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest
ata0-master: type=disk, path=”hd0.img”, cylinders=100, heads=16, spt=63
boot: c
log: bochsout.txt
mouse: enabled=0
cpu: ips=15000000
clock: sync=both
15、測試一下img和bochs的安裝情況,通常bochs能不能用,直接shell下面bochs命令就一見分曉,不過基于制作的hd0.img做驗(yàn)證,可以使用命令:
bochs -f bochsrc
注:該bochsrc本來是可以用系統(tǒng)自帶默認(rèn)的,但是配置方面不太熟,如果使用默認(rèn)的話,會(huì)報(bào)CPU不支持的錯(cuò)誤。
使用上面的命令啟動(dòng)bochs后,需要c一下,因?yàn)樗J(rèn)會(huì)停在機(jī)器啟動(dòng)的第一條指令上面,然后可以在bochs的客戶機(jī)上面按F12,選擇Hard disk to boot,那么就可以看到grub的提示了。

三、安裝內(nèi)核
1、退出bochs,掛在hd0.img;
root@machine:# mount hd0.img /mnt/img/ -o loop,offset=$((63*512))
2、拷貝bzImage到磁盤上面;
root@machine:# cp /usr/src/linux/arch/x86/boot/bzImage /mnt/img/boot/vmlinuz
3、然后將下列配置寫到/mnt/img/boot/grub/grub.cfg里面;
root@machine:# vim /mnt/img/boot/grub/grub.cfg
內(nèi)容:
# Timeout for menu
set timeout=10
# Set default boot entry as Entry0
set default=0
# Entry0- Load Linux kernel
menuentry “Linux” {
set root=(hd0,1)
linux /boot/vmlinuz root=/dev/hda1
}
4、開始測試內(nèi)核了;
umount /mnt/img
bochs -f bochsrc

四、Bochs使用命令整理
1、通過help命令可以查詢bochs的調(diào)測命令有哪些;
help
h|help – show list of debugger commands
h|help command – show short command description
-*- Debugger control -*-
help, q|quit|exit, set, instrument, show, trace, trace-reg,
trace-mem, u|disasm, ldsym, slist
-*- Execution control -*-
c|cont|continue, s|step, p|n|next, modebp, vmexitbp
-*- Breakpoint management -*-
vb|vbreak, lb|lbreak, pb|pbreak|b|break, sb, sba, blist,
bpe, bpd, d|del|delete, watch, unwatch
-*- CPU and memory contents -*-
x, xp, setpmem, writemem, crc, info,
r|reg|regs|registers, fp|fpu, mmx, sse, sreg, dreg, creg,
page, set, ptime, print-stack, ?|calc
-*- Working with bochs param tree -*-
show “param”, restore
2、命令詳解;
具體命令就不詳細(xì)說明了,通過h command命令都可以查到各個(gè)命令的用法,總而言之bochs確實(shí)做得挺牛的,熟悉了gdb的使用,轉(zhuǎn)過來發(fā)現(xiàn)bochs功能更多更爽一些,不過就是運(yùn)行得稍微慢了那么一點(diǎn)點(diǎn)。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
在bochs上用grub引導(dǎo)自己的kernel
轉(zhuǎn):grub2基礎(chǔ)教程
重裝win7 修復(fù)ubuntu引導(dǎo)
【轉(zhuǎn)載】Android X86 4.3的硬盤安裝方法
GRUB入門
系統(tǒng)安裝: GRUB安裝,配置及使用匯總
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服