Tiny Core Linux
Tiny Core Extensions => TCE Talk => Extension requests => Topic started by: xor on September 18, 2020, 09:17:37 AM
-
MultiLib32.tcz ( TCL12 x86_64-bit ! :)
In TCL12 x86_64-bit architecture, the 64-bit Lib folder structure should be named "Lib64" and optionally
MultiLib32.tcz (TCL12 x86_64-bit) I suggest creating the MultiLib32.dep file content.
In this way, no changes will occur in the existing TCL minimalist file size, and the optional MultiLib content will be added to the system in a minimalist way.
I strongly request that this be submitted to a committee commission vote in a democratic manner.
-
TCL isn't a democracy, and besides there is only one person complaining. Sorry, not sorry. If you want and/or need multilib, there are plenty of other distros that have it. You are also in no way restricted from forking TCL or just starting your own distro outright.
-
if there is no democracy here;
take me to your leader! :)
TCL isn't a democracy, and besides there is only one person complaining. Sorry, not sorry. If you want and/or need multilib, there are plenty of other distros that have it. You are also in no way restricted from forking TCL or just starting your own distro outright.
-
Looks like the words are crossing their limits...
Leader isn't a good word in forums like here. We are volunteers who contribute. We don't have a leader but we have admins who actually evaluate the work or help we do.
And one thing, multilib ends near soon. So even Steam or WINE needs to migrate to full 64-bit Distros. They are the main users of multilib. If they are gone, most of multilib users are gone.
-
This is a topic I've been interested in - and so I'm curious if you could share the background to your offering of:
And one thing, multilib ends near soon.
My asking is only intended to educate myself; not challenge this statement.
Thanks,
Lexi
-
Since you are interested in this, read this :
https://hackaday.com/2019/07/09/the-saga-of-32-bit-linux-why-going-64-bit-raises-concerns-over-multilib/
And some quotes that highlight my point are :
With (linux) developer’s eyes always on the horizon ahead of them, it should come as no surprise to find that support for older hardware or protocols occasionally falls to the wayside. When maintaining antiquated code monopolizes developer time, or even directly conflicts with new code, a difficult decision needs to be made.
Back in 2012 when Linus Torvalds officially ended kernel support for legacy 386 processors, he famously closed the commit message with “Good riddance.” Maintaining support for such old hardware had been complicating things...
... Arch Linux decided to drop support for 32-bit hardware entirely. Maintainers had noticed the drop-off in downloads for the 32-bit versions of their distributions and decided it didn’t make sense to keep producing them. In an era where even budget smartphones are shipping with 64-bit processors, many Linux distributions have at this point decided 32-bit CPUs weren’t worth their time.
... Ubuntu announcing last month(article was on July 9 2019) that they’d no longer be providing 32-bit versions of packages in their repository ...
... on the whole, Linux has no concept of “legacy” software.
... average Linux user in 2019 should rarely find themselves in a situation where they’re attempting to run a 32-bit binary on a 64-bit machine. This is in stark contrast with Windows users, who tend to get their software as pre-compiled binaries from the developer. If the developer hasn’t kept their software updated, then there’s a very real chance it will remain a 32-bit application forever.
For this reason, Windows will allow seamless integration of 32-bit software for many years to come. But for Linux, this capability is not nearly as important. Most distributions do provide the ability to run 32-bit binaries on a 64-bit installation through a concept known as multlib, but it’s not uncommon to find this capability disabled by default to reduce installation size(this is also disabled in TCL).
When WINE and Steam developers heard there was a possibility that Ubuntu would drop the 32-bit libraries their respective projects relied upon, both camps released statements saying that they would have to reevaluate their position on the distribution going forward.
See this : https://hackaday.com/wp-content/uploads/2019/06/linux32_steam.png
With the looming threat that WINE and Steam would no longer support their distribution, it only took a day or two for the Ubuntu developers to adjust their course. In a post to the https://ubuntu.com/blog/statement-on-32-bit-i386-packages-for-ubuntu-19-10-and-20-04-lts (https://ubuntu.com/blog/statement-on-32-bit-i386-packages-for-ubuntu-19-10-and-20-04-lts) official Ubuntu Blog, the developers make it clear that they never intended to completely disable the ability to run 32-bit “legacy” programs on future versions of Ubuntu. But more to the point, they promised to work closely with the teams behind WINE and Steam to make sure that any and all 32-bit libraries their software needs will remain part of the Ubuntu package repositories for the foreseeable future. For now, a crisis seems to have been averted.
But for how long?
.
-
FWIW, Google has not supplied pre-compiled chrome for 32-bit Linux for a while now. Microsoft SQL Server for Linux has always been 64-bit only, and Windows 10 is now 64-bit only for OEM's. The first AMD64's were sold in 2003. Any 32-bit x86 CPU in existence today was designed more than two decades ago. Time to move on.
-
Windows 10 is now 64-bit only for OEM's.
Unless something changed recently, "windows 10 64-bit" is actually multi-lib and therein lies the problem.
-
True, except that drivers have to be 64-bit which is how legacy hardware support gets dropped. MS is just not selling 32-bit Windows 10 to OEM's anymore. But what this whole multilib discussion boils down to is that Linux isn't like Windows for legacy software support, and that upsets some people. Too bad. If someone wants to run old Windows software, run Windows. Use the tool meant for the job you want to do.
-
Whilst there are no plans to make a multi-lib tinycore, here is how to do it based on CorePure64-11.x
Since the method overwrites existing extension symlinks with actual files, you will need 16gb ram. Once built, everything (binutils multi-lib, gcc multi-lib, glibc32 multi-arch) except the 64-bit glibc multi-arch could be made into an extension and thus use a lot less ram.
With reference to http://www.linuxfromscratch.org/~dj/lfs-systemd-multilib/chapter10/chapter10.html
tce-load -i compiletc texinfo python3.6 gettext coreutils
mkdir /opt/temptools
export PATH_HOLD="${PATH}"
export PATH="/opt/temptools/bin:${PATH}"
cd binutils-2.33.1
mkdir build
cd build
../configure --prefix=/opt/temptools --disable-nls --disable-static --disable-werror --enable-64-bit-bfd --enable-gold --with-ld=default --enable-multilib --target=x86_64-unknown-linux-gnu --with-sysroot=/opt/temptools --with-lib-path=/opt/temptools/lib:/opt/temptools/lib32:/opt/temptools/libx32
make -j3 [5m 0.67s]
make install
cd gcc-9.2.0
sed -e '/m64=/s/lib64/lib/' -e '/m32=/s/m32=.*/m32=..\/lib32$(call if_multiarch,:i386-linux-gnu)/' -i.orig gcc/config/i386/t-linux64
tar -xf ../mpfr-4.0.2.tar.xz
mv -v mpfr-4.0.2 mpfr
tar -xf ../gmp-6.1.2.tar.xz
mv -v gmp-6.1.2 gmp
tar -xf ../mpc-1.1.0.tar.gz
mv -v mpc-1.1.0 mpc
mkdir build
cd build
../configure --target=x86_64-unknown-linux-gnu --prefix=/opt/temptools --disable-nls --disable-shared --disable-decimal-float --disable-threads --disable-libatomic --disable-libgomp --disable-libmpx --disable-libquadmath --disable-libssp --disable-libvtv --disable-libstdcxx --enable-languages=c,c++ --with-glibc-version=2.11 --with-slibdir=/opt/temptools/lib --with-sysroot=/opt/temptools --with-newlib --without-headers --with-local-prefix=/opt/temptools --with-multilib-list=m32,m64,mx32 --with-native-system-header-dir=/opt/temptools/include
make -j3 [13m 57.25s]
make install
cd glibc-2.30
edit manual/libc.texinfo
remove @documentencoding UTF-8
patch -Np1 -i ../glibc-2.30-fhs-1.patch
mkdir build
cd build
BUILD_CC="gcc" BUILD_CXX=g++ CC="x86_64-unknown-linux-gnu-gcc -m32" CXX="x86_64-unknown-linux-gnu-g++ -m32" AR="x86_64-unknown-linux-gnu-ar" RANLIB="x86_64-unknown-linux-gnu-ranlib" ../configure --prefix=/usr --build=x86_64-unknown-linux-gnu --host=i686-pc-linux-gnu --enable-kernel=3.2 --enable-multi-arch --libdir=/usr/lib32 --with-headers=/usr/include --with-binutils=/opt/temptools/bin libc_cv_slibdir=/usr/lib32
make -j3 [4m 52.61s]
make install_root="${PWD}/DESTDIR" install
sudo install -vdm755 /usr/lib32
sudo cp -Rv DESTDIR/usr/lib32/* /usr/lib32
sudo install -vm644 DESTDIR/usr/include/gnu/lib-names-32.h /usr/include/gnu/
sudo install -vm644 DESTDIR/usr/include/gnu/stubs-32.h /usr/include/gnu/
sudo ln -svf ../usr/lib32/ld-linux.so.2 /lib/ld-linux.so.2
sudo ln -svf ../lib/locale /usr/lib32/locale
sudo echo "/usr/lib32" >> /etc/ld.so.conf
sudo ldconfig
export PATH="${PATH_HOLD}"
unset PATH_HOLD
sudo rm -r /opt/temptools
cd binutils-2.33.1 (multi-lib)
mkdir build
cd build
../configure --prefix=/usr/local --enable-gold --enable-ld=default --enable-multilib --enable-plugins --enable-shared --disable-werror --with-system-zlib --with-lib-path=/usr/lib:/lib:/usr/lib32:/usr/libx32:/usr/local/lib:/usr/local/lib32
make -j3 tooldir=/usr/local [5m 20.43s]
sudo make tooldir=/usr/local install
tce-load -i mpc-dev
cd gcc-9.2.0 (multi-lib)
sed -e '/m64=/s/lib64/lib/' -e '/m32=/s/m32=.*/m32=..\/lib32$(call if_multiarch,:i386-linux-gnu)/' -i.orig gcc/config/i386/t-linux64
edit gcc/config/i386/linux64.h
#define GLIBC_DYNAMIC_LINKER64 "/lib/ld-linux-x86-64.so.2"
mkdir build
cd build
../configure --prefix=/usr/local --enable-languages=c,c++ --enable-multilib --disable-bootstrap --with-system-zlib --libexecdir=/usr/local/lib --with-mpfr=/usr/local --with-gmp=/usr/local --with-mpc=/usr/local
make -j3 [20m 21.93s]
sudo make install
sudo install -vdm755 /usr/local/share/gdb/auto-load/usr/lib
sudo mv -v /usr/local/lib/*gdb.py /usr/local/share/gdb/auto-load/usr/lib
sudo install -vdm755 /usr/local/share/gdb/auto-load/usr/lib32
sudo mv -v /usr/local/lib32/*gdb.py /usr/local/share/gdb/auto-load/usr/lib32/
sudo echo "/usr/local/lib32" >> /etc/ld.so.conf
sudo ldconfig
cd glibc-2.30 multi-lib
edit manual/libc.texinfo
remove @documentencoding UTF-8
patch -Np1 -i ../glibc-2.30-fhs-1.patch
mkdir build64
cd build64
../configure --prefix=/usr --disable-werror --enable-multi-arch --enable-stack-protector=strong libc_cv_slibdir=/lib --libexecdir=/usr/lib/glibc --enable-kernel=4.19.10 --enable-obsolete-rpc
make -j3 [5m 9.07s]
sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile
sudo make install
sudo ldconfig
mkdir -v ../build32
cd ../build32
CC="gcc -m32" CXX="g++ -m32" ../configure --prefix=/usr --disable-werror --enable-multi-arch --enable-stack-protector=strong --libdir=/usr/lib32 libc_cv_slibdir=/usr/lib32 --libexecdir=/usr/lib32/glibc --enable-kernel=4.19.10 --enable-obsolete-rpc i686-pc-linux-gnu
make -j3 [5m 3.89s]
sudo make install_root=$PWD/DESTDIR install
sudo mv -v DESTDIR/usr/lib32/* /usr/lib32/
sudo install -vm644 DESTDIR/usr/include/gnu/lib-names-32.h /usr/include/gnu/
sudo install -vm644 DESTDIR/usr/include/gnu/stubs-32.h /usr/include/gnu/
ln -svf ../usr/lib32/ld-linux.so.2 /lib/ld-linux.so.2
ln -svf ../lib/locale /usr/lib32/locale
[supplementary 32-bit libs to test the toolchain]
cd zlib-1.2.11
CC="gcc -m32 -march=i486 -mtune=i686 -Os -pipe" ./configure --prefix=/usr --libdir=/usr/lib32
find . -name Makefile -type f -exec sed -i 's/-O3//g' {} \;
make [0m 3.89s]
make DESTDIR=$PWD/DESTDIR install
sudo cp -Rv DESTDIR/usr/lib32/* /usr/lib32
cd file-5.37
CC="gcc -m32 -march=i486 -mtune=i686 -Os -pipe" ./configure --prefix=/usr --libdir=/usr/lib32
find . -name Makefile -type f -exec sed -i 's/-g -O2//g' {} \;
make [0m 3.60s]
make DESTDIR=$PWD/DESTDIR install
sudo cp -Rv DESTDIR/usr/lib32/* /usr/lib32
cd bzip2-1.0.8
sed -i 's@\(ln -s -f \)$(PREFIX)/bin/@\1@' Makefile
find . -name Makefile-libbz2_so -type f -exec sed -i 's/-O2 -g//g' {} \;
make CC="gcc -m32 -march=i486 -mtune=i686 -Os -pipe" BIGFILES="" -f Makefile-libbz2_so
make clean
find . -name Makefile -type f -exec sed -i 's/-O2 -g//g' {} \;
make CC="gcc -m32 -march=i486 -mtune=i686 -Os -pipe" BIGFILES=""
make PREFIX=$PWD/DESTDIR/usr install
sudo cp -Rv DESTDIR/usr/lib/* /usr/lib32
sudo cp -av libbz2.so* /usr/lib32
cd ncurses-6.1
sed -i '/LIBTOOL_INSTALL/d' c++/Makefile.in
CC="gcc -m32 -march=i486 -mtune=i686 -Os -pipe" CXX="g++ -m32 -march=i486 -mtune=i686 -Os -pipe -fno-exceptions -fno-rtti" ./configure --prefix=/usr --libdir=/usr/lib32 --mandir=/usr/share/man --with-shared --without-debug --without-normal --enable-pc-files --enable-widec
find . -name Makefile -type f -exec sed -i 's/-O2//g' {} \;
make [0m 34.48s]
make DESTDIR=$PWD/DESTDIR install
sudo cp -Rv DESTDIR/usr/lib32/* /usr/lib32
cd attr-2.4.48
CC="gcc -m32 -march=i486 -mtune=i686 -Os -pipe" ./configure --prefix=/usr --disable-static --sysconfdir=/etc --libdir=/usr/lib32
find . -name Makefile -type f -exec sed -i 's/-g -O2//g' {} \;
make [0m 1.55s]
make DESTDIR=$PWD/DESTDIR install
sudo cp -Rv DESTDIR/usr/lib32/* /usr/lib32
tce-load -i attr-dev
cd acl-2.2.53
CC="gcc -m32 -march=i486 -mtune=i686 -Os -pipe" ./configure --prefix=/usr --libdir=/usr/lib32 --disable-static --libexecdir=/usr/lib32
find . -name Makefile -type f -exec sed -i 's/-g -O2//g' {} \;
make [0m 4.46s]
make DESTDIR=$PWD/DESTDIR install
sudo cp -Rv DESTDIR/usr/lib32/* /usr/lib32
cd libcap-2.25
sed -i '/install.*STALIBNAME/d' libcap/Makefile
find . -name Make.Rules -type f -exec sed -i 's/-O2//g' {} \;
make CC="gcc -m32 -march=i486 -mtune=i686 -Os -pipe" [0m 0.89s]
make lib=lib32 prefix=$PWD/DESTDIR/usr -C libcap install
sudo cp -Rv DESTDIR/usr/lib32/* /usr/lib32
cd xz-5.2.4
CC="gcc -m32 -march=i486 -mtune=i686 -Os -pipe" ./configure --prefix=/usr --disable-static --libdir=/usr/lib32
find . -name Makefile -type f -exec sed -i 's/-g -O2//g' {} \;
make [0m 10.18s]
make DESTDIR=$PWD/DESTDIR install
sudo cp -Rv DESTDIR/usr/lib32/* /usr/lib32
cd util-linux-2.34
add tty:x:4: to /etc/group
CC="gcc -m32 -march=i486 -mtune=i686 -Os -pipe" ./configure ADJTIME_PATH=/var/lib/hwclock/adjtime --docdir=/usr/share/doc/util-linux-2.32.1 --disable-chfn-chsh --disable-login --disable-nologin --disable-su --disable-setpriv --disable-runuser --disable-pylibmount --disable-static --without-python --without-systemd --libdir=/usr/lib32 --enable-libmount-force-mountinfo
find . -name Makefile -type f -exec sed -i 's/-g -O2//g' {} \;
make [1m 6.40s]
make DESTDIR=$PWD/DESTDIR install
sudo cp -Rv DESTDIR/usr/lib32/* /usr/lib32
-
thank you for feedback. :)
but I am using 4gb of ram. :(
-
If you compile on permanent storage, like an external usb drive, you might just manage - especially if you strip the binaries after installation.
-
Could you give some more technical information!?
If you compile on permanent storage, like an external usb drive, you might just manage - especially if you strip the binaries after installation.
-
Assuming you have an external usb hard drive with a partition formatted with a linux filesystem named sdb1.
Then: $ sudo mount /dev/sdb1
$ sudo mkdir -p /mnt/sdb1/usr/src
$ sudo chown tc:staff /mnt/sdb1/usr/src
$ cd /mnt/sdb1/usr/src
$ wget http://tinycorelinux.net/11.x/x86_64/release/src/toolchain/binutils-2.33.1.tar.xz
$ tar xf binutils-2.33.1.tar.xz
Then start at the beginning of the instructions given previously.
-
http://forum.tinycorelinux.net/index.php/topic,24562.msg155903.html#msg155903
I downloaded the multilib content with the dcore file prompt (haven't tried it yet) is there a solution like this!?
-
Multi-lib might work on dCore, but it will not work on CorePure64 without overwriting glibc with a multi-arch version as explained earlier in this thread.