integrate-distro.sh: Make it work for openSuSE i586@x86_64

Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
Jan Lindemann 2013-08-12 13:44:46 +00:00
commit 518c7ec98d

View file

@ -7,44 +7,9 @@ suse_version=12.3
o_name=suse-$suse_version o_name=suse-$suse_version
cmd=install cmd=install
cwd=`pwd` cwd=`pwd`
ssh_auth_sock=/tmp/agent-host.sock
initrd_modules=" env_ssh_auth_sock=$SSH_AUTH_SOCK
via-rhine initrd_modules=" via-rhine r8169 e1000 e1000e b44 myri10ge forcedeth 8139too sata_nv nfs nfs_acl auth_rpcgss nfsv3 nfsv4 fscache lockd sunrpc sis edd sisfb evdev shpchp sis_agp hwmon aufs ahci libahci usbhid hid uhci_hcd ohci_hcd ehci_hcd usbcore hid-generic"
r8169
e1000
e1000e
b44
myri10ge
forcedeth
8139too
sata_nv
nfs
nfs_acl
auth_rpcgss
nfsv3
nfsv4
fscache
lockd
sunrpc
sis
edd
sisfb
evdev
shpchp
sis_agp
hwmon
aufs
ahci
libahci
usbhid
hid
uhci_hcd
ohci_hcd
ehci_hcd
usbcore
hid-generic
"
kernel_flavour=-desktop kernel_flavour=-desktop
@ -116,6 +81,9 @@ case $suse_version in
kernel_version=3.9.9-jng20-1.1$kernel_flavour kernel_version=3.9.9-jng20-1.1$kernel_flavour
rpm_kernel_version=3.9.9~jng20-1.1 rpm_kernel_version=3.9.9~jng20-1.1
kernel_version=3.7.10-jng12$kernel_flavour
rpm_kernel_version=3.7.10~jng12-1
;; ;;
esac esac
@ -265,7 +233,7 @@ usage()
get_opts() get_opts()
{ {
set -- `getopt 'hd:n:a:p:k:u:w:' $*` set -- `getopt 'hd:n:a:p:k:u:w:s:' $*`
while [ "$1" != -- ] ; do while [ "$1" != -- ] ; do
case "$1" in case "$1" in
-h) -h)
@ -299,6 +267,10 @@ get_opts()
cwd=$2 cwd=$2
shift shift
;; ;;
-s)
env_ssh_auth_sock=$2
shift
;;
*) *)
usage 1 usage 1
;; ;;
@ -377,8 +349,11 @@ _run_chroot()
run_chroot() run_chroot()
{ {
echo == running LANG=POSIX chroot $root "$@" local cmd="LANG=POSIX SSH_AUTH_SOCK=$ssh_auth_sock chroot $root"
LANG=POSIX chroot $root "$@" || { echo == running $cmd "$@"
#eval $cmd "$@" || {
#LANG=POSIX SSH_AUTH_SOCK=$ssh_auth_sock chroot $root "$@" || {
LANG=POSIX SSH_AUTH_SOCK=$ssh_auth_sock chroot $root "$@" || {
die "failed to run >$@<, exiting" die "failed to run >$@<, exiting"
} }
} }
@ -387,7 +362,7 @@ run_hook()
{ {
hook="$1" hook="$1"
local cmd="${hooks[$hook]}" local cmd="${hooks[$hook]}"
[ "$cmd" ] || return [ "$cmd" ] || return 0
( (
cd $cwd cd $cwd
echo "== running hook $hook ($cmd)" echo "== running hook $hook ($cmd)"
@ -406,6 +381,7 @@ create_partition_table()
{ {
assert_not_mounted assert_not_mounted
# FIXME mkpart primary 40G 100% doesn't work on nbd
_cat << EOT | run_parted _cat << EOT | run_parted
|mklabel gpt |mklabel gpt
|mkpart primary 1M 2M |mkpart primary 1M 2M
@ -415,7 +391,7 @@ create_partition_table()
|name 2 boot |name 2 boot
|mkpart primary 10G 40G |mkpart primary 10G 40G
|name 3 swap |name 3 swap
|mkpart primary 40G 100% |mkpart primary 40G 100G
|name 4 root |name 4 root
EOT EOT
@ -437,10 +413,13 @@ canonicalize()
check_mount() check_mount()
{ {
local canonicalized=`canonicalize $root/$1` local canonicalized=`realpath $root/$1 2>/dev/null`
[ ! "$canonicalized" ] && return 1 [ ! "$canonicalized" ] && return 1
grep -q " $canonicalized " /proc/mounts || return 1 grep -q " $canonicalized " /proc/mounts && return 0
return 0 canonicalized=`canonicalize $root/$1`
[ ! "$canonicalized" ] && return 1
grep -q " $canonicalized " /proc/mounts && return 0
return 1
} }
assert_not_mounted() assert_not_mounted()
@ -460,6 +439,14 @@ setup_bind_mounts()
run -e mount -o bind $fs $root$fs run -e mount -o bind $fs $root$fs
} }
done done
if [ "$env_ssh_auth_sock" ]; then
check_mount $ssh_auth_sock || {
echo "creating >$ssh_auth_sock<"
run -e mkdir -p `dirname $root/$ssh_auth_sock`
run -e touch $root/$ssh_auth_sock
run -e mount --bind $env_ssh_auth_sock $root/$ssh_auth_sock
}
fi
} }
mount_devices() mount_devices()
@ -477,12 +464,13 @@ mount_devices()
unmount_devices() unmount_devices()
{ {
local devices="/proc /sys /dev /boot /" local devices="$ssh_auth_sock /proc /sys /dev /boot /"
[ "$1" ] && devices="$@" [ "$1" ] && devices="$@"
local d local d
for d in $devices; do for d in $devices; do
check_mount $d && run umount $root$d check_mount $d && run umount $root$d
done done
rm -f $ssh_auth_sock
} }
zypper_repos_base() zypper_repos_base()
@ -536,7 +524,7 @@ host_zypper()
local repos="$1" local repos="$1"
shift shift
local distros=`zypper_repos $repos | awk '{print "--plus-repo " $2 }'` local distros=`zypper_repos $repos | awk '{print "--plus-repo " $2 }'`
zypper $zypper_global_opts --root $root $distros $@ run -e zypper $zypper_global_opts --root $root $distros $@
} }
init_root_password_file() init_root_password_file()
@ -806,7 +794,6 @@ setup_boot_loader_net()
undo_rpmnew() undo_rpmnew()
{ {
set +x
local n o local n o
# reset config files to rpm versions # reset config files to rpm versions
find $root -name '*.rpmnew' | while read n; do find $root -name '*.rpmnew' | while read n; do
@ -814,7 +801,6 @@ undo_rpmnew()
log renaming $n to $o log renaming $n to $o
mv $n $o mv $n $o
done done
set -x
} }
setup_root_directory() setup_root_directory()
@ -909,7 +895,7 @@ set_sysconf_value()
cmd_install() cmd_install()
{ {
if true; then if false; then
local c local c
set -e set -e
@ -954,7 +940,6 @@ cmd_install()
chroot $root zypper $zypper_global_opts install --auto-agree-with-licenses $payload_pkgs chroot $root zypper $zypper_global_opts install --auto-agree-with-licenses $payload_pkgs
echo "=== installing payload packages <" echo "=== installing payload packages <"
fi # test
run setup_zypper_repos special run setup_zypper_repos special
run chroot $root zypper $zypper_global_opts install --auto-agree-with-licenses $special_pkgs run chroot $root zypper $zypper_global_opts install --auto-agree-with-licenses $special_pkgs
@ -970,12 +955,8 @@ cmd_install()
run_hook pkg-installed run_hook pkg-installed
export CVSROOT=:ext:$scm_user@cvs.jannet.de:/home/jannet/arc/cvs export CVSROOT=:ext:$scm_user@cvs.jannet.de:/home/jannet/arc/cvs
if [ "$SSH_AUTH_SOCK" ]; then
mkdir -m 700 -p `dirname $root/$SSH_AUTH_SOCK`
ln $SSH_AUTH_SOCK $root/$SSH_AUTH_SOCK
fi
echo "=== running jcs fetch" echo "=== running jcs fetch"
chroot $root jcs fetch run_chroot jcs fetch
reset_host_files reset_host_files
echo "=== running jcs setup" echo "=== running jcs setup"
chroot $root jcs setup chroot $root jcs setup
@ -984,6 +965,7 @@ cmd_install()
# FIXME: this does not work off a netboot distro # FIXME: this does not work off a netboot distro
slapcat | chroot $root /usr/sbin/slapadd -qw slapcat | chroot $root /usr/sbin/slapadd -qw
fi # test
[ "$install_dev" ] && setup_boot_loader_local [ "$install_dev" ] && setup_boot_loader_local
setup_boot_loader_net setup_boot_loader_net
(cd $root/boot; ln -sf vmlinuz-$kernel_version vmlinuz) (cd $root/boot; ln -sf vmlinuz-$kernel_version vmlinuz)
@ -1006,8 +988,6 @@ cmd_install()
install -m 777 -d $root/srv/nfs/var/cores install -m 777 -d $root/srv/nfs/var/cores
install -m 777 -d $root/var/cores install -m 777 -d $root/var/cores
rm -f $root/$SSH_AUTH_SOCK
unmount_devices unmount_devices
[ -w "$install_dev" ] || { [ -w "$install_dev" ] || {
install -d -m 755 $root/../rw install -d -m 755 $root/../rw
@ -1052,7 +1032,8 @@ if [ `whoami` != root -o "$l32" ]; then
# preferring "ssh -l root localhost" over "sudo" to keep ssh-agent environment # preferring "ssh -l root localhost" over "sudo" to keep ssh-agent environment
#sudo -i $exe $@ -p $root_password_file #sudo -i $exe $@ -p $root_password_file
ssh -l root localhost $l32 $exe $@ -p $root_password_file -u $scm_user -w $cwd [ "$env_ssh_auth_sock" ] && opt_ssh_auth_sock="-s $env_ssh_auth_sock"
ssh -l root localhost $l32 $exe $@ -p $root_password_file -u $scm_user -w $cwd $opt_ssh_auth_sock
exit $? exit $?
fi fi
@ -1066,9 +1047,14 @@ root=/srv/nfs/boot/distros/$name/ro
if [ "$install_dev" ]; then if [ "$install_dev" ]; then
install_dev_boot=$install_dev""2 case $install_dev in
install_dev_swap=$install_dev""3 /dev/sd*) part_sep="";;
install_dev_root=$install_dev""4 /dev/nbd*) part_sep="p";;
esac
install_dev_boot=$install_dev$part_sep""2
install_dev_swap=$install_dev$part_sep""3
install_dev_root=$install_dev$part_sep""4
case $install_dev in case $install_dev in
/dev/sda) install_grub_dev_num=0;; /dev/sda) install_grub_dev_num=0;;
@ -1076,8 +1062,10 @@ if [ "$install_dev" ]; then
/dev/sdc) install_grub_dev_num=2;; /dev/sdc) install_grub_dev_num=2;;
/dev/sdd) install_grub_dev_num=3;; /dev/sdd) install_grub_dev_num=3;;
/dev/sde) install_grub_dev_num=4;; /dev/sde) install_grub_dev_num=4;;
/dev/nbd*)
install_grub_dev_num=${d/\/dev\/nbd/};;
*) *)
log "device \"$install_dev\" doesn't map into a known grub device number, edit $myname to add support" log "device \"$install_dev\" can't be mapped onto a grub device number, edit $myname to add support"
exit 1;; exit 1;;
esac esac