佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

楼主: 詩魂

Linux 開機流程(x86版)

[复制链接]
 楼主| 发表于 22-4-2009 11:09 PM | 显示全部楼层

回复 19# GM119 的帖子

128…那不要有gui比較好
勉強一點,灌xcfe或lxde

再優化可能需要重編 kernel,
但幫助可能也不大
回复

使用道具 举报


ADVERTISEMENT

发表于 23-4-2009 05:59 PM | 显示全部楼层

回复 21# 詩魂 的帖子

什么是gui ,xcfe或lxde?是另一版本吗?
回复

使用道具 举报

发表于 23-4-2009 09:12 PM | 显示全部楼层
原帖由 GM119 于 22-4-2009 07:09 PM 发表
小弟拿P3 128 ram 的旧电脑灌utunbu,可用,但很慢,给一个指令要等几秒,是否还可优化?
还是因为ram太小就是这样慢。


不要這樣折磨 Ubuntu 拉。即是 Xubuntu XFCE 或 LXDE Gui 也是很勉強罷了。
最好還是選擇比較低檔的 Distro 如 Puppy Linux 等等之類的。要不然就不要使用 GUI。
回复

使用道具 举报

发表于 24-4-2009 05:36 PM | 显示全部楼层

懂得嵌入式Linux的人不是开玩笑。
懂得驱动程式与内核开发更恐怖,个个技术狂。
回复

使用道具 举报

发表于 2-5-2009 01:00 AM | 显示全部楼层
很有回到读书时代的感觉 。。。这篇要找时间好好的看。
回复

使用道具 举报

发表于 9-5-2009 04:27 PM | 显示全部楼层
電腦開發者預先編好了供系統啟動使用的啟動程式,把它們存放在ROM中,並安排它到一個固定的位置,即FFFF:0000,CPU就從BIOS中獲得了啟動所需的指令集。


应该是FFFF:FFF0 吧?
回复

使用道具 举报

Follow Us
 楼主| 发表于 9-5-2009 09:34 PM | 显示全部楼层

回复 26# jcmxwl_II 的帖子

jcmxwl_II您好,
應該是FFFF:0000(或ffff0)沒錯
回复

使用道具 举报

发表于 20-5-2009 10:10 PM | 显示全部楼层
原帖由 詩魂 于 9-5-2009 09:34 PM 发表 jcmxwl_II您好,應該是FFFF:0000(或ffff0)沒錯
在Intel的处理器, 肯定是FFFF:FFF0
回复

使用道具 举报


ADVERTISEMENT

发表于 20-5-2009 10:34 PM | 显示全部楼层
是 FFFF0 即 FFFF:0000。

physical address 为 FFFF, offset 为 0 即 0xFFFF:0000 , absolute address = physical address + offset, 即 FFFF0 . 诗魂兄的没错。

这是 x86 的标准了
回复

使用道具 举报

发表于 20-5-2009 10:53 PM | 显示全部楼层
要证实的话很简单。用 msdos 的 debug 就行, xp 里面也有

command prompt 输入 debug

-d ffff:0000 -> 开始, 你的bios creation date, 然后 etc 。。。
-d ffff:fff0  -> 空白
回复

使用道具 举报

发表于 20-5-2009 11:26 PM | 显示全部楼层
忘了介linux的, 这里是linux区嘛

我们用个hexdump 就行了。 由于要check的是ram, 直接读/dev/mem, 不过要root permission la, 毕竟是 ram 嘛, 等一下, 不然哟过户随便来dd dd if=/dev/zero of=/dev/mem .. 呵呵。。。。

进入正题拉

sudo hexdump /dev/mem -n 100 -s 0xfffe0 -C



sudo cat /dev/mem | hexdump -n 100 -s 0xfffe0 -C

反正都没差拉

