Newer
Older
#
# Copyright (c) 2012-2013 Robert Nelson <robertcnelson@gmail.com>
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
DIR=$PWD
host_arch="$(uname -m)"
check_defines () {
if [ ! "${tempdir}" ] ; then
echo "scripts/deboostrap_first_stage.sh: Error: tempdir undefined"
exit 1
fi
if [ ! "${export_filename}" ] ; then
echo "scripts/deboostrap_first_stage.sh: Error: export_filename undefined"
exit 1
fi
if [ ! "${distro}" ] ; then
echo "scripts/deboostrap_first_stage.sh: Error: distro undefined"
exit 1
fi
if [ ! "${release}" ] ; then
echo "scripts/deboostrap_first_stage.sh: Error: release undefined"
exit 1
fi
if [ ! "${dpkg_arch}" ] ; then
echo "scripts/deboostrap_first_stage.sh: Error: dpkg_arch undefined"
exit 1
fi
if [ ! "${apt_proxy}" ] ; then
apt_proxy=""
fi
if [ ! "${deb_mirror}" ] ; then
case "${distro}" in
debian)
deb_mirror="ftp.us.debian.org/debian/"
;;
ubuntu)
deb_mirror="ports.ubuntu.com/ubuntu-ports/"
;;
esac
fi
if [ ! "${deb_components}" ] ; then
case "${distro}" in
debian)
deb_components="main contrib non-free"
;;
ubuntu)
deb_components="main universe multiverse"
;;
esac
fi
if [ ! "${user_name}" ] ; then
user_name="${distro}"
echo "user_name: undefined using: [${user_name}]"
fi
if [ ! "${password}" ] ; then
password="temppwd"
echo "password: undefined using: [${password}]"
fi
if [ ! "${full_name}" ] ; then
full_name="Demo User"
echo "full_name: undefined using: [${full_name}]"
fi
}
report_size () {
echo "Log: Size of: [${tempdir}]: `du -sh ${tempdir} 2>/dev/null | awk '{print $1}'`"
}
chroot_mount () {
if [ "$(mount | grep ${tempdir}/sys | awk '{print $3}')" != "${tempdir}/sys" ] ; then
sudo mount -t sysfs sysfs ${tempdir}/sys
fi
if [ "$(mount | grep ${tempdir}/proc | awk '{print $3}')" != "${tempdir}/proc" ] ; then
sudo mount -t proc proc ${tempdir}/proc
fi
if [ ! -d ${tempdir}/dev/pts ] ; then
sudo mkdir -p ${tempdir}/dev/pts || true
fi
if [ "$(mount | grep ${tempdir}/dev/pts | awk '{print $3}')" != "${tempdir}/dev/pts" ] ; then
sudo mount -t devpts devpts ${tempdir}/dev/pts
fi
}
chroot_umount () {
if [ "$(mount | grep ${tempdir}/dev/pts | awk '{print $3}')" = "${tempdir}/dev/pts" ] ; then
sudo umount -f ${tempdir}/dev/pts
fi
if [ "$(mount | grep ${tempdir}/proc | awk '{print $3}')" = "${tempdir}/proc" ] ; then
sudo umount -f ${tempdir}/proc
fi
if [ "$(mount | grep ${tempdir}/sys | awk '{print $3}')" = "${tempdir}/sys" ] ; then
sudo umount -f ${tempdir}/sys
fi
}
check_defines
if [ "x${host_arch}" != "xarmv7l" ] ; then
sudo cp $(which qemu-arm-static) ${tempdir}/usr/bin/
fi
echo "Log: Running: debootstrap second-stage in [${tempdir}]"
sudo chroot ${tempdir} debootstrap/debootstrap --second-stage
echo "Log: Complete: [sudo chroot ${tempdir} debootstrap/debootstrap --second-stage]"
if [ "x${chroot_very_small_image}" = "xenable" ] ; then
#so debootstrap just extracts the *.deb's, so lets clean this up hackish now,
#but then allow dpkg to delete these extra files when installed later..
sudo rm -rf ${tempdir}/usr/share/locale/* || true
sudo rm -rf ${tempdir}/usr/share/man/* || true
sudo rm -rf ${tempdir}/usr/share/doc/* || true
#dpkg 1.15.8++, No Docs...
sudo mkdir -p ${tempdir}/etc/dpkg/dpkg.cfg.d/ || true
echo "# Delete locales" > /tmp/01_nodoc
echo "path-exclude=/usr/share/locale/*" >> /tmp/01_nodoc
echo "path-include=/usr/share/locale/en*" >> /tmp/01_nodoc
echo "" >> /tmp/01_nodoc
echo "# Delete man pages" >> /tmp/01_nodoc
echo "path-exclude=/usr/share/man/*" >> /tmp/01_nodoc
echo "" >> /tmp/01_nodoc
echo "# Delete docs" >> /tmp/01_nodoc
echo "path-exclude=/usr/share/doc/*" >> /tmp/01_nodoc
echo "path-include=/usr/share/doc/*/copyright" >> /tmp/01_nodoc
echo "" >> /tmp/01_nodoc
sudo mv /tmp/01_nodoc ${tempdir}/etc/dpkg/dpkg.cfg.d/01_nodoc
sudo mkdir -p ${tempdir}/etc/apt/apt.conf.d/ || true
#apt: no local cache
echo "Dir::Cache {" > /tmp/02nocache
echo " srcpkgcache \"\";" >> /tmp/02nocache
echo " pkgcache \"\";" >> /tmp/02nocache
echo "}" >> /tmp/02nocache
sudo mv /tmp/02nocache ${tempdir}/etc/apt/apt.conf.d/02nocache
#apt: drop translations...
echo "Acquire::Languages \"none\";" > /tmp/02translations
sudo mv /tmp/02translations ${tempdir}/etc/apt/apt.conf.d/02translations
echo "Log: after locale/man purge"
report_size
fi
Robert Nelson
committed
#generic apt.conf tweaks for flash/mmc devices to save on wasted space...
sudo mkdir -p ${tempdir}/etc/apt/apt.conf.d/ || true
Robert Nelson
committed
#apt: /var/lib/apt/lists/, store compressed only
echo "Acquire::GzipIndexes \"true\";" > /tmp/02compress-indexes
echo "Acquire::CompressionTypes::Order:: \"gz\";" >> /tmp/02compress-indexes
sudo mv /tmp/02compress-indexes ${tempdir}/etc/apt/apt.conf.d/02compress-indexes
#set initial 'seed' time...
sudo sh -c "date --utc \"+%4Y%2m%2d%2H%2M\" > ${tempdir}/etc/timestamp"
echo "deb http://${deb_mirror} ${release} ${deb_components}"| sudo tee ${file} >/dev/null
Robert Nelson
committed
echo "#deb-src http://${deb_mirror} ${release} ${deb_components}" | sudo tee -a ${file} >/dev/null
echo "" | sudo tee -a ${file} >/dev/null
echo "deb http://${deb_mirror} ${release}-updates ${deb_components}" | sudo tee -a ${file} >/dev/null
Robert Nelson
committed
echo "#deb-src http://${deb_mirror} ${release}-updates ${deb_components}" | sudo tee -a ${file} >/dev/null
echo "" | sudo tee -a ${file} >/dev/null
echo "deb http://security.debian.org/ ${release}/updates ${deb_components}" | sudo tee -a ${file} >/dev/null
Robert Nelson
committed
echo "#deb-src http://security.debian.org/ ${release}/updates ${deb_components}" | sudo tee -a ${file} >/dev/null
echo "" | sudo tee -a ${file} >/dev/null
echo "deb http://ftp.debian.org/debian ${release}-backports ${deb_components}" | sudo tee -a ${file} >/dev/null
echo "#deb-src http://ftp.debian.org/debian ${release}-backports ${deb_components}" | sudo tee -a ${file} >/dev/null
echo "deb http://${deb_mirror} ${release} ${deb_components}"| sudo tee ${file} >/dev/null
Robert Nelson
committed
echo "#deb-src http://${deb_mirror} ${release} ${deb_components}" | sudo tee -a ${file} >/dev/null
echo "" | sudo tee -a ${file} >/dev/null
echo "deb http://${deb_mirror} ${release}-updates ${deb_components}" | sudo tee -a ${file} >/dev/null
Robert Nelson
committed
echo "#deb-src http://${deb_mirror} ${release}-updates ${deb_components}" | sudo tee -a ${file} >/dev/null
echo "deb http://${deb_mirror} ${release} ${deb_components}" | sudo tee ${file} >/dev/null
Robert Nelson
committed
echo "#deb-src http://${deb_mirror} ${release} ${deb_components}" | sudo tee -a ${file} >/dev/null
echo "" | sudo tee -a ${file} >/dev/null
echo "#deb http://${deb_mirror} ${release}-updates ${deb_components}" | sudo tee -a ${file} >/dev/null
Robert Nelson
committed
echo "##deb-src http://${deb_mirror} ${release}-updates ${deb_components}" | sudo tee -a ${file} >/dev/null
;;
esac
if [ "${apt_proxy}" ] ; then
echo "Acquire::http::Proxy \"http://${apt_proxy}\";" | sudo tee ${tempdir}/etc/apt/apt.conf >/dev/null
fi
echo "127.0.0.1 localhost" | sudo tee ${tempdir}/etc/hosts >/dev/null
echo "127.0.1.1 ${image_hostname}" | sudo tee -a ${tempdir}/etc/hosts >/dev/null
echo "${image_hostname}" | sudo tee ${tempdir}/etc/hostname >/dev/null
case "${distro}" in
debian)
wfile="boot_scripts.sh"
cat > /tmp/${wfile} <<-__EOF__
#!/bin/sh -e
### BEGIN INIT INFO
# Required-Start: \$local_fs
# Required-Stop: \$local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO
case "\$1" in
start|reload|force-reload|restart)
Robert Nelson
committed
#This script is to just get the (non-battery backed up) rtc 'in the ballbark'..
#Usually it will be around a month at most off, vs 40-ish years...
#/etc/timestamp is set via:
#date --utc "+%4Y%2m%2d%2H%2M" > /etc/timestamp
if [ -f /etc/timestamp ] ; then
systemdate=\$(/bin/date --utc "+%4Y%2m%2d%2H%2M")
timestamp=\$(cat /etc/timestamp)
if [ \${timestamp} -gt \${systemdate} ] ; then
year=\$(cat /etc/timestamp | cut -b 1-4)
month=\$(cat /etc/timestamp | cut -b 5-6)
day=\$(cat /etc/timestamp | cut -b 7-8)
hour=\$(cat /etc/timestamp | cut -b 9-10)
min=\$(cat /etc/timestamp | cut -b 11-12)
#/bin/date --utc -s "10/08/2008 11:37:23"
/bin/date --utc -s "\${month}/\${day}/\${year} \${hour}:\${min}:00"
/sbin/hwclock --systohc
fi
Robert Nelson
committed
if [ ! -f /etc/ssh/ssh_host_dsa_key.pub ] ; then
rm -rf /etc/ssh/ssh_host_* || true
dpkg-reconfigure openssh-server
fi
Robert Nelson
committed
if [ -f /boot/uboot/SOC.sh ] && [ -f /boot/uboot/run_boot-scripts ] ; then
board=\$(cat /boot/uboot/SOC.sh | grep "board" | awk -F"=" '{print \$2}')
if [ -f "/opt/boot-scripts/\${board}.sh" ] ; then
/bin/sh /opt/boot-scripts/\${board}.sh >/dev/null 2>&1 &
fi
Robert Nelson
committed
;;
stop)
exit 0
;;
*)
echo "Usage: /etc/init.d/boot_scripts.sh {start|stop|reload|restart|force-reload}"
exit 1
;;
esac
exit 0
__EOF__
Robert Nelson
committed
#Backward compatibility, as setup_sdcard.sh expects [lsb_release -si > /etc/rcn-ee.conf]
echo "distro=Debian" > /tmp/rcn-ee.conf
sudo mv /tmp/rcn-ee.conf ${tempdir}/etc/rcn-ee.conf
wfile="boot_scripts.conf"
cat > /tmp/${wfile} <<-__EOF__
start on runlevel 2
script
Robert Nelson
committed
#This script is to just get the (non-battery backed up) rtc 'in the ballbark'..
#Usually it will be around a month at most off, vs 40-ish years...
#/etc/timestamp is set via:
#date --utc "+%4Y%2m%2d%2H%2M" > /etc/timestamp
if [ -f /etc/timestamp ] ; then
systemdate=\$(/bin/date --utc "+%4Y%2m%2d%2H%2M")
timestamp=\$(cat /etc/timestamp)
if [ \${timestamp} -gt \${systemdate} ] ; then
year=\$(cat /etc/timestamp | cut -b 1-4)
month=\$(cat /etc/timestamp | cut -b 5-6)
day=\$(cat /etc/timestamp | cut -b 7-8)
hour=\$(cat /etc/timestamp | cut -b 9-10)
min=\$(cat /etc/timestamp | cut -b 11-12)
#/bin/date --utc -s "10/08/2008 11:37:23"
/bin/date --utc -s "\${month}/\${day}/\${year} \${hour}:\${min}:00"
/sbin/hwclock --systohc
fi
Robert Nelson
committed
if [ ! -f /etc/ssh/ssh_host_dsa_key.pub ] ; then
rm -rf /etc/ssh/ssh_host_* || true
dpkg-reconfigure openssh-server
fi
Robert Nelson
committed
if [ -f /boot/uboot/SOC.sh ] && [ -f /boot/uboot/run_boot-scripts ] ; then
board=\$(cat /boot/uboot/SOC.sh | grep "board" | awk -F"=" '{print \$2}')
if [ -f "/opt/boot-scripts/\${board}.sh" ] ; then
/bin/sh /opt/boot-scripts/\${board}.sh >/dev/null 2>&1 &
fi
fi
end script
__EOF__
wfile="flash-kernel.conf"
cat > /tmp/${wfile} <<-__EOF__
#!/bin/sh -e
UBOOT_PART=/dev/mmcblk0p1
USE_CUSTOM_KERNEL=1
if [ "\${USE_CUSTOM_KERNEL}" ] ; then
DIST=\$(lsb_release -cs)
case "\${DIST}" in
FLASH_KERNEL_SKIP=yes
;;
esac
fi
__EOF__
if [ -f ${tempdir}/etc/init/failsafe.conf ] ; then
#Ubuntu: with no ethernet cable connected it can take up to 2 mins to login, removing upstart sleep calls..."
sudo sed -i -e 's:sleep 20:#sleep 20:g' ${tempdir}/etc/init/failsafe.conf
sudo sed -i -e 's:sleep 40:#sleep 40:g' ${tempdir}/etc/init/failsafe.conf
sudo sed -i -e 's:sleep 59:#sleep 59:g' ${tempdir}/etc/init/failsafe.conf
fi
Robert Nelson
committed
#Backward compatibility, as setup_sdcard.sh expects [lsb_release -si > /etc/rcn-ee.conf]
echo "distro=Ubuntu" > /tmp/rcn-ee.conf
sudo mv /tmp/rcn-ee.conf ${tempdir}/etc/rcn-ee.conf
cat > ${DIR}/chroot_script.sh <<-__EOF__
#!/bin/sh -e
export LC_ALL=C
export DEBIAN_FRONTEND=noninteractive
dpkg_check () {
unset pkg_is_not_installed
Robert Nelson
committed
LC_ALL=C dpkg --list | awk '{print \$2}' | grep "^\${pkg}$" >/dev/null || pkg_is_not_installed="true"
Robert Nelson
committed
dpkg_package_missing () {
echo "Log: (chroot) package [\${pkg}] was not installed... (add to base_pkg_list if functionality is really needed)"
}
cat > /usr/sbin/policy-rc.d <<EOF
#!/bin/sh
exit 101
EOF
chmod +x /usr/sbin/policy-rc.d
Robert Nelson
committed
#set distro:
. /etc/rcn-ee.conf
if [ "x\${distro}" = "xUbuntu" ] ; then
dpkg-divert --local --rename --add /sbin/initctl
ln -s /bin/true /sbin/initctl
fi
apt-get update
apt-get upgrade -y --force-yes
if [ ! "x${base_pkg_list}" = "x" ] ; then
#Install the user choosen list.
echo "Log: (chroot) Installing: ${base_pkg_list}"
apt-get -y --force-yes install ${base_pkg_list}
fi
set_locale () {
Robert Nelson
committed
pkg="locales"
dpkg_check
if [ "x\${pkg_is_not_installed}" = "x" ] ; then
case "\${distro}" in
Debian)
echo "Log: (chroot) Debian: setting up locales: [en_US.UTF-8]"
sed -i -e 's:# en_US.UTF-8 UTF-8:en_US.UTF-8 UTF-8:g' /etc/locale.gen
locale-gen
;;
Ubuntu)
echo "Log: (chroot) Ubuntu: setting up locales: [en_US.UTF-8]"
locale-gen en_US.UTF-8
;;
esac
echo "LANG=en_US.UTF-8" > /etc/default/locale
Robert Nelson
committed
else
dpkg_package_missing
apt-get -y --force-yes install deborphan
deborphan | xargs apt-get -y remove --purge
#FIXME, only tested on wheezy...
apt-get -y remove deborphan dialog gettext-base libasprintf0c2 --purge
apt-get clean
}
Robert Nelson
committed
sed -i -e 's:#deb-src:deb-src:g' /etc/apt/sources.list
apt-get update
mkdir -p /tmp/pkg_src/
cd /tmp/pkg_src/
dpkg -l | tail -n+6 | awk '{print \$2}' | sed "s/:armel//g" | sed "s/:armhf//g" > /tmp/pkg_src/pkg_list
apt-get source --download-only \`cat /tmp/pkg_src/pkg_list\`
cd -
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
wget --no-verbose --directory-prefix=/tmp/ \${kernel_url}
#This should create a list of files on the server
#<a href="file"></a>
cat /tmp/index.html | grep "<a href=" > /tmp/temp.html
#Note: cat drops one \...
#sed -i -e "s/<a href/\\n<a href/g" /tmp/temp.html
sed -i -e "s/<a href/\\\n<a href/g" /tmp/temp.html
sed -i -e 's/\"/\"><\/a>\n/2' /tmp/temp.html
cat /tmp/temp.html | grep href > /tmp/index.html
deb_file=\$(cat /tmp/index.html | grep linux-image)
deb_file=\$(echo \${deb_file} | awk -F ".deb" '{print \$1}')
deb_file=\${deb_file##*linux-image-}
kernel_version=\$(echo \${deb_file} | awk -F "_" '{print \$1}')
echo "Log: Using: \${kernel_version}"
deb_file="linux-image-\${deb_file}.deb"
wget --directory-prefix=/tmp/ \${kernel_url}\${deb_file}
unset dtb_file
dtb_file=\$(cat /tmp/index.html | grep dtbs.tar.gz | head -n 1)
dtb_file=\$(echo \${dtb_file} | awk -F "\"" '{print \$2}')
if [ "\${dtb_file}" ] ; then
Robert Nelson
committed
wget --directory-prefix=/boot/ \${kernel_url}\${dtb_file}
fi
unset firmware_file
firmware_file=\$(cat /tmp/index.html | grep firmware.tar.gz | head -n 1)
firmware_file=\$(echo \${firmware_file} | awk -F "\"" '{print \$2}')
if [ "\${firmware_file}" ] ; then
wget --directory-prefix=/tmp/ \${kernel_url}\${firmware_file}
mkdir -p /tmp/cape-firmware/
tar xf /tmp/\${firmware_file} -C /tmp/cape-firmware/
cp -v /tmp/cape-firmware/*.dtbo /lib/firmware/ 2>/dev/null
rm -rf /tmp/cape-firmware/ || true
rm -f /tmp/\${firmware_file} || true
fi
dpkg -x /tmp/\${deb_file} /
pkg="initramfs-tools"
dpkg_check
if [ "x\${pkg_is_not_installed}" = "x" ] ; then
depmod \${kernel_version}
update-initramfs -c -k \${kernel_version}
else
dpkg_package_missing
fi
rm -f /tmp/index.html || true
rm -f /tmp/temp.html || true
rm -f /tmp/\${deb_file} || true
rm -f /boot/System.map-\${kernel_version} || true
rm -f /boot/config-\${kernel_version} || true
rm -rf /usr/src/linux-headers* || true
groupadd admin || true
default_groups="admin,adm,dialout,cdrom,floppy,audio,dip,video"
pkg="sudo"
dpkg_check
if [ "x\${pkg_is_not_installed}" = "x" ] ; then
echo "Log: (chroot) adding admin group to /etc/sudoers"
echo "%admin ALL=(ALL) ALL" >>/etc/sudoers
Robert Nelson
committed
else
dpkg_package_missing
pass_crypt=\$(perl -e 'print crypt(\$ARGV[0], "rcn-ee-salt")' ${password})
useradd -G "\${default_groups}" -s /bin/bash -m -p \${pass_crypt} -c "${full_name}" ${user_name}
case "\${distro}" in
Debian)
passwd <<-EOF
root
root
EOF
if [ "x${chroot_nuke_root_password}" = "xenable" ] ; then
root_password=\$(cat /etc/shadow | grep root | awk -F ':' '{print \$2}')
sed -i -e 's:'\$root_password'::g' /etc/shadow
fi
;;
Ubuntu)
passwd -l root || true
;;
esac
if [ "x${chroot_rcnee_startup_scripts}" = "xenable" ] ; then
if [ -f /etc/init.d/boot_scripts.sh ] ; then
chown root:root /etc/init.d/boot_scripts.sh
chmod +x /etc/init.d/boot_scripts.sh
insserv boot_scripts.sh || true
fi
ubuntu_startup_script () {
if [ "x${chroot_rcnee_startup_scripts}" = "xenable" ] ; then
if [ -f /etc/init/boot_scripts.conf ] ; then
chown root:root /etc/init/boot_scripts.conf
fi
#Not Optional...
#(protects your kernel, from Ubuntu repo which may try to take over your system on an upgrade)...
if [ -f /etc/flash-kernel.conf ] ; then
chown root:root /etc/flash-kernel.conf
fi
}
case "\${distro}" in
Debian)
debian_startup_script
;;
Ubuntu)
ubuntu_startup_script
;;
if [ "x${chroot_rcnee_startup_scripts}" = "xenable" ] ; then
pkg="git-core"
dpkg_check
if [ "x\${pkg_is_not_installed}" = "x" ] ; then
mkdir -p /opt/boot-scripts/ || true
git clone git://github.com/RobertCNelson/boot-scripts.git /opt/boot-scripts/ || true
chown -R ${user_name}:${user_name} /opt/boot-scripts/
Robert Nelson
committed
else
dpkg_package_missing
fi
fi
install_cloud9 () {
pkg="git-core"
dpkg_check
if [ "x\${pkg_is_not_installed}" = "x" ] ; then
if [ "x${release}" = "xwheezy" ] ; then
apt-get -y -t wheezy-backports install nodejs-legacy
curl https://npmjs.org/install.sh | sh
mkdir -p /opt/cloud9/ || true
clone git clone https://github.com/ajaxorg/cloud9.git /opt/cloud9/ || true
chown -R ${user_name}:${user_name} /opt/cloud9/
fi
if [ -f /etc/apt/apt.conf ] ; then
rm -rf /etc/apt/apt.conf || true
fi
if [ "x${chroot_very_small_image}" = "xenable" ] ; then
#if your flash is already small, the apt cache might overfill it so drop src...
sed -i -e 's:deb-src:#deb-src:g' /etc/apt/sources.list
Robert Nelson
committed
apt-get update
apt-get clean
rm -f /usr/sbin/policy-rc.d
if [ "x\${distro}" = "xUbuntu" ] ; then
rm -f /sbin/initctl || true
dpkg-divert --local --rename --remove /sbin/initctl
fi
#left over from init/upstart scripts running in chroot...
if [ -d /var/run/ ] ; then
rm -rf /var/run/* || true
fi
#cat /chroot_script.sh
Robert Nelson
committed
set_locale
Robert Nelson
committed
if [ "x${chroot_very_small_image}" = "xenable" ] ; then
Robert Nelson
committed
add_user
startup_script
if [ "x${chroot_cloud9_ide}" = "xenable" ] ; then
install_cloud9
fi
if [ "x${chroot_ENABLE_DEB_SRC}" = "xenable" ] ; then
pkg="wget"
dpkg_check
if [ "x\${pkg_is_not_installed}" = "x" ] ; then
if [ "${chroot_KERNEL_HTTP_DIR}" ] ; then
for kernel_url in ${chroot_KERNEL_HTTP_DIR} ; do dl_kernel ; done
fi
Robert Nelson
committed
else
dpkg_package_missing
rm -f /chroot_script.sh || true
__EOF__
sudo mv ${DIR}/chroot_script.sh ${tempdir}/chroot_script.sh
if [ "x${include_firmware}" = "xenable" ] ; then
if [ ! -d ${tempdir}/lib/firmware/ ] ; then
sudo mkdir -p ${tempdir}/lib/firmware/ || true
fi
if [ -d ${DIR}/git/linux-firmware/brcm/ ] ; then
sudo mkdir -p ${tempdir}/lib/firmware/brcm
sudo cp -v ${DIR}/git/linux-firmware/LICENCE.broadcom_bcm43xx ${tempdir}/lib/firmware/
sudo cp -v ${DIR}/git/linux-firmware/brcm/* ${tempdir}/lib/firmware/brcm
fi
if [ -f ${DIR}/git/linux-firmware/carl9170-1.fw ] ; then
sudo cp -v ${DIR}/git/linux-firmware/carl9170-1.fw ${tempdir}/lib/firmware/
fi
if [ -f ${DIR}/git/linux-firmware/htc_9271.fw ] ; then
sudo cp -v ${DIR}/git/linux-firmware/LICENCE.atheros_firmware ${tempdir}/lib/firmware/
sudo cp -v ${DIR}/git/linux-firmware/htc_9271.fw ${tempdir}/lib/firmware/
fi
if [ -d ${DIR}/git/linux-firmware/rtlwifi/ ] ; then
sudo mkdir -p ${tempdir}/lib/firmware/rtlwifi
sudo cp -v ${DIR}/git/linux-firmware/LICENCE.rtlwifi_firmware.txt ${tempdir}/lib/firmware/
sudo cp -v ${DIR}/git/linux-firmware/rtlwifi/* ${tempdir}/lib/firmware/rtlwifi
fi
if [ -d ${DIR}/git/linux-firmware/ti-connectivity/ ] ; then
sudo mkdir -p ${tempdir}/lib/firmware/ti-connectivity
sudo cp -v ${DIR}/git/linux-firmware/LICENCE.ti-connectivity ${tempdir}/lib/firmware/
sudo cp -v ${DIR}/git/linux-firmware/ti-connectivity/* ${tempdir}/lib/firmware/ti-connectivity
fi
if [ -f ${DIR}/git/am33x-cm3/bin/am335x-pm-firmware.bin ] ; then
sudo cp -v ${DIR}/git/am33x-cm3/bin/am335x-pm-firmware.bin ${tempdir}/lib/firmware/am335x-pm-firmware.bin
fi
fi
chroot_mount
sudo chroot ${tempdir} /bin/sh chroot_script.sh
echo "Log: Complete: [sudo chroot ${tempdir} /bin/sh chroot_script.sh]"
mkdir -p ${DIR}/deploy/${export_filename}/ || true
if [ -n "${chroot_hook}" -a -r "${DIR}/${chroot_hook}" ] ; then
report_size
echo "Calling chroot_hook script: ${chroot_hook}"
. "${DIR}/${chroot_hook}"
chroot_hook=""
fi
if [ -f ${tempdir}/usr/bin/qemu-arm-static ] ; then
sudo rm -f ${tempdir}/usr/bin/qemu-arm-static || true
fi
if ls ${tempdir}/boot/vmlinuz-* >/dev/null 2>&1 ; then
sudo mv -v ${tempdir}/boot/vmlinuz-* ${DIR}/deploy/${export_filename}/
if ls ${tempdir}/boot/initrd.img-* >/dev/null 2>&1 ; then
sudo mv -v ${tempdir}/boot/initrd.img-* ${DIR}/deploy/${export_filename}/
if ls ${tempdir}/boot/*dtbs.tar.gz >/dev/null 2>&1 ; then
sudo mv -v ${tempdir}/boot/*dtbs.tar.gz ${DIR}/deploy/${export_filename}/
echo "${user_name}:${password}" | sudo tee ${DIR}/deploy/${export_filename}/user_password.list >/dev/null
#Fixes:
#Remove pre-generated ssh keys, these will be regenerated on first bootup...
sudo rm -rf ${tempdir}/etc/ssh/ssh_host_* || true
report_size
chroot_umount
if [ "x${chroot_COPY_SETUP_SDCARD}" = "xenable" ] ; then
sudo cp -v ${DIR}/tools/setup_sdcard.sh ${DIR}/deploy/${export_filename}/
sudo mkdir -p ${DIR}/deploy/${export_filename}/hwpack/
sudo cp -v ${DIR}/tools/hwpack/*.conf ${DIR}/deploy/${export_filename}/hwpack/
#just not these this week...
sudo rm -rf ${DIR}/deploy/${export_filename}/hwpack/mx*.conf || true
##FIXME: remove after WiFi/Video works...
sudo rm -rf ${DIR}/deploy/${export_filename}/hwpack/dt-panda.conf || true
cd ${tempdir}/tmp/pkg_src/
sudo LANG=C tar --numeric-owner -cf ${DIR}/deploy/${dpkg_arch}-rootfs-${distro}-${release}-${time}-src.tar .
cd ${tempdir}
ls -lh ${DIR}/deploy/${dpkg_arch}-rootfs-${distro}-${release}-${time}-src.tar
sudo rm -rf ${tempdir}/tmp/pkg_src/ || true
report_size
fi
sudo LANG=C tar --numeric-owner -cf ${DIR}/deploy/${export_filename}/${dpkg_arch}-rootfs-${distro}-${release}.tar .
ls -lh ${DIR}/deploy/${export_filename}/${dpkg_arch}-rootfs-${distro}-${release}.tar
sudo chown -R ${USER}:${USER} ${DIR}/deploy/${export_filename}/