BobbyQuineのブログ(備忘録)

Linux関係の備忘録、その他タバコ、Vape関連なんかも。

Gentoo Linux(TOUGH BOOK CF-18)にalsaを入れる

ども、BobbyQuineです。いやー、てこずりました。Gentooで音声を使いたい、ということでやってみたのですが1.5日ぐらいかかっちゃいました。とりあえず、Go!!

 

この記事を真似するなら自己責任で。

 

Kernelの設定

http://bobbyquine.hatenablog.com/entry/2018/02/28/143630

環境は上記URL参照。多分genkernel allでkernelをインストールした人はこのセクションを飛ばしてもいいと思います。

また、詳しくは下記のURLを参考のこと。個人的にハマった箇所について書いていきます。そして何より個人的に動いた設定を載せているだけなので必要ない箇所にチェック入れている場合や別に外さんでも良い箇所のチェックを外している場合があります。

https://wiki.gentoo.org/wiki/ALSA

 

 

# lspci | grep -i audio

 

でオーディオデバイスを検出。このときの僕の環境下での出力結果は

前略 Intel Corporation 中略 (ICH6 family) AC'97 後略

的な感じでした。

 

# cd /usr/src/linux

# make menuconfig

 

  Device Drivers  --->

            Sound Card Support   --->

                      Advanced Linux Sound Architecture  --->

                              PCI sound devices  --->

                                    該当するデバイス(先のlspci参照)のチェックボックスを<M>にする

    

                             Generic sound devices --->

                                    PC-Speaker supportはチェックボックスは外す。

                                    Dummyなんちゃらのチェックボックスは外す。

 

configをsaveしたらそのまま

 

# make && make modules_install

# make install

 

alsa-utilsのインストール

 

# vim /etc/portage/make.conf

USEフラグに "alsa" を追加

 

更新

 

# emerge --ask --changed-use --deep @world

 

alsa-utilsのインストール

 

# emerge --ask --verbose media-sound/alsa-utils

 

このとき自動でmedia-libs/alsa-libが入る。

 

その他設定

他のユーザーがスピーカーを使えるようにする。

 

# gpasswd -a username audio

 

alsasoundサービスの起動

 

# rc-service alsasound start

 

boot時に自動で起動するように設定

 

# rc-update add alsasound boot

 

とりあえず音が出るかの確認

 

# speaker-test -t sine -f 600

 

以上。かなり雑なほぼ個人用備忘録みたいな記事でしたが何かの役にたてば幸いです。

TOUGH BOOK CF-18 に繋いだUSBハードディスクにGentoo Linuxをインストールする。

ども、BobbyQuineです。今回はGentoo Linux。こいつを超強い(物理)なPC、TOUGH BOOK CF-18にインストールしてみました。ただし、仮に自分のパソコンでGentoo Linuxを使いたい、使ってみたいという方が訪れたのであれば悪いことは言いません、今すぐにGentoo公式インストールハンドブックに行ってください。僕のことですからどこかしら抜けている可能性もありますし、時代による移り変わりもあります。公式ハンドブックを見るに当たって、僕が今回インストールした時点では一部ページが日本語に翻訳されていない箇所があります。英語が不得意な方はgoogle翻訳さんにまるごとページを翻訳してもらったほうがぶっちゃけ楽です。

 

とりあえず今回も。やるなら自己責任でお願いします。

 

インストールディスクの作成

インストールするに当たって、まず母艦はPanasonic CF-S9 + Arch Linuxでやっていきます。

まずはここ↓↓からディスクイメージをダウンロード。今回、僕はX86のminimalCDでやっていく。

https://www.gentoo.org/downloads/

 

で、ダウンロードが終わったら適当なDVDrwを入れて

 

$ growisofs -dvd-compat -Z /dev/sr0=install-x86-minimal-20180221T214502Z.iso

 

まぁこの辺のツールの使い方はググってください。あとファイルの整合性調べておきたい人なんかは公式ページを確認のこと。

 

Live USBを作る場合

USBにLivediscイメージを焼き込む場合は

 

# sudo fdisk -l

