pc操作系统

2013-06-11 18:59:13 Firas 阅读数 7182

更新日期:2015年3月12日

编写PC操作系统的参考资料

编译器等工具

汇编语言:

MASM 6.11,MASM 11(Windows):http://www.masm32.com/

FASM(跨平台):http://flatassembler.net/

NASM(跨平台):http://www.nasm.us/

TASM:http://turbo.brothersoft.com/turbo-assembler.html

YASM:http://yasm.tortall.net/

C语言:

Visual Studio(Windows)

C-Free 5.0(Windows,包含MinGW):http://dl.vmall.com/c0dkzg38o7

GCC,G++(跨平台):http://gcc.gnu.org/

GCC与FASM代码链接:http://board.flatassembler.net/topic.php?t=5989

GCC链接器LD脚本:http://www.math.utah.edu/docs/info/ld_3.html

 

反汇编与调试:

IDA pro(Windows)

WinDBG(Windows,包含在驱动开发工具WDK中):http://msdn.microsoft.com/en-US/windows/hardware/gg463009/

GDB(包含在GCC中)

DOS的Debug的命令:http://technet.microsoft.com/library/cc722863.aspx

代码编辑器:

Notepad++(Windows):http://notepad-plus-plus.org/

Emacs(Linux):http://www.gnu.org/software/emacs/

Vim(Linux):http://www.vim.org

汇编IDE:http://www.oby.ro/rad_asm/

二进制查看与修改:

WinHex(Windows)

ghex/khex(Linux):http://directory.fsf.org/wiki/Ghex

Oktetahttp://utils.kde.org/projects/okteta/

Hexerhttp://www.the-interweb.com/serendipity/index.php?/categories/11-Hexer

虚拟机:

VMware Station:http://www.vmware.com

Oracle Virtual Box:https://www.virtualbox.org/

压缩解压缩与虚拟机磁盘文件查看:WinMount(Windows,中文版免费):http://cn.winmount.com/

Bochs(跨平台):http://sourceforge.net/projects/bochs/?source=directory

Bochs的图形前端Peter-Bochs:https://code.google.com/p/peter-bochs/

Xen:http://xenproject.org/

 

总体

于渊《自己动手写操作系统》:http://dl.vmall.com/c0oltefkkm

于渊《Orange’s一个操作系统的实现》

川合秀实 著,周自恒、李黎明、曾祥江、张文旭 译《30天自制操作系统》

Andrew S. Tanenbaum《现代操作系统》

Abraham Silberschatz, PeterBaer Galvin, Greg Gagne《操作系统概念》:http://dl.vmall.com/c0ouk7h52g

OSDEV:http://wiki.osdev.org/Main_Page

http://www.osdever.net/tutorials/

http://www.osdever.net/papers/

https://wiki.kernel.org/index.php/Main_Page

毛德操《漫谈兼容内核》:http://ishare.iask.sina.com.cn/f/21633826.html

全FASM写成的软盘操作系统:http://MenuetOS.net/

兼容POSIX的Dynacube OS:http://www.dynacube.net/

ScorchOS:http://sourceforge.net/projects/scorchos/

MouseOS技术小站:http://www.mouseos.com/index.html

国人写的Skelix OS:http://skelix.net/skelixos/index_zh.html

http://www.walshcomptech.com/ohlandl/index.htm

Randal E. Bryant, David O'Hallaron《深入理解计算机系统》:http://dl.vmall.com/c03ppaaacv

POSIX.1-2008标准:http://pubs.opengroup.org/onlinepubs/9699919799/

 

数据结构

http://zh.wikipedia.org/wiki/红黑树

http://en.wikipedia.org/wiki/B-tree

http://en.wikipedia.org/wiki/B%2B_tree

http://en.wikipedia.org/wiki/Bx-tree

SGI STL 红黑树(Red-Black Tree)源代码分析:http://blog.chinaunix.net/uid-26818262-id-3219065.html

红黑树的插入与删除 详细整理资料:http://wenku.baidu.com/view/d07e8e0216fc700abb68fc40.html

红黑树和B树:http://www.eli.sdsu.edu/courses/fall95/cs660/notes/RedBlackTree/RedBlack.html

树堆:http://en.wikipedia.org/wiki/Treap

C++ STL:http://zh.wikipedia.org/wiki/标准模板库

 

算法

校验和:

CRC32:http://www.repairfaq.org/filipg/LINK/F_crc_v3.html

探究CRC32算法实现原理:http://blog.csdn.net/zhaodm/article/details/3711034

http://en.wikipedia.org/wiki/Cyclic_redundancy_check

哈希:

http://zh.wikipedia.org/zh-cn/MD5

http://zh.wikipedia.org/wiki/SHA家族

加密通讯:

http://en.wikipedia.org/wiki/RSA_(algorithm)

 

 

Linux参考

Linux内核源代码下载:https://www.kernel.org/

Linux内核源代码:https://github.com/torvalds/linux

《Linux内核设计的艺术——图解Linux操作系统架构设计与实现原理》:http://dl.vmall.com/c0tl4202j5

深入分析Linux内核源码:http://oss.org.cn/kernel-book/

Linux i386 Boot Code HOWTO byFeiyun Wang:http://www.tldp.org/HOWTO/Linux-i386-Boot-Code-HOWTO/index.html

毛德操、胡希明《Linux内核源代码情景分析》

Linux C编程一站式学习:http://learn.akae.cn/media/index.html

 

BSD、Unix参考

FreeBSD:

《FreeBSD操作系统设计与实现》:http://dl.vmall.com/c0ad41bvan

FreeBSD源代码:http://www.oschina.net/code/explore/freebsd

NetBSD:

NetBSD源代码:http://cvsweb.netbsd.org/bsdweb.cgi/?only_with_tag=MAIN

OpenBSD:

http://www.openbsd.org/

Apple XNU源代码:http://www.opensource.apple.com/source/xnu/

 

Microsoft的OS参考

http://research.microsoft.com/en-us/projects/singularity/

http://zh.wikipedia.org/zh-cn/Singularity

Windows Research Kernel:http://www.microsoft.com/education/facultyconnection/articles/articledetails.aspx?cid=2416&c1=en-us&c2=0

Vista及后续Windows引导启动过程:http://homepage.ntlworld.com./jonathan.deboynepollard/FGA/windows-nt-6-boot-process.html

http://www.starman.vertcomp.com/asm/mbr/W7MBR.htm

http://www.starman.vertcomp.com/asm/mbr/W7VBR.htm

ReactOS:http://www.reactos.org/

毛德操《Windows内核情景分析:采用开源代码ReactOS》

潘爱民《Windows内核原理与实现》

《DOS原理与结构》:http://dl.vmall.com/c010mlo8ay

 

CPU架构

Intel 64(x64)和IA32(x86)架构: http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html

http://software.intel.com/en-us/node/183990?wapkw=cpuid+utility

http://developer.amd.com/resources/documentation-articles/developer-guides-manuals/

Universityof San Francisco - Intel EM64T and VT Extenions:http://www.cs.usfca.edu/~cruse/cs686s07/

http://en.wikipedia.org/wiki/Cpuid

MultiProcessor Specification(MP Spec), version 1.4: http://www.intel.com/design/archives/processors/pro/docs/242016.htm

Bringing SMP to Your UPOperating System: http://www.cheesecake.org/sac/smp.html

关于多处理器初始化:http://forum.osdev.org/viewtopic.php?t=11564

x86-x64在线汇编器:https://defuse.ca/online-x86-assembler.htm

x86Microsoft stdcall调用约定:http://msdn.microsoft.com/en-us/library/zxk0tw93.aspx

Microsoftx64调用约定:http://msdn.microsoft.com/zh-cn/library/ms235286.aspx

IntelItanium(安腾)架构:http://www.intel.com/content/www/us/en/processors/itanium/itanium-processor-software-specifications.html

ARM文档:http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.subset.architecture.reference/index.html

ARM模拟器:http://armulator.sourceforge.net/

SPIM MIPS模拟器:http://spimsimulator.sourceforge.net/

MARS MIPS模拟器:http://courses.missouristate.edu/KenVollmar/MARS/

MIPS架构:http://www.imgtec.com/mips/architectures/

MIPS寄存器:http://msdn.microsoft.com/zh-cn/library/ms253512(v=vs.90).aspx

AVR架构Atmel公司:http://www.atmel.com

AVR32架构手册:http://www.atmel.com/zh/cn/Images/doc32000.pdf

SPARC:http://www.sparc.org/technical-documents-test-2/specifications/#ARCH

 

进程和线程

POSIX Threads Programming:https://computing.llnl.gov/tutorials/pthreads/

 

多线程同步

Linux的自旋锁:http://blog.chinaunix.net/uid-25871104-id-3052138.html

Linux中的信号量和互斥量:http://blog.csdn.net/lihenair/article/details/6597080

 

BIOS中断

Ralf Brown实模式中断:http://www.ctyme.com/intr/int.htm

16色模式颜色对应:http://en.wikipedia.org/wiki/BIOS_color_attributes

