<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[conansonic的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/conansonic</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; conansonic]]></copyright><item><title><![CDATA[grub-install源码分析---4]]></title><link>https://blog.csdn.net/conansonic/article/details/79566201</link><guid>https://blog.csdn.net/conansonic/article/details/79566201</guid><author>conansonic</author><pubDate>Wed, 04 Apr 2018 18:45:21 +0800</pubDate><description><![CDATA[grub-install源码分析—4

上一章重点分析了grub是如何探测一个文件系统的，本章分析grub-install的最后一部分代码，该代码包含了最主要的业务逻辑，下面来看。

grub2-install第六部分 
util/grub-install.c



    ...

    char mkimage_target[200];
    const char *core_name =...]]></description><category></category></item><item><title><![CDATA[grub-install源码分析---3]]></title><link>https://blog.csdn.net/conansonic/article/details/79507343</link><guid>https://blog.csdn.net/conansonic/article/details/79507343</guid><author>conansonic</author><pubDate>Mon, 02 Apr 2018 22:00:16 +0800</pubDate><description><![CDATA[grub-install源码分析—3

本章之前的分析介绍了grub-install如何解析输入参数，并打开相应的存储设备，本章主要看grub如何识别根设备上的文件系统。

grub2-install第五部分 
util/grub-install.c



    ...

    grub_fs = grub_fs_probe (grub_dev);
    grub_install_push_...]]></description><category></category></item><item><title><![CDATA[grub-install源码分析---2]]></title><link>https://blog.csdn.net/conansonic/article/details/79080240</link><guid>https://blog.csdn.net/conansonic/article/details/79080240</guid><author>conansonic</author><pubDate>Fri, 30 Mar 2018 08:27:20 +0800</pubDate><description><![CDATA[grub-install源码分析—2

上一章分析了grub-install源码的第一部分，该部分的主要功能是处理命令行参数，并初始化一些文件和变量，紧接下来的一部分代码用于处理即将安装的存储设备，下面来看。

grub2-install第四部分 
util/grub-install.c



    ...

    size_t ndev = 0;
    grub_devices = gru...]]></description><category></category></item><item><title><![CDATA[grub-install源码分析---1]]></title><link>https://blog.csdn.net/conansonic/article/details/78658820</link><guid>https://blog.csdn.net/conansonic/article/details/78658820</guid><author>conansonic</author><pubDate>Thu, 29 Mar 2018 08:31:35 +0800</pubDate><description><![CDATA[grub-install源码分析—1

本章开始分析grub-install的源码，该命令最终会将grub的映像存入引导扇区中，最简单的命令如下，



grub2-install /dev/sda

下面从main函数开始看，有一部分代码已经在《grub-mkimage源码分析》中分析了，本章包括后面的章节对这些代码就直接略过了。

grub2-install第一部分 util/grub-ins...]]></description><category></category></item><item><title><![CDATA[grub-mkimage源码分析---3]]></title><link>https://blog.csdn.net/conansonic/article/details/79054029</link><guid>https://blog.csdn.net/conansonic/article/details/79054029</guid><author>conansonic</author><pubDate>Sun, 25 Mar 2018 10:38:57 +0800</pubDate><description><![CDATA[grub-mkimage源码分析—3

上一章分析了如何将kernel.img文件以及各个的模块和对应的依赖模块读取并写入内存映像kernel_img中，本章分析如何将kernel_img中的数据以及解压缩程序写入最终的core.img文件中。

grub_install_generate_image第四部分 
util/mkimage.c

    ...

    compress_kerne...]]></description><category></category></item><item><title><![CDATA[grub-mkimage源码分析---2]]></title><link>https://blog.csdn.net/conansonic/article/details/78937331</link><guid>https://blog.csdn.net/conansonic/article/details/78937331</guid><author>conansonic</author><pubDate>Sat, 24 Mar 2018 09:10:21 +0800</pubDate><description><![CDATA[grub-mkimage源码分析—2

上一张分析了grub-mkimage命令对应的main函数如何对输入的参数进行解析，本章分析余下的代码。

main 
util/grub-mkimage.c



int main (int argc, char *argv[]) {

    ...

    if (!arguments.image_target) {
        ...
    ...]]></description><category></category></item><item><title><![CDATA[grub-mkimage源码分析---1]]></title><link>https://blog.csdn.net/conansonic/article/details/78760614</link><guid>https://blog.csdn.net/conansonic/article/details/78760614</guid><author>conansonic</author><pubDate>Wed, 20 Dec 2017 22:55:22 +0800</pubDate><description><![CDATA[grub-mkimage源码分析—1

本章开始分析grub-mkimage的源码，首先来看grub-mkimage文件的生成过程，从Makefile开始看。grub-mkimage目标定义在grub源码的顶层Makefile文件中。

grub-mkimage 
Makefile



grub-mkimage$(EXEEXT): $(grub_mkimage_OBJECTS) $(grub_m...]]></description><category></category></item><item><title><![CDATA[grub kernel.img makefile源码分析]]></title><link>https://blog.csdn.net/conansonic/article/details/78735401</link><guid>https://blog.csdn.net/conansonic/article/details/78735401</guid><author>conansonic</author><pubDate>Sat, 09 Dec 2017 17:01:10 +0800</pubDate><description><![CDATA[grub kernel.img makefile源码分析]]></description><category></category></item><item><title><![CDATA[grub boot.img makefile源码分析]]></title><link>https://blog.csdn.net/conansonic/article/details/78667939</link><guid>https://blog.csdn.net/conansonic/article/details/78667939</guid><author>conansonic</author><pubDate>Wed, 06 Dec 2017 21:20:44 +0800</pubDate><description><![CDATA[grub boot.img makefile 源码分析]]></description><category></category></item><item><title><![CDATA[grub源码分析---2]]></title><link>https://blog.csdn.net/conansonic/article/details/78534950</link><guid>https://blog.csdn.net/conansonic/article/details/78534950</guid><author>conansonic</author><pubDate>Wed, 22 Nov 2017 16:19:31 +0800</pubDate><description><![CDATA[grub源码分析—2