で書き込み先のデバイスを確認。今回は/dev/sdb

 

# sudo dd if=imagename.iso of=/dev/sdb

 

LiveDiscの起動

今度はTOUGH BOOKにUSBDVDドライブ繋いでそいつにLiveDVDいれてBoot。このとき、ブート優先順位についてDVDを最優先にしておく。

起動途中にkeyboardの選択があるのでjp106である22番を入力してEnter。なお、こいつはしばらくほっとくとusキーボードのまま起動してコマンド待機するようになる。キーボード選択を逃してしまった方は慌てずに

 

# loadkeys jp106

 

でロードできる。で、毎度おなじみpingコマンドでネットに繋がっているか確認しておこう。なお、今回は有線でやっている。

 

パーティション分け

今回はこの前ジャンクを買ったときについてきた240GBHDDにインストールしていく。

boot、root、homeの3つのパーティションを作る。また、スワップ領域は作らない。

そしてGPTで作る。

 

# parted /dev/sda

(parted) mklabel msdos

(parted) mkpart primary ext4 2MiB 512MiB

(parted) mkpart primary ext4 512MiB 50GiB

(parted) mkpart primary ext4 50GiB 100%

 

このとき最初の2MB位を開けておく。

 

で、その後作ったすべてのパーティションext4でフォーマットする。

 

# mkfs.ext4 /dev/sda1

# mkfs.ext4 /dev/sda2

# mkfs.ext4 /dev/sda3

 

まぁ察されるとは思いますが、1が/boot、2が/、3が/home。

 

マウント

注意すべきなのはここでマウントポイントがArchのときと違い/mnt/gentooであること。

 

# mount /dev/sda2 /mnt/gentoo

 

時刻の確認&設定

公式ページの時刻関係を斜め読みした感じだとちゃんとあってないとうまく行かないことあるよ的なこと書いてあった気がしたので

 

時刻確認

# date

 

時刻設定

# date MMDDhhmmYYYY

 

なおこのとき自分の住んでいる国での時間ではなく、世界標準時かなんかで設定する(UTC).

 

stageballのダウンロードとインストール(展開)

ルートディレクトリ下にあるディレクトリ&ファイル郡を入れる作業。まず、ダウンロード元は公式には色々とミラーだとかなんだとか書いてあったのですが先程のISOをダウンロードしたページにstageball3のダウンロードボタンがあったのでそのリンクURLを用いた。なお、コレはある程度の期間で更新されるので自分でリンクされているファイルは確認してください。

 

# cd /mnt/gentoo

# wget http://distfiles.gentoo.org/releases/x86/autobuilds/20180221T214502Z/stage3-i686-20180221T214502Z.tar.xz

# tar xpf stage3-i686-20180221T214502Z.tar.xz

 

コンパイルオプション

そもそもGentooLinuxはすべてのソフトウェアについて、ソースをダウンロードしてきてローカルでコンパイルすることでそのハード及び環境に最適化するようにというコンセプトがある。そのコンパイル時にどのような操作をさせるかを記述しておくのが/etc/portage/make.confである。

 

# nano -w /mnt/gentoo/etc/portage/make.conf

MAKEOPTS="-j2"

CXXFLAGS="${CFLAGS}"

 

を追加した。これらはそれぞれ並列させる数、C++の最適化フラグ。詳しくはハンドブック見てください。

 

ミラーリストの追加

portageソースコードをDLするときのサーバーを物理的に近いやつにしといた方が早いので設定しとく。

 

# mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf

 

Gentoo ebuildリポジトリ

# mkdir --parents /mnt/gentoo/etc/portage/repos.conf

# cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portagerepos.conf/gentoo.conf

 

DNS情報のコピー

# cp --dereference /etc/resolv.conf /mnt/gentoo/etc/

 

chrootに必要なファイルシステムをマウント

# mount --types proc /proc /mnt/gentoo/proc

# mount --rbind /sys /mnt/gentoo/sys

# mount --make-rslave /mnt/gentoo/sys

# mount --rbind /dev /mnt/gentoo/dev