BIOS视频、键盘、磁盘中断:http://wenku.baidu.com/view/61ed6c175f0e7cd1842536f9.html

Trusted Computing Group PCClient Implementation for Conventional BIOS:http://www.trustedcomputinggroup.org/resources/pc_client_work_group_specific_implementation_specification_for_conventional_bios_specification_version_12

 

EFI/UEFI

UEFI官网:http://www.uefi.org

Intel关于EFI和UEFI的文档:http://www.intel.cn/content/www/cn/zh/architecture-and-technology/unified-extensible-firmware-interface/efi-homepage-general-technology.html

MSDN中关于UEFI固件的文档:http://technet.microsoft.com/en-us/library/hh824898.aspx

BIOS人论坛UEFI学习讨论区:http://www.biosren.com/forum-19-1.html

《Beyond BIOS: Developing with the Unified Extensible FirmwareInterface》

System Management BIOS:http://www.dmtf.org/standards/smbios

Trusted Computing Group EFIPlatform Specification:http://www.trustedcomputinggroup.org/resources/tcg_efi_platform_specification

Trusted Computing Group EFIProtocol Specification:http://www.trustedcomputinggroup.org/resources/tcg_efi_protocol_specification

 

IO

端口:http://www.stanislavs.org/helppc/ports.html

8259AProgrammable Interrupt Controller:http://www.brokenthorn.com/Resources/OSDevPic.html

Intel 82093AAIO APIC Datasheet:http://www.intel.com/design/chipsets/datashts/290566.htm

PCI官方组织PCI-SIG:http://www.pcisig.com/

PCI规范2.2:http://www.ics.uci.edu/~harris/ics216/pci/PCI_22.pdf

PCI database:http://www.pcidatabase.com

Intel X58Express Chipset Datasheet北桥手册:http://www.intel.com/content/www/us/en/chipsets/x58-express-chipset-datasheet.html

Intel I/OController Hub 10 (ICH 10) Family Datasheet南桥手册:http://www.intel.com/content/www/us/en/io/io-controller-hub-10-family-datasheet.html

西安交通大学微机原理与接口技术:http://mcit.xjtu.edu.cn/wlkj/new_page_main.htm

中山大学微机原理与接口技术:http://sist.sysu.edu.cn/wjyl/index.html

8042键盘控制器:http://stanislavs.org/helppc/8042.html

键盘扫描码:http://www.mouseos.com/os/doc/scan_code.html

http://www.win.tue.nl/~aeb/linux/kbd/scancodes.html

MicrosoftWindows Keyboard Scan Code Specification:http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/scancode.doc

Intel 8253PIT:http://en.wikipedia.org/wiki/Intel_8253

8254Programmable Interrupt Timer:http://ftp.utcluj.ro/pub/users/calceng/PMP/231164.pdf

提供多媒体计时器支持的指南(关于高精度计时器HPET):http://msdn.microsoft.com/zh-cn/windows/hardware/gg463347.aspx

高级配置与电源接口ACPI:http://www.acpi.info/

ACPI规范5:http://www.acpi.info/spec50.htm

USB:http://www.usb.org/developers/docs/

 

保护模式中断

PIC:http://en.wikipedia.org/wiki/Intel_8259

APIC:http://en.wikipedia.org/wiki/Advanced_Programmable_Interrupt_Controller

IA32中断研究:http://wenku.baidu.com/view/d3ada6dd5022aaea998f0f1b.html

Linux内核中断内幕:http://www.ibm.com/developerworks/cn/linux/l-cn-linuxkernelint/index.html

Linux的中断:http://www.biosren.com/viewthread.php?tid=391

调用门、中断门和陷阱门的区别:http://stackoverflow.com/questions/3425085/the-difference-between-call-gate-interrupt-gate-trap-gate

不可屏蔽中断:http://en.wikipedia.org/wiki/Non-maskable_interrupt

The x86 NMI iret problem:http://lwn.net/Articles/484932/

 

磁盘

主引导记录(MBR)数据结构:http://blog.csdn.net/firas/article/details/8665366
FAT、NTFS卷引导记录数据结构:http://blog.csdn.net/firas/article/details/8787506

http://en.wikipedia.org/wiki/Master_boot_record

硬盘知识大概:http://wenku.baidu.com/view/c17688c7bb4cf7ec4afed04d.html

关于ATA:http://www.ata-atapi.com/

负责ATA/ATAPI的技术委员会T13官方网站:http://www.t13.org/

SATA官方网站:http://www.sata-io.org/

负责SCSI的技术委员会T10官方网站:http://www.t10.org/

ATA/ATAPI 8命令集草稿:http://www.t13.org/documents/UploadedDocuments/docs2007/D1699r4a-ATA8-ACS.pdf

http://www.t13.org/documents/UploadedDocuments/docs2011/d2015r7-ATAATAPI_Command_Set_-_2_ACS-2.pdf

http://www.t13.org/Documents/UploadedDocuments/docs2013/d2161r5-ATAATAPI_Command_Set_-_3.pdf

SATA规范3.2草稿:http://www.knowledgetek.com/graphicsNew/SerialATA_Revision_3_2_Gold(with%20Links).pdf

SATA规范3.0草稿:http://www.lttconn.com/res/lttconn/pdres/201005/20100521170123066.pdf

SATA的AHCI接口规范:http://www.intel.com/content/www/us/en/io/serial-ata/ahci.html

关于保护模式读写磁盘:http://bbs.pediy.com/showthread.php?t=171927

使用DMA读写硬盘:http://occh.net/wordpress/?p=324

 

内存管理

What every programmer shouldknow about memory: http://lwn.net/Articles/250967/

吴晓勇,曾家智。操作系统内核中动态内存分配机制的研究。成都信息工程学院学报,第20卷第1期,2005年2月:27~30

徐蓉。实时系统的内存管理技术研究与实现。电子科技大学硕士学位论文,2004年

谢长生,刘志斌。Linux 2.6内存管理研究。计算机应用研究,2005年:58~60

沈勇,王志平,庞丽萍。对伙伴算法内存管理的讨论。计算机与数字工程,第32卷:40~43

伙伴算法:http://blog.csdn.net/orange_os/article/details/7392986

胡兆阳,谢余强,舒辉。Windows下堆内存管理机制研究。计算机工程与应用,2005.17:59~61

Mengxiao Liu, Weixing Ji, ZuoWang, Jiaxin Li, Xing Pu. “High Performance Memory Management for A Multi-coreArchitecture”. IEEE Ninth International Conference on Computer and InformationTechnology. 2009. pp. 63-68.

 

页面置换

http://en.wikipedia.org/wiki/Page_replacement_algorithm

 

文件系统

http://zh.wikipedia.org/wiki/FAT

http://zh.wikipedia.org/zh-cn/NTFS

http://zh.wikipedia.org/wiki/ReiserFS

http://zh.wikipedia.org/wiki/XFS

http://zh.wikipedia.org/wiki/ZFS

各种文件系统的比较:http://en.wikipedia.org/wiki/Comparison_of_file_systems

MSWIN4.1OS Boot Record:http://thestarman.pcministry.com/asm/mbr/MSWIN41.htm

Boot Record of FAT:http://home.freeuk.net/foxy2k/disk/disk3.htm

FAT32:http://wenku.baidu.com/view/add07dfc910ef12d2af9e751.html

超通俗FAT32:http://wenku.baidu.com/view/e2fb140590c69ec3d5bb7543.html

NTFS File System Overview:http://www.c-jump.com/bcc/t256t/Week04NtfsReview/index.html

The New Technology FileSystem:http://link.springer.com/content/pdf/10.1007/978-1-84628-732-9_6.pdf

NTFS:http://wenku.baidu.com/view/0a467b175f0e7cd184253652.html

NTFS文件系统:http://wenku.baidu.com/view/d26bec1ca76e58fafab00390.html

Master File Record(主文件记录):http://msdn.microsoft.com/en-us/library/bb470206(v=vs.85).aspx

Inside Win2K NTFS, Part 1: http://msdn.microsoft.com/en-us/library/ms995846.aspx

Inside Win2K NTFS, Part 2: http://windowsitpro.com/systems-management/inside-win2k-ntfs-part-2

Ext3/4磁盘布局:http://wenku.baidu.com/view/db827320192e45361066f5ad.html

Ext2和Ext3文件系统:http://wenku.baidu.com/view/72b04d7302768e9951e738b8.html

CDFS(ISO 9660):http://zh.wikipedia.org/wiki/ISO_9660

通用光盘格式(UDF):http://zh.wikipedia.org/wiki/通用光盘格式

 

可执行文件格式

ELF文件格式:http://www.sco.com/developers/devspecs/gabi41.pdf

ELF-64文件格式:http://downloads.openwatcom.org/ftp/devel/docs/elf-64-gen.pdf

PE文件格式:http://msdn.microsoft.com/library/windows/hardware/gg463125

PE文件格式详解:http://www.vckbase.com/index.php/wv/1057
http://www.vckbase.com/index.php/wv/1058

map文件介绍及使用查错:http://blog.csdn.net/mark_chan/article/details/5104952

