From 1ee997e83262c5b030da44887755d0189a7c310a Mon Sep 17 00:00:00 2001 From: Michael Shigorin Date: Mon, 16 Jul 2012 21:10:54 +0300 Subject: [PATCH] initial PowerPC support As it happens, adding another architecture required almost no changes; native 32-bit ppc build took only ARCH and a repo, qemu-ppc one still has problems (/.host/entry hangs while unpacking setup for fakedata). Proof of concept on a QS22: $ make ve/bare.tar.gz ** ARCH: ppc /bin/sh: rpmvercmp: command not found 21:41:01 cleaning up 21:41:03 initializing BUILDDIR: build/ 21:41:03 preparing distro config 21:41:05 starting image build (coffee time) 21:42:48 done (1:42) ** image: $TMP/out/bare-20120716-ppc.tar.gz [21M] --- Makefile | 2 +- doc/params.txt | 2 +- doc/{arm.txt => qemu.txt} | 16 ++++++++++++---- image.in/functions.mk | 2 +- 4 files changed, 15 insertions(+), 7 deletions(-) rename doc/{arm.txt => qemu.txt} (56%) diff --git a/Makefile b/Makefile index 2cfd1a3c..b73aa2e5 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ ifndef ARCHES ifdef ARCH ARCHES := $(ARCH) else -ARCHES := $(shell arch | sed 's/i686/i586/; s/armv.*/arm/') +ARCHES := $(shell arch | sed 's/i686/i586/; s/armv.*/arm/; s/ppc.*/ppc/') endif endif export ARCHES diff --git a/doc/params.txt b/doc/params.txt index 75052b01..3a0f6c7e 100644 --- a/doc/params.txt +++ b/doc/params.txt @@ -10,7 +10,7 @@ - ARCH + задаёт целевую архитектуру образов - + значение: пусто (по умолчанию авто), i586, x86_64 или arm + + значение: пусто (по умолчанию авто), i586, x86_64, arm, ppc + см. ../lib/build.mk - ARCHES diff --git a/doc/arm.txt b/doc/qemu.txt similarity index 56% rename from doc/arm.txt rename to doc/qemu.txt index 606feb0f..0de17545 100644 --- a/doc/arm.txt +++ b/doc/qemu.txt @@ -3,16 +3,24 @@ apt-get install qemu-user-binfmt_misc modprobe binfmt_misc -echo ":arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/.host/qemu-arm:" > /proc/sys/fs/binfmt_misc/register echo 32768 > /proc/sys/vm/mmap_min_addr +и сконфигурируйте его применение для требуемых платформ: + +echo ":arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/.host/qemu-arm:" > /proc/sys/fs/binfmt_misc/register +echo ':ppc:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x14:\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/.host/qemu-ppc:' > /proc/sys/fs/binfmt_misc/register + Если файл /proc/sys/fs/binfmt_misc/register не существует, потребуется установить и загрузить иное ядро (например, std-def). -Также нужен sources.list с указанием arm-репозитория -и ссылающийся на него apt.conf (см. apt.conf.sample); -например: +Также нужен sources.list с указанием соответствующего репозитория +и ссылающийся на него apt.conf (см. apt.conf.sample); например: --- sources.list.sisyphus.arm rpm http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus arm classic --- + +--- sources.list.4.1.ppc +rpm http://ftp.altlinux.org/pub/people/wart/repos/lioka/powerpc ppc classic +rpm http://ftp.altlinux.org/pub/people/wart/repos/lioka/powerpc noarch classic +--- diff --git a/image.in/functions.mk b/image.in/functions.mk index 5891c879..81e91f96 100644 --- a/image.in/functions.mk +++ b/image.in/functions.mk @@ -2,7 +2,7 @@ PKGDIR := $(GLOBAL_BUILDDIR)/pkg # duplicated from metaprofile makefiles for the sake of "local" builds -ARCH ?= $(shell arch | sed 's/i686/i586/; s/armv.*/arm/') +ARCH ?= $(shell arch | sed 's/i686/i586/; s/armv.*/arm/; s/ppc.*/ppc/') DATE ?= $(shell date +%Y%m%d) # prefix pkglist name with its directory to form a path (relative/absolute)