# mount --make-rslave /mnt/gentoo/dev

 

chroot

 

# chroot /mnt/gentoo /bin/bash

# source /etc/profile

# export PS1="(chroot) $PS1"

 

/boot、/homeのマウント

ここでこれらをマウントしておく。

 

# mount /dev/sda1 /boot

# mount /dev/sda3 /home

 

このとき、chrootしたことを忘れないように。

 

Webからのebuildスナップショットのインストール

 

# emerge-webrsync

 

ついでにebuildリポジトリを更新

 

# emerge --sync

 

プロファイルの選択

 

# elselect profile list

 

で選択可能なリスト表示。" * " マークがついてるのが現在の。

 

# eselect profile set [番号]

 

で選択。今回僕はx86/17.0/desktopを選択。

 

@worldセットの更新

プロファイルについて新しいものを選択したので更新しとく(任意)。なお、initシステムにsystemdを導入しようと考えている方はこれ必須。なお、今回僕はinitシステムにOpen-RCを使う。

 

# emerge --ask --update --deep --newuse @world

 

これは選択したプロファイル及び環境によってまちまちだがdesktopなんかを選択してると半日近くかかった。

 

USE変数の設定

ソースコンパイル時のこの昨日を使用する/使用しないということを設定する。コレによりそのソフトウェアにおいて必要のない機能を削ることができる。

 

# less /usr/portage/profiles/use.dosc

 

で使えるUSEフラグの確認。

 

# nano -w /etc/portage/make.conf

USE="なんちゃら かんちゃら ・・・"

 

って感じ。僕は

USE="X aac flac mp3 x264 mp4 dvd cdr alsa cxx ffmpeg gtk wifi cjk"

としといた。

 

タイムゾーンの設定

 

# echo "Asia/Tokyo" > /etc/timezone

# emerge --config sys-libs/timezone-data

 

ロケールの設定

コメントアウトを外す。ロシア語は項目になかったので追加した。

 

# nano -w /etc/locale.gen

en_US.UTF-8 UTF-8

ja_JP.UTF-8 UTF-8

ru_RU.UTF-8 UTF-8

 

# locale-gen

 

# eselect locale list

# eselect locale set [番号]

 

このときja_JP.utf8にしちゃったら案の定エラー文とかが" ■ "になってしまったのでen_US.utf8で。あとは環境リロード。

 

# env-update && source /etc/profile && export PS1="(chroot) $PS1"

 

カーネル及びその周辺の設定

 

マニュアル設定でやっていきます。詳しくはGentoo公式ハンドブックを見てください。特に必須項目等もありますので。

https://wiki.gentoo.org/wiki/Handbook:X86/Installation/Kernel

 

# emerge --ask sys-kernel/gentoo-sources

# ls -l /usr/src/linux

# cd /usr/src/linux

# make menuconfig

 

セッティングがおわったら

 

# make && make modules_install

# make install

 

# emerge --ask sys-kernel/genkernel

# genkernel --lvm --mdadm --install initramfs

 

# emerge --ask sys-kernel/linux-firmware

 

vimのインストール

使い慣れないnanoはめんどくなったのでここでvimを入れとく。

 

# emerge --ask --verbose vim

 

fstabの作成

fstabは起動時にデバイスをどのようにマウントしていくかみたいなことが書いてある。

 

UUIDの確認をする。

 

# blkid

 

このときの出力結果を使う。こいつが長いのでいっそ

 

# blkid >> /etc/fstab

 

とでもしてあとからいらない部分消して使う感じで良いと思う。とりあえず今回は例として下のようなUUIDであったとする。

 

/dev/sda1   UUID=aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa

/dev/sda2   UUID=bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb

/dev/sda3   UUID=cccccccc-cccc-cccc-cccc-cccccccccccc

 

長いのでここより先それぞれaaaa、bbbb、ccccと略すことにする。

 

# vim /etc/fstab

UUID=aaaa                   /boot                   ext4                    noauto,noatime   0 2

UUID=bbbb                   /                           ext4                    noatime                0 1

UUID=cccc                    /home                 ext4                    noatime                0 2

 