BSS段:http://en.wikipedia.org/wiki/.bss

 

显示与显卡

VESA BIOS Extension(VBE) 3.0标准:http://www.petesqbsite.com/sections/tutorials/tuts/vbe3.pdf

最新VESA显示器时序标准(DMT_v1.0_r12p):http://wenku.baidu.com/view/e4ac87956bec0975f465e2ea.html

http://en.wikipedia.org/wiki/VESA_BIOS_Extensions

http://jelleybee.com/projects/software/pc_asm/int_10h/INT_10h_4Fxx_VESA.txt

http://www.stanford.edu/class/cs140/projects/pintos/specs/freevga/vga/crtcreg.htm

http://www.stanford.edu/class/cs140/projects/pintos/specs/freevga/vga/vga.htm

在保护模式中显示文字(需有C语言库):http://blog.csdn.net/guzhou_diaoke/article/details/8459541

GPU:

http://www.nvidia.com/object/cuda_home_new.html

http://developer.amd.com/resources/heterogeneous-computing/opencl-zone/

http://gpgpu.org/

 

图形界面

X.org:http://www.x.org/wiki/

GNOME:http://www.gnome.org/

GNOME源码:http://www.oschina.net/code/explore/gnome-2.91.3

KDE:http://www.kde.org/

KDE源码:http://www.oschina.net/code/explore/kde-4.5.4

Xfce:http://www.xfce.org

 

谢煜波《做一个支持图形界面的操作系统》

 

Unicode编码:http://www.unicode.org

International Components forUnicode:http://site.icu-project.org/home

 

字体

龚兵、张凤凌《True Type字体应用技术》五邑大学学报(自然科学版)1998年第12卷第1期第46~50页

史磊、吕强《True Type字形描述技术和TTF文件》中文信息产业化1995年第五期第54~59页

王瑜、黄源、张福炎《Windows中TrueType字形数据的存取技术》小型微型计算机系统1997年11月第18卷第11期

 

输入法

Fcitx输入法框架:https://fcitx-im.org/wiki/Fcitx

赵杨《XIM协议的原理及其实现》:http://www.ibm.com/developerworks/cn/linux/i18n/xim/xim-2/index.html

吴海辉《笔画码汉字输入法软件设计与实现》安徽大学硕士学位论文

图片文件格式

http://zh.wikipedia.org/wiki/BMP

BMP文件格式详解:http://blog.csdn.net/o_sun_o/article/details/8351037

JPEG文件编码解码详解:http://blog.csdn.net/lpt19832003/article/details/1713718

PNG文件格式详解:http://blog.csdn.net/bisword/article/details/2777121

 

2016-12-12 14:04:36 Hanford 阅读数 4476

 

1 绪论    1

1.1 目标    1

1.2 适宜的读者    1

2 制作启动U    2

2.1 初级安装    2

2.2 启动分析    3

2.3 高级安装    13

2.3.1 分区    13

2.3.2 复制文件    16

2.3.3 修改MBRPBR    17

2.3.4 启动分析    20

2.4 初级安装与高级安装的比较    21

3 硬盘分区    22

3.1 规划    22

3.2 操作    23

4 安装Windows XP    24

5 安装GRUB4DOS    25

5.1 WinXP的启动过程    25

5.2 安装GRUB4DOS    25

5.3 安装Windows PE    28

5.4 启动路径图    29

6 安装Windows 7    30

6.1 安装    30

6.2 修改PBR    30

6.3 移动Win7启动文件    31

6.3.1 复制    31

6.3.2 删除    32

6.4 修改BCD启动项    37

6.5 启动Win7    38

7 安装Windows 8.1    40

7.1 安装    40

7.2 修改PBR    40

7.3 移动Win8启动文件    40

7.4 修改BCD启动项    40

8 安装Windows 10    41

9 安装 Windows 2003    42

10 安装 Windows 98    44

11 完全由GRUB4DOS启动    45

11.1 安装GRUB4DOS    45

11.1.1 修改MBR    45

11.1.2 修改PBR    46

11.2 修改启动菜单    47

11.2.1 内置菜单    48

11.2.2 外置菜单    48

11.3 美化启动界面    49

11.3.1 gfxmenu    49

11.3.2 graphicsmode    51

12 安装Ubuntu10.10    52

12.1 安装    52

12.1.1 硬盘启动Ubuntu    52

12.1.2 卸载ISO设备    53

12.1.3 运行安装程序    53

12.1.4 分区    55

12.1.5 继续安装    58

12.1.6 显卡驱动    62

12.1.7 GRUB4DOS启动Ubuntu    63

12.2 配置    63

12.2.1 时间    63

12.2.2 修改启动菜单    64

12.2.3 修改卷标    64

12.2.4 root    64

 

 

1 绪论

1.1 目标

本文的目标是在一台PC上安装多个操作系统。启动界面如下图所示:

1.1

1.2 适宜的读者

程序员:开发的程序需要运行在多个操作系统下,也可能需要到多个操作系统下调试程序,VMware又不能满足要求的。制作出来的软件安装包需要在多个操作系统下正常运行。

装机控:喜欢折腾,各种操作系统都想尝试一下的装机发烧友。

 

 

2 制作启动U

安装多个操作系统,为防止电脑无法启动的情况,最好准备一个启动U盘。在这个启动U盘里装上Windows PE等维护工具。

2.1 初级安装

访问网站http://www.ushendu.cn,单击"立即下载"按钮。如下图所示:

2.1

下载完成后,安装并运行"U深度v2"。其界面如下图所示:

2.2

选择U盘的盘符,然后单击"一键制作启动U盘"按钮。等待一段时间后,启动U盘就制作好了。

2.2 启动分析

上一节制作出来的启动U盘,其分区结构如下图所示:

2.3

这个U盘能够启动的秘密就在于隐藏的508M分区。直接使用Windows的资源管理器是无法查看该分区内容的。

直接查看隐藏分区有难度,就换条路走。如下图所示,可以单击"一键生成ISO文件"按钮生成一个ISO文件。再单击"一键制作启动U盘"按钮把ISO文件内容写入U盘。注意:请保存好这个USD.ISO文件,装系统时会用到。

2.4

USD.ISO文件写入U盘的界面如下,直接单击"写入"按钮即可。

2.5

上图所示界面与UltraISO 9.5.5.2960的"写入硬盘映像"界面完全一致,所以笔者猜测:U深度U盘启动盘制作工具调用了UltraISO的此项功能。

现在就可以查看U盘里的内容了,不过在查看之前,需要设置一下Windows的"文件夹选项",如下图所示。这样就可以查看隐藏起来的文件了。

2.6

启动U盘的内容如下图所示:

2.7

注意:也可以使用UltraISOUSD.ISO文件的内容写入U盘,这样制作出来的启动U盘里将不再有隐藏文件,便于查看、复制、修改。

光有文件是不够的,还需要知道U盘是通过哪些文件实现启动的。为此,请运行BOOTICE v1.3.2软件,其主界面如下图所示:

2.8

上图"目标磁盘"选择U盘,然后单击"主引导记录"按钮,显示如下:

2.9

在图2.8中,单击"分区引导记录"按钮,显示如下:

2.10

上图中,再单击"安装/配置"按钮,显示界面如下:

2.11

总结一下,U盘的启动过程如下图所示:

2.12

1、开机,BIOS自检完成后将查找启动设备,这里就是U盘;

2BIOS会读取启动U盘的MBRMain Boot Record),即主引导记录。图2.9说明:MBRUltraISO USB-HDD+

3MBR把控制权交给PBRPartition Boot Record),即分区引导记录。图2.10和图2.11说明:PBR会把控制权交给文件GRLDR

现在的关键就是这个GRLDR文件了。虽然图2.10显示的PBRNTLDR引导程序,但事实上GRLDR却是GRUB4DOS的引导文件。使用BOOTICE v1.3.2软件可以查看GRLDR的内容,具体操作如下:

进入BOOTICE的"实用工具"页面,单击"启动编辑器"按钮

2.13

显示如下界面

2.14

上图单击"打开文件"按钮,载入GRLDR文件。即可看到如下内容:

timeout 15

default 0

command --set-path=/IUSD/GRUB/

gfxmenu /IUSD/GRUB/MESSAGE

configfile (md)4+8

title 01 尝试从本地硬盘启动 >>

errorcheck off

configfile /IUSD/GRUB/MENU12.LST

title 02 运行U深度Win8PE装机维护版

chainloader /iusd/usdw8pe

title 03 运行U深度Win03PE2013增强版

RUN /IUSD/USD

title 04 以上PE蓝黑屏无法进入不认硬盘方案

errorcheck off

configfile /IUSD/GRUB/MENU03.LST

title 05 进入Ghost备份还原系统多合一菜单

errorcheck off

configfile /IUSD/GRUB/MENU04.LST

title 06 运行最新版DiskGenius分区工具

RUN --mem /IUSD/IMGS/USDDOS.IMG

title 07 运行MaxDos工具箱增强版菜单

errorcheck off

configfile /IUSD/GRUB/MENU06.LST

