发行版对内核改动很大?

我用的debian5.04,内核源码是debian自带的
在看net/socket.c这个文件时,和lxr.linux.no在线源码查看对比下,发现和2.6.29内核差不多,改动很大

这是lxr.linux.no上2.6.26内核socket.c里面一个函数
  1. asmlinkage long sys_socket(int family, int type, int protocol)
  2. {
  3.         int retval;
  4.         struct socket *sock;

  5.         retval = sock_create(family, type, protocol, &sock);
  6.         if (retval < 0)
  7.                 goto out;

  8.         retval = sock_map_fd(sock);
  9.         if (retval < 0)
  10.                 goto out_release;

  11. out:
  12.         /* It may be already another descriptor 8) Not kernel problem. */
  13.         return retval;

  14. out_release:
  15.         sock_release(sock);
  16.         return retval;
  17. }
复制代码
这是debian带的2.6.26内核那个函数,在lxr.linux.no上查看,直到2.6.29才这样写的,改用宏了
  1. SYSCALL_DEFINE3(socket, int, family, int, type, int, protocol)
  2. {
  3.         int retval;
  4.         struct socket *sock;

  5.         retval = sock_create(family, type, protocol, &sock);
  6.         if (retval < 0)
  7.                 goto out;

  8.         retval = sock_map_fd(sock);
  9.         if (retval < 0)
  10.                 goto out_release;

  11. out:
  12.         /* It may be already another descriptor 8) Not kernel problem. */
  13.         return retval;

  14. out_release:
  15.         sock_release(sock);
  16.         return retval;
  17. }
复制代码
难倒是debian改了源码,一段时间后被内核采纳??

作者: ww2000e   发布时间: 2011-02-23

这是可以理解的。发行版虽然基于某个标准内核源码,但是在发布过程中,可能发现新版本的内核已经修正了发行版所采用内核版本的一些重要 BUG,或者新添了一些功能,就会酌情将这些改动集成到发行版的内核中的。
另外,多少也会根据发行版的特性对内核做一些调整,这方面 RedHat 的发型版更为明显。

作者: Godbach   发布时间: 2011-02-23



QUOTE:
难倒是debian改了源码,一段时间后被内核采纳??


这个也是有可能的。大家都在提交 patch,有时发现了 BUG ,就在发行版中修改了,同时也提交到内核主线了。

作者: Godbach   发布时间: 2011-02-23

所有的更新都必须upstream,即使debian自己改的东西,也会patch到upstream的kernel上面去。在kernel.org上下载的不一定包含了所有最新的更新

作者: longzhang   发布时间: 2011-02-23

kernel.org 上除了稳定版本之外,同样也有 rc 的。
对于普通开发者使用,除非你想尝鲜,否则还是应该下载稳定版本的

作者: Godbach   发布时间: 2011-02-23