ホストネームの設定

 

# vim /etc/conf.d/hostname

hostname="yourHostname"

 

# vim /etc/hosts

127.0.0.1    localhost.localdomain localhost

::1    localhost.localdomain localhost

127.0.1.1    yourHostname.localdomain yourHostname

 

dhcp

# emerge --ask --noreplace net-misc/netifrc

# ip link

 

で有線で使われている名前(ここではeth0としておく)を調べる。

 

# vim /etc/conf.d/net

config_eth0 = "dhcp"

 

起動時に自動的にネットワークに繋がるようにする

# cd /etc/init.d

# ln -s net.lo net.eth0

# rc-update add net.eth0 default

 

PCMCIA

TOUGH BOOK にはPCカードスロットがついているので

 

# emerge --ask sys-apps/pcmciautils

 

ルートパスワード

# passwd

 

キーボード設定

# vim /etc/conf.d/keymaps

 

keymap="us"となっているところをjp106に変える。

 

システムロガー

# emerge --ask app-admin/sysklogd

# rc-update add sysklogd default

 

ファイルのインデックス

# emerge --ask sys-apps/mlocate

 

ファイルシステムツール

ext2,3,4

 

# emerge --ask --verbose sys-fs/e2fsprogs

 

vfat(fat32とか)

 

# emerge --ask --verbose sys-fs/dosfstools

 

dhcpクライアント

# emerge --ask net-misc/dhcpcd

 

ワイヤレス関係はまたそのうち。とりあえずは有線で運用するので。

 

ブートローダー(GRUB2)のインストール

ブートローダーも色々と選択できるが今回はとりあえずデフォルトのGRUB2で。

また、今回はBIOSでありUEFIではない。パーティションにはGPTを使っているがそもそもCF-18にはUEFIはない。

 

# emerge --ask --verbose sys-boot/grub:2

# grub-install /dev/sda

# grub-mkconfig -o /boot/grub/grub.cfg

 

システムのリブート

 

とりあえずchrootから出る。

# exit

 

# umount -l /mnt/gentoo/dev{/shm,/pts,}

# umount -R /mnt/gentoo

# reboot

リブート時、起動優先順位を変えるかディスクを取り除くかして起動。無事起動したら成功。あとはstage~.tar.xzを削除したり一般ユーザー作成したりして終わり。

 

ここまで読んでくださった方、ありがとうございます。ぶっちゃけこの記事はなんとなくインストール手順の雰囲気をつかむためには役にたつかもしれませんが実際には個人的な単なる備忘録です。公式ハンドブックとgoogle翻訳を用いてインストールすることを強く推奨します。

Android端末でターミナルを使いたい/ Termux

ども、久しくブログ更新していなかったBobbyQuineです。Android端末って標準だとコマンド操作できなくて不便ですよね。Android端末内にあるデータをPCに移したいけれどケーブルがない。通信制限が来てるからGoogle Drive なんかは使えないしどーしよ、ってなったとき「Androidでもscpコマンド使いてぇ」ってなるわけ。他にもyoutubeから動画落としたいけどyoutube-dlは使えない、メモ帳代わりにvim使いたいけど使えない、手元にPCないけど音声ファイルのファイル形式変えたいとか。まぁGUIのそういうソフト使っても良いんだけどなんだか使いづらかったりそれいらないだろって情報にアクセス求めてきたり。なので今回はroot化しなくても使えるTermuxってのをインストールしてみた。

 

毎度のことながら記事に書かれていることをやるなら自己責任で。

 

Termuxのインストール

ここ↓↓からダウンロード&インストールできる。

https://play.google.com/store/apps/details?id=com.termux&hl=ja

 

あと個人的にVimを使うのでEscキーとかほしいからコレ入れた

https://play.google.com/store/apps/details?id=org.pocketworkstation.pckeyboard&hl=ja

 

その他自分がやったこと

vimのインストール

$ pkg install vim

 

gccのインストール

$ pkg install clang

 

ffmpegのインストール

$ pkg install ffmpeg

 

opensshのインストール