title 08 运行硬盘内存检测扫描工具菜单

errorcheck off

configfile /IUSD/GRUB/MENU07.LST

title 09 运行Windows登陆密码破解菜单

errorcheck off

configfile /IUSD/GRUB/MENU08.LST

title 10 启动USB2.0加速电脑启动(老机专用)

/IUSD/GRUB/USB_ACC.0PE

title 11 启动自定义ISO/IMG文件(USD目录)

errorcheck off

configfile /IUSD/GRUB/RUN.LST

title 12 安装原版Win7/Win8系统(非GHOST版)

errorcheck off

configfile /IUSD/GRUB/MENU11.LST

秘密全部都在文件GRLDR里。如:用户选择启动项"运行U深度Win8PE装机维护版",就会运行chainloader /iusd/usdw8pe,它的含义就是把控制权交给文件/iusd/usdw8pe,实现Windows 8 PE的启动。

2.3 高级安装

高级安装的步骤比较繁琐,它的优势就在于:可以定制启动项。

2.3.1 分区

不要使用Windows自带的功能对U盘进行分区。因为它只能分一个区。请使用BOOTICE v1.3.2进行分区,操作步骤为:

运行BOOTICE v1.3.2,如下图所示。"目标磁盘"选择U盘,单击"分区管理"按钮。

2.15

显示如下界面,请单击"重新分区"按钮

2.16

显示如下界面,请选择"USB-HDD(多分区)",然后单击"确定"按钮。

2.17

显示如下界面。第1个分区大概15G,主要用来存放资料(Windows一般只认第一个分区);第23分区为空;第4个分区400M,用来存放启动U盘所需要的文件。单击"确定"按钮,完成U盘的分区。

2.18

2.3.2 复制文件

现在要把图2.7所示的所有文件复制到U盘的400M分区内。首先需要让Windows识别这个分区。在BOOTICE软件里选中400M分区,单击"设为可见"按钮。

2.19

现在,G:就是BOOT分区了。把图2.7所示的所有文件复制G:

最后,把DATA分区设为可见。

2.3.3 修改MBRPBR

仅有启动相关的文件,是无法实现U盘启动的。还需要修改U盘的MBRPBR

首先设置BOOT分区为活动分区:选中BOOT分区,单击"激活"按钮。

2.20

下图中,单击"主引导记录"按钮

2.21

显示如下界面,选择"Windows NT 5.x/6.x MBR",然后单击"安装/配置"按钮

2.22

显示如下界面。单击"Windows NT 6.x MBR"按钮,即可改写U盘的MBR数据。

2.23

单击图2.21的"分区引导记录"按钮,显示如下界面。首先选择BOOT分区,然后选择"GRUB4DOS",最后单击"安装/配置"按钮

2.24

 

显示如下界面,直接单击"确定"按钮即可。

2.25

2.3.4 启动分析

按上述步骤制作出来的启动U盘,其启动步骤如下:

1BIOS把控制权交给MBR

2MBR会把控制权交给活动分区的PBR,即BOOT分区的PBR

3BOOT分区的PBR会把控制权交给GRLDR文件。

4GRLDR显示启动菜单,根据用户的选择启动相应的项目。

2.4 初级安装与高级安装的比较

毫无疑问:初级安装比高级安装简单多了。

在启动菜单的定制方面,高级安装修改GRLDR文件即可。初级安装就麻烦了:GRLDR文件被隐藏起来了,无法修改。

在安装到本地磁盘方面:"U深度v2"允许把启动文件写入本地磁盘,但是它具体做了什么工作?会对已有的操作系统造成什么影响?笔者一直没有也不敢尝试,因为稍有不慎就得重做系统。高级安装就不同了:每一步操作会导致什么后果都是非常清楚的。

另外,再次制作启动U盘时。初级安装需要再次安装"U深度v2",而高级安装只需要运行绿色软件BOOTICE及复制文件即可。

 

 

3 硬盘分区

3.1 规划

笔者的PC上有两块硬盘:一块2T的,一块4T的。分区情况如下图所示:

3.1

2T硬盘主要就是用来安装操作系统的。其详细分区情况请见下表:

3.1 2T硬盘分区表

编号

0

主分区

WinXP

100G,用来安装Windows XP

4

逻辑分区

Win7-64

200G,用来安装Windows 7

5

逻辑分区

Win8-64

100G,用来安装Windows 8

6

逻辑分区

Win10-64

100G,用来安装Windows 10

7

逻辑分区

Win2003

100G,用来安装Windows 2003

8

逻辑分区

Ubuntu32

100G,用来安装 32Ubuntu 10.10

9

逻辑分区

Ubuntu64

100G,用来安装 64Ubuntu 10.10

10~16

逻辑分区

 

每个分区100G,用来安装操作系统

17

逻辑分区

 

20GLinux 操作系统的 Swap 分区

18

逻辑分区

Share

343G,再分下去26个盘符就不够用了。

4T硬盘用来存放数据、资料。

注意:

1、超过2T的硬盘必须分成GPT格式;

2Windows XP不识别GPT分区。因此硬盘并不是越大越好,一般情况下两个2T硬盘就够用了。

3.2 操作

请使用DiskGenius进行硬盘分区。它对分区的控制比较精细,如:给2T硬盘分区时,必须让每个分区按2048扇区对齐,这样在装Ubuntu时才能选择Ext3Ext4分区格式;WindowsGPT分区时,会自动生成ESPMSR分区,用户别无选择。DiskGenius可以设置不生成ESPMSR分区。

使用第2章创建的启动U盘启动电脑,桌面上就有DiskGenius的快捷方式,其版本为 4.6.1

运行DiskGenius 4.6.1,给2T硬盘分区的步骤:

1、删除所有分区;

2、创建100G的主分区,并激活;

3、剩下的空间全部创建为扩展分区;

4、根据表3.1,在扩展分区内部,再分出15个逻辑分区。注意:每个分区请按2048扇区对齐,并且不用格式化;

5、保存分区表。

运行DiskGenius 4.6.1,给4T硬盘分区的步骤:

1、删除所有分区;

2、创建一个NTFS格式的GPT分区,ESPMSR可以不用创建;

3、格式化该分区;

4、保存分区表。

 

 

4 安装Windows XP

安装之前,请进入BIOS设置程序,设置SATA模式为IDE,否则安装Windows XP时会蓝屏。如下图所示:

4.1

安装Windows XP,一定不要使用Ghost安装。笔者是通过光盘安装的Windows XP。注意:一定要把Windows XP安装到表3.1所示的WinXP分区。

安装完Windows XP,请将IDE驱动更新为AHCI驱动。重启电脑进入BIOS设置程序,将SATA模式设置为AHCI

IDE驱动更新为AHCI驱动,请参考笔者在百度文库的文章《AHCI驱动安装》,网址:http://wenku.baidu.com/view/d93b2c602e3f5727a5e9623c.html

 

 

5 安装GRUB4DOS

本章将安装GRUB4DOS到本地磁盘,为后继的安装工作做准备。

5.1 WinXP的启动过程

WinXP的启动过程如下图所示

5.1

1、开机,BIOS自检完成后将查找启动设备,这里就是2T硬盘;

2BIOS会读取2T硬盘的MBR

3MBR把控制权交给PBR

4PBR把控制权交给文件NTLDR

5NTLDR根据 boot.ini 文件的内容显示启动菜单;

6、默认情况下boot.ini里只有一项,启动程序继续调用NTDETECT.COM,进入WinXP系统。

5.2 安装GRUB4DOS

根据图5.1所示,安装GRUB4DOS有三种方法:

1、修改MBR,这种方法杀伤力最大;

2、修改PBR,这种方法杀伤力次之;

3、修改boot.ini,这种方法的杀伤力最小。

这里,将采用第3种方法。

首先得下载GRUB4DOS 0.4.4,其方法是访问http://download.gna.org/grub4dos/,然后下载grub4dos-0.4.4.zip

5.2

这个压缩文件里,有4个文件非常重要,如下图中4个选中的文件:

5.3

4个文件之间的关系,请见下图

5.4

说明:

1DOSWin98下,启动系统后运行grub.exegrub.exe将调用grldr,后者将根据menu.lst的内容显示启动菜单;

2Windows2000/XP/2003下,启动系统后在boot.ini里可以加载grldr.mbrgrldr.mbr将调用grldr,后者将根据menu.lst的内容显示启动菜单。

因此,安装好WinXP后,安装GRUB4DOS的步骤如下:

1、复制grub.exegrldr.mbrgrldrmenu.lstC:\

2、使用记事本编辑 boot.ini 文件。注意这个文件是隐藏、只读文件,请去除其只读属性。具体修改如下图所示:等待时间修改为10秒,另外增加一个启动项c:\grldr.mbr=GRUB4DOS,当用户选择启动项GRUB4DOS后,会加载c:\grldr.mbr,然后就是按照上图所示显示GRUB4DOS的启动菜单。

5.5

5.3 安装Windows PE

这一节,将把Windows PE安装到C:\

1、使用虚拟光驱或WinRAR打开第2章获得的USD.ISO文件,把IUSD文件夹复制到C:\

