Software development and technology notes, mostly about things I encounter that seem worth documenting for future reference by me or others.
Friday, November 27, 2020
re-installing MacOS on macbook with bad OS install
We had a laptop that was in a bad state after a failed OS upgrade. It was trying to autoboot to the installer, but the installer claimed that the macbook didn't support that OS version. After looking up the valid latest OS version for the macbook, I followed the instructions in this macworld article to load a MacOS installer on a thumb drive and install MacOS on the broken macbook. I chose to format (erase) the hard drive using disk utility before installing MacOS.
Friday, April 24, 2020
merge latest from main git repo to my fork
This works better than a web-gui initiated pull request when there are conflicts that must be resolved manually. From this link:
# First add the upstream remote:
git remote add upstream https://repoA
git fetch upstream
# Merge in upstream changes:
git checkout master
git merge upstream/master
# Resolve conflicts and push:
git push origin master
# Your pull request should automatically update
Monday, April 6, 2020
skypeforlinux fails to run due to wrong version of libstdc++
Once again skypeforlinux fails to run, this seems to be a weekly occurrence for me. Not sure why it's so fragile. Usually it's due to the permissions problem that I documented a couple of months ago. This time, it's not finding the correct version of libstdc++. I updated the OS and installed anaconda last week, so I'm guessing it's due to one of those actions.
The error message looked like this:
I found this link, and followed some instructions about using the libstdc++ installed under anaconda in the /usr/lib64 directory. Here is a summary of the steps:
The error message looked like this:
$ /usr/share/skypeforlinux/skypeforlinux
A JavaScript error occurred in the main process
Uncaught Exception:
Error: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /usr/share/skypeforlinux/resources/app.asar.unpacked/node_modules/electron-utility/build/Release/electron_utility.node)
at process.func (electron/js2c/asar.js:140:31)
at process.func [as dlopen] (electron/js2c/asar.js:140:31)
at Object.Module._extensions..node (internal/modules/cjs/loader.js:922:18)
at Object.func (electron/js2c/asar.js:140:31)
at Object.func [as .node] (electron/js2c/asar.js:149:18)
at Module.load (internal/modules/cjs/loader.js:735:32)
at Module._load (internal/modules/cjs/loader.js:648:12)
at Module._load (electron/js2c/asar.js:717:26)
at Function.Module._load (electron/js2c/asar.js:717:26)
at Module.require (internal/modules/cjs/loader.js:775:19)
I found this link, and followed some instructions about using the libstdc++ installed under anaconda in the /usr/lib64 directory. Here is a summary of the steps:
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX # to see the version of libstdc++ in your lib directory
sudo yum install libstdc++ # does nothing, yum says the package is up to date
sudo find / -name "libstdc++.so.6*" # find other installations of libstdc++, including anaconda
sudo cp /home/craig/anaconda3/lib/libstdc++.so.6.0.26 /usr/lib64/ # install libstdc++ from anaconda pkg to lib directory
sudo sudo mv /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.bkp # make a backup of existing lib
sudo ln -s /usr/lib64/libstdc++.so.6.0.26 /usr/lib64/libstdc++.so.6 # make symlink for new lib
Friday, April 3, 2020
growing virtualbox guest centos7 linux VM on windows 10 host
Here's another thing that was a whole lot harder than it seems like it should have been. I found several threads/links that were ALMOST everything I needed to know, but missing a couple of important details that probably weren't relevant to the author's situation so not in their process.
This link is very helpful (and this one) and basically describes the correct process.
The details that were missing from the first link were:
1. modifyhd must be done for each snapshot in the VM, not just the main vdi itself (see this link):
To list all the virtualbox drives, use "c:\Program Files\Oracle\VirtualBox>VBoxmanage list hdds". Then for each one associated with the vm you are growing, use modifyhd: "c:\Program Files\Oracle\VirtualBox>VBoxmanage modifyhd "C:\Users\auto\VirtualBox VMs\craigmcc APS dev\Snapshots\{4841ac14-4e09-4b0b-aa54-9665bb1bd4b3}.vdi" --resize 50000". So in my case I used modifyhd 5 times:
c:\Program Files\Oracle\VirtualBox>VBoxmanage modifyhd "C:\Users\auto\VirtualBox VMs\craigmcc APS dev\craigmcc APS dev 20200306 1620-disk001.vdi" --resize 50000
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
c:\Program Files\Oracle\VirtualBox>VBoxmanage modifyhd "C:\Users\auto\VirtualBox VMs\craigmcc APS dev\Snapshots\{97e89522-0465-4f68-bfa9-ca33d790a379}.vdi" --resize 50000
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
c:\Program Files\Oracle\VirtualBox>VBoxmanage modifyhd "C:\Users\auto\VirtualBox VMs\craigmcc APS dev\Snapshots\{9eb0ae2e-6b3a-41ba-a212-3c27410d8dbf}.vdi" --resize 50000
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
c:\Program Files\Oracle\VirtualBox>VBoxmanage modifyhd "C:\Users\auto\VirtualBox VMs\craigmcc APS dev\Snapshots\{6b89d87f-f0d2-4a10-a64a-0b22fdde66de}.vdi" --resize 50000
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
c:\Program Files\Oracle\VirtualBox>VBoxmanage modifyhd "C:\Users\auto\VirtualBox VMs\craigmcc APS dev\Snapshots\{4841ac14-4e09-4b0b-aa54-9665bb1bd4b3}.vdi" --resize 50000
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
2. after using "lvextend" you must use "xfs_growfs" to make the space available (this is mentioned in the 2nd link above, but not the first.
After running lvextend, "lsblk" output looked correct, but "df -h" did not show the newly available space. I fixed this by running "sudo xfs_growfs /dev/mapper/centos-root". Now df shows the correct output.
So in a nutshell here are the steps:
1. make the disk partition larger, I used the command line tools shown above whereas the first link does so in vbox manager. "df" doesn't show the available space at this point, unlike the example in the first link above where df does show the space. But gparted does see it...
2. download gparted .iso file
3. mount the .iso file under the vm's storage tab on settings under IDE controller, make sure on system tab that optical is before hard disk in boot order
4. start the vm and run gparted, add the unallocated space to the partition you want to grow (in my case where / is mounted)
5. i had to follow the special LVM instructions in the first link, so in gparted you must "deactivate" the partition with the lock icon before growing it
6. unmount optical disk for gparted and reboot vm
7. display physical volumns with "sudo pvs", should show new free space
8. grow the physical volume with "sudo pvresize /dev/sda2"
9. "lsblk" still shows that the root partition is not using the entire available free space
10. run "sudo lvextend -l +100%FREE /dev/centos/root" to use the entire free space for the logical volume
11. run "sudo xfs_growfs /dev/mapper/centos-root" to grow the logical volume while mounted
This link is very helpful (and this one) and basically describes the correct process.
The details that were missing from the first link were:
1. modifyhd must be done for each snapshot in the VM, not just the main vdi itself (see this link):
To list all the virtualbox drives, use "c:\Program Files\Oracle\VirtualBox>VBoxmanage list hdds". Then for each one associated with the vm you are growing, use modifyhd: "c:\Program Files\Oracle\VirtualBox>VBoxmanage modifyhd "C:\Users\auto\VirtualBox VMs\craigmcc APS dev\Snapshots\{4841ac14-4e09-4b0b-aa54-9665bb1bd4b3}.vdi" --resize 50000". So in my case I used modifyhd 5 times:
c:\Program Files\Oracle\VirtualBox>VBoxmanage modifyhd "C:\Users\auto\VirtualBox VMs\craigmcc APS dev\craigmcc APS dev 20200306 1620-disk001.vdi" --resize 50000
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
c:\Program Files\Oracle\VirtualBox>VBoxmanage modifyhd "C:\Users\auto\VirtualBox VMs\craigmcc APS dev\Snapshots\{97e89522-0465-4f68-bfa9-ca33d790a379}.vdi" --resize 50000
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
c:\Program Files\Oracle\VirtualBox>VBoxmanage modifyhd "C:\Users\auto\VirtualBox VMs\craigmcc APS dev\Snapshots\{9eb0ae2e-6b3a-41ba-a212-3c27410d8dbf}.vdi" --resize 50000
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
c:\Program Files\Oracle\VirtualBox>VBoxmanage modifyhd "C:\Users\auto\VirtualBox VMs\craigmcc APS dev\Snapshots\{6b89d87f-f0d2-4a10-a64a-0b22fdde66de}.vdi" --resize 50000
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
c:\Program Files\Oracle\VirtualBox>VBoxmanage modifyhd "C:\Users\auto\VirtualBox VMs\craigmcc APS dev\Snapshots\{4841ac14-4e09-4b0b-aa54-9665bb1bd4b3}.vdi" --resize 50000
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
2. after using "lvextend" you must use "xfs_growfs" to make the space available (this is mentioned in the 2nd link above, but not the first.
After running lvextend, "lsblk" output looked correct, but "df -h" did not show the newly available space. I fixed this by running "sudo xfs_growfs /dev/mapper/centos-root". Now df shows the correct output.
So in a nutshell here are the steps:
1. make the disk partition larger, I used the command line tools shown above whereas the first link does so in vbox manager. "df" doesn't show the available space at this point, unlike the example in the first link above where df does show the space. But gparted does see it...
2. download gparted .iso file
3. mount the .iso file under the vm's storage tab on settings under IDE controller, make sure on system tab that optical is before hard disk in boot order
4. start the vm and run gparted, add the unallocated space to the partition you want to grow (in my case where / is mounted)
5. i had to follow the special LVM instructions in the first link, so in gparted you must "deactivate" the partition with the lock icon before growing it
6. unmount optical disk for gparted and reboot vm
7. display physical volumns with "sudo pvs", should show new free space
8. grow the physical volume with "sudo pvresize /dev/sda2"
9. "lsblk" still shows that the root partition is not using the entire available free space
10. run "sudo lvextend -l +100%FREE /dev/centos/root" to use the entire free space for the logical volume
11. run "sudo xfs_growfs /dev/mapper/centos-root" to grow the logical volume while mounted
Thursday, April 2, 2020
centos7 linux laptop can't connect to public wifi portals
It's not always the case, but sometimes/often I can't connect to public wifi portals from my linux laptop that open a login page automatically. The page is never displayed, and I get no internet service (though there is a wifi connection and network setup). This always happens on American Airlines and Delta flights, which is nice.
I did some research and found a couple of threads suggesting that I need to configure the NetworkManager service, and it will open the login page on the captive wifi portal. I found another link on the matter, with details about how to edit the config file. I basically did what it says, though I called the file /etc/NetworkManager/conf.d/20-connectivity-centos.conf. Supposedly this is read by the NetworkManager daemon at startup.
I restarted the daemon using these instructions, since the ones in the ubuntu threads don't work for me. I used "sudo systemctl restart NetworkManager".
I did some research and found a couple of threads suggesting that I need to configure the NetworkManager service, and it will open the login page on the captive wifi portal. I found another link on the matter, with details about how to edit the config file. I basically did what it says, though I called the file /etc/NetworkManager/conf.d/20-connectivity-centos.conf. Supposedly this is read by the NetworkManager daemon at startup.
I restarted the daemon using these instructions, since the ones in the ubuntu threads don't work for me. I used "sudo systemctl restart NetworkManager".
Monday, March 2, 2020
virtualbox VM on centos 7 guest won't connect to network
Here's another one that I don't really understand. After working fine all last week with use all day every day, my virtualbox VM running on centos 7 guest and windows 10 host would not connect to the network. I rebooted my entire network, the guest and the host, but the problem remained. I easily found a solution with a google search, but I'm not entirely sure why it's necessary or why things worked fine last week without it. Here is the thread containing the fix, and in the end I just added the following lines to the guest file /etc/sysconfig/network-scripts/ifcfg-enp0s3:
I restarted the guest VM, and then everything works fine.
The two DNS entries are for the Google Public DNS system. I don't know why I didn't need them last week, or why ONBOOT (which was previously set to no wasn't a problem either...
DNS1=8.8.8.8
DNS2=8.8.4.4
# Note this was set to no
ONBOOT=yes
I restarted the guest VM, and then everything works fine.
The two DNS entries are for the Google Public DNS system. I don't know why I didn't need them last week, or why ONBOOT (which was previously set to no wasn't a problem either...
Friday, February 28, 2020
installing cisco anyconnect on centos 7 linux
I struggle every time I have to install cisco anyconnect vpn client on linux because you can't really download it unless you have a support contract. Since I'm a contractor, I need the program to communicate with multiple clients' networks. I'm sure I could track it down at one of my clients, but in a pinch I can usually find it to download from a university. Here are a couple of relevant excerpts about download and installation, copied in case the corresponding web page disappears.
===== (from UCI link)
Installing the VPN Client
Download the Anyconnect VPN client.
From the Terminal, navigate to the Downloads folder and unzip the file by typing [tar xzvf anyconnect-xxx.tar.gz]
NOTE: The *actual* file name will contain the name of the current version of the installer (e.g. anyconnect-linux64-4.5.03040-predeploy-k9.tar.gz)
A folder with the same name as the file will appear in the current directory. Open the folder and then go to the vpn directory, and once you are there type [./vpn_install.sh]
The VPN client will be installed on your system and the vpnagentd process will be started. This process will be started each time your system is booted.
NOTE: Ubuntu/Debian users should run this command to download a dependency for the VPN UI: [sudo apt-get install libpangox-1.0-0]
Starting the VPN Client
To start the client from the terminal, type [/opt/cisco/anyconnect/bin/vpnui]. Note: if you are not running a GUI, you can enter interactive mode by entering[/opt/cisco/anyconnect/bin/vpn]
NOTE: If you are using a desktop environment, you should be able to find the client in one of your menus as well (e.g. in a RHEL environment, look in Applications -> Internet).
In the “Connect to:” box, type vpn.uci.edu and press Return on your keyboard. Note: in interactive mode type [connect vpn.uci.edu]
In the “Group” menu that will appear, select the tunnel you wish to use, usually “UCI” or “UCIFull”. (See the differences in the Tunnels below.)
Enter your UCInetID and password in the appropriate boxes and click “Connect”.
You should get a banner box. When you do, click “Accept” and you are now connected.
=====
other links:
UA link
gatech link
===== (from UCI link)
Installing the VPN Client
Download the Anyconnect VPN client.
From the Terminal, navigate to the Downloads folder and unzip the file by typing [tar xzvf anyconnect-xxx.tar.gz]
NOTE: The *actual* file name will contain the name of the current version of the installer (e.g. anyconnect-linux64-4.5.03040-predeploy-k9.tar.gz)
A folder with the same name as the file will appear in the current directory. Open the folder and then go to the vpn directory, and once you are there type [./vpn_install.sh]
The VPN client will be installed on your system and the vpnagentd process will be started. This process will be started each time your system is booted.
NOTE: Ubuntu/Debian users should run this command to download a dependency for the VPN UI: [sudo apt-get install libpangox-1.0-0]
Starting the VPN Client
To start the client from the terminal, type [/opt/cisco/anyconnect/bin/vpnui]. Note: if you are not running a GUI, you can enter interactive mode by entering[/opt/cisco/anyconnect/bin/vpn]
NOTE: If you are using a desktop environment, you should be able to find the client in one of your menus as well (e.g. in a RHEL environment, look in Applications -> Internet).
In the “Connect to:” box, type vpn.uci.edu and press Return on your keyboard. Note: in interactive mode type [connect vpn.uci.edu]
In the “Group” menu that will appear, select the tunnel you wish to use, usually “UCI” or “UCIFull”. (See the differences in the Tunnels below.)
Enter your UCInetID and password in the appropriate boxes and click “Connect”.
You should get a banner box. When you do, click “Accept” and you are now connected.
=====
other links:
UA link
gatech link
Monday, February 3, 2020
skype quit working on centos7 laptop
Not sure how it happened, but skype had been working well for weeks, but suddenly the program would no longer start. When I tried to run from the applications menu, I would just get a spinning wheel. Also running /usr/bin/skypeforlinux would fail but with no output. Oddly, /usr/bin/skypeforlinux is not a link, but the program is under /usr/share/skypeforlinux/skypeforlinux. When I ran that executable from the command line, I received an error message like this:
So I checked that it was owned by root, but the permissions were not correct so I used chmod to change to 4755, and now the program runs. I'm not sure what is the difference between /usr/bin/skypeforlinux and /usr/share/skypeforlinux/skypeforlinux, e.g., the latter gave an error message while the former failed silently. But now that the program is working, they both open the skype GUI. Strange.
[28370:0203/134512.756947:FATAL:setuid_sandbox_host.cc(157)] The SUID sandbox helper binary was found, but is not configured correctly. Rather than run without sandboxing I'm aborting now. You need to make sure that /usr/share/skypeforlinux/chrome-sandbox is owned by root and has mode 4755.
So I checked that it was owned by root, but the permissions were not correct so I used chmod to change to 4755, and now the program runs. I'm not sure what is the difference between /usr/bin/skypeforlinux and /usr/share/skypeforlinux/skypeforlinux, e.g., the latter gave an error message while the former failed silently. But now that the program is working, they both open the skype GUI. Strange.
Subscribe to:
Posts (Atom)