Subject: Re: [alpine-devel] [PATCH] testing/next3-{grsec,vserver}: new aport

From: "Matt Smith" <[email-masked]>
Date: Tue, 28 Dec 2010 00:39:48 -0600 (CST)

On Wednesday, December 22, 2010 2:56am, "Natanael Copa" <[email-masked]> said:
> On Tue, 2010-12-21 at 21:05 -0600, Matt Smith wrote:
> 
> Please include the pkgdesc and url in commit message so you quickly can
> get info on what the new aport is about.
> 
> For example:
> http://git.alpinelinux.org/cgit/aports/commit/?id=7269013bc00062d01ca5bb2ad4fd55cf5bcd9887
> 
> This is not a show-stopper but is nice.

That's a good idea, thanks.

>> ---
>>  testing/next3-grsec/APKBUILD   |   86 ++++++++++++++++++++++++++++++++++++++++
>>  testing/next3-vserver/APKBUILD |   86 ++++++++++++++++++++++++++++++++++++++++
>>  2 files changed, 172 insertions(+), 0 deletions(-)
>>  create mode 100644 testing/next3-grsec/APKBUILD
>>  create mode 100644 testing/next3-vserver/APKBUILD
>>
>> diff --git a/testing/next3-grsec/APKBUILD b/testing/next3-grsec/APKBUILD
>> new file mode 100644
>> index 0000000..7f70088
>> --- /dev/null
>> +++ b/testing/next3-grsec/APKBUILD
>> @@ -0,0 +1,86 @@
>> +# Contributor: Matt Smith <[email-masked]>
>> +# Maintainer:  Matt Smith <[email-masked]>
>> +# Based off of aports/main/dahdi-linux-grsec/APKBUILD by Timo Teras
>> +
>> +_flavor=grsec
>> +
>> +# source the kernel version
>> +if [ -f ../../main/linux-${_flavor}/APKBUILD ]; then
>> +	. ../../main/linux-${_flavor}/APKBUILD
>> +fi
>> +
>> +_kernelver="$pkgver-r$pkgrel"
>> +_abi_release=${pkgver}-${_flavor}
>> +_kpkgrel=$pkgrel
>> +_realname=next3
>> +
>> +pkgname=${_realname}-${_flavor}
>> +pkgver=$pkgver
>> +# when changing _next3ver we *must* bump _mypkgrel
>> +_next3ver=1.0.13-rc6
>> +_mypkgrel=0
>> +pkgrel=$(( $_kpkgrel + $_mypkgrel ))
>> +pkgdesc="NEXT3(TM) is a flavor of the widely used Ext3 file system with built-in
>> support for snapshots."
>> +url="http://www.ctera.com/home/next3.html"
>> +arch="all"
>> +license="GPL"
>> +depends="linux-${_flavor}=${_kernelver}"
>> +makedepends="linux-${_flavor}-dev=${_kernelver} wget coreutils"
>> +install=
>> +subpackages="$pkgname-doc"
>> +source="http://downloads.sourceforge.net/${_realname}/${_realname}-${_next3ver}.tar.gz"
>> +
>> +_builddir="$srcdir"/${_realname}-${_next3ver}
>> +
>> +prepare() {
>> +	cd "$_builddir"
>> +
>> +	# modify the Makefile to use install from coreutils
>> +	sed -ri "s;(install -T);/bin/\1;" Makefile
> 
> when coreutils is installed, will it not automatically use coreutils'
> install? thats a bug in bb/coreutils then.

No, 'install --help' reports busybox, even when logging back in.  I'll file a
bug report, if not already done.

>> +	# modify the Makefile, add necessary options to mkfs.next3
>> +	# during make test (these are also necessary for normal use)
>> +	# See the CHANGELOG for Dec 13, 2010.
>> +	sed -ri "s;(mkfs.next3) (test.img);\1 -O exclude_inode,has_snapshot \2;"
>> Makefile
> 
> see below about 'make test'
> 
>> +	# modify the Makefile, change INSTALL_DIR
>> +	sed -ri
>> "s;^(INSTALL_DIR=).*$;\1"$pkgdir"/lib/modules/${_abi_release}/fs/next3;"
>> Makefile
> 
> can you do 'make install INSTALL_DIR=......' without modifying the
> Makefile?

Yeah, you're right.  I did have problems at first, but it's working now.  It
will be in my next update.

>> +
>> +	# modify the Makefile, update the depmod line to only run when root
>> +	# and run it against the $_abi_release kernel version
>> +	sed -ri "s;(/sbin/depmod -a);\[ \`id -u\` = 0 \] \&\& \1 ${_abi_release} || :;"
>> Makefile
> 
> How about patching the Makefile to something like:
> DEPMOD = /sbin/depmod
> ...
> $(DEPMOD) -a
> 
> and then do: 'make DEPMOD=:'
> 
> I suppose checking if run as root works too.
> 
> This should be fixed upstream btw...

Good point.  I'll see about notifying them about the necessary changes.

>> +
>> +	# modify the Makefile, remove the modprobe line
>> +	sed -ri "s;(/sbin/modprobe next3);;" Makefile
>> +
>> +	# modify the Makefile, update the install lines for 'make install'
>> +	sed -ri "s;(install) (.*) (/sbin);\1 -m755 \2 "$pkgdir"\3;" Makefile
>> +}
>> +
>> +build() {
>> +	cd "$_builddir"
>> +
>> +	# Build Next3
>> +	make KVERS="${_abi_release}" || return 1
>> +
>> +	# Test Next3
>> +	sudo make KVERS="${_abi_release}" test || return 1
> 
> this is a no-no. Do not ever run sudo from your APKBUILD. Do not ever
> touch anything outside the build dir itself.

Ok.  I think this would be more suitable for APTS.

>> +}
>> +
>> +package() {
>> +	cd "$_builddir"
>> +
>> +	# Install Next3 into $pkgdir
>> +	make KVERS="${_abi_release}" install || return 1
>> +}
>> +
>> +doc() {
>> +	cd "$_builddir"
>> +
>> +	mkdir -p "$subpkgdir"/usr/share/doc/next3/
>> +	for _doc in BUGS CHANGELOG COPYING HOWTO INDEX INSTALL README TODO; do
>> +		install -Dm644 $_doc "$subpkgdir"/usr/share/doc/next3/$_doc
>> +	done
>> +}
>> +
>> +md5sums="dacbc80fbeac6347b987fabbab62f22e  next3-1.0.13-rc6.tar.gz"
>> diff --git a/testing/next3-vserver/APKBUILD b/testing/next3-vserver/APKBUILD
> 
> The above applies to the next3-vserver too.
> 
> Can you fix the things I mentioned and send a new patch?
> 
> Thanks!
> 
> -nc