2、使用记事本编辑C:\menu.lst,其内容如下:

color white/black black/white white/black white/black

timeout 3

default 1

 

title Windows 2003 PE

chainloader /IUSD/USD

 

title Windows 8 PE

chainloader /iusd/usdw8pe

 

title Windows XP

root (hd0,0)

chainloader /ntldr

boot

 

title Windows 2003 (IDE)

root (hd0,7)

chainloader +1

boot

 

title Windows 7

root (hd0,4)

chainloader +1

boot

 

title Windows 8.1

root (hd0,5)

chainloader +1

boot

 

title Windows 10

root (hd0,6)

chainloader +1

boot

 

title Install Ubuntu

root (hd0,0)

kernel (hd0,0)/vmlinuz boot=casper iso-scan/filename=/ubuntu-10.10-desktop-amd64.iso ro quiet splash locale=zh_CN.UTF-8

initrd (hd0,0)/initrd.lz

 

title Ubuntu 10.10(32bits)

kernel (hd0,8)/boot/grub/core.img

boot

 

title Ubuntu 10.10(64bits)

kernel (hd0,9)/boot/grub/core.img

boot

当用户选择Windows 8 PE时,就会通过C:\iusd\usdw8pe启动Windows 8 PE

5.4 启动路径图

安装了GRUB4DOSWindows PE后,电脑启动的路径图不再是图5.1那么简单了,变成了下图所示的样子:

5.6

boot.ini里实现了路径的分支,在menu.lst里再次实现了路径的分支。

 

 

6 安装Windows 7

6.1 安装

安装Windows7有两种方法:

1、通过光盘安装;

2、下载Windows7安装镜像文件(.ISO)。在Windows XP下载入虚拟光驱。通过虚拟光驱进行安装。

两种方法的区别:第1种方法安装完成后,Windows7的系统盘一定是C盘;而第2种方法安装完成后,Windows7的系统盘一定不是C盘。

笔者使用的是第1种方法。

注意:一定要把Windows7安装到表3.1所示的Win7-64分区。

6.2 修改PBR

安装完Windows7后,启动过程有所变化:主分区的PBR被改写,不再加载NTLDR,而是加载bootmgr文件。为此,需要修改PBR

1、重启电脑进入WIndows 8 PE

2、运行BOOTICE,修改C:\的分区引导记录(PBR)为NTLDR引导程序,如下图所示:

5.7

6.3 移动Win7启动文件

安装完Win7之后,启动Win7的文件在WinXP分区,需要把这些文件移动到Win7-64分区。直接剪切是不行的,需要分两步走:首先复制,然后删除。

6.3.1 复制

进入WinXP分区,删除现有的boot.ini,把boot.bak重命名为boot.ini。因为安装Windows7时,安装程序修改了 boot.ini,并将以前的 boot.ini 重命名为boot.bak

把文件夹 Boot 和文件 bootmgr复制到Win7-64分区的根目录下。

6.3.2 删除

进入WinXP分区,删除文件BOOTNXTBOOTSECT.BAKbootmgr。删除文件夹Boot。注意:删除前请设置相应的权限,否则会无法删除。在 Windows XP下,删除这些文件的具体操作如下:

打开资源管理器,单击【工具】【文件夹选项】菜单项

6.1

去除"使用简单文件共享(推荐)"的勾中状态,然后单击"确定"按钮。

6.2

鼠标右键单击文件"bootmgr",然后单击【属性】菜单项,显示如下界面。请进入"安全"页面(如果上图"使用简单文件共享(推荐)"被勾中,那么就不会显示安全页面),然后单击"高级"按钮

6.3

显示如下界面。请进入"所有者"页面,把bootmgr的所有者更改为登录 WinXP的管理员。单击"确定"按钮。

6.4

在图6.3里,单击"添加"按钮。显示如下界面,请添加一个叫"everyone"的用户。

6.5

设置Everyone用户的权限,如下图所示。注意:如果不更改所有者,则无法设置权限。

6.6

现在,即可删除文件bootmgr了。

删除文件夹Boot也得按上述步骤进行操作,不过操作上有两点不同。

1、修改所有者的界面由图6.4变为下图。多了一个复选框"替换子容器及对象的所有者"。请勾中它,它的含义为:替换Boot文件夹内所有文件夹、文件的所有者。

6.7

2、图6.6只能修改boot文件夹的权限,为了修改boot文件夹内部所有文件夹、文件的权限,得单击"高级"按钮,显示如下界面:

6.8

请勾中"用在此显示的可以应用到子对象的项目替代所有子对象的权限项目",然后单击"确定"按钮。这样Everyone的权限才能传递给boot文件夹内的所有文件夹和文件。

现在,也可删除文件夹boot了。

6.4 修改BCD启动项

Win7的启动文件从WinXP分区分离出来后,还需要更改Win7-64分区里的boot\BCD文件。可使用BOOTICE软件来修改,其操作步骤为:

进入"BCD编辑"页面,单击"其它BCD文件"

6.9

选择Win7-64分区里的boot\BCD文件后,单击"智能编辑模式"按钮,显示如下界面。把除了Windows 7之外的其它启动项全部删除掉。

6.10

6.5 启动Win7

现在,启动路径图又恢复成图5.6。在此模式下,Win7是如何启动的呢?

首先在boot.ini显示的启动菜单里选择GRUB4DOS,然后在menu.lst显示的菜单里选择"Windows 7",这样GRUB4DOS将执行如下指令

root (hd0,4)

chainloader +1

boot

其含义为:启动编号为4的分区,从PBR开始启动。PBR会查找、调用bootmgr文件,也就是Win7-64分区内的bootmgr,最终Win7被启动。

chainloader +1替换为chainloader /bootmgr也可实现Win7的启动,但是后者跳过PBR代码的执行有时就会有问题。如:某些激活Win7的程序就是通过PBR来启用的,一旦PBR的代码未被执行,那么Win7就会处于未被激活的状态。

 

 

7 安装Windows 8.1

7.1 安装

下载Windows8.1的安装镜像文件(.ISO)。使用UltraISO 9.5.5.2960ISO文件写入U盘。

启动电脑时选择启动设备为U盘,即可进行Windows8.1的安装。

注意:一定要把Windows8安装到表3.1所示的Win8-64分区。

7.2 修改PBR

Win7的处理完全相同。

7.3 移动Win8启动文件

Win7的处理大致相同。不同之处在于:

1、不要把WinXP分区内的bootmgr移动到Win8-64分区,请直接删除掉;

2、移动完成后,请在WinXP分区创建文件夹bootmgr。为什么要这么做?因为把Win8启动文件移动到它自己的分区后,Win8并不安分:每次启动Win8,它都会在活动主分区(WinXP分区)写入文件bootmgr和文件夹Boot。然后启动Win7chainloader +1就有问题了:它首先从主分区找bootmgr,找到了就从主分区的bootmgr开始启动,结果就是把Win8给启动起来了。创建bootmgr文件夹,就是防止Win8WinXP分区创建bootmgr和文件夹boot

7.4 修改BCD启动项

Win7的处理完全相同。

 

 

8 安装Windows 10

Win10的安装与Win8的安装完全相同。

 

 

9 安装 Windows 2003

笔者使用光盘安装Windows 2003,其安装步骤与Windows XP相同,比较简单。需要注意的是它的启动,使用GRUB4DOS启动Windows 2003的命令如下:

title Windows 2003 (IDE)

root (hd0,7)

chainloader +1

boot

最关键的是chainloader +1,虽然它载入的是Win2003分区的PBR,但是该PBR会优先载入活动主分区(即WinXP分区)里的NTLDR文件,最终就是把Windows XP启动起来了。

为了防止这种情况发生,可以使用BOOTICE修改Win2003分区的PBR,如下图所示。最关键的就是把引导文件改成了NT007

9.1

WinXP分区里的boot.iniNTLDRNTDETECT.COM三个文件复制到Win2003分区。然后重命名NTLDRNT007,最后修改boot.ini,内容如下:

[boot loader]

timeout=0

default=multi(0)disk(0)rdisk(0)partition(5)\WINDOWS

[operating systems]

multi(0)disk(0)rdisk(0)partition(5)\WINDOWS="Windows Server 2003, Enterprise" /noexecute=optout /fastdetect

这样,即可实现GRUB4DOS引导Windows 2003系统了。

 

 

10 安装 Windows 98

Windows 98必须安装在主分区内,且必须是FATFAT32格式的分区。分区容量最大为32GB

显然,图3.1和表3.1所示的分区不适合Windows 98的安装。改进方案就是在WinXP分区前面插入32GB的主分区,并将该分区激活。

安装Windows 98时,将改写MBR和活动主分区的PBR,并且会把启动文件(IO.SYS)写入第一个主分区。如果第一个主分区是NTFS格式的,那么安装程序会因为无法写入IO.SYS文件而失败。解决办法有两个:1、保证第一个主分区是FAT32格式;2、也可以插入一个FAT32分区格式的U盘,安装程序将把启动文件写入该U盘内。