$ pkg install openssh

 

あとやっぱりslは入れといた

$ pkg install sl

f:id:BobbyQuine:20180216201605p:plain

 

まぁこんなとこかな。youtube-dlはrootとんないとできない臭い。

 

Arch LinuxのLaptopをWi-Fiアクセスポイントにした話

ども、BobbyQuineです。今回は題名の通り普段遣いのLaptopをWi-Fiのアクセスポイントにしてみました。

 

2018/1/7:最初に書いた設定では一度接続できたあと何故かできなくなったので色々弄ってそれについて更新します。

 

この記事を真似するときは自己責任で。

 

参考にしたページ

LinuxPCをWiFiアクセスポイントにする - Qiita

ソフトウェアアクセスポイント - ArchWiki

systemd/systemdのserviceタイプ一覧を表示する方法 - Linuxと過ごす

 

実行した動機

まず、これまでのネットワークは下のようになっていました。

 

お家の無線ルーター

            |

            |---------------------- CF-S9(メインで使っているLaptop)

            |---------------------- sshサーバーなデスクトップPC

            |---------------------- その他スマホなど。

 

実はこの「お家の無線ルーター」には2つほど欠点があって

1. 管理者の設定により03:00になると自動的に電源がoffになる。

2. 電子レンジがジャミングになって電子レンジを使っているときはネットワークが使えなくなる。

 

つまり03:00からと電子レンジを使っている最中はデスクトップPCにアクセスできなくなるのだ。まぁsshは良いとして、ネットワークスピーカーとして活用している最中に電子レンジ使うと動画は進んでるのに音が出なくなってうわーってなるのでなんとかしたい。なので

 

お家のルーター

          |

          |------------------ CF-S9 ----------------デスクトップPC

          |------------------ その他

 

としてしまおうというお話。

 

hostapdのインストール、設定

今回はFC-S9に内蔵されているモジュールは自宅無線ルーターにつなぐのに使い、アクセスポイントのためにはこいつを選んだ。CF-S9、PCIカード入るのマジ有能。

f:id:BobbyQuine:20180206233905j:plain

 

$ sudo pacman -S hostapd

$ ip link

 

で指したPCIバイスのインターフェース名を確認。このとき、内蔵のがwlp10s0、PCIカードのがwlp12s0であった。

 

$ sudo vim /etc/hostapd/hostapd.conf

 ここの内容に変更があります。

以下内容-----------------------------------------------------------------------------------------------------------------

 

interface=wlp12s0
driver=nl80211

ssid=YOURSSID

hw_mode=g
channel=7
wpa=2

wpa_passphrase=YOURPASSWORD
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP

 

以上-----------------------------------------------------------------------------------------------------------------------

 

再度設定したやつ:以下内容--------------------------------------------------------------------------------------

 

ssid=YOURSSID
wpa_passphrase=YOURPASSWORD
interface=wlp12s0
auth_algs=3
channel=7
driver=nl80211
hw_mode=g
logger_stdout=-1
logger_stdout_level=2
max_num_sta=5
rsn_pairwise=CCMP
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP

 

以上-----------------------------------------------------------------------------------------------------------------------

 

$ sudo vi /etc/default/hostapd

 

以下内容-----------------------------------------------------------------------------------------------------------------

 

DAEMON_CONF="/etc/hostapd/hostapd.conf"

 

以上-----------------------------------------------------------------------------------------------------------------------

 

dhcpのインストール

 

$ sudo pacman -S dhcp

 

sudo vim /etc/dhcpd.conf

 

以下内容-----------------------------------------------------------------------------------------------------------------

 

default-lease-time 600;
max-lease-time 7200;
INTERFACES="wlp12s0";
option domain-name "";
log-facility local7;

subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.10 10.0.0.20;
option routers 10.0.0.1;
option domain-name-servers 8.8.8.8;
}

 

以上-----------------------------------------------------------------------------------------------------------------------

 

IPフォワーディング

 

これ、2つともやらなあかんのかもしれないしどっちかで良いのかもしれないし。

 

$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

 $ sudo sysctl net.ipv4.ip_forward=1

 

