From owner-freebsd-questions@FreeBSD.ORG Mon Sep 15 07:44:12 2014 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id AD9AF92A for ; Mon, 15 Sep 2014 07:44:12 +0000 (UTC) Received: from mail-yk0-x231.google.com (mail-yk0-x231.google.com [IPv6:2607:f8b0:4002:c07::231]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 6A98E9CA for ; Mon, 15 Sep 2014 07:44:12 +0000 (UTC) Received: by mail-yk0-f177.google.com with SMTP id 79so1858121ykr.22 for ; Mon, 15 Sep 2014 00:44:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=2h96/6sBF9M7TEwZ5hDm/RWug5hWWPCXFDbpveForlY=; b=MRQfy4JKYa6EXFusNmKNwnZaejSrzVAqobrzK/FjIqe1ZURjRVZuhIa1v2w5d0dYQq UaPVE6CF9MWnrerQdlxeF3NGbk6ziUh1rGwfAOLDppJaWDo42pT7Eu0BwIMNTljeqFhu r/BEmByJh2D/Cl7KHDak047foUOm9Ot1WmSGWI5br/fAiTJ0b+enrk7M6pwGtCpwGQIy xv4RppxXK4z9ITauQb49s1TpC9udSwktUopXatJ9HV9gPxyAmXJW8/+nYkIwrA4PQjbu W/S1CcNqXWGWMdO/r9ycxJtAWZwtch4x0aqvLrm8YEH+LHPwbWdk4Ce5r1PklKG+dmPS 75cQ== MIME-Version: 1.0 X-Received: by 10.236.13.38 with SMTP id a26mr31511634yha.23.1410767051101; Mon, 15 Sep 2014 00:44:11 -0700 (PDT) Received: by 10.170.218.197 with HTTP; Mon, 15 Sep 2014 00:44:11 -0700 (PDT) In-Reply-To: <20140915051242.GA1175@tiny-r269739> References: <4D32ABC9-D0D0-48D2-98D3-FF1D72A4261E@gmail.com> <6.0.0.22.2.20140910111010.052bfb38@mail.computinginnovations.com> <20140914192419.GA1559@tiny-r269739> <20140915051242.GA1175@tiny-r269739> Date: Mon, 15 Sep 2014 00:44:11 -0700 Message-ID: Subject: Re: Using the ISO releases on USB sticks. From: Mehmet Erol Sanliturk To: Matthias Apitz , Mehmet Erol Sanliturk , FreeBSD Questions Mailing List Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.18-1 X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Sep 2014 07:44:12 -0000 On Sun, Sep 14, 2014 at 10:12 PM, Matthias Apitz wrote: > El d=C3=ADa Sunday, September 14, 2014 a las 01:55:44PM -0700, Mehmet Ero= l > Sanliturk escribi=C3=B3: > > > On Sun, Sep 14, 2014 at 12:24 PM, Matthias Apitz > wrote: > > > > > I always test new versions of FreeBSD on USB keys, right now while > > > typing I run a 11-CURRENT with KDE ... and mutt as MUA booted from an > USB > > > key, while the disk in the laptop has still an older FreeBSD. > > > > > > The procedure to creat a boot-able USB key is simple: > > > > > > - make a file system on it > > > - mount it to /mnt > > > - do 'make installkernel' and 'make installworld' with DESTDIR=3D/mnt > > > - enrich the file system in /mnt with some stuff (for example install > > > packages into it with 'chroot /mnt pkg install ...') > > > - unmount and reboot > > > > > > even better, if you do not use an USB key directly, but do all the > above > > > to a mdconfig file system (a file system in a normal plain file) and > > > copy later the result with dd(1) to the real USB key; > > > > > > let me know if you need a detailed procedure of it. > > > > > > > Dear Matthias , > > > > > > If you supply such an algorithm , me and other people may use it to > > generate boot-able USB sticks with some installed packages . > > > > Thank you very much . > > > > > > Mehmet Erol Sanliturk > > here it comes; comments are always welcome; > > matthias > > > $Id: buildingImage.txt,v 1.15 2014/08/15 17:39:21 guru Exp $ > > Building bootable FreeBSD/i386 USB keys > > > This small howto file describes how to build and enrich bootable USB keys= . > Some ideas are stolen from: > > http://bsdimp.blogspot.com/2007/10/building-bootable-freebsdi386-images.h= tml > > File operations, esp. of a large amount of small files, are very SLOW > on USB keys. That's why we use in general the following procedure: > > 1. dd(1) the complete /dev/da0 to a plain file, an image of the USB key; > 2. use mdconfig(8) to make a memory disk of this file and mount(8) it; > 3. do everything of the formatting and installation in this virtual disk; > 4. unmount(8) it and dd(1) it back to the USB key; > > here we go (use for /dev/da0 what your key is in /var/log/messages): > > check the size of your USB key with: > > # dd if=3D/dev/da0 of=3D/dev/null bs=3D8m > 1878+1 records in > 1878+1 records out > 15758000128 bytes transferred in 783.312179 secs (20117139 bytes/sec) > > note: this step is essential to define an image which later fits again to > the > real USB key; my "16 Gbyte" keys vary between 1868 and 1914 blocks of 8m > (which is ofc lesse than 16 GByte); that's why I decided to use always th= e > number 1860 for my keys of this "16 marketing GBytes". > > now we create an empty large disk file of this size 1860 blocks of 8m: > > # dd if=3D/dev/zero of=3Dda0.r269739 bs=3D8m count=3D1860 > > attach the file da0.r269739 as a memory disk: > > # mdconfig -a -t vnode -f da0.r269739 > md0 > > now we use the normal procedure to create a bootable UFS on /dev/md0: > > # fdisk -I md0 > # fdisk -B md0 > # bsdlabel -w md0s1 auto > # bsdlabel -B md0s1 > # bsdlabel -e md0s1 # edit the disk label and change partition "a" from > "unused" to "4.2BSD" > > build the file system: > > # newfs /dev/md0s1a > # mount /dev/md0s1a /mnt > > note: if your running host system is older than 20121201 (see > src/UPDATING) you > must add some new user if you try to install 'head': > > # pw useradd -n auditdistd -g audit -c "Auditdistd unprivileged user" -d > /var/empty -s /usr/sbin/nologin > > install the system from your host which must have been compiled > in /usr/src; if you compiled it in another place check for MAKEOBJDIRPREF= IX > below; > > # cd /usr/src > # make installworld DESTDIR=3D/mnt > # make installkernel DESTDIR=3D/mnt KERNCONF=3DGENERIC INSTALL_NODEBUG=3D= t > # make distrib-dirs DESTDIR=3D/mnt > # make distribution DESTDIR=3D/mnt > > the new system in /mnt needs some files to start: > > # echo /dev/da0s1a / ufs rw,noatime 1 1 > /mnt/etc/fstab > # cp /etc/wpa_supplicant.conf /mnt/etc > > # cat < /mnt/etc/rc.conf > tmpmfs=3D"YES" > tmpsize=3D"128m" > wlans_ath0=3D"wlan0" > ifconfig_wlan0=3D"WPA DHCP" > ifconfig_bge0=3D"DHCP" > hostname=3Dtiny-r269739 > sshd_enable=3D"YES" > moused_enable=3D"YES" > dbus_enable=3D"YES" > hald_enable=3D"YES" > vboxguest_enable=3D"YES" > vboxservice_enable=3D"YES" > keymap=3D"german.iso" > # powerd > powerd_enable=3D"YES" > powerd_flags=3D"-a max -b adp" > performance_cx_lowest_cx_lowest=3D"Cmax" > economy_cx_lowest=3D"Cmax" > EOF > > # cat < /mnt/boot/loader.conf > kern.cam.boot_delay=3D"10000" > kern.cam.scsi_delay=3D"3000" > hint.p4tcc.0.disabled=3D1 > hint.acpi_throttle.0.disabled=3D1 > EOF > > to use the above created USB key to install another system (the EeePC for > example, or the Acer) we need 'src' and 'obj' as well on the key: > > # cd /usr > # cp -Rp src /mnt/usr > # cp -Rp obj /mnt/usr > > but remove the SVN control files from the copied soure tree: > > # rm -rf /mnt/usr/src/.svn > > enrich the USB key with the prepared packages: > > # cd /usr/local/poudriere/data/packages/freebsd-head-ports-head/All > # cp -p * /mnt/PKGDIR > > o run later > > # cd /usr/local/poudriere/data/packages/freebsd-head-ports-head/All > # rsync -avz . /mnt/PKGDIR > > as well we need in 11-CURRENT now the new pkg(8) command; we compile > the old way ports-mgmt/pkg-devel and install only 'pkg-static' into > the /mnt system: > > # cd /usr/ports/ports-mgmt/pkg-devel > # make install > # chroot /mnt mkdir -p /usr/local/sbin > # cp -p /usr/local/sbin/pkg-static /mnt/usr/local/sbin > > let's see if this works: > > # chroot /mnt /usr/local/sbin/pkg-static help > > first we have to build the 'repo' from the directory of all > packages; we run: > > # chroot /mnt pkg-static repo /PKGDIR > Creating repository in /PKGDIR: 83% > ... > Packing files for repository: 100% > > the recent version of pkg(8) needs in any case the definition > of the respository; we create the myrepo.conf file as: > > # chroot /mnt mkdir -p /usr/local/etc/pkg/repos > # vim /mnt/usr/local/etc/pkg/repos/myrepo.conf > # cat /mnt/usr/local/etc/pkg/repos/myrepo.conf > > FreeBSD: { > url: "file:/PKGDIR", > enabled: true, > } > > now we are able to install any stuff (and its dependencies), here > as an example 'autoconf-2.69' and its dependencies: > > # chroot /mnt pkg-static -R /usr/local/etc/pkg/repos/ install > autoconf-2.69 > Updating repository catalogue > FreeBSD repository is up-to-date > All repositories are up-to-date > The following 5 packages will be affected (of 0 checked): > > New packages to be INSTALLED: > autoconf: 2.69 > indexinfo: 0.2 > perl5: 5.16.3_11 > m4: 1.4.17_1,1 > autoconf-wrapper: 20131203 > > The process will require 45 MB more space > 13 MB to be downloaded > > Proceed with this action [y/N]: y > Fetching autoconf-2.69.txz: 100% of 529 KB > Fetching indexinfo-0.2.txz: 100% of 6 KB > Fetching perl5-5.16.3_11.txz: 100% of 12 MB > Fetching m4-1.4.17_1,1.txz: 100% of 183 KB > Fetching autoconf-wrapper-20131203.txz: 100% of 4 KB > Checking integrity... done (0 conflicting) > [1/5] Installing indexinfo-0.2: 100% > [2/5] Installing perl5-5.16.3_11: 100% > [3/5] Installing m4-1.4.17_1,1: 100% > [4/5] Installing autoconf-wrapper-20131203: 100% > [5/5] Installing autoconf-2.69: 100% > > are they really there?: > > # chroot /mnt pkg-static info > autoconf-2.69 Automatically configure source code on man= y > Un*x platforms > autoconf-wrapper-20131203 Wrapper script for GNU autoconf > indexinfo-0.2 Utility to regenerate the GNU info page > index > m4-1.4.17_1,1 GNU m4 > perl5-5.16.3_11 Practical Extraction and Report Language > > later, when the system we building in /mnt is booted, we can use > pkg-static directly with the same repo, we do: > > # pkg-static -R /usr/local/etc/pkg/repos/ install foo-x.x > > copy some initial xorg.conf files to see what we can make use > of them later: > > # cp /etc/X11/xorg.* /mnt/etc/X11 > > add an unpriv user 'guru' (for beeing able to SSH-in): > > # chroot /mnt /usr/sbin/adduser > > and enrich its HOME with files to bringup KDE: > > # cp -p ~guru/.xinitrc /mnt/home/guru > # cp -p ~guru/.xserverrc /mnt/home/guru > > umount the key, detach the memory disk and copy the image back > with dd(1) to the USB device: > > # umount /mnt > # mdconfig -d -u md0 > # dd if=3Dda0.r269739 of=3D/dev/da0 bs=3D8m > > > soem more hints for special cases: > > If we have the real USB device locally, but the image on a laptop > without USB ports, one may use: > > # ssh -C root@10.49.8.36 dd of=3D/dev/da1 bs=3D8m < da0-r269739 > 0+823717 records in > 1868+0 records out > 15669919744 bytes transferred in 12135.626342 secs (1291233 bytes/sec) > # > (i.e. around 3h 17min) > > To write the image from the VM to Ubuntu's USB port: > > $ ssh -C 192.168.2.102 > $ sudo chmod 0666 /dev/sdb > $ ssh -C 192.168.2.102 dd of=3D/dev/sdb bs=3D8M < da0-r269739 > > MAKEOBJDIRPREFIX hints to compile in and install from some other places: > > If you want to build world and kernel out of SVN in 'src' and into 'obj', > but in > some other place as /usr/[src|obj], for example in > /home/guru/head/[src|obj] > use this procedure: > > # mkdir -p /home/guru/head/obj > # MAKEOBJDIRPREFIX=3D/home/guru/head/obj ; export MAKEOBJDIRPREFIX > # cd /home/guru/head > # svn checkout svn://svn.freebsd.org/base/head src > > # cd /home/guru/head/src > # make buildworld > # make buildkernel KERNCONF=3DGENERIC > ... > > if you have built the kernel and world in some other place as /usr/src: > > # MAKEOBJDIRPREFIX=3D/home/guru/head/obj ; export MAKEOBJDIRPREFIX > # cd /home/guru/head/src > # make installworld DESTDIR=3D/mnt > # make installkernel DESTDIR=3D/mnt KERNCONF=3DGENERIC INSTALL_NODEBUG=3D= t > # make distrib-dirs DESTDIR=3D/mnt > # make distribution DESTDIR=3D/mnt > ... > > to use the key to install other system, you must have 'src' and 'obj' > again in the correct places; do: > > # mkdir -p /mnt/usr/home/guru/head/ > # cd /mnt > # ln -s usr/home home > > # cd /home/guru/head/ > # cp -Rp src /mnt/home/guru/head/ # 40 mins > # cp -Rp obj /mnt/home/guru/head/ # 20 mins > > > -- > Matthias Apitz | /"\ ASCII Ribbon Campaign: > E-mail: guru@unixarea.de | \ / - No HTML/RTF in E-mail > WWW: http://www.unixarea.de/ | X - No proprietary attachments > phone: +49-170-4527211 | / \ - Respect for open standards > | en.wikipedia.org/wiki/ASCII_Ribbon_Campaig= n > Thank you very much . Mehmet Erol Sanliturk