安装完Windows 98后,如果内存大于1GB,则无法进入Windows 98系统,解决办法:修改C:\Windows\System.ini文件,在[386Enh][VCACHE]段增加两条语句,如下所示。其含义为:只使用1GB的内存。

[386Enh]

MaxPhysPage=30000

 

[VCACHE]

MAXFILECACHE=524288

最后需要提醒的是:因为Windows 98过于古老,因此并不是所有的电脑都能完美的支持它。在笔者的电脑上,Windows 98的显示就不正常,USB鼠标也无法正常使用。

 

 

11 完全由GRUB4DOS启动

安装完WinXPWin7Win8.1Win10之后,系统启动图一直如图5.8所示。虽然它可以很好的工作,但是每次进入Win7都要选择两次,是不是有些烦?能不能只选择一次,就进入相应的操作系统?

11.1 安装GRUB4DOS

方法就是完全通过GRUB4DOS来管理启动。具体的操作上有两种方法:1、修改MBR2、修改PBR

11.1.1 修改MBR

重启电脑进入WinPE,使用BOOTICE软件修改2T硬盘的MBRGRUB4DOS,如下图所示:

11.1

电脑启动后,根据MBR的设置,将会在各个分区内查找文件grldr。其查找顺序为:活动的主分区,然后按顺序查找各个分区。

GRUB4DOS的启动文件grldr是可以更换名称的,单击上图的"安装/配置"按钮,将显示下图。可以在该界面内修改启动文件名称。

11.2

11.1.2 修改PBR

修改过程如下图所示。操作步骤为:

1、保证2T硬盘的MBR为"Windows NT 6.x MBR";

2、修改活动主分区(WinXP分区)的PBRBOOTMGR

3、修改活动主分区(WinXP分区)的PBRGRUB4DOS

启动过程:MBRWindows NT 6.x MBR)会载入活动主分区前12扇区的引导程序(所以第2步必不可少)。引导程序的前4个扇区被改写为GRUB4DOS引导程序,它会加载本分区内根目录下的grldr文件,继续完成系统的启动工作。

11.2

现在,启动路径图变成了下面这个样子:

11.3

11.2 修改启动菜单

GRUB4DOS的启动菜单,由grldr文件负责配置。这里,启动菜单分为内置和外置两种。

11.2.1 内置菜单

内置启动菜单在grldr文件内部,可使用BOOTICE软件打开grldr文件进行编辑。具体的操作步骤如下。

运行BOOTICE软件,单击下图的"启动编辑器"按钮

11.4

显示界面如下图所示

11.5

上图单击"打开文件"按钮,载入GRLDR文件。即可对其进行编辑。注意:如果含有汉字,请务必保存为UTF-8格式。

11.2.2 外置菜单

GRLDR文件的内容缺省如下所示:

pxe detect

configfile

default 0

timeout 1

 

title find /menu.lst, /boot/grub/menu.lst, /grub/menu.lst

errorcheck off

configfile /menu.lst

configfile /boot/grub/menu.lst

configfile /grub/menu.lst

find --set-root --ignore-floppies --ignore-cd /menu.lst && configfile /menu.lst

find --set-root --ignore-floppies --ignore-cd /boot/grub/menu.lst && configfile /boot/grub/menu.lst

find --set-root --ignore-floppies --ignore-cd /grub/menu.lst && configfile /grub/menu.lst

errorcheck on

commandline

 

title commandline

commandline

 

title reboot

reboot

 

title halt

halt

它的含义是:查找文件menu.lst,并根据该文件内容显示启动菜单。所以,不用修改GRLDR。直接修改文件menu.lst,也可以达到编辑启动菜单的目的。

注意:如果含有汉字,请务必保存menu.lstUTF-8格式。

11.3 美化启动界面

GRUB4DOS的启动界面在默认情况下不能显示汉字,不能显示底图。为此,需要美化启动界面。这里介绍两种方法。

11.3.1 gfxmenu

下面,最关键的语句就是gfxmenu /MESSAGE,它将根据文件MESSAGE显示图形界面。

color white/black black/white white/black white/black

timeout 3

default 7

 

gfxmenu /MESSAGE

 

title DOS

map --mem /HJMac/MaxDOS93.ima (fd0)

map --hook

chainloader (fd0)+1

rootnoverify (fd0)

可使用软件MsgDiyer 2.0.3来编辑MESSAGE文件,如下图所示

11.6

单击上图中的"虚拟机中预览"或"模拟预览"按钮,可以不用重启电脑即可查看启动界面。

11.3.2 graphicsmode

下面,最关键的语句就是graphicsmodesplashimagefont

debug off

calc 29<<2+*0x8304 > nul

calc *%@retval%+8 > nul

calc *%@retval%=*%@retval%&0xffffff > nul

call Fn.0 0x40000 "!BAT\necho -P:0000 $[0000]\t\t\t\t\t\t\t\t\t\0" && initscript (md)0x200+1

color=0xFFFFFF

color border=0xFFFFFF

write 0x8274 0x2001

graphicsmode -1 1024 768

splashimage /back.bmp

font /微软雅黑.hex

default 11

timeout 120

graphicsmode语句中的-1表示将显示模式切换为VBE模式;1024768表示屏幕分辨率。

splashimage /back.bmp 表示底图为back.bmp1024x76824位位图)。

font /微软雅黑.hex 表示载入字体文件"微软雅黑.hex"。

说明:splashimage似乎只能从FAT32格式的分区里载入底图文件。如果分区格式是NTFS,则无法载入底图文件。

 

 

12 安装Ubuntu10.10

本章将介绍如何安装、配置32位的Ubuntu10.10

12.1 安装

网上下载Ubuntu10.10的镜像文件ubuntu-10.10-desktop-i386.iso

12.1.1 硬盘启动Ubuntu

现在进入Windows XP操作系统,然后按如下步骤进行操作:

1、将ubuntu-10.10-desktop-i386.iso复制到C:根目录下;

2、将ubuntu-10.10-desktop-i386.iso载入虚拟光驱。进入虚拟光驱将casper目录下的vmlinuzinitrd.lz复制到C:根目录下,再将.disk目录复制到C:根目录下;

3、使用记事本编辑menu.lst文件的Install Ubuntu。注意:filename后面就是Ubuntu的安装镜像文件名。

title Install Ubuntu

root (hd0,0)

kernel (hd0,0)/vmlinuz boot=casper iso-scan/filename=/ubuntu-10.10-desktop-i386.iso ro quiet splash locale=zh_CN.UTF-8

initrd (hd0,0)/initrd.lz

4、重启电脑,在启动菜单中选择"Install Ubuntu"。启动后,就进入了下图所示的Ubuntu界面。现在,即可尝试Ubuntu的大部分功能。

12.1

12.1.2 卸载ISO设备

现在卸载ISO设备,否则会影响到后面的安装。

按下Ctrl+Alt+T快捷键打开终端,如下图所示。请执行命令sudo umount -l /isodevice,将ISO设备卸载。然后关闭终端。

12.2

12.1.3 运行安装程序

鼠标左键双击桌面上(图12.1)的"安装Ubuntu 10.10"图标,开始安装Ubuntu。首先要求选择语言。请选择"中文(简体)",然后单击"前进"按钮

12.3

接下来的设置界面如下,单击"前进"按钮。注意:请将电脑的网络断开,否则Ubuntu会联网下载文件,导致安装非常缓慢。

12.4

在"分配磁盘空间"界面,请选择"手动指定分区(高级)",然后单击"前进"按钮

12.5

12.1.4 分区

配置分区如下图所示:

12.6

这里给Ubuntu设置了两个分区,一个用于挂载/,另一个用于交换空间。其中交换空间是32Ubuntu64Ubuntu公用的。

选择要挂载/的分区,然后单击"更改"按钮。文件系统建议选择 Ext4,这里选择 Ext3 是为了便于 Ghost 备份分区(Ghost不认UbuntuExt4分区)。挂载点请选择/。单击"确定"按钮,完成这个分区的设置。

12.7

选择交换空间分区,然后单击"更改"按钮。交换空间分区将被挂载到/swap

12.8

设置好分区,请设置引导程序的安装位置。

注意:

1、一定不要把引导程序安装到硬盘上(/dev/sda),而是应该安装到挂载/的分区上。因为引导程序安装到硬盘上,将会把GRUB写入硬盘的MBR

2、引导程序可以写入逻辑分区,但是无法直接从逻辑分区启动操作系统。必须借助GRUB等工具才能完成启动工作。

12.9

12.1.5 继续安装

接下来选择区域,直接单击"前进"按钮

12.10

接下来是键盘布局,直接单击"前进"按钮

12.11

接下来是配置用户名和密码

12.12

接下来是安装操作系统,这个耗时要多一些

12.13

安装完成后,单击"现在重启"按钮

12.14

12.1.6 显卡驱动

笔者电脑的显卡为Quadro2000,其驱动安装程序是:

32        Drivers\Linux\IA32\NVIDIA-Linux-x86-260.19.44.run

64        Drivers\Linux\IA64\NVIDIA-Linux-x86_64-260.19.44.run