起動

iptablesにNATチェイン追加。これでwlp10s0とwlp12s0を開通させるイメージ。

 

$ sudo iptables -t nat -A POSTROUTING -s 10.0.0.0/255.255.255.0 -o wlp10s0 -j MASQUERADE

 

2018/1/7追記:コレだけではどうにも開通してなかったので

 

$ iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

$ iptables -A FORWARD -i wlp12s0 -o wlp10s0 -j ACCEPT

 

 

$ sudo ifconfig wlp12s0 10.0.0.1 netmask 255.255.255.0 up

 

dhcpとhostapdの起動

 

$ systemctl start dhcpd4.service

$ systemctl start hostapd.service

 

このときdhcpの方がなんて指定すればよいのかわからなくて困った。

そのときに使ったコマンドもメモっとく

 

$ systemctl list-unit-files -t service

 

切るとき

$ systemctl stop hostapd.service

$ systemctl stop dhcpd4.service

$ sudo ifconfig wlp12s0 down

$ sudo iptables -t nat -D POSTROUTING -s 10.0.0.0/255.255.255.0 -o wlp10s0 -j MASQUERADE

 

 

以上、ほぼ参考にしたページの1つ目。(コレだけではどうにもならなかったのでArch Wikiの設定をほぼ丸コピ。ただbridge項目は無くした)ただ、私のArch環境では「そんなコマンドねぇよ」って怒られたのが何箇所かあったので自分のArch流にして備忘録代わりに書いてみた。Shellスクリプト化して自動化もできそうだけどまだやって見てないからとりあえずこの辺で。あと何故かデスクトップPCをこいつにつなぐとUSBスピーカーから音が出ないのはなぜなのか??もう一回設定見直してみる。

雑記 : ロシア語関係の友人たちと焼き肉行った。めっちゃうまかったわ。また行きたい。

デスクトップPCをワイヤレススピーカーとして使う

ども、BobbyQuineです。Sonyのワイヤレススピーカーって便利ですよね。アナログ入力、BluetoothWi-fiと3種類の入力方法が使えるスピーカーが家にあります。でもこれ、親父の私物なんですよね。自室におんなじようなのが欲しいなー、ということで例のデスクトップPCをちょいと弄って使えるようにしてみました。

 

この記事にあることを真似するときは自己責任でお願いします。

 

参考にしたページ↓↓

http://d.hatena.ne.jp/penkoba/20130809/1376064438

https://www.alprovs.com/wordpress/?p=439

 

環境と動機

まず私の今回の環境について説明しときます。メインで使っているのがPanasonicのCF-S9というノートPC。もう一つ自室には超低スペのデスクトップPCがあり、そいつにはそこそこ音の良いUSBスピーカーが繋がっています。どちらもOSはArch Linuxalsa関係とpulseaudioはインストールされています。自室にいるときはこのUSBスピーカーを使いたいけどわざわざケーブルを指し直すのも面倒なので内線LANで音声を飛ばしちゃおうという計画。それに加えてすぐにローカルの音声出力に切り替えられることも条件として入れておきたい。んじゃ。

 

デスクトップ(スピーカー)側の設定

まず、paprefsというパッケージをインストール。

 

$ sudo pacman -S paprefs

 

次に/etc/pulse/default.paを~/.pulse/にコピーするこのとき.pulseディレクトリが存在しなかったら作る。

 

$ cp /etc/pulse/default.pa ~/.pulse

 

今度はこのコピーした~/.pulse/default.paを編集。

 

$ vim ~/.pulse/default.pa

 

中のに " #load-module module-native-protocol-tcp "って行があるのでコメントアウトを外して

load-module module-native-protocol-tcp auth-anonymous=1

と書く。ノートPC側のローカルIPが固定ならこのノートPCだけ接続可能とかもできるのだけれど、我が家は固定IPにはなってないので。

 

で、そしたら

 

$ pulseaudio -k

$ pulseaudio -D

 

とpulseaudioを再起動。ついでにifconfigでデスクトップPCのローカルIPアドレスを調べとく。

 

