Kernelnotes/mike

Материал из ALT Linux Wiki

< Kernelnotes(Различия между версиями)
Перейти к: навигация, поиск
м (s/master/kernel-image-%flavour/g)
(kernel-image.git: 2.6.32 и remotes)
 
(8 промежуточных версий не показаны.)
Строка 1: Строка 1:
== kernel-image.git ==
== kernel-image.git ==
-
Наброски mike@ по части сборки [http://git.altlinux.org/people/mike/packages/?p=kernel-image.git;a=summary kernel-image] из git-репозитория (точнее, gear-).
+
Наброски mike@ по части сборки [http://git.altlinux.org/people/mike/packages/?p=kernel-image.git;a=summary kernel-image] из gear-репозитория.
-
''Локально в /pub/git/linux-2.6.27.y автоматически синхронизируется master с git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-2.6.27.y.git и рядом поддерживаются бранчи с приложенными базовыми патчами.''
+
NB: данное ядро для тонких клиентов не требует двух базовых патчей/бранчей (fix-core-syslog, fix-core--init), которые можно вытащить из альтовских kernel-image.
 +
 
 +
Вместо git-empty-branch можно коммитить в master и не забыть переименовать по имени ядра (в данном случае kernel-image-ltsp-client) -- см. [[Сборка модулей ядра#Сборка модулей на git.alt|updatemodules]].
<pre>
<pre>
-
t-hard:~/git> mkdir kernel-image
+
$ mkdir kernel-image
-
t-hard:~/git> cd kernel-image
+
$ cd kernel-image
-
t-hard:~/git/kernel-image> git init
+
$ git init
Initialized empty Git repository in /home/mike/git/kernel-image/.git/
Initialized empty Git repository in /home/mike/git/kernel-image/.git/
-
t-hard:~/git/kernel-image> git fetch /pub/git/linux-2.6.27.y master:kernel-source
+
$ git-empty-branch kernel-image-ltsp-client
[...]
[...]
-
t-hard:~/git/kernel-image> git fetch /pub/git/linux-2.6.27.y fix-core-syslog:fix-core-syslog
+
$ git remote add upstream -f -t linux-2.6.32.y git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
 +
[.........................................]
 +
$ git fetch upstream linux-2.6.32.y:kernel-source
[...]
[...]
-
t-hard:~/git/kernel-image> git fetch /pub/git/linux-2.6.27.y fix-core--init:fix-core--init
+
$ git remote add led -f -t fix-mm--page -t feat-net-swap $INTRANET_LOCATION
[...]
[...]
-
# NB: в 2.6.27.26 исправление getline уже включено
+
$ git fetch led fix-mm--page:fix-mm--page feat-net-swap:feat-net-swap
-
t-hard:~/git/kernel-image> git fetch /pub/git/linux-2.6.27.y fix-core-getline:fix-core-getline
+
$ git branch  
-
t-hard:~/git/kernel-image> git branch  
+
   feat-net-swap
-
   fix-core--init
+
   fix-mm--page
-
   fix-core-getline
+
* kernel-image-ltsp-client
-
  fix-core-syslog
+
   kernel-source
   kernel-source
-
t-hard:~/git/kernel-image> mkdir .gear
+
$ mkdir .gear
-
t-hard:~/git/kernel-image> cp -a ~/git/_kernel-image/.gear/rules .gear/rules
+
### gear rules (как и spec с config) беру из предыдущего подхода к снаряду, см. git.altlinux.org
-
t-hard:~/git/kernel-image> cat .gear/rules
+
$ cp -a ~/git/_kernel-image/.gear/rules .gear/rules
 +
$ cat .gear/rules
copy: config-*
copy: config-*
-
diff: v2.6.27:. v2.6.27.25:. name=linux-2.6.27.25.patch
+
diff: v2.6.32:. v2.6.32.54:. name=linux-2.6.32.54.patch
-
diff: v2.6.27.25:. fix-vm_deadlock:. name=fix-vm_deadlock.patch
+
diff: v@version@.13:.           fix-mm--page:. name=linux-@version@.13-fix-mm--page.patch
-
diff: v2.6.27.25:. fix-core-getline:. name=fix-core-getline.patch
+
diff: v@version@.36:.           feat-net-swap:. name=linux-@version@.36-feat-net-swap.patch
-
t-hard:~/git/kernel-image> cp -a ~/git/_kernel-image/kernel-image.spec .     
+
$ cp -a ~/git/_kernel-image/kernel-image.spec .     
-
t-hard:~/git/kernel-image> cp -a ~/git/_kernel-image/config-i586 .       
+
$ cp -a ~/git/_kernel-image/config-i586 .       
-
t-hard:~/git/kernel-image> git add kernel-image.spec config-i586 .gear/
+
$ git add kernel-image.spec config-i586 .gear/
-
t-hard:~/git/kernel-image> git commit -m 'initial gear rules' .gear/rules                    
+
$ git commit -m 'initial gear rules' .gear/rules
-
t-hard:~/git/kernel-image> git commit -m 'initial kernel config' config-i586                
+
$ git commit -m 'initial kernel config' config-i586
-
t-hard:~/git/kernel-image> git commit -m 'initial specfile' kernel-image.spec                
+
$ git commit -m 'initial specfile' kernel-image.spec
-
t-hard:~/git/kernel-image> git fetch ~/git/_kernel-image fix-vm_deadlock:fix-vm_deadlock
+
$ [ "$SHELL" = /bin/zsh ] && setopt shwordsplit
-
t-hard:~/git/kernel-image> for i in fix-vm_deadlock fix-core-syslog fix-core--init fix-core-getline; do git merge -s ours $i; done                                                                                                
+
$ branches="`git branch --no-merged | egrep '^ *(feat-.*|fix-.*|kernel-source)$'`"
-
Merge made by ours.
+
$ echo $branches
-
Merge made by ours.
+
$ for i in $branches; do git merge -s ours $i; done
-
Merge made by ours.
+
Merge made by the 'ours' strategy.
-
Merge made by ours.
+
Merge made by the 'ours' strategy.
-
t-hard:~/git/kernel-image> git status
+
Merge made by the 'ours' strategy.
-
# On branch master
+
$ git status
 +
# On branch kernel-image-ltsp-client
nothing to commit (working directory clean)
nothing to commit (working directory clean)
-
t-hard:~/git/kernel-image> gear-update-tag -avc
+
$ gear-update-tag -avc && git commit -am 'gear-update-tag'
-
gear-update-tag: Added tag "v2.6.27"
+
[...]
-
gear-update-tag:  for 4b5127df968616dee2f4775d795198878ef1638b
+
$ nice time gear-hsh --target=i586 --apt-conf=$HOME/apt/apt.conf.i586 ~/hasher/tmpfs
-
gear-update-tag: Added tag "v2.6.27.25"
+
[.....]
-
gear-update-tag:  for 53ddfb015122de4e0bbb9aae8b41cec07d3dd631
+
-
gear-update-tag: Added tag "fix-vm_deadlock"
+
-
gear-update-tag:  for 575def1e5ba41a910a8271c6b285f8c10b33dc6c
+
-
gear-update-tag: Added tag "fix-core-getline"
+
-
gear-update-tag:  for d0add4b4d130c07690d22422de0790623116b8cf
+
-
gear-update-tag: Added .gear/tags/4b5127df968616dee2f4775d795198878ef1638b
+
-
gear-update-tag: Added .gear/tags/53ddfb015122de4e0bbb9aae8b41cec07d3dd631
+
-
gear-update-tag: Updated .gear/tags/list
+
-
t-hard:~/git/kernel-image> git status
+
-
# On branch master
+
-
# Changes to be committed:
+
-
#  (use "git reset HEAD <file>..." to unstage)
+
-
#
+
-
#      new file:  .gear/tags/26163318ff75a2dc3c3cdfdb1656a6bac7bfd59d
+
-
#      new file:  .gear/tags/4b5127df968616dee2f4775d795198878ef1638b
+
-
#      new file:  .gear/tags/list
+
-
#
+
-
t-hard:~/git/kernel-image> git commit -am 'gear-update-tag'                
+
-
[master 50c518d] gear-update-tag                             
+
-
3 files changed, 30 insertions(+), 0 deletions(-)
+
-
create mode 100644 .gear/tags/26163318ff75a2dc3c3cdfdb1656a6bac7bfd59d
+
-
create mode 100644 .gear/tags/4b5127df968616dee2f4775d795198878ef1638b
+
-
create mode 100644 .gear/tags/list
+
-
t-hard:~/git/kernel-image> nice time gear --hasher -- hsh --target=i586 --apt-conf=/etc/apt/apt.conf-i586 ~/hasher/tmpfs
+
-
Wrote: /usr/src/RPM/SRPMS/kernel-image-tc-2.6.27-alt1.src.rpm
+
-
Wrote: /usr/src/RPM/RPMS/i586/kernel-image-tc-2.6.27-alt1.i586.rpm
+
-
Wrote: /usr/src/RPM/RPMS/i586/kernel-modules-alsa-tmc-tc-2.6.27-alt1.i586.rpm
+
-
Wrote: /usr/src/RPM/RPMS/i586/kernel-modules-drm-tmc-tc-2.6.27-alt1.i586.rpm
+
-
Wrote: /usr/src/RPM/RPMS/i586/kernel-modules-v4l-tmc-tc-2.6.27-alt1.i586.rpm
+
-
Wrote: /usr/src/RPM/RPMS/i586/kernel-headers-tmc-tc-2.6.27-alt1.i586.rpm
+
-
Wrote: /usr/src/RPM/RPMS/i586/kernel-headers-modules-tmc-tc-2.6.27-alt1.i586.rpm
+
-
1176.36user 213.42system 8:53.89elapsed 260%CPU (0avgtext+0avgdata 0maxresident)k
+
-
11544inputs+0outputs (16major+36433044minor)pagefaults 0swaps
+
</pre>
</pre>
-
При обновлении делаем rebase всех topic branch'ей на kernel-source и затем merge -s ours в master (в данном разе fix-core-getline стал уже неактуален -- merged upstream):
+
'''NB: часть ниже к состоянию 2.6.32-ltsp-client по существу не обновлялась'''
 +
 
 +
При обновлении для topic branch’ей либо делаем на kernel-source, либо учёт последней части версии (''.y'') в .gear/rules и спеке — и затем merge -s ours в основной бранч:
<pre>
<pre>
-
git fetch /pub/git/linux-2.6.27.y master:kernel-source
+
[ "$SHELL" = /bin/zsh ] && setopt shwordsplit
-
for i in fix-core-syslog fix-core--init feat-fs-squashfs fix-vm_deadlock; do git rebase kernel-source $i; done; git checkout master
+
ver=2.6.32.54
-
for i in kernel-source fix-core-syslog fix-core--init feat-fs-squashfs fix-vm_deadlock; do git merge -s ours $i; done
+
git fetch upstream linux-2.6.32.y:kernel-source
-
subst 's,2.6.27.27,2.6.27.30,g' .gear/rules
+
for i in fix-core--init fix-core-syslog; do git rebase kernel-source $i; done; git checkout kernel-image-ltsp-client
-
git commit -am '2.6.27.30'
+
branches=`ls .git/refs/heads/ | egrep -v '^(kernel|master)'`
 +
for i in kernel-source $branches; do git merge -s ours $i; done
 +
subst "s,2.6.32.[0-9]\+,$ver,g" .gear/rules
 +
git commit -am "$ver"
gear-update-tag -avc && git commit -am 'gear-update-tag'
gear-update-tag -avc && git commit -am 'gear-update-tag'
vim config-i586
vim config-i586
Строка 95: Строка 72:
vim kernel-image.spec
vim kernel-image.spec
gear-commit -a
gear-commit -a
 +
nice time gear --hasher -- hsh --target=i586 --apt-conf=/etc/apt/apt.conf-i586 ~/hasher/tmpfs
 +
### если собралось, то тегим и пушим; rebased branches придётся заставить
 +
git push -f --all
 +
gear-create-tag
 +
git push --tags
 +
ssh git.alt task new
 +
ssh git.alt task add repo kernel-image 2.6.27-alt10
 +
</pre>
 +
 +
Соответственно модули:
 +
<pre>
 +
cd ~/build-modules
 +
mv out/taglist{,-}
 +
updatemodules -k tmc-tc
 +
buildmodules --target=i586 --hsh-options='--apt-conf=/etc/apt/apt.conf-i586' --hsh-workdir=$TMP/tmpfs -k tmc-tc
 +
### если порядок, пушим
 +
cd modules && git push --all && git push --tags && cd -
 +
for tag in $(cat out/taglist); do ssh git.alt task add repo packages/kernel-modules.git $tag; done
</pre>
</pre>
-
PS: разглядывая [[Сборка модулей ядра#Сборка модулей на git.alt|updatemodules]], дошло, что бранч <tt>master</tt> стоило называть <tt>kernel-image-tmc-tc</tt>.  Поправил.
+
== Ссылки ==
 +
* [[Сборка модулей ядра]]
{{Category navigation|title=Kernel|category=Kernel}}
{{Category navigation|title=Kernel|category=Kernel}}

Текущая версия на 08:33, 21 января 2012

kernel-image.git

Наброски mike@ по части сборки kernel-image из gear-репозитория.

NB: данное ядро для тонких клиентов не требует двух базовых патчей/бранчей (fix-core-syslog, fix-core--init), которые можно вытащить из альтовских kernel-image.

Вместо git-empty-branch можно коммитить в master и не забыть переименовать по имени ядра (в данном случае kernel-image-ltsp-client) -- см. updatemodules.

$ mkdir kernel-image
$ cd kernel-image
$ git init
Initialized empty Git repository in /home/mike/git/kernel-image/.git/
$ git-empty-branch kernel-image-ltsp-client
[...]
$ git remote add upstream -f -t linux-2.6.32.y git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
[.........................................]
$ git fetch upstream linux-2.6.32.y:kernel-source
[...]
$ git remote add led -f -t fix-mm--page -t feat-net-swap $INTRANET_LOCATION
[...]
$ git fetch led fix-mm--page:fix-mm--page feat-net-swap:feat-net-swap
$ git branch 
  feat-net-swap
  fix-mm--page
* kernel-image-ltsp-client
  kernel-source
$ mkdir .gear
### gear rules (как и spec с config) беру из предыдущего подхода к снаряду, см. git.altlinux.org
$ cp -a ~/git/_kernel-image/.gear/rules .gear/rules
$ cat .gear/rules
copy: config-*
diff: v2.6.32:. v2.6.32.54:. name=linux-2.6.32.54.patch
diff: v@version@.13:.           fix-mm--page:. name=linux-@version@.13-fix-mm--page.patch
diff: v@version@.36:.           feat-net-swap:. name=linux-@version@.36-feat-net-swap.patch
$ cp -a ~/git/_kernel-image/kernel-image.spec .    
$ cp -a ~/git/_kernel-image/config-i586 .      
$ git add kernel-image.spec config-i586 .gear/
$ git commit -m 'initial gear rules' .gear/rules
$ git commit -m 'initial kernel config' config-i586
$ git commit -m 'initial specfile' kernel-image.spec
$ [ "$SHELL" = /bin/zsh ] && setopt shwordsplit
$ branches="`git branch --no-merged | egrep '^ *(feat-.*|fix-.*|kernel-source)$'`"
$ echo $branches
$ for i in $branches; do git merge -s ours $i; done
Merge made by the 'ours' strategy.
Merge made by the 'ours' strategy.
Merge made by the 'ours' strategy.
$ git status
# On branch kernel-image-ltsp-client
nothing to commit (working directory clean)
$ gear-update-tag -avc && git commit -am 'gear-update-tag'
[...]
$ nice time gear-hsh --target=i586 --apt-conf=$HOME/apt/apt.conf.i586 ~/hasher/tmpfs
[.....]

NB: часть ниже к состоянию 2.6.32-ltsp-client по существу не обновлялась

При обновлении для topic branch’ей либо делаем на kernel-source, либо учёт последней части версии (.y) в .gear/rules и спеке — и затем merge -s ours в основной бранч:

[ "$SHELL" = /bin/zsh ] && setopt shwordsplit
ver=2.6.32.54
git fetch upstream linux-2.6.32.y:kernel-source
for i in fix-core--init fix-core-syslog; do git rebase kernel-source $i; done; git checkout kernel-image-ltsp-client
branches=`ls .git/refs/heads/ | egrep -v '^(kernel|master)'`
for i in kernel-source $branches; do git merge -s ours $i; done
subst "s,2.6.32.[0-9]\+,$ver,g" .gear/rules
git commit -am "$ver"
gear-update-tag -avc && git commit -am 'gear-update-tag'
vim config-i586
git commit -am '...config changes...'
vim kernel-image.spec
gear-commit -a
nice time gear --hasher -- hsh --target=i586 --apt-conf=/etc/apt/apt.conf-i586 ~/hasher/tmpfs
### если собралось, то тегим и пушим; rebased branches придётся заставить
git push -f --all
gear-create-tag
git push --tags
ssh git.alt task new
ssh git.alt task add repo kernel-image 2.6.27-alt10

Соответственно модули:

cd ~/build-modules
mv out/taglist{,-}
updatemodules -k tmc-tc
buildmodules --target=i586 --hsh-options='--apt-conf=/etc/apt/apt.conf-i586' --hsh-workdir=$TMP/tmpfs -k tmc-tc
### если порядок, пушим
cd modules && git push --all && git push --tags && cd -
for tag in $(cat out/taglist); do ssh git.alt task add repo packages/kernel-modules.git $tag; done

Ссылки

 
Личные инструменты