_start 
grub-core/boot/i386/pc/startup_raw.S

_start:
LOCAL (base):
    ljmp $0, $ABS(LOCAL (codestart))

    ...

LOCAL (codestart):
    cli
    xorw    %ax, %ax
    movw    %ax, %ds]]></description><category></category></item><item><title><![CDATA[grub源码分析---1]]></title><link>https://blog.csdn.net/conansonic/article/details/78482766</link><guid>https://blog.csdn.net/conansonic/article/details/78482766</guid><author>conansonic</author><pubDate>Tue, 14 Nov 2017 16:27:57 +0800</pubDate><description><![CDATA[grub源码分析]]></description><category></category></item><item><title><![CDATA[enqueue_task和dequeue_task源码分析]]></title><link>https://blog.csdn.net/conansonic/article/details/78203405</link><guid>https://blog.csdn.net/conansonic/article/details/78203405</guid><author>conansonic</author><pubDate>Wed, 11 Oct 2017 14:37:35 +0800</pubDate><description><![CDATA[enqueue_task
dequeue_task]]></description><category></category></item><item><title><![CDATA[sys_nice源码分析]]></title><link>https://blog.csdn.net/conansonic/article/details/78197260</link><guid>https://blog.csdn.net/conansonic/article/details/78197260</guid><author>conansonic</author><pubDate>Tue, 10 Oct 2017 20:48:16 +0800</pubDate><description><![CDATA[sys_nice源码分析]]></description><category></category></item><item><title><![CDATA[__pthread_initialize_minimal源码分析]]></title><link>https://blog.csdn.net/conansonic/article/details/77943888</link><guid>https://blog.csdn.net/conansonic/article/details/77943888</guid><author>conansonic</author><pubDate>Tue, 12 Sep 2017 12:40:18 +0800</pubDate><description><![CDATA[__pthread_initialize_minimal源码分析

__pthread_initialize_minimal在__libc_start_main中被调用。 
csu/lib-tls.c



void __attribute__ ((weak)) __pthread_initialize_minimal (void)
{
  __libc_setup_tls (TLS_INIT_T]]></description><category></category></item><item><title><![CDATA[pthread_create源码分析]]></title><link>https://blog.csdn.net/conansonic/article/details/77487925</link><guid>https://blog.csdn.net/conansonic/article/details/77487925</guid><author>conansonic</author><pubDate>Tue, 22 Aug 2017 21:10:44 +0800</pubDate><description><![CDATA[pthread_create源码分析

pthread_attr_t的主要属性的意义如下： 
__detachstate，表示新线程是否与进程中其他线程脱离同步， 如果设置为PTHREAD_CREATE_DETACHED 则新线程不能用pthread_join()来同步，且在退出时自行释放所占用的资源。缺省为PTHREAD_CREATE_JOINABLE状态。这个属性也可以在线程创建并运行以后用p]]></description><category></category></item><item><title><![CDATA[_dl_start_user源码分析（一）]]></title><link>https://blog.csdn.net/conansonic/article/details/63254223</link><guid>https://blog.csdn.net/conansonic/article/details/63254223</guid><author>conansonic</author><pubDate>Mon, 24 Jul 2017 19:40:01 +0800</pubDate><description><![CDATA[_dl_start_user源码分析
_start]]></description><category></category></item><item><title><![CDATA[dl_main源码分析（二）]]></title><link>https://blog.csdn.net/conansonic/article/details/55536469</link><guid>https://blog.csdn.net/conansonic/article/details/55536469</guid><author>conansonic</author><pubDate>Mon, 13 Mar 2017 10:26:02 +0800</pubDate><description><![CDATA[dl_main源码分析-二]]></description><category></category></item><item><title><![CDATA[dl_main源码分析（一）]]></title><link>https://blog.csdn.net/conansonic/article/details/54896433</link><guid>https://blog.csdn.net/conansonic/article/details/54896433</guid><author>conansonic</author><pubDate>Thu, 16 Feb 2017 09:34:08 +0800</pubDate><description><![CDATA[dl_main
LD_LIBRARY_PATH]]></description><category></category></item><item><title><![CDATA[_dl_start源码分析]]></title><link>https://blog.csdn.net/conansonic/article/details/54236335</link><guid>https://blog.csdn.net/conansonic/article/details/54236335</guid><author>conansonic</author><pubDate>Sun, 05 Feb 2017 01:16:45 +0800</pubDate><description><![CDATA[_dl_start源码分析

ELF_DYNAMIC_RELOCATE 自我重定位

_dl_start_final源码分析

_dl_sysdep_start源码分析]]></description><category></category></item><item><title><![CDATA[sys_execv源码分析]]></title><link>https://blog.csdn.net/conansonic/article/details/53740670</link><guid>https://blog.csdn.net/conansonic/article/details/53740670</guid><author>conansonic</author><pubDate>Wed, 01 Feb 2017 16:19:31 +0800</pubDate><description><![CDATA[sys_execv
do_execve
do_execveat_common
load_elf_binary

程序装载，解释器]]></description><category></category></item></channel></rss>