ノートPC側の設定

こっちもpaprefsをいれます。

 

$ sudo pacman -S paprefs

 

$ pulseaudio -D

 

でpulseaudioを走らせて

 

$ export PULSE_SERVER=192.168.1.26

 

環境変数を弄ってやって完成。このときのIPアドレスは自分の環境のやつを使ってください。

 

試しに動画を再生

ノートPCのTerminal上で先の環境変数を弄ったあとそのTerminal上でvlcコマンドで動画を再生すれば音はデスクトップPCから流れた。成功。なお、この環境変数を弄ったのとは別のTerminalからvlcを立ち上げるとノートPCから直接音が出る。これは便利だわ。

 

以上、デスクトップPCをワイヤレススピーカー化したお話でした。

ぶっ壊れたUbuntuのUnityを治す

ども、BobbyQuineです。随分前にUbuntuくんが壊れて何が起こっとるんじゃーってなってた私ですが、まぁなんとなく「Unity重いしこの前フリズったときにおかしくなったんだろーなー」とは思ってたわけです。んじゃUnityをリセットしちゃえばええやんということでググったらこんなページを見つけた。今回の記事はこの記事まんま↓↓

http://www.oceanwave.jp/index.php?Linux%2FUbuntu%2FUnity%A4%AC%B2%F5%A4%EC%A4%BF

 

とりあえず<Ctrl>+<Alt>+<F1>押したらCUIでのやつになるのでそこでログインして

 

$ sudo apt-get install unity-tweak-tool

$ unity-tweak-tool --reset-unity

 

でおっけ。てっきりUnity再インストールとかかなー、めんどくさいなーって放置してたのだけれど思ったより簡単で助かった。

そういえばかなり前になりますけどUnity、開発やめちゃいましたね。将来的にこの記事ほとんど役に立たねぇな。

データファイルを読み込んでグラフにプロットしてくれるソフトgnuplotの紹介

ども、BobbyQuineです。友人宅にて徹夜なうなのですがそこで大学課題で使えそうなgnuplotというものを教わったので備忘録がてら紹介しときます。まぁ実際やってったことを紹介してったほうがわかりやすいと思うので(ry

 

この記事にかかれていることを実践する場合は自己責任で。

 

gnuplotのインストール

今回も今までどおりArch Linuxでのものになります。多分他のディストリビューションでも標準のパッケージ管理システムに入っていると思うので。

 

$ sudo pacman -S gnuplot

 

使い方

まず、プロットするデータが必要です。このgnupoltで読み込むデータは以下のように

 

1 1

2 2

10 10

 

x座標<スペース>y座標 というものを改行で連ねたデータになっている必要があります。そこで例えば下のC言語で書かれたプログラムのようにデータを用意します。

 

以下ソースコード sin.c --------------------------------------------------------------------------------------------

 

#include <stdio.h>
#include <math.h>

int main(void){

          double a;

          FILE* fp;

          fp=fopen("sin","w");

          for(a=0;a<2*M_PI;a=a+0.0001){
                     fprintf(fp,"%lf %lf\n", a, sin(a));
          }

          fclose(fp);
          return(0);
}

 

以上ソースコード----------------------------------------------------------------------------------------------------

 

でまぁこいつの場合 " sin " って名前のファイルができるわけです。次に

 

$ gnuplot

 

で起動すると " gnuplot > " となって入力が待機されるわけです。そこに

 

gnuplot > plot "sin"

 

とすると正弦波に沿うように点がプロットされます。また、

 

gnuplot > plot "sin" with lines

 

とするとその点同士が線で結ばれていくわけです。で出力結果は以下のようになります

f:id:BobbyQuine:20180131053919p:plain

そしてここで先程のプログラムを少々改変して余弦波のデータを " cos " というファイル名で保存していて、以下のようにすると同じ盤面にグラフが追加されます。

 

gnuplot > replot "cos" with lines

f:id:BobbyQuine:20180131054351p:plain

 

gnuplot > quit

gnuplotを終了できます。と、まぁこんな感じのものの紹介でした。バーイ!!