No problem.  I'll submit the patches soon.

By the way, what all would be necessary in order to convert the root ext3 part-
ition of an Alpine Linux system to Next3?  So far I have:

(These may be out of order; this is mostly from memory at the moment.)

- Added 'next3' to the 'features=' line of /etc/mkinitfs/mkinitfs.conf, eg:
    features="ata base bootchart cdrom cramfs ext2 ext3 ext4 next3 floppy raid scsi usb virtio"
- Created file /etc/mkinitfs/modules.d/next3 with content 'fs/next3'
- Create an initramfs, something like this:
    $ sudo mkinitfs -o /boot/initramfs-2.6.35.10-grsec-next3 2.6.35.10-grsec
    $ sudo rm /boot/initramfs-grsec
    $ sudo ln -s /boot/initramfs-2.6.35.10-grsec-next3 /boot/initramfs-grsec
- Created an ISO using alpine-iso and my locally-generated next3-grsec apk
- Rebooted my Alpine Linux development VM with the new ISO inserted.
- Mount root partition from the HDD and update it's /etc/fstab for Next3 on the
  root partition.
- Unmount root partition (umount /mnt) and convert HDD's root ext3 partition to
  Next3.
- Reboot without the ISO and it should boot up via the Next3 root partition.

But I have a problem:
It attempts to mount the root partition as ext3 which semi-fails, mounting it as
ext3/read-only, when it should be mounting it as next3/read-write.

From there, I've tried the following and variations of it:
# mount -t next3 -o remount,rw /dev/sda3 /

I forget the error messages, but this doesn't work either.

Any ideas what I'm doing wrong?

Thanks in advance,
Matt

---
Unsubscribe:  [email-masked]
Help:         [email-masked]
---

---

From: Natanael Copa <[email-masked]>
Date: Thu, 30 Dec 2010 20:41:30 +0000

On Tue, 28 Dec 2010 00:39:48 -0600 (CST)
"Matt Smith" <[email-masked]> wrote:
...
> - Added 'next3' to the 'features=' line
> of /etc/mkinitfs/mkinitfs.conf, eg: features="ata base bootchart
> cdrom cramfs ext2 ext3 ext4 next3 floppy raid scsi usb virtio"
...
> But I have a problem:
> It attempts to mount the root partition as ext3 which semi-fails,
> mounting it as ext3/read-only, when it should be mounting it as
> next3/read-write.
> 

sorry late answer. try remove ext[2-4] from /etc/mkinifs/mkinitfs.conf
and regenerate the initramfs image.

I suspect kernel mounts with first best matching filesystem which
happens to be ext3. If next3 is the only it might pick the correct one.

btw, i have some fixes for initramfs-init comming up for running root on
lvm on (software) raid. (my desktop does that now)

-nc

---

---

From: "Matt Smith" <[email-masked]>
Date: Thu, 30 Dec 2010 15:22:18 -0600 (CST)

> happens to be ext3. If next3 is the only it might pick the correct one.

I get what you're saying, but because my /boot partition is so small, the next3
tools won't convert it to next3, meaning I'd have to keep ext3 support.
Although, I suppose I could convert my /boot to ext2 and then include only ext2
and next3.  That might work.

> lvm on (software) raid. (my desktop does that now)

Ok, I'll try removing ext[3-4] soon and see what happens.

Thanks,
Matt

---