请以 Recover--Mode进入Ubuntu,然后运行显卡驱动安装程序。具体的命令如下:

1、修改NVIDIA-Linux-x86-260.19.44.run的所有者

下面的命令把NVIDIA-Linux-x86-260.19.44.run的所有者更改为user

sudo chown -R user NVIDIA-Linux-x86-260.19.44.run

2、更改文件权限

chmod +x NVIDIA-Linux-x86-260.19.44.run

3、运行NVIDIA-Linux-x86-260.19.44.run

sudo NVIDIA-Linux-x86-260.19.44.run

12.1.7 GRUB4DOS启动Ubuntu

至此,Ubuntu10.10被安装到一个独立分区了。可以通过修改menu.lst来实现GRUB4DOS启动它,命令如下所示:

title Ubuntu 10.10(32bits)

kernel (hd0,8)/boot/grub/core.img

boot

12.2 配置

12.2.1 时间

对于计算机的系统时间,即BIOS里的时间。Windows认为它是本地时间,而Linux 认为它是UTC时间,如果时区选择+8:00,则这两个系统的时间将相差8小时。为了消除这种差别,需要进行设置

方法一、修改Windows

修改注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation 增加一个 REG_DWORD 类型的 RealTimeIsUniversal,其值设定为 1。这样Windows会将BIOS时间当作UTC时间来处理;

方法二、修改Linux

编辑文件 /etc/default/rcS,将"UTC=yes"改成"UTC=no",保存后重启系统就可以了。编辑指令为:sudo gedit /etc/default/rcS

12.2.2 修改启动菜单

安装Ubuntu时,安装程序会检测都安装了哪些操作系统?然后将其它操作系统的启动也加入到了启动菜单。修改启动菜单的方法就是修改grub.cfg文件,其指令如下:

sudo gedit /boot/grub/grub.cfg

12.2.3 修改卷标

卷标就是硬盘分区的名称,Ubuntu里修改卷标的指令为:

sudo e2label /dev/sda1 卷标

12.2.4 root

设置ROOT密码的命令:sudo passwd root 输入密码后按 Enter 键即可。

启用 root 帐号的步骤为:单击 System ==> Preferences ==> Login Window 菜单,切换到 Security 选项页,然后勾中"Allow local system administrator login"选项。

禁用 root 帐号的命令:sudo passwd -l root

 

2009-07-09 11:14:00 SHOUYU2 阅读数 1472

奇虎董事长周鸿祎(腾讯科技摄) 腾讯科技讯 7月9日凌晨消息,针对谷歌拟推PC操作系统一事,奇虎公司董事长周鸿祎昨晚在接受腾讯科技连线时表示,谷歌在Chrome浏览器之后再推出操作系统顺理成章,不过在时机选择上却“稍微急了一些”。 Google昨日在官方博客中宣布,它正在开发它自己的电脑操作系统,预计基于该操作系统的上网本将在2010年下半年面市。 据其官方博客透露,Chrome OS系统是对Chrome网络浏览器的扩展,它是一款面向上网本电脑的开源操作系统。谷歌表示会在今年晚些时候公开其源代码。 周鸿祎认为,谷歌通过浏览器、云计算等手段,最终向PC操作系统挺进,这种策略有助于帮助谷歌避开微软的威胁。由于谷歌在传统PC领域并无任何优势,很难获得其他应用软件的支持。因此基于互联网的操作系统更能发挥谷歌的优势。 周鸿祎还向腾讯科技预测说,谷歌新操作系统肯定会集成谷歌大部分互联网应用,但其综合性能并不会很强,很难满足用户较高层次的需求。“这样的操作系统主要用于上网本,因此它很大程度上受到全球上网本市场的影响。” “在时机上,我认为谷歌还是稍微急了一些。它完全可以等谷歌手机操作系统Android的地位更巩固一些后,再向PC端进军。”周鸿祎表示。相对而言,现阶段谷歌浏览器对于微软的威胁,远远比操作系统来得更直接。(文/乐山)

2017-05-05 10:27:10 tangxiaoyin 阅读数 6818

文/屠敏

物联网是新一代信息技术的重要组成部分,回顾其发展,其中不得不提的必然是嵌入式系统。传统的嵌入式系统与互联网的发展衍生出物联网,而在如今的物联网热潮之下,嵌入式系统也面临着全新的机遇与挑战。那么,两者的碰撞融合究竟会带来怎样的火花?对于传统的嵌入式开发者,我们应该如何改变应对新格局?在此我们采访了著名的嵌入式系统专家何小庆,跟他一起探索嵌入式操作系统与物联网演进之路。

何小庆,著名的嵌入式系统专家,国内最早涉足嵌入式 OS 者之一,创办了北京麦克泰软件技术有限公司,有 30 年嵌入式技术和市场经验。他还是中国软件行业协会理事、嵌入式系统分会副理事长,嵌入式系统联谊会秘书长。出版有《嵌入式操作系统风云录:历史演进与物联网未来》,《嵌入式实时操作系统μC/OS-III 应用开发》和《嵌入式软件精解》等多本著作和译著。

以下为采访实录:

CSDN:请您介绍一下自己以及目前所做的事情?

何小庆:我于 1991 年北航计算机专业研究生毕业,之后在研究所做科研式项目,到 1995 年,开始从事嵌入式相关的工作,并创建了北京麦克泰软件技术有限公司。2009 年之后,在北航出版社旗下的《单片机与嵌入式系统应用》杂志方面担任副主编,现在是编委会副主任,后来也在北航的电子信息学院和软件学院授课,。目前我一方面负责企业中的部分工作,另一方面从事杂志和教学工作。

CSDN:在您这么多年的从业过程中,您如何提升自己的技能?

何小庆:第一点,与时俱进。开发者身处 IT 产业之中,而我们知晓如今的 IT 产业最大的一个挑战的就是技术的日益变更,更新速度很快。嵌入式和物联网行业实际上也一样,虽然没有如 IT 产业的变化这么快,但是想要成为一名优秀的开发者,必须得与时代共同进步学习。因为短则十年前,你掌握的技术知识,在如今的项目可能都不会使用了。

第二点,技术与产业应用结合。因为嵌入式系统本身跟物联网系统一样,它是面向于产业应用背景的,平时所说的物联网概念,只有将其放在比智能交通、智能家居这些产业中,才会发挥作用,更好地体现出来。因此必须要把你的技术和产业应用结合起来,这样作为工程师,才能将最大的价值发挥出来。

物联网与嵌入式系统的碰撞融合

CSDN:与早年相比,嵌入式操作系统最大的不同是什么?

何小庆:嵌入式操作系统因为物联网技术和应用之后,又重新被很多人关注起来,同时嵌入式系统也发生了一些变化,主要有两个方面:

  • 今天的嵌入式操作系统要关注物联网的底层技术,比如传感器的节点,以及一些我们称之为小型的通讯网关,这些节点在以前是不适用嵌入式操作系统的。但是现在因为物联网要具备联网的特点,,所以嵌入式操作系统就要往这个方面去深入发展,即往下。
  • 其次嵌入式操作系统是要往上走。嵌入式操作系统的用武之地,一个是网关,还有一种是带有人机界面的设备,因为手机流行以后,大家都希望有一个非常好用的人机界面的操作方式;再往上发展即我们所说的云计算和人工智能,最典型的无人驾驶车,在这个里面大量的使用了嵌入式系统和嵌入计算技术。

向下的嵌入式操作系统里面主要是实时的操作系统,如我们所说的 RTOS,应用的机会就会很大;向上的话,如 Linux 应用的机会就会很多,开源是主流。

CSDN:您认为嵌入式开发的学习应该怎么如何开始和深入?

何小庆:软硬结合是嵌入式系统的一个最大的特色。正如程序员学习 Java 编程需要有个 PC ,或者智能手机,智能手机可以说是嵌入式设备也可以说不是,它是计算机平台的。而物联网和嵌入式系统开发真的不太一样,想要开始嵌入式和物联网的开发,个人的建议是,首先需要有一块开发板,如 STM32,这个是最流行的,价格也很便宜,或者找个树莓派,然后再找到相应的一些开源的软件、编程工具,或者是 Linux 操作系统,然后就可以开始学习了。

逐渐深入的话,大家可以按照物联网的一些应用场景来学习。因为物联网的话,至少要有传感器,如温度传感器、湿度传感器,然后结合开发板,将传感器加进来,其次再去找一个通讯模块,比如说蓝牙、WiFi,和开发板连起来,或者有了如树莓派这样的开发板,已经有了 WiFi 了,那就不需要了。大家可以试着做一下这种应用,把数据采集下来,然后进行数据的处理,再发到的智能手机或者云端,智能手机一般是比较容易的。

CSDN:如今物联网与云计算的技术应用越来越广泛,嵌入式系统行业如何面对这样的机遇?

