During the upgrade from Debian Squeeze to Debian Wheezy you will be warned about the move (on linux-base package) from the cciss driver to the new hpsa: “Some HP Smart Array controllers are now handled by the new ‘hpsa’ driver, rather than the ‘cciss’ driver”.
Welcome hpsa! cciss really sucks!!!
Recently there have been problems with a mysql server (Smart Array P410) which reported the following error messages:
INFO: task mysqld:8009 blocked for more than 120 seconds.
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Sometimes the server became very unstable due to this kind of blocks (problem partially solved by moving to the deadline io scheduler).
The problem with mysql blocks was solved by a Debian upgrade (moving to hpsa).
If you use cciss on your servers upgrade to hpsa as soon as possible!
hpsa offers better performance and (good news) it’s stable! 😉
This is a fast&furious how-to about installing Debian on a MacBook Pro Retina 15″ bought on January, 2014¹.
Please note that this how-to may become outdated: last update happened on 16 April, 2014.
Please note that this how-to involves dangerous operations: if you choose to follow this how-to your car may burn, your cat may rape your sister and you may buy a windows phone… no warranty!
I choose to install Debian Jessie 8.0 because:
- it offers better support to the MBP Retina recent hardware
- it isn’t actually the stable release but it is pretty stable
- Jessie will be freezed on November 5 (“Remember, remember, the fifth of November!”) and will become the next stable release in about a year (May 2015)
Installing Debian on MacBook Pro Retina:
- download the Debian Jessie testing image (http://cdimage.debian.org/cdimage/weekly-builds/amd64/iso-dvd/) and create a bootable USB (dd if=debian-testing-amd64-DVD-1.iso of=/dev/sdX)
- boot your macbook pro holding down command+R
- use the disk utility, select the disk on the left panel (for example “251GB APPLE SSD”)
- on the partition scheme resize the “Macintosh HD” partition, drag the bottom right edge of the partition scheme up unless you have enought space for Debian (I’ve reserved only 50 GB to MacOSX because I really don’t use it), apply
- insert the Debian USB, reboot and hold down the options key (aka alt), remember to connect the LAN adapter before boot to Debian installer (hotplug wont work and wifi needs a non-free firmware), use tg3 as kernel module for ethernet adapter if requested
- select the EFI Boot relative to your Debian USB key and continue with the Debian installer (please note that I’ve selected XFCE on advanced options as Desktop Environment)
- when the installer arrives at the partitioning step select to proceed manually
- you can create the common partitions (boot, swap, root) but I suggest to setup an encrypted system²
- complete the install and reboot, you can’t boot Debian at this point, boot MacOS and go further…
- download the rEFInd USB bootable version (http://www.rodsbooks.com/refind/) and create a bootable USB
- insert the rEFInd USB, reboot and hold down the options key (aka alt)
- select the EFI Boot relative to your rEFInd USB key, rEFInd should permit to you to boot your Debian
- if you can boot your Debian by the rEFInd USB key just return to MacOS and install rEFInd permanently (it’s easy and a good tutorial is available on its website)
Complete the installation:
- update your apt sources.list to include the non-free packages
- install additional packages³: apt-get install firmware-linux-nonfree broadcom-sta-dkms
- reboot to use wifi and lan adapter
- to avoid random controller freeze you need to set a particular kernel boot option, edit /etc/default/grub and add the option libata.force=noncq (es. GRUB_CMDLINE_LINUX_DEFAULT=”quiet libata.force=noncq”) then reboot your system
Please note that the Intel video card works flawlessly, the Retina display is simply awasome but… but you need to adapt your desktop environment to use it on an high (very high) resolution (2880×1800),
stay tuned, I will post about XFCE optimization for high DPI display as soon as I can! actually after some time spent to try to adapt XFCE on high resolution I’ve choose anyway to reduce the resolution to 1920×1200 mainly because most of the websites are not ready for high resolutions (low res design). This is not an XFCE fault, XFCE works well with high resolution4.
Please note that if you make use of kvm virtual machines you can be really disappointed about poor performance (install system base of Debian may take hours): don’t worry, you have to use the ext4 mount options nobarrier or barrier=0. If your vm is already installed simply update its /etc/fstab configuration. It’s a little more difficult to apply barrier=0 during installation:
- start Debian installer on the virtual machine and go further
- when the filesystem is ready (aka when the installation of base system starts) use CTRL+ALT+2 combo to move on the kvm console
- type sendkey ctrl-alt-f2 to move on another terminal of the vm
- use CTRL+ALT+F1 to comeback on the vm and press enter to start activate the command line
- execute the command mount -o remount,barrier=0 /target to disable the ext4 barrier feature
- use CTRL+ALT+F2 combo to return on the kvm console
- type sendkey ctrl-alt-f1 to return on the usual installation wizard of the vm
- use CTRL+ALT+F1 to comeback on the vm and complete the installation
If you want to use an external monitor no problem, just apply your custom setup with the xrandr command, for example:
xrandr --output DP1 --mode 1920x1080 --output eDP1 --mode 1920x1200 --below DP1
Run xrandr without arguments to list your screen(s), their names and their available modes.
2014-03-21 added libata.force=noncq custom kernel option
2014-03-21 added some info about my challenge to use XFCE on Retina
2014-03-21 added some note about problems about KVM virtual machines
2014-04-13 added some info about the use of an external monitor
2014-04-16 fixed some typos and fixed last update date
¹lspci of the MacBook Pro Retina 15″ used to produce this tutorial:
00:00.0 Host bridge: Intel Corporation Crystal Well DRAM Controller (rev 08) 00:01.0 PCI bridge: Intel Corporation Crystal Well PCI Express x16 Controller (rev 08) 00:02.0 VGA compatible controller: Intel Corporation Crystal Well Integrated Graphics Controller (rev 08) 00:03.0 Audio device: Intel Corporation Crystal Well HD Audio Controller (rev 08) 00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 05) 00:16.0 Communication controller: Intel Corporation 8 Series/C220 Series Chipset Family MEI Controller #1 (rev 04) 00:1b.0 Audio device: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller (rev 05) 00:1c.0 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #1 (rev d5) 00:1c.2 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #3 (rev d5) 00:1c.3 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #4 (rev d5) 00:1c.4 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #5 (rev d5) 00:1f.0 ISA bridge: Intel Corporation HM87 Express LPC Controller (rev 05) 00:1f.3 SMBus: Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller (rev 05) 02:00.0 Network controller: Broadcom Corporation BCM4360 802.11ac Wireless Network Adapter (rev 03) 03:00.0 Multimedia controller: Broadcom Corporation Device 1570 04:00.0 SATA controller: Samsung Electronics Co Ltd Apple PCIe SSD (rev 01) 05:00.0 PCI bridge: Intel Corporation Device 156d 06:00.0 PCI bridge: Intel Corporation Device 156d 06:03.0 PCI bridge: Intel Corporation Device 156d 06:04.0 PCI bridge: Intel Corporation Device 156d 06:05.0 PCI bridge: Intel Corporation Device 156d 06:06.0 PCI bridge: Intel Corporation Device 156d 07:00.0 System peripheral: Intel Corporation Device 156c 08:00.0 PCI bridge: Intel Corporation DSL3510 Thunderbolt Controller [Cactus Ridge] 09:00.0 PCI bridge: Intel Corporation DSL3510 Thunderbolt Controller [Cactus Ridge] 0a:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM57762 Gigabit Ethernet PCIe
²create an encrypted system
- create a small ext4 boot partition (1G)
- create an encrypted partition in the remaining space
- create an LVM group in the encrypted partition
- create two logical LVM partitions: the swap partition (double the size of your RAM), the root ext4 partition
³firmware package includes tg3 and broadcom package build the wl module needed for the wifi card
4you need to properly set the XFCE dpi option and you need to rebuild the composer theme because it uses raw images to compose its windows (download source package xfwm4-themes, edit the theme makefile and do some imagemagick tricks, feel free to ask if you are interested)
Debian Wheezy 7.0 works flawlessly on the HP255 laptop.
Install Wheezy as usual then:
- add wheezy-backports to your APT sources, add this line
deb http://YOURMIRROR.debian.org/debian wheezy-backports main
to your /etc/apt/sources.list (or add a new file with the “.list” extension to /etc/apt/sources.list.d/), replace YOURMIRROR with your preferred mirror name (or with “ftp” to use the main mirror)
- resynchronize the package index files from their sources (you need to be root)
# apt-get update
- install some updated firmwares from the backport mirror:
# apt-get -t wheezy-backports install firmware-realtek firmware-ralink
- install linux-image from backports, please note that you may need to change the package name to fit the latest version available and your specific arch (take a look at your current kernel name with uname-r and find available backports with apt-cache -t wheezy-backports linux-image):
# apt-get -t wheezy-backports install YOUR_LINUX_IMAGE_PACKAGE_NAME
for example replace YOUR_LINUX_IMAGE_PACKAGE_NAME with linux-image-3.12-0.bpo.1-686-pae
- install pulseaudio if it is not already installed:
# apt-get install pulseaudio
1. Install required packages
# apt-get install bridge-utils kvm
2. Create an empty kvm virtual machine image:
# kvm-img create vm.qcow2 -f qcow2 20G
3. Prepare a bridge so you can attach to it the net interface of your vm.
3a. Setup your eth0 interface to capture all the traffic:
# ifconfig eth0 promisc up
3b. Create the bridge interface:
# brctl addbr br0
3c. Put your eth0 interface in the bridge (so it captures all the wire traffic and sends it to all the others interfaces in the bridge and vice-versa):
# brctl addif br0 eth0
4. Restore your network connection by the br0 interface (optional)
4a. Bring up your bridge interface and give to it an address (so you can use it as your ip address):
# ifconfig br0 <your_ip> <your_netmask> up
4b. Remember to restore your default gateway:
# ip route add default via <gateway_ip>
5. Start your virtual machine (-boot d to install Debian from the ~/iso/debian.iso image, optional)
# kvm -hda vm.qcow2 -cdrom ~/iso/debian.iso -boot d -net nic,vlan=0 -net tap,vlan=0,ifname=tapvm
6. Add tap interface of vm to your bridge
# brctl addif br0 tapvm
7. Enable forwarding and tell to iptables to allow tapvm traffic to flow through your pc
# sysctl -w net.ipv4.ip_forward=1 # iptables -A FORWARD -m physdev --physdev-out tapvm -j ACCEPT # iptables -A FORWARD -m physdev --physdev-in tapvm -j ACCEPT
HP 620. It’s a great notebook for business. Hp620 is not the best about performance but it’s fast – really fast! with linux – and it’s ok with it’s easy and clean design. Its hardware is very good (almost everything is manufactured by Intel) and it’s cheap!
Above all, you can also buy it pre-installed with Linux (Suse Enterprise Desktop)!
If you want Debian just install Debian 6.0 (Squeeze) with Desktop System, Notebook and Basic System files.
After installation run these commands from shell (as root).
cd ~ mv /etc/apt/sources.list /etc/apt/sources.list.original touch /etc/apt/sources.list echo "deb http://ftp.it.debian.org/debian/ squeeze main contrib non-free" >> /etc/apt/sources.list echo "deb-src http://ftp.it.debian.org/debian/ squeeze main contrib non-free" >> /etc/apt/sources.list echo "deb http://ftp.it.debian.org/debian/ squeeze-updates main contrib non-free" >> /etc/apt/sources.list echo "deb-src http://ftp.it.debian.org/debian/ squeeze-updates main contrib non-free" >> /etc/apt/sources.list echo "deb http://security.debian.org/ squeeze/updates main contrib" >> /etc/apt/sources.list echo "deb-src http://security.debian.org/ squeeze/updates main contrib" >> /etc/apt/sources.list apt-get update apt-get install flashplugin-nonfree icedove icedove-l10n-it ntp wireless-tools apt-get --yes install linux-headers-2.6-686 build-essential module-assistant pulseaudio firmware-ralink m-a update && m-a prepare m-a a-i -t alsa-source echo "acpiphp" >> /etc/modules echo "ata_piix" >> /etc/modules echo "cfg80211" >> /etc/modules echo "iTCO_vendor_support" >> /etc/modules echo "iTCO_wdt" >> /etc/modules echo "pci_hotplug" >> /etc/modules echo "rt3090sta" >> /etc/modules echo "snd_mixer_oss" >> /etc/modules echo "snd_pcm_oss" >> /etc/modules echo "speedstep_lib" >> /etc/modules echo "tpm" >> /etc/modules echo "tpm_bios" >> /etc/modules echo "tpm_tis" >> /etc/modules echo "auto lo" > /etc/network/interfaces echo "iface lo inet loopback" >> /etc/network/interfaces echo "allow-hotplug eth0" >> /etc/network/interfaces
Now you have a perfect business laptop with browser (firefox/iceweasel), email client (thunderbird/icedove) and openoffice (and whatever you want to install).
All hardware now works very well without any problem.
apt-get dist-upgrade and… BOOM!!!
Configurazione di grub-pc (1.98~20100128-1)…
/usr/sbin/grub-probe: error: unknown filesystem.
Auto-detection of a filesystem module failed.
Please specify the module with the option `–modules’ explicitly.
Generating grub.cfg …
/usr/sbin/grub-probe: error: unknown filesystem.
dpkg: errore nell’elaborare grub-pc (–configure):
Bug Report and my solution, downgrade to 1.98~20100115-1:
apt-get install grub-common= grub-pc=1.98~20100115-1 grub2=1.98~20100115-1
Installation finished. No error reported.
Have a nice day!
If you want to downgrade rails (aka install an old version of rails) on debian first of all install rails gems. Execute next command as root:
apt-get install rubygems
Remove rails package of debian if it’s actually installed
apt-get remove rails
Now install rails by gems utility and force the right version. Example:
gem install -v=2.0.2 rails --include-dependencies
Now put gems bin folder on bash PATH. Edit /etc/bash.bashrc
Note: version of rubygems may be different, check your right PATH to gems bin folder
If all goes right now you can use your preferred rails version. Note, rails command from gems is little different between the script that debian package installs. Just check params: call rails command without params.
Usage: /var/lib/gems/1.8/bin/rails /path/to/your/app [options]
-r, --ruby=path Path to the Ruby binary of your choice (otherwise scripts use env, dispatchers current path).
-d, --database=name Preconfigure for selected database (options: mysql/oracle/postgresql/sqlite2/sqlite3).
-f, --freeze Freeze Rails in vendor/rails from the gems generating the skeleton
-v, --version Show the Rails version number and quit.
-h, --help Show this help message and quit.
-p, --pretend Run but do not make any changes.
--force Overwrite files that already exist.
-s, --skip Skip files that already exist.
-q, --quiet Suppress normal output.
-t, --backtrace Debugging: show backtrace on errors.
-c, --svn Modify files with subversion. (Note: svn must be in path)
That’s all folks! 🙂