对象是 /dev/mem , -n 100 就是读取 100 个单位, -s 是 skip offset, 前面的 fffe0 行久不要了, ( 这个是亿 absolute add 算 )-C 是分成 16 单位, 8 个单位间隔。。 这个是方便好看拉。 不然一堆字幕, 不懂是什么来的。

               
000fffe0  00 60 03 3c e7 45 84 01  00 05 80 00 c0 01 67 72  |.`.<.E........gr|

这里是FFFF:0000

000ffff0  ea 5b e0 00 f0 31 32 2f  33 31 2f 30 37 00 fc f5  |.[...12/31/07...|
00100000  f6 86 11 02 00 00 40 75  14 0f 01 15 22 71 68 00  |......@u...."qh.|
00100010  b8 18 00 00 00 8e d8 8e  c0 8e e0 8e e8 fc 31 c0  |..............1.|
00100020  bf 00 c0 7b 00 b9 2c c5  87 00 29 f9 c1 e9 02 f3  |...{..,...).....|
00100030  ab bf c0 12 77 00 b9 00  04 00 00 fc f3 a5 8b 35  |....w..........5|
00100040  e8 14 77 00                                       |..w.|

至于 ffff:fff0, 这个abosulute add 就是 ffff0 + fff0 = 10ffe0

我们offset 就 set 10ffe0 把, 结果
00101000
没东西了。。
回复

使用道具 举报

发表于 21-5-2009 12:05 AM | 显示全部楼层
其实我讲错了, 应该是F000:FFF0才是
回复

使用道具 举报

发表于 21-5-2009 12:18 AM | 显示全部楼层

回复 32# 糯米鸡 的帖子

F000:FFF0 即 FFFF:0000

    F0000
+   FFF0
--------------------
  FFFF0

FFFF:0000
回复

使用道具 举报

发表于 21-5-2009 12:21 AM | 显示全部楼层
原帖由 onlylonly 于 21-5-2009 12:18 AM 发表 F000:FFF0 即 FFFF:0000    F0000+   FFF0--------------------  FFFF0FFFF:0000
这是不一样的。处理器第一个跑的指令, 是在 0xFFFFFFF0,不是0xFFFF0。 你去找reset vector这个你就知道了。
回复

使用道具 举报

发表于 21-5-2009 12:37 AM | 显示全部楼层

回复 34# 糯米鸡 的帖子

The BIOS in Detail

Virtually every PC, since the very first IBM&#174; Personal Computer produced in 1981 to the latest Intel&#174; or even AMD&#174; based PC, has had exactly the same Memory address hard-wired into its CPU as a reference for its first instruction! This means every PC's CPU will always begin executing machine code instructions from essentially the same location inside any BIOS chip used to boot-up the system. That address is:

F000:FFF0 (in Segment:Offset notation)  or: FFFF0h (in Linear notation). You may also find it represented by FFFF:0000 [as it was recorded in IBM's original Technical Reference manual; P/N 6025008] or as just FFFF:0 (in Normalized Segment:Offset notation). [To understand why the Segment:Offset pair F000:FFF0 is also equivalent to FFFF:0, read this page on Memory Segments.]


http://mirror.href.com/thestarman/asm/mbr/PCboot.htm

Upon starting, a personal computer's x86 CPU runs the instruction located at the memory location CSP FFFF:0000 of the BIOS, which is located at the 0xFFFF0 address. This memory location is close to the end of the 1MB of system memory accessible in real mode. It typically contains a jump instruction that transfers execution to the location of the BIOS start-up program. This program runs a power-on self test (POST) to check and initialize required devices. The BIOS goes through a pre-configured list of non-volatile storage devices ("boot device sequence" until it finds one that is bootable. A bootable device is defined as one that can be read from, and the last two bytes of the first sector contain the word 0xAA55 (also known as the boot signature).


http://en.wikipedia.org/wiki/Booting
回复

使用道具 举报

发表于 21-5-2009 12:59 AM | 显示全部楼层

回复 34# 糯米鸡 的帖子

0xFFFFFFF0 唉。。。   



I still don't understand this even though I've gained more insight into the subject since I posted this. First I don't know what IDT is, a search on Google doesn't seem to be helping me.

Second, after reading a little bit more I've found out the the Motherboard's BIOS' ROM and IBM Cassette BASIC ROM are found at F0000-FFFFF. This may very well be the address region that the BIOS ROM is remapped into that the text is talking about but this also suggests that execution still starts at FFFF0 regardless of whether this address is remapped or not. Sure the chipset may be converting this address to something else but as far as the processor is concerned it is executing at address FFFF0, not FFFFFFF0.

The text does say "Note that the selector/base correspondence here is not the usual relationship when programming in real mode." but the text doesn't elaborate on this which doesn't give me much faith in the text


http://www.hackerthreads.org/viewtopic.php?f=8&t=39570
回复

使用道具 举报


ADVERTISEMENT

发表于 21-5-2009 08:52 AM | 显示全部楼层
cpu 的 reset vector现在是在0xFFFFFFF0, 0xFFFF0是很久以前的。
我是做cpu debug的, 所以我知道这一些。你可以参考:
1。 Intel&#174; 64 and IA-32 Architectures Software Developer’s Manual Volume 3A: System Programming Guide, Part 1, chapter 8.12
2。AMD64 Architecture Programmer’s Manual Volume 2: System Programming, chapter 14.13
回复

使用道具 举报

发表于 21-5-2009 10:41 AM | 显示全部楼层

回复 37# 糯米鸡 的帖子

真的不知道要怎么样说你才好。

0xFFFFFFF0 是 protected mode 的了

在real mode, 依然是 0xFFFF0 , 也就是 processor 当他是在 FFFF0。

虽然实际上是 FFFFFFF0, 但是 adress 是 truncated 的。。

而 bios 的位置在 FFFF:0000 没错
回复

使用道具 举报

发表于 21-5-2009 10:47 AM | 显示全部楼层
每一次hard reset, processor 一定是在 real mode, load 完重要的的, 才能切换为 protected mode
回复

使用道具 举报

发表于 21-5-2009 11:09 AM | 显示全部楼层
原帖由 onlylonly 于 21-5-2009 10:41 AM 发表 真的不知道要怎么样说你才好。0xFFFFFFF0 是 protected mode 的了在real mode, 依然是 0xFFFF0 , 也就是 processor 当他是在 FFFF0。虽然实际上是 FFFFFFF0, 但是 adress 是 truncated 的。。而 b ...
你不需要和我解释, 你听我讲的, 去参考我上面讲的两本specification。 你的处理器power on 或 reset 时, 在第一个指令时, 是在big real mode的情况。我已经和你讲过了, 我是从事cpu debug的, 这些东西, 我多少都知道一些。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 20-4-2024 10:08 AM , Processed in 0.072576 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表