何小庆:如今的物联网后端有云计算,也开始有大数据,在此之后,就是人工智能,这些对嵌入式系统的影响已经逐渐都展开了。从中国来讲,我们也算是倡导物联网最早的国家之一了。这些对嵌入式系统绝对是个机遇,因为就是物联网这扇门开放之后,物联网的发展就会越来越宽。而最初嵌入式系统是个单品,比如大家可见的控制器,它的程序是固定的写好的,按照程序员的要求,它经过编程设置好了,那么嵌入式系统从单品到后来发展成一个系统,就相对复杂一点,那个时候我们很多嵌入式系统是要通过 PC 把消息系统的数据展示出来,或者我们可以实现一个分布式的控制系统。物联网之后,嵌入式系统最大的变化就是将系统再往上面发展,即以服务的模式去发展,其体现出来就是曾经在 PC 上展示出来的数据,现在展示到云端和智能手机上了。嵌入式系统面临的机遇,就是我们要把原来的单品,变成系统,而且这个系统将来面向服务的。

CSDN:您认为物联网的发展经历了哪几个阶段?

何小庆:我对于物联网发展阶段的理解,非常赞同英国格拉斯格大学 Duncan 博士看法,他把物联网比喻成是一棵树,认为物联网发展可以分为三个阶段:第一个阶段是个打基础的阶段;第二个阶段是培养的阶段;第三个阶段是收获的阶段。各个国家物联网发展的进程肯定会不大一样,我认为中国目前是在培养的阶段,,但是距离我们可以有收获的阶段也应该很快了,现在树上可能已经结了一些果子了。

CSDN:ARM、谷歌、微软、华为、阿里、庆科等国内外公司纷纷推出物联网操作系统,在这个诸侯争霸时代也暗示最终只有少数会成为主流,您认为一个好的物联网系统应该具备哪些特性?

何小庆:最后能剩下的操作系统也就只有少数的几个,因为不需要那么多,如手机和 PC 系统一样。那么关于一个物联网操作系统需要具备以下技术特征:

  • 管理物的能力:从嵌入式系统视角看,“物”是网络上发送和接受信息的一个个嵌入式计算小设备(或称为深嵌入式系统),比如家庭或者工业现场的智能传感器。现在嵌入式系统设计的一个共识就是降低功耗,常见的方法是系统尽可能快地执行,然后立即进入睡眠模式。现在的处理器核心架构,在低性能状态下,可以做到基本上不消耗任何电力。

  • 可伸缩和扩展性的架构:随着 32 位 MCU 的价格下降,Linux 又无法支持没有 MMU 的 MCU,RTOS 理所当然地成为运行在 MCU 的物联网 OS 的首选,原因是基于 RTOS 的设计运行更灵活和可扩展的软件运行在这些系统中。

  • 泛在互联网功能:支持物联网常用的无线和有线通信功能,比如支持 GPRS/3G/HSPA/4G 等公共网络的无线通信功能,同时要支持 ZigBee/NFC/RFID/WiFi/Bluetooth 等近场通信功能,还要支持 Ethernet/CAN/USB 有线网络功能,以及广受关注的窄带通信技术 NB-IoT 和 LoRa。在这些不同的物理和链路层接口之上的协议之间要能够相互转换,能够把从一种协议获取到的数据报文,转换成为另外一种协议的报文发送出去,最后要能够迁移到互联网协议。

  • 系统的安全性:物联网设备中很大一部分是使用 MCU 和资源有限的微处理器,与大型设备相比,这些小型设备更容易保护,不易受同类型威胁的攻击,更安全。

  • 云计算后台:物联网设备区别于传统的设备的标志就是这些设备将产生海量的数据,如何管理和处理这些数据是摆在物联网企业面前的一个难题,云计算无疑是解决这个难题的最有效的技术手段。选择支持物联网系统的云计算平台需要考虑一下的技术因素:

    1)支持云计算和物联网协议(Websocket、RESTful、MQTT 和 CoAP 等)。
    2)灵活的标准和设备管理方式。
    3)支持安全的远程固件升级。
    4)Web/移动应用开发的能力。
    5)高效和可靠数据存储能力。

  • 先进的编程语言:用于传统的嵌入式系统的编程语言多数是 C 和 C++。因为物联网设备的特点,互联网编程技术将进入物联网设备,优化后的互联网编程语言可以低功耗的 MCU 上运行,比如 Java、Javascript 和 Python。需要注意的是, Java 总是运行在操作系统之上,所以你的选择不是 C/C++ 或 Java 两者之一,而是 C/C++ 和 Java 都会使用。

但是物联网操作系统就是具备了以上的六个特征,也未必会有人用,所以怎么能做得好?我认为做好一个物联网操作系统,生态环境建设的要放在一个重要的位置上,一定要让人能够去愿意去用它。另外现在的物联网操作系统中有一个很大的问题是,搭建的生态的环境还不够丰富,大家还没有意识到或有迫切性认为,现在要开发一个物联网的项目,就一定要需要用一个物联网的操作系统,需求不太强烈。因此一个好的物联网操作系统一定要去打造生态环境,让更多的人了解继而使用。

CSDN:随着设备在医疗、航空、交通等重要领域的应用,安全、隐私和可靠性成为嵌入式系统最重要的问题,对从业者来说,在这些领域,有哪些特殊的规则和标准需要遵循?

何小庆:安全现在非常的重要,也受到更多人的关注。物联网前段时间也发生由于黑客操纵木马机制,导致物联网的设备域名无法解析。“安全”这次词英文有两种:security 和 safety,security 更多的是指信息安全,比如说物联网安全,safety 是与安全和可靠性相关。以上这两种安全对于我们目前这个领域的从业人员都要关心。现在在一些重要的行业中已经有相关的功能标准,那么从业人员可以去学习和遵循。如在轨道交通上用的比较多的 IEC 61508;在汽车工业上用的比较多的为 ISO 26262,这些标准都定义了你所开发的软件,包括整个系统、功能模块,应该遵循的规范。作为开发工程师,想要把控好安全的问题,可以从编程开始。嵌入式一般是用 C/C++ 语言来编程,那可以先去学习 MISRAC,学会如何书写的更安全可靠 C 语言代码。

CSDN:作为开发者,想要物联网开发,首先要学嵌入式吗?对于入门级开发者,常见的误区有哪些?

何小庆:“想要物联网开发,首先要学习嵌入式”这个观点是正确的,嵌入式是物联网开发的基础,现在各大高校的自动化、计算机、电子信息等这些专业中,都有嵌入式的课程。也有不少学校开设了物联网专业,其中也有大量的嵌入式的课程。但是并不是所有的从事物联网系统开发应用的人都要懂嵌入式,因为物联网是一个系统,它有传感器、网关,即为就是我们计算的部分,它后面有手机 App、服务器,假如你正好是只是从事手机 App 开发的,或者服务器端开发的,那就不需要深入了解嵌入式系统的知识,你只要知道嵌入式的设备是如何跟你的手机和服务器进行通讯的,比如蓝牙通讯协议,你只要知道这些通讯协议基本原理就可以。

CSDN:如果传统的嵌入式工程师想要拓展转型物联网方向,需要掌握哪些技能?

何小庆:从自身这些年从事一些物联网的项目和教学的经验总结起来,我认为想要转型至少应该具备以下三个方面的技能:

  1. 无线通讯。因为原来的嵌入式系统是个单品,通讯可能就是个串口,这个是有线的。而现在物联网多数都是无线的,所以开发者必须要掌握一种无线通讯的技术,比如蓝牙、WiFi 等,在嵌入式系统编程学会如何能够通过这种无线通讯协议把你的数据给送出去。
  2. 手机编程技术。以前的嵌入式系统的开发者只关心在设备端编程,比如 MCU 的编程,现在嵌入式系统一定要会一种手机的编程技术,比如 Android 编程。你不一定是个 Java 的编程专家,但是你应该能够看懂手机端编程的代码,对它可以进行一些小的修改。因为现在很多物联网的设备,它是与手机进行通讯的,比如智能家居的一些产品。
  3. 传感器的接口驱动和算法。传统的嵌入式系统工程师不太涉及到这个领域,现在每个物联网的设备几乎都带着传感器,那么这种传感器的使用、驱动程序以及一些简单的算法该怎么编写。这些嵌入式的工程师应该要掌握这一点。

CSDN:关于嵌入式物联网行业的未来发展,您什么期待?

何小庆:回到物联网的打基础、培养、收获的三个阶段来讲,中国目前是在一个培养阶段,培养阶段最大的好处就是百花齐放,百家争鸣,机会很多。对于这些从事于这个领域的工程技术人员,无论是创客还是传统行业,都有机会,所以我是希望年轻的工程技术人员可以结合自己的现在所学、所用、所做,同时借助于物联网这个参天大树,找寻发展机会和发展空间。

2018-05-21 13:14:43 github_37847992 阅读数 5614
var version = navigator.userAgent;
console.log(version);
//"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3223.0 Safari/537.36" 
if(version.indexOf("Windows NT 5")!=-1) { 
    console.log("这是XP系统");
}else if(version.indexOf("Windows NT 7")!=-1){
    console.log("这是win7系统");
}else if(version.indexOf("Windows NT 10")!=-1){
    console.log("这是win10系统");
}

//navigator.